From 37902419d7c198c83ca19d122b758c5a9231c617 Mon Sep 17 00:00:00 2001 From: Arjav Date: Thu, 20 Mar 2025 13:44:05 +0530 Subject: [PATCH 1/3] fix for links Signed-off-by: Arjav --- .../ROOT/pages/spring-cloud-kubernetes-configserver.adoc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/modules/ROOT/pages/spring-cloud-kubernetes-configserver.adoc b/docs/modules/ROOT/pages/spring-cloud-kubernetes-configserver.adoc index f310bf21..75a2aaf1 100644 --- a/docs/modules/ROOT/pages/spring-cloud-kubernetes-configserver.adoc +++ b/docs/modules/ROOT/pages/spring-cloud-kubernetes-configserver.adoc @@ -30,7 +30,7 @@ NOTE: If you set `spring.cloud.kubernetes.configserver.config-map-namespaces` an you will need to include the namespace in which the Config Server is deployed in order to continue to fetch Config Map and Secret data from that namespace. ### Using Advanced Features Of Spring Vault -In order to use some of the [more advanced Spring Vault features](https://docs.spring.io/spring-cloud-config/reference/server/environment-repository/vault-backend.html) of the **Spring Cloud Config Server**, [`spring-vault-core`](https://mvnrepository.com/artifact/org.springframework.vault/spring-vault-core) must be on the classpath. By default, Spring Cloud Kubernetes can generate a Docker image for deploying Config Server to Kubernetes, but it does not include `spring-vault-core` in the classpath. If you need `spring-core-vault` to enable certain functionality in the Config Server you can build your own version of Docker image by enabling the `vault` Maven profile when running Maven build. +In order to use some of the https://docs.spring.io/spring-cloud-config/reference/server/environment-repository/vault-backend.html[more advanced Spring Vault features] of the **Spring Cloud Config Server**, https://mvnrepository.com/artifact/org.springframework.vault/spring-vault-core[`spring-vault-core`] must be on the classpath. By default, Spring Cloud Kubernetes can generate a Docker image for deploying Config Server to Kubernetes, but it does not include `spring-vault-core` in the classpath. If you need `spring-vault-core` to enable certain functionality in the Config Server you can build your own version of Docker image by enabling the `vault` Maven profile when running Maven build. Example: ```bash From d3bfbd23dcbf995eff02743483060c6472f70474 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 24 Mar 2025 18:13:33 +0000 Subject: [PATCH 2/3] Bump @springio/asciidoctor-extensions in /docs Bumps [@springio/asciidoctor-extensions](https://github.com/spring-io/asciidoctor-extensions) from 1.0.0-alpha.16 to 1.0.0-alpha.17. - [Changelog](https://github.com/spring-io/asciidoctor-extensions/blob/main/CHANGELOG.adoc) - [Commits](https://github.com/spring-io/asciidoctor-extensions/compare/v1.0.0-alpha.16...v1.0.0-alpha.17) --- updated-dependencies: - dependency-name: "@springio/asciidoctor-extensions" dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- docs/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/package.json b/docs/package.json index 9e455a6d..45cdd10b 100644 --- a/docs/package.json +++ b/docs/package.json @@ -5,6 +5,6 @@ "@antora/collector-extension": "1.0.1", "@asciidoctor/tabs": "1.0.0-beta.6", "@springio/antora-extensions": "1.14.4", - "@springio/asciidoctor-extensions": "1.0.0-alpha.16" + "@springio/asciidoctor-extensions": "1.0.0-alpha.17" } } From 7382b53c9977189f827b2c419d2938a604820080 Mon Sep 17 00:00:00 2001 From: cmaune Date: Thu, 27 Mar 2025 10:14:18 +0100 Subject: [PATCH 3/3] fix: use ',' as delimiter for key-value pairs in labelSelector Signed-off-by: cmaune --- .../catalog/KubernetesCatalogWatchContext.java | 2 +- .../catalog/KubernetesCatalogWatchContextTests.java | 10 ++++++---- .../KubernetesCatalogWatchEndpointSlicesTests.java | 8 ++++---- .../catalog/KubernetesCatalogWatchEndpointsTests.java | 8 ++++---- 4 files changed, 15 insertions(+), 13 deletions(-) diff --git a/spring-cloud-kubernetes-client-discovery/src/main/java/org/springframework/cloud/kubernetes/client/discovery/catalog/KubernetesCatalogWatchContext.java b/spring-cloud-kubernetes-client-discovery/src/main/java/org/springframework/cloud/kubernetes/client/discovery/catalog/KubernetesCatalogWatchContext.java index 6b41745a..69f6cd87 100644 --- a/spring-cloud-kubernetes-client-discovery/src/main/java/org/springframework/cloud/kubernetes/client/discovery/catalog/KubernetesCatalogWatchContext.java +++ b/spring-cloud-kubernetes-client-discovery/src/main/java/org/springframework/cloud/kubernetes/client/discovery/catalog/KubernetesCatalogWatchContext.java @@ -48,7 +48,7 @@ record KubernetesCatalogWatchContext(CoreV1Api coreV1Api, ApiClient apiClient, K } static String labelSelector(Map labels) { - return labels.entrySet().stream().map(en -> en.getKey() + "=" + en.getValue()).collect(Collectors.joining("&")); + return labels.entrySet().stream().map(en -> en.getKey() + "=" + en.getValue()).collect(Collectors.joining(",")); } } diff --git a/spring-cloud-kubernetes-client-discovery/src/test/java/org/springframework/cloud/kubernetes/client/discovery/catalog/KubernetesCatalogWatchContextTests.java b/spring-cloud-kubernetes-client-discovery/src/test/java/org/springframework/cloud/kubernetes/client/discovery/catalog/KubernetesCatalogWatchContextTests.java index d3f86193..6734197f 100644 --- a/spring-cloud-kubernetes-client-discovery/src/test/java/org/springframework/cloud/kubernetes/client/discovery/catalog/KubernetesCatalogWatchContextTests.java +++ b/spring-cloud-kubernetes-client-discovery/src/test/java/org/springframework/cloud/kubernetes/client/discovery/catalog/KubernetesCatalogWatchContextTests.java @@ -16,6 +16,7 @@ package org.springframework.cloud.kubernetes.client.discovery.catalog; +import java.util.LinkedHashMap; import java.util.Map; import org.junit.jupiter.api.Assertions; @@ -40,10 +41,11 @@ class KubernetesCatalogWatchContextTests { @Test void multipleLabelsLabel() { - String result = KubernetesCatalogWatchContext.labelSelector(Map.of("a", "b", "c", "d")); - Assertions.assertTrue(result.contains("c=d")); - Assertions.assertTrue(result.contains("&")); - Assertions.assertTrue(result.contains("a=b")); + Map labels = new LinkedHashMap<>(); + labels.put("a", "b"); + labels.put("c", "d"); + String result = KubernetesCatalogWatchContext.labelSelector(labels); + Assertions.assertEquals("a=b,c=d", result); } } diff --git a/spring-cloud-kubernetes-client-discovery/src/test/java/org/springframework/cloud/kubernetes/client/discovery/catalog/KubernetesCatalogWatchEndpointSlicesTests.java b/spring-cloud-kubernetes-client-discovery/src/test/java/org/springframework/cloud/kubernetes/client/discovery/catalog/KubernetesCatalogWatchEndpointSlicesTests.java index e2b72963..d5ff1a18 100644 --- a/spring-cloud-kubernetes-client-discovery/src/test/java/org/springframework/cloud/kubernetes/client/discovery/catalog/KubernetesCatalogWatchEndpointSlicesTests.java +++ b/spring-cloud-kubernetes-client-discovery/src/test/java/org/springframework/cloud/kubernetes/client/discovery/catalog/KubernetesCatalogWatchEndpointSlicesTests.java @@ -96,7 +96,7 @@ class KubernetesCatalogWatchEndpointSlicesTests extends KubernetesEndpointsAndEn @Test @Override void testInAllNamespacesWithDoubleLabel() { - stubFor(get("/apis/discovery.k8s.io/v1/endpointslices?labelSelector=a%3Db%26c%3Dd") + stubFor(get("/apis/discovery.k8s.io/v1/endpointslices?labelSelector=a%3Db%2Cc%3Dd") .willReturn(aResponse().withStatus(200).withBody(new JSON().serialize(endpointSlices("a", "default"))))); // otherwise the stub might fail LinkedHashMap map = new LinkedHashMap<>(); @@ -137,9 +137,9 @@ class KubernetesCatalogWatchEndpointSlicesTests extends KubernetesEndpointsAndEn @Test @Override void testInSpecificNamespacesWithDoubleLabel() { - stubFor(get("/apis/discovery.k8s.io/v1/namespaces/one/endpointslices?labelSelector=a%3Db%26c%3Dd") + stubFor(get("/apis/discovery.k8s.io/v1/namespaces/one/endpointslices?labelSelector=a%3Db%2Cc%3Dd") .willReturn(aResponse().withStatus(200).withBody(new JSON().serialize(endpointSlices("aa", "a"))))); - stubFor(get("/apis/discovery.k8s.io/v1/namespaces/two/endpointslices?labelSelector=a%3Db%26c%3Dd") + stubFor(get("/apis/discovery.k8s.io/v1/namespaces/two/endpointslices?labelSelector=a%3Db%2Cc%3Dd") .willReturn(aResponse().withStatus(200).withBody(new JSON().serialize(endpointSlices("bb", "b"))))); // otherwise the stub might fail @@ -179,7 +179,7 @@ class KubernetesCatalogWatchEndpointSlicesTests extends KubernetesEndpointsAndEn @Test @Override void testInOneNamespaceWithDoubleLabel() { - stubFor(get("/apis/discovery.k8s.io/v1/namespaces/b/endpointslices?labelSelector=key%3Dvalue%26key1%3Dvalue1") + stubFor(get("/apis/discovery.k8s.io/v1/namespaces/b/endpointslices?labelSelector=key%3Dvalue%2Ckey1%3Dvalue1") .willReturn(aResponse().withStatus(200).withBody(new JSON().serialize(endpointSlices("a", "b"))))); // otherwise the stub might fail LinkedHashMap map = new LinkedHashMap<>(); diff --git a/spring-cloud-kubernetes-client-discovery/src/test/java/org/springframework/cloud/kubernetes/client/discovery/catalog/KubernetesCatalogWatchEndpointsTests.java b/spring-cloud-kubernetes-client-discovery/src/test/java/org/springframework/cloud/kubernetes/client/discovery/catalog/KubernetesCatalogWatchEndpointsTests.java index 15f6e6e5..a0a2e93b 100644 --- a/spring-cloud-kubernetes-client-discovery/src/test/java/org/springframework/cloud/kubernetes/client/discovery/catalog/KubernetesCatalogWatchEndpointsTests.java +++ b/spring-cloud-kubernetes-client-discovery/src/test/java/org/springframework/cloud/kubernetes/client/discovery/catalog/KubernetesCatalogWatchEndpointsTests.java @@ -96,7 +96,7 @@ class KubernetesCatalogWatchEndpointsTests extends KubernetesEndpointsAndEndpoin @Test @Override void testInAllNamespacesWithDoubleLabel() { - stubFor(get("/api/v1/endpoints?labelSelector=a%3Db%26c%3Dd") + stubFor(get("/api/v1/endpoints?labelSelector=a%3Db%2Cc%3Dd") .willReturn(aResponse().withStatus(200).withBody(new JSON().serialize(endpoints("a", "default"))))); // otherwise the stub might fail LinkedHashMap map = new LinkedHashMap<>(); @@ -137,9 +137,9 @@ class KubernetesCatalogWatchEndpointsTests extends KubernetesEndpointsAndEndpoin @Test @Override void testInSpecificNamespacesWithDoubleLabel() { - stubFor(get("/api/v1/namespaces/one/endpoints?labelSelector=a%3Db%26c%3Dd") + stubFor(get("/api/v1/namespaces/one/endpoints?labelSelector=a%3Db%2Cc%3Dd") .willReturn(aResponse().withStatus(200).withBody(new JSON().serialize(endpoints("aa", "a"))))); - stubFor(get("/api/v1/namespaces/two/endpoints?labelSelector=a%3Db%26c%3Dd") + stubFor(get("/api/v1/namespaces/two/endpoints?labelSelector=a%3Db%2Cc%3Dd") .willReturn(aResponse().withStatus(200).withBody(new JSON().serialize(endpoints("bb", "b"))))); // otherwise the stub might fail @@ -179,7 +179,7 @@ class KubernetesCatalogWatchEndpointsTests extends KubernetesEndpointsAndEndpoin @Test @Override void testInOneNamespaceWithDoubleLabel() { - stubFor(get("/api/v1/namespaces/b/endpoints?labelSelector=key%3Dvalue%26key1%3Dvalue1") + stubFor(get("/api/v1/namespaces/b/endpoints?labelSelector=key%3Dvalue%2Ckey1%3Dvalue1") .willReturn(aResponse().withStatus(200).withBody(new JSON().serialize(endpoints("a", "b"))))); // otherwise the stub might fail LinkedHashMap map = new LinkedHashMap<>();