From a20a23cf31036101ab8f22172c44300433207d2a Mon Sep 17 00:00:00 2001 From: wind57 Date: Fri, 29 Aug 2025 11:15:05 +0300 Subject: [PATCH 01/10] drop some deprecations Signed-off-by: wind57 --- .../composites/pre-test-actions/action.yaml | 2 +- .../KubernetesClientAutoConfiguration.java | 13 ++------ .../client/KubernetesClientPodUtils.java | 14 -------- ...KubernetesClientSecretsPropertySource.java | 5 --- .../KubernetesInformerDiscoveryClient.java | 32 +------------------ ...ormerDiscoveryClientAutoConfiguration.java | 15 ++------- ...rnetesInformerReactiveDiscoveryClient.java | 17 ---------- ...ctiveDiscoveryClientAutoConfiguration.java | 24 -------------- .../commons/KubernetesClientProperties.java | 12 +++---- ...tryableConfigMapPropertySourceLocator.java | 16 ---------- ...RetryableSecretsPropertySourceLocator.java | 16 ---------- .../ConfigMapPropertySourceLocator.java | 10 ------ .../commons/config/ConfigUtils.java | 15 --------- .../commons/config/PropertySourceUtils.java | 14 -------- .../config/SecretsPropertySourceLocator.java | 10 ------ .../config/reload/ConfigReloadUtil.java | 4 +-- .../KubernetesClientPropertiesTests.java | 5 --- ...rnetesConfigDataLocationResolverTests.java | 2 +- .../KubernetesEnvironmentRepository.java | 14 +------- .../DiscoveryServerController.java | 11 +------ .../discovery/KubernetesDiscoveryClient.java | 11 ------- 21 files changed, 16 insertions(+), 246 deletions(-) diff --git a/.github/workflows/composites/pre-test-actions/action.yaml b/.github/workflows/composites/pre-test-actions/action.yaml index 1a39eaa5ec..b11abd2616 100644 --- a/.github/workflows/composites/pre-test-actions/action.yaml +++ b/.github/workflows/composites/pre-test-actions/action.yaml @@ -24,7 +24,7 @@ runs: - name: build project shell: bash run: | - ./mvnw clean install -Dspring-boot.build-image.skip=true -DskipITs -DskipTests -T1C -U -B -q + ./mvnw clean install -P 'run-on-github-actions' -Dspring-boot.build-image.skip=true -DskipITs -DskipTests -T1C -U -B -q - name: build controllers project uses: ./.github/workflows/composites/build-controllers-project diff --git a/spring-cloud-kubernetes-client-autoconfig/src/main/java/org/springframework/cloud/kubernetes/client/KubernetesClientAutoConfiguration.java b/spring-cloud-kubernetes-client-autoconfig/src/main/java/org/springframework/cloud/kubernetes/client/KubernetesClientAutoConfiguration.java index d51dc778b1..37c173fc2c 100644 --- a/spring-cloud-kubernetes-client-autoconfig/src/main/java/org/springframework/cloud/kubernetes/client/KubernetesClientAutoConfiguration.java +++ b/spring-cloud-kubernetes-client-autoconfig/src/main/java/org/springframework/cloud/kubernetes/client/KubernetesClientAutoConfiguration.java @@ -40,20 +40,11 @@ @AutoConfigureAfter(KubernetesCommonsAutoConfiguration.class) public class KubernetesClientAutoConfiguration { - /** - * this bean will be based on - * {@link org.springframework.cloud.kubernetes.commons.discovery.KubernetesDiscoveryProperties} - * in the next major release. - */ - @Deprecated(forRemoval = true) @Bean @ConditionalOnMissingBean - public ApiClient apiClient(Environment environment) { + public ApiClient apiClient(KubernetesClientProperties clientProperties) { ApiClient apiClient = kubernetesApiClient(); - // it's too early to inject KubernetesClientProperties here, all its properties - // are missing. For the time being work-around with reading from the environment. - apiClient.setUserAgent(environment.getProperty("spring.cloud.kubernetes.client.user-agent", - KubernetesClientProperties.DEFAULT_USER_AGENT)); + apiClient.setUserAgent(clientProperties.userAgent()); return apiClient; } diff --git a/spring-cloud-kubernetes-client-autoconfig/src/main/java/org/springframework/cloud/kubernetes/client/KubernetesClientPodUtils.java b/spring-cloud-kubernetes-client-autoconfig/src/main/java/org/springframework/cloud/kubernetes/client/KubernetesClientPodUtils.java index 1de4c45bff..4095c11058 100644 --- a/spring-cloud-kubernetes-client-autoconfig/src/main/java/org/springframework/cloud/kubernetes/client/KubernetesClientPodUtils.java +++ b/spring-cloud-kubernetes-client-autoconfig/src/main/java/org/springframework/cloud/kubernetes/client/KubernetesClientPodUtils.java @@ -60,20 +60,6 @@ public class KubernetesClientPodUtils implements PodUtils { private final boolean failFast; - @Deprecated(forRemoval = true) - public KubernetesClientPodUtils(CoreV1Api client, String namespace) { - if (client == null) { - throw new IllegalArgumentException("Must provide an instance of KubernetesClient"); - } - - this.client = client; - this.hostName = EnvReader.getEnv(HOSTNAME); - this.serviceHost = EnvReader.getEnv(KUBERNETES_SERVICE_HOST); - this.current = LazilyInstantiate.using(this::internalGetPod); - this.namespace = namespace; - this.failFast = false; - } - // mainly needed for the health and info contributors, so that they report DOWN // correctly public KubernetesClientPodUtils(CoreV1Api client, String namespace, boolean failFast) { diff --git a/spring-cloud-kubernetes-client-config/src/main/java/org/springframework/cloud/kubernetes/client/config/KubernetesClientSecretsPropertySource.java b/spring-cloud-kubernetes-client-config/src/main/java/org/springframework/cloud/kubernetes/client/config/KubernetesClientSecretsPropertySource.java index 85e964245b..3b8bf1668b 100644 --- a/spring-cloud-kubernetes-client-config/src/main/java/org/springframework/cloud/kubernetes/client/config/KubernetesClientSecretsPropertySource.java +++ b/spring-cloud-kubernetes-client-config/src/main/java/org/springframework/cloud/kubernetes/client/config/KubernetesClientSecretsPropertySource.java @@ -29,11 +29,6 @@ */ public class KubernetesClientSecretsPropertySource extends SecretsPropertySource { - @Deprecated(forRemoval = true) - public KubernetesClientSecretsPropertySource(SourceData sourceData) { - super(sourceData); - } - private static final EnumMap STRATEGIES = new EnumMap<>( NormalizedSourceType.class); diff --git a/spring-cloud-kubernetes-client-discovery/src/main/java/org/springframework/cloud/kubernetes/client/discovery/KubernetesInformerDiscoveryClient.java b/spring-cloud-kubernetes-client-discovery/src/main/java/org/springframework/cloud/kubernetes/client/discovery/KubernetesInformerDiscoveryClient.java index 1209af0e92..39d5081b96 100644 --- a/spring-cloud-kubernetes-client-discovery/src/main/java/org/springframework/cloud/kubernetes/client/discovery/KubernetesInformerDiscoveryClient.java +++ b/spring-cloud-kubernetes-client-discovery/src/main/java/org/springframework/cloud/kubernetes/client/discovery/KubernetesInformerDiscoveryClient.java @@ -82,37 +82,7 @@ public class KubernetesInformerDiscoveryClient implements DiscoveryClient { private final ServicePortSecureResolver servicePortSecureResolver; - // visible only for testing and - // must be constructor injected in a future release - @Autowired - CoreV1Api coreV1Api; - - @Deprecated(forRemoval = true) - public KubernetesInformerDiscoveryClient(String namespace, SharedInformerFactory sharedInformerFactory, - Lister serviceLister, Lister endpointsLister, - SharedInformer serviceInformer, SharedInformer endpointsInformer, - KubernetesDiscoveryProperties properties) { - this.sharedInformerFactories = List.of(sharedInformerFactory); - this.serviceListers = List.of(serviceLister); - this.endpointsListers = List.of(endpointsLister); - this.informersReadyFunc = () -> serviceInformer.hasSynced() && endpointsInformer.hasSynced(); - this.properties = properties; - filter = filter(properties); - servicePortSecureResolver = new ServicePortSecureResolver(properties); - } - - public KubernetesInformerDiscoveryClient(SharedInformerFactory sharedInformerFactory, - Lister serviceLister, Lister endpointsLister, - SharedInformer serviceInformer, SharedInformer endpointsInformer, - KubernetesDiscoveryProperties properties) { - this.sharedInformerFactories = List.of(sharedInformerFactory); - this.serviceListers = List.of(serviceLister); - this.endpointsListers = List.of(endpointsLister); - this.informersReadyFunc = () -> serviceInformer.hasSynced() && endpointsInformer.hasSynced(); - this.properties = properties; - filter = filter(properties); - servicePortSecureResolver = new ServicePortSecureResolver(properties); - } + private final CoreV1Api coreV1Api; public KubernetesInformerDiscoveryClient(List sharedInformerFactories, List> serviceListers, List> endpointsListers, diff --git a/spring-cloud-kubernetes-client-discovery/src/main/java/org/springframework/cloud/kubernetes/client/discovery/KubernetesInformerDiscoveryClientAutoConfiguration.java b/spring-cloud-kubernetes-client-discovery/src/main/java/org/springframework/cloud/kubernetes/client/discovery/KubernetesInformerDiscoveryClientAutoConfiguration.java index e30470da3c..466ae1d077 100644 --- a/spring-cloud-kubernetes-client-discovery/src/main/java/org/springframework/cloud/kubernetes/client/discovery/KubernetesInformerDiscoveryClientAutoConfiguration.java +++ b/spring-cloud-kubernetes-client-discovery/src/main/java/org/springframework/cloud/kubernetes/client/discovery/KubernetesInformerDiscoveryClientAutoConfiguration.java @@ -31,7 +31,6 @@ import org.springframework.cloud.client.CommonsClientAutoConfiguration; import org.springframework.cloud.client.discovery.simple.SimpleDiscoveryClientAutoConfiguration; import org.springframework.cloud.kubernetes.client.KubernetesClientAutoConfiguration; -import org.springframework.cloud.kubernetes.commons.KubernetesNamespaceProvider; import org.springframework.cloud.kubernetes.commons.PodUtils; import org.springframework.cloud.kubernetes.commons.discovery.ConditionalOnSpringCloudKubernetesBlockingDiscovery; import org.springframework.cloud.kubernetes.commons.discovery.ConditionalOnSpringCloudKubernetesBlockingDiscoveryHealthInitializer; @@ -58,16 +57,6 @@ public class KubernetesInformerDiscoveryClientAutoConfiguration { private static final LogAccessor LOG = new LogAccessor( LogFactory.getLog(KubernetesInformerDiscoveryClientAutoConfiguration.class)); - @Deprecated(forRemoval = true) - public KubernetesInformerDiscoveryClient kubernetesInformerDiscoveryClient( - KubernetesNamespaceProvider kubernetesNamespaceProvider, SharedInformerFactory sharedInformerFactory, - Lister serviceLister, Lister endpointsLister, - SharedInformer serviceInformer, SharedInformer endpointsInformer, - KubernetesDiscoveryProperties properties) { - return new KubernetesInformerDiscoveryClient(kubernetesNamespaceProvider.getNamespace(), sharedInformerFactory, - serviceLister, endpointsLister, serviceInformer, endpointsInformer, properties); - } - /** * Creation of this bean triggers publishing an InstanceRegisteredEvent. In turn, * there is the CommonsClientAutoConfiguration::DiscoveryClientHealthIndicator, that @@ -89,8 +78,8 @@ KubernetesInformerDiscoveryClient kubernetesClientInformerDiscoveryClient( SharedInformerFactory sharedInformerFactory, Lister serviceLister, Lister endpointsLister, SharedInformer serviceInformer, SharedInformer endpointsInformer, KubernetesDiscoveryProperties properties) { - return new KubernetesInformerDiscoveryClient(sharedInformerFactory, serviceLister, endpointsLister, - serviceInformer, endpointsInformer, properties); + return new KubernetesInformerDiscoveryClient(List.of(sharedInformerFactory), List.of(serviceLister), + List.of(endpointsLister), List.of(serviceInformer), List.of(endpointsInformer), properties); } @Bean diff --git a/spring-cloud-kubernetes-client-discovery/src/main/java/org/springframework/cloud/kubernetes/client/discovery/reactive/KubernetesInformerReactiveDiscoveryClient.java b/spring-cloud-kubernetes-client-discovery/src/main/java/org/springframework/cloud/kubernetes/client/discovery/reactive/KubernetesInformerReactiveDiscoveryClient.java index adfce00152..c79803d83c 100644 --- a/spring-cloud-kubernetes-client-discovery/src/main/java/org/springframework/cloud/kubernetes/client/discovery/reactive/KubernetesInformerReactiveDiscoveryClient.java +++ b/spring-cloud-kubernetes-client-discovery/src/main/java/org/springframework/cloud/kubernetes/client/discovery/reactive/KubernetesInformerReactiveDiscoveryClient.java @@ -18,19 +18,12 @@ import java.util.Objects; -import io.kubernetes.client.informer.SharedInformer; -import io.kubernetes.client.informer.SharedInformerFactory; -import io.kubernetes.client.informer.cache.Lister; -import io.kubernetes.client.openapi.models.V1Endpoints; -import io.kubernetes.client.openapi.models.V1Service; import reactor.core.publisher.Flux; import reactor.core.scheduler.Schedulers; import org.springframework.cloud.client.ServiceInstance; import org.springframework.cloud.client.discovery.ReactiveDiscoveryClient; import org.springframework.cloud.kubernetes.client.discovery.KubernetesInformerDiscoveryClient; -import org.springframework.cloud.kubernetes.commons.KubernetesNamespaceProvider; -import org.springframework.cloud.kubernetes.commons.discovery.KubernetesDiscoveryProperties; /** * @author Ryan Baxter @@ -39,16 +32,6 @@ public class KubernetesInformerReactiveDiscoveryClient implements ReactiveDiscov private final KubernetesInformerDiscoveryClient kubernetesDiscoveryClient; - @Deprecated(forRemoval = true) - public KubernetesInformerReactiveDiscoveryClient(KubernetesNamespaceProvider kubernetesNamespaceProvider, - SharedInformerFactory sharedInformerFactory, Lister serviceLister, - Lister endpointsLister, SharedInformer serviceInformer, - SharedInformer endpointsInformer, KubernetesDiscoveryProperties properties) { - this.kubernetesDiscoveryClient = new KubernetesInformerDiscoveryClient( - kubernetesNamespaceProvider.getNamespace(), sharedInformerFactory, serviceLister, endpointsLister, - serviceInformer, endpointsInformer, properties); - } - // this is either kubernetesClientInformerDiscoveryClient // or selectiveNamespacesKubernetesClientInformerDiscoveryClient KubernetesInformerReactiveDiscoveryClient(KubernetesInformerDiscoveryClient kubernetesDiscoveryClient) { diff --git a/spring-cloud-kubernetes-client-discovery/src/main/java/org/springframework/cloud/kubernetes/client/discovery/reactive/KubernetesInformerReactiveDiscoveryClientAutoConfiguration.java b/spring-cloud-kubernetes-client-discovery/src/main/java/org/springframework/cloud/kubernetes/client/discovery/reactive/KubernetesInformerReactiveDiscoveryClientAutoConfiguration.java index a63fa1e6a2..9064d6a060 100644 --- a/spring-cloud-kubernetes-client-discovery/src/main/java/org/springframework/cloud/kubernetes/client/discovery/reactive/KubernetesInformerReactiveDiscoveryClientAutoConfiguration.java +++ b/spring-cloud-kubernetes-client-discovery/src/main/java/org/springframework/cloud/kubernetes/client/discovery/reactive/KubernetesInformerReactiveDiscoveryClientAutoConfiguration.java @@ -40,7 +40,6 @@ import org.springframework.cloud.kubernetes.client.discovery.KubernetesClientInformerAutoConfiguration; import org.springframework.cloud.kubernetes.client.discovery.KubernetesClientInformerSelectiveNamespacesAutoConfiguration; import org.springframework.cloud.kubernetes.client.discovery.KubernetesInformerDiscoveryClient; -import org.springframework.cloud.kubernetes.commons.KubernetesNamespaceProvider; import org.springframework.cloud.kubernetes.commons.PodUtils; import org.springframework.cloud.kubernetes.commons.discovery.ConditionalOnSpringCloudKubernetesReactiveDiscovery; import org.springframework.cloud.kubernetes.commons.discovery.ConditionalOnSpringCloudKubernetesReactiveDiscoveryHealthInitializer; @@ -71,29 +70,6 @@ public class KubernetesInformerReactiveDiscoveryClientAutoConfiguration { private static final LogAccessor LOG = new LogAccessor( LogFactory.getLog(KubernetesInformerReactiveDiscoveryClientAutoConfiguration.class)); - @Deprecated(forRemoval = true) - public ReactiveDiscoveryClientHealthIndicator kubernetesReactiveDiscoveryClientHealthIndicator( - KubernetesInformerReactiveDiscoveryClient client, DiscoveryClientHealthIndicatorProperties properties, - KubernetesClientPodUtils podUtils) { - ReactiveDiscoveryClientHealthIndicator healthIndicator = new ReactiveDiscoveryClientHealthIndicator(client, - properties); - InstanceRegisteredEvent event = new InstanceRegisteredEvent<>( - new RegisteredEventSource("kubernetes", podUtils.isInsideKubernetes(), podUtils.currentPod().get()), - null); - healthIndicator.onApplicationEvent(event); - return healthIndicator; - } - - @Deprecated(forRemoval = true) - public KubernetesInformerReactiveDiscoveryClient kubernetesReactiveDiscoveryClient( - KubernetesNamespaceProvider kubernetesNamespaceProvider, SharedInformerFactory sharedInformerFactory, - Lister serviceLister, Lister endpointsLister, - SharedInformer serviceInformer, SharedInformer endpointsInformer, - KubernetesDiscoveryProperties properties) { - return new KubernetesInformerReactiveDiscoveryClient(kubernetesNamespaceProvider, sharedInformerFactory, - serviceLister, endpointsLister, serviceInformer, endpointsInformer, properties); - } - /** * Post an event so that health indicator is initialized. */ diff --git a/spring-cloud-kubernetes-commons/src/main/java/org/springframework/cloud/kubernetes/commons/KubernetesClientProperties.java b/spring-cloud-kubernetes-commons/src/main/java/org/springframework/cloud/kubernetes/commons/KubernetesClientProperties.java index 5b3f307e3a..09b6fef9d6 100644 --- a/spring-cloud-kubernetes-commons/src/main/java/org/springframework/cloud/kubernetes/commons/KubernetesClientProperties.java +++ b/spring-cloud-kubernetes-commons/src/main/java/org/springframework/cloud/kubernetes/commons/KubernetesClientProperties.java @@ -33,9 +33,9 @@ public record KubernetesClientProperties(Boolean trustCerts, String masterUrl, S String caCertFile, String caCertData, String clientCertFile, String clientCertData, String clientKeyFile, String clientKeyData, String clientKeyAlgo, String clientKeyPassphrase, String username, String password, Duration watchReconnectInterval, Duration watchReconnectLimit, Duration connectionTimeout, - Duration requestTimeout, @Deprecated(forRemoval = true) Duration rollingTimeout, Duration loggingInterval, - String httpProxy, String httpsProxy, String proxyUsername, String proxyPassword, String oauthToken, - String[] noProxy, @DefaultValue(SERVICE_ACCOUNT_NAMESPACE_PATH) String serviceAccountNamespacePath, + Duration requestTimeout, Duration loggingInterval, String httpProxy, String httpsProxy, String proxyUsername, + String proxyPassword, String oauthToken, String[] noProxy, + @DefaultValue(SERVICE_ACCOUNT_NAMESPACE_PATH) String serviceAccountNamespacePath, @DefaultValue(DEFAULT_USER_AGENT) String userAgent) { /** @@ -61,9 +61,9 @@ public KubernetesClientProperties withNamespace(String namespace) { this.caCertFile(), this.caCertData(), this.clientCertFile(), this.clientCertData(), this.clientKeyFile(), this.clientKeyData(), this.clientKeyAlgo(), this.clientKeyPassphrase(), this.username(), this.password(), this.watchReconnectInterval(), this.watchReconnectLimit(), - this.connectionTimeout(), this.requestTimeout(), this.rollingTimeout(), this.loggingInterval(), - this.httpProxy(), this.httpsProxy(), this.proxyUsername(), this.proxyPassword(), this.oauthToken(), - this.noProxy(), this.serviceAccountNamespacePath(), this.userAgent()); + this.connectionTimeout(), this.requestTimeout(), this.loggingInterval(), this.httpProxy(), + this.httpsProxy(), this.proxyUsername(), this.proxyPassword(), this.oauthToken(), this.noProxy(), + this.serviceAccountNamespacePath(), this.userAgent()); } } diff --git a/spring-cloud-kubernetes-commons/src/main/java/org/springframework/cloud/kubernetes/commons/config/ConfigDataRetryableConfigMapPropertySourceLocator.java b/spring-cloud-kubernetes-commons/src/main/java/org/springframework/cloud/kubernetes/commons/config/ConfigDataRetryableConfigMapPropertySourceLocator.java index 0423c0c0f3..233b3cc42d 100644 --- a/spring-cloud-kubernetes-commons/src/main/java/org/springframework/cloud/kubernetes/commons/config/ConfigDataRetryableConfigMapPropertySourceLocator.java +++ b/spring-cloud-kubernetes-commons/src/main/java/org/springframework/cloud/kubernetes/commons/config/ConfigDataRetryableConfigMapPropertySourceLocator.java @@ -35,22 +35,6 @@ public class ConfigDataRetryableConfigMapPropertySourceLocator extends ConfigMap private ConfigMapPropertySourceLocator configMapPropertySourceLocator; - /** - * This constructor is deprecated, and we do not use it anymore internally. It will be - * removed in the next major release. - */ - @Deprecated(forRemoval = true) - public ConfigDataRetryableConfigMapPropertySourceLocator( - ConfigMapPropertySourceLocator configMapPropertySourceLocator, ConfigMapConfigProperties properties) { - super(properties); - this.configMapPropertySourceLocator = configMapPropertySourceLocator; - this.retryTemplate = RetryTemplate.builder() - .maxAttempts(properties.retry().maxAttempts()) - .exponentialBackoff(properties.retry().initialInterval(), properties.retry().multiplier(), - properties.retry().maxInterval()) - .build(); - } - public ConfigDataRetryableConfigMapPropertySourceLocator( ConfigMapPropertySourceLocator configMapPropertySourceLocator, ConfigMapConfigProperties properties, ConfigMapCache cache) { diff --git a/spring-cloud-kubernetes-commons/src/main/java/org/springframework/cloud/kubernetes/commons/config/ConfigDataRetryableSecretsPropertySourceLocator.java b/spring-cloud-kubernetes-commons/src/main/java/org/springframework/cloud/kubernetes/commons/config/ConfigDataRetryableSecretsPropertySourceLocator.java index 371162949a..a0e62cc795 100644 --- a/spring-cloud-kubernetes-commons/src/main/java/org/springframework/cloud/kubernetes/commons/config/ConfigDataRetryableSecretsPropertySourceLocator.java +++ b/spring-cloud-kubernetes-commons/src/main/java/org/springframework/cloud/kubernetes/commons/config/ConfigDataRetryableSecretsPropertySourceLocator.java @@ -34,22 +34,6 @@ public class ConfigDataRetryableSecretsPropertySourceLocator extends SecretsProp private SecretsPropertySourceLocator secretsPropertySourceLocator; - /** - * This constructor is deprecated, and we do not use it anymore internally. It will be - * removed in the next major release. - */ - @Deprecated(forRemoval = true) - public ConfigDataRetryableSecretsPropertySourceLocator(SecretsPropertySourceLocator propertySourceLocator, - SecretsConfigProperties secretsConfigProperties) { - super(secretsConfigProperties); - this.secretsPropertySourceLocator = propertySourceLocator; - this.retryTemplate = RetryTemplate.builder() - .maxAttempts(properties.retry().maxAttempts()) - .exponentialBackoff(properties.retry().initialInterval(), properties.retry().multiplier(), - properties.retry().maxInterval()) - .build(); - } - public ConfigDataRetryableSecretsPropertySourceLocator(SecretsPropertySourceLocator propertySourceLocator, SecretsConfigProperties secretsConfigProperties, SecretsCache cache) { super(secretsConfigProperties, cache); diff --git a/spring-cloud-kubernetes-commons/src/main/java/org/springframework/cloud/kubernetes/commons/config/ConfigMapPropertySourceLocator.java b/spring-cloud-kubernetes-commons/src/main/java/org/springframework/cloud/kubernetes/commons/config/ConfigMapPropertySourceLocator.java index c6767be592..6f03effae2 100644 --- a/spring-cloud-kubernetes-commons/src/main/java/org/springframework/cloud/kubernetes/commons/config/ConfigMapPropertySourceLocator.java +++ b/spring-cloud-kubernetes-commons/src/main/java/org/springframework/cloud/kubernetes/commons/config/ConfigMapPropertySourceLocator.java @@ -56,16 +56,6 @@ public abstract class ConfigMapPropertySourceLocator implements PropertySourceLo protected final ConfigMapConfigProperties properties; - /** - * This constructor is deprecated, and we do not use it anymore internally. It will be - * removed in the next major release. - */ - @Deprecated(forRemoval = true) - public ConfigMapPropertySourceLocator(ConfigMapConfigProperties properties) { - this.properties = properties; - this.cache = new ConfigMapCache.NOOPCache(); - } - public ConfigMapPropertySourceLocator(ConfigMapConfigProperties properties, ConfigMapCache cache) { this.properties = properties; this.cache = cache; diff --git a/spring-cloud-kubernetes-commons/src/main/java/org/springframework/cloud/kubernetes/commons/config/ConfigUtils.java b/spring-cloud-kubernetes-commons/src/main/java/org/springframework/cloud/kubernetes/commons/config/ConfigUtils.java index 3072d97838..65db6c2af9 100644 --- a/spring-cloud-kubernetes-commons/src/main/java/org/springframework/cloud/kubernetes/commons/config/ConfigUtils.java +++ b/spring-cloud-kubernetes-commons/src/main/java/org/springframework/cloud/kubernetes/commons/config/ConfigUtils.java @@ -157,21 +157,6 @@ public static void onException(boolean failFast, Exception e) { LOG.warn(e.getMessage() + ". Ignoring.", e); } - /* - * This method will return a SourceData that has a name in the form : - * "configmap.my-configmap.my-configmap-2.namespace" and the "data" from the context - * is appended with prefix. So if incoming is "a=b", the result will be : "prefix.a=b" - */ - @Deprecated(forRemoval = true) - public static SourceData withPrefix(String target, PrefixContext context) { - Map withPrefix = CollectionUtils.newHashMap(context.data().size()); - context.data().forEach((key, value) -> withPrefix.put(context.prefix() + "." + key, value)); - - String propertySourceTokens = String.join(PROPERTY_SOURCE_NAME_SEPARATOR, - context.propertySourceNames().stream().sorted().collect(Collectors.toCollection(LinkedHashSet::new))); - return new SourceData(sourceName(target, propertySourceTokens, context.namespace()), withPrefix); - } - public static String sourceName(String target, String applicationName, String namespace) { return target + PROPERTY_SOURCE_NAME_SEPARATOR + applicationName + PROPERTY_SOURCE_NAME_SEPARATOR + namespace; } diff --git a/spring-cloud-kubernetes-commons/src/main/java/org/springframework/cloud/kubernetes/commons/config/PropertySourceUtils.java b/spring-cloud-kubernetes-commons/src/main/java/org/springframework/cloud/kubernetes/commons/config/PropertySourceUtils.java index 155534fa96..2dd2c08b99 100644 --- a/spring-cloud-kubernetes-commons/src/main/java/org/springframework/cloud/kubernetes/commons/config/PropertySourceUtils.java +++ b/spring-cloud-kubernetes-commons/src/main/java/org/springframework/cloud/kubernetes/commons/config/PropertySourceUtils.java @@ -21,7 +21,6 @@ import java.io.UncheckedIOException; import java.util.Map; import java.util.Properties; -import java.util.function.BinaryOperator; import java.util.function.Function; import java.util.stream.Collectors; @@ -99,17 +98,4 @@ else if (springProfiles != null) { }; } - /** - * returns a {@link BinaryOperator} that unconditionally throws an - * {@link IllegalStateException}. - * @param type of the argument - * @return a {@link BinaryOperator} - */ - @Deprecated(forRemoval = true) - public static BinaryOperator throwingMerger() { - return (left, right) -> { - throw new IllegalStateException("Duplicate key " + left); - }; - } - } diff --git a/spring-cloud-kubernetes-commons/src/main/java/org/springframework/cloud/kubernetes/commons/config/SecretsPropertySourceLocator.java b/spring-cloud-kubernetes-commons/src/main/java/org/springframework/cloud/kubernetes/commons/config/SecretsPropertySourceLocator.java index b878d1cf0e..1e7b27dfee 100644 --- a/spring-cloud-kubernetes-commons/src/main/java/org/springframework/cloud/kubernetes/commons/config/SecretsPropertySourceLocator.java +++ b/spring-cloud-kubernetes-commons/src/main/java/org/springframework/cloud/kubernetes/commons/config/SecretsPropertySourceLocator.java @@ -62,16 +62,6 @@ public abstract class SecretsPropertySourceLocator implements PropertySourceLoca protected final SecretsConfigProperties properties; - /** - * This constructor is deprecated, and we do not use it anymore internally. It will be - * removed in the next major release. - */ - @Deprecated(forRemoval = true) - public SecretsPropertySourceLocator(SecretsConfigProperties properties) { - this.properties = properties; - this.cache = new SecretsCache.NOOPCache(); - } - public SecretsPropertySourceLocator(SecretsConfigProperties properties, SecretsCache cache) { this.properties = properties; this.cache = cache; diff --git a/spring-cloud-kubernetes-commons/src/main/java/org/springframework/cloud/kubernetes/commons/config/reload/ConfigReloadUtil.java b/spring-cloud-kubernetes-commons/src/main/java/org/springframework/cloud/kubernetes/commons/config/reload/ConfigReloadUtil.java index 1f63362b96..1278f46412 100644 --- a/spring-cloud-kubernetes-commons/src/main/java/org/springframework/cloud/kubernetes/commons/config/reload/ConfigReloadUtil.java +++ b/spring-cloud-kubernetes-commons/src/main/java/org/springframework/cloud/kubernetes/commons/config/reload/ConfigReloadUtil.java @@ -86,10 +86,8 @@ public static boolean reload(PropertySourceLocator locator, ConfigurableEnvironm * @param property source type * @param sourceClass class for which property sources will be found * @return finds all registered property sources of the given type - * @deprecated this method will not be public in the next major release. */ - @Deprecated(forRemoval = false) - public static > List findPropertySources(Class sourceClass, + static > List findPropertySources(Class sourceClass, ConfigurableEnvironment environment) { List managedSources = new ArrayList<>(); diff --git a/spring-cloud-kubernetes-commons/src/test/java/org/springframework/cloud/kubernetes/commons/KubernetesClientPropertiesTests.java b/spring-cloud-kubernetes-commons/src/test/java/org/springframework/cloud/kubernetes/commons/KubernetesClientPropertiesTests.java index 7600e00117..32aa23eaac 100644 --- a/spring-cloud-kubernetes-commons/src/test/java/org/springframework/cloud/kubernetes/commons/KubernetesClientPropertiesTests.java +++ b/spring-cloud-kubernetes-commons/src/test/java/org/springframework/cloud/kubernetes/commons/KubernetesClientPropertiesTests.java @@ -54,7 +54,6 @@ void testDefaults() { assertThat(properties.watchReconnectLimit()).isNull(); assertThat(properties.connectionTimeout()).isNull(); assertThat(properties.requestTimeout()).isNull(); - assertThat(properties.rollingTimeout()).isNull(); assertThat(properties.loggingInterval()).isNull(); assertThat(properties.httpProxy()).isNull(); assertThat(properties.httpsProxy()).isNull(); @@ -89,7 +88,6 @@ void testNonDefaults() { "spring.cloud.kubernetes.client.watch-reconnect-limit=300ms", "spring.cloud.kubernetes.client.connection-timeout=400ms", "spring.cloud.kubernetes.client.request-timeout=500ms", - "spring.cloud.kubernetes.client.rolling-timeout=600ms", "spring.cloud.kubernetes.client.logging-interval=700ms", "spring.cloud.kubernetes.client.http-proxy=http-proxy", "spring.cloud.kubernetes.client.https-proxy=https-proxy", @@ -120,7 +118,6 @@ void testNonDefaults() { assertThat(properties.watchReconnectLimit()).isEqualTo(Duration.ofMillis(300)); assertThat(properties.connectionTimeout()).isEqualTo(Duration.ofMillis(400)); assertThat(properties.requestTimeout()).isEqualTo(Duration.ofMillis(500)); - assertThat(properties.rollingTimeout()).isEqualTo(Duration.ofMillis(600)); assertThat(properties.loggingInterval()).isEqualTo(Duration.ofMillis(700)); assertThat(properties.httpProxy()).isEqualTo("http-proxy"); assertThat(properties.httpsProxy()).isEqualTo("https-proxy"); @@ -156,7 +153,6 @@ void testCopyWithNamespaceConstructor() { "spring.cloud.kubernetes.client.watch-reconnect-limit=300ms", "spring.cloud.kubernetes.client.connection-timeout=400ms", "spring.cloud.kubernetes.client.request-timeout=500ms", - "spring.cloud.kubernetes.client.rolling-timeout=600ms", "spring.cloud.kubernetes.client.logging-interval=700ms", "spring.cloud.kubernetes.client.http-proxy=http-proxy", "spring.cloud.kubernetes.client.https-proxy=https-proxy", @@ -188,7 +184,6 @@ void testCopyWithNamespaceConstructor() { assertThat(properties.watchReconnectLimit()).isEqualTo(Duration.ofMillis(300)); assertThat(properties.connectionTimeout()).isEqualTo(Duration.ofMillis(400)); assertThat(properties.requestTimeout()).isEqualTo(Duration.ofMillis(500)); - assertThat(properties.rollingTimeout()).isEqualTo(Duration.ofMillis(600)); assertThat(properties.loggingInterval()).isEqualTo(Duration.ofMillis(700)); assertThat(properties.httpProxy()).isEqualTo("http-proxy"); assertThat(properties.httpsProxy()).isEqualTo("https-proxy"); diff --git a/spring-cloud-kubernetes-commons/src/test/java/org/springframework/cloud/kubernetes/commons/config/KubernetesConfigDataLocationResolverTests.java b/spring-cloud-kubernetes-commons/src/test/java/org/springframework/cloud/kubernetes/commons/config/KubernetesConfigDataLocationResolverTests.java index 53b3ba4581..046e77a902 100644 --- a/spring-cloud-kubernetes-commons/src/test/java/org/springframework/cloud/kubernetes/commons/config/KubernetesConfigDataLocationResolverTests.java +++ b/spring-cloud-kubernetes-commons/src/test/java/org/springframework/cloud/kubernetes/commons/config/KubernetesConfigDataLocationResolverTests.java @@ -156,7 +156,7 @@ void testResolveProfileSpecificTwo() { DefaultBootstrapContext context = new DefaultBootstrapContext(); KubernetesClientProperties properties = new KubernetesClientProperties(null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, - null, null, null, "user-agent"); + null, null, "user-agent"); context.register(KubernetesClientProperties.class, BootstrapRegistry.InstanceSupplier.of(properties)); Mockito.when(RESOLVER_CONTEXT.getBinder()).thenReturn(binder); diff --git a/spring-cloud-kubernetes-controllers/spring-cloud-kubernetes-configserver/src/main/java/org/springframework/cloud/kubernetes/configserver/KubernetesEnvironmentRepository.java b/spring-cloud-kubernetes-controllers/spring-cloud-kubernetes-configserver/src/main/java/org/springframework/cloud/kubernetes/configserver/KubernetesEnvironmentRepository.java index aad5b7a8d7..9cd03a08b5 100644 --- a/spring-cloud-kubernetes-controllers/spring-cloud-kubernetes-configserver/src/main/java/org/springframework/cloud/kubernetes/configserver/KubernetesEnvironmentRepository.java +++ b/spring-cloud-kubernetes-controllers/spring-cloud-kubernetes-configserver/src/main/java/org/springframework/cloud/kubernetes/configserver/KubernetesEnvironmentRepository.java @@ -47,15 +47,7 @@ public class KubernetesEnvironmentRepository implements EnvironmentRepository, O private final String namespace; - private int order = KubernetesConfigServerProperties.DEFAULT_ORDER; - - @Deprecated - public KubernetesEnvironmentRepository(CoreV1Api coreApi, - List kubernetesPropertySourceSuppliers, String namespace) { - this.coreApi = coreApi; - this.kubernetesPropertySourceSuppliers = kubernetesPropertySourceSuppliers; - this.namespace = namespace; - } + private final int order; public KubernetesEnvironmentRepository(CoreV1Api coreApi, List kubernetesPropertySourceSuppliers, String namespace, @@ -136,8 +128,4 @@ public int getOrder() { return this.order; } - public void setOrder(int order) { - this.order = order; - } - } diff --git a/spring-cloud-kubernetes-controllers/spring-cloud-kubernetes-discoveryserver/src/main/java/org/springframework/cloud/kubernetes/discoveryserver/DiscoveryServerController.java b/spring-cloud-kubernetes-controllers/spring-cloud-kubernetes-discoveryserver/src/main/java/org/springframework/cloud/kubernetes/discoveryserver/DiscoveryServerController.java index fb1f2a3dd1..8da27685b0 100644 --- a/spring-cloud-kubernetes-controllers/spring-cloud-kubernetes-discoveryserver/src/main/java/org/springframework/cloud/kubernetes/discoveryserver/DiscoveryServerController.java +++ b/spring-cloud-kubernetes-controllers/spring-cloud-kubernetes-discoveryserver/src/main/java/org/springframework/cloud/kubernetes/discoveryserver/DiscoveryServerController.java @@ -53,17 +53,8 @@ public Flux appInstances(@PathVariable String name) { return reactiveDiscoveryClient.getInstances(name); } - /** - * use the "appInstanceNonDeprecated" instead. - */ - @Deprecated(forRemoval = true) - @GetMapping("/app/{name}/{instanceId}") - public Mono appInstance(@PathVariable String name, @PathVariable String instanceId) { - return innerAppInstance(name, instanceId); - } - @GetMapping("/apps/{name}/{instanceId}") - Mono appInstanceNonDeprecated(@PathVariable String name, @PathVariable String instanceId) { + Mono appInstance(@PathVariable String name, @PathVariable String instanceId) { return innerAppInstance(name, instanceId); } diff --git a/spring-cloud-kubernetes-discovery/src/main/java/org/springframework/cloud/kubernetes/discovery/KubernetesDiscoveryClient.java b/spring-cloud-kubernetes-discovery/src/main/java/org/springframework/cloud/kubernetes/discovery/KubernetesDiscoveryClient.java index 69c5afe555..620200f898 100644 --- a/spring-cloud-kubernetes-discovery/src/main/java/org/springframework/cloud/kubernetes/discovery/KubernetesDiscoveryClient.java +++ b/spring-cloud-kubernetes-discovery/src/main/java/org/springframework/cloud/kubernetes/discovery/KubernetesDiscoveryClient.java @@ -42,17 +42,6 @@ public class KubernetesDiscoveryClient implements DiscoveryClient { private final String discoveryServerUrl; - @Deprecated(forRemoval = true) - public KubernetesDiscoveryClient(RestTemplate rest, KubernetesDiscoveryClientProperties properties) { - if (!StringUtils.hasText(properties.getDiscoveryServerUrl())) { - throw new DiscoveryServerUrlInvalidException(); - } - this.rest = rest; - this.emptyNamespaces = properties.getNamespaces().isEmpty(); - this.namespaces = properties.getNamespaces(); - this.discoveryServerUrl = properties.getDiscoveryServerUrl(); - } - KubernetesDiscoveryClient(RestTemplate rest, KubernetesDiscoveryProperties kubernetesDiscoveryProperties) { if (!StringUtils.hasText(kubernetesDiscoveryProperties.discoveryServerUrl())) { throw new DiscoveryServerUrlInvalidException(); From 1f17adc58ed34f71a648515517a005b5105c9cbe Mon Sep 17 00:00:00 2001 From: wind57 Date: Fri, 29 Aug 2025 11:20:16 +0300 Subject: [PATCH 02/10] fix compilation Signed-off-by: wind57 --- .../KubernetesClientConfigReloadAutoConfigurationTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spring-cloud-kubernetes-client-config/src/test/java/org/springframework/cloud/kubernetes/client/config/KubernetesClientConfigReloadAutoConfigurationTest.java b/spring-cloud-kubernetes-client-config/src/test/java/org/springframework/cloud/kubernetes/client/config/KubernetesClientConfigReloadAutoConfigurationTest.java index 35e43583cd..0827a6d134 100644 --- a/spring-cloud-kubernetes-client-config/src/test/java/org/springframework/cloud/kubernetes/client/config/KubernetesClientConfigReloadAutoConfigurationTest.java +++ b/spring-cloud-kubernetes-client-config/src/test/java/org/springframework/cloud/kubernetes/client/config/KubernetesClientConfigReloadAutoConfigurationTest.java @@ -499,7 +499,7 @@ static class LocalTestConfig { @Bean KubernetesClientProperties kubernetesClientProperties() { return new KubernetesClientProperties(null, null, null, "default", null, null, null, null, null, null, null, - null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, + null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null); } From f9e7c4845515ca39d9f16eac438ca4ed40a3e730 Mon Sep 17 00:00:00 2001 From: wind57 Date: Fri, 29 Aug 2025 11:25:44 +0300 Subject: [PATCH 03/10] fix compilation Signed-off-by: wind57 --- .../discovery/KubernetesReactiveDiscoveryClient.java | 9 --------- 1 file changed, 9 deletions(-) diff --git a/spring-cloud-kubernetes-discovery/src/main/java/org/springframework/cloud/kubernetes/discovery/KubernetesReactiveDiscoveryClient.java b/spring-cloud-kubernetes-discovery/src/main/java/org/springframework/cloud/kubernetes/discovery/KubernetesReactiveDiscoveryClient.java index 2a86ae0639..2a9a9e8435 100644 --- a/spring-cloud-kubernetes-discovery/src/main/java/org/springframework/cloud/kubernetes/discovery/KubernetesReactiveDiscoveryClient.java +++ b/spring-cloud-kubernetes-discovery/src/main/java/org/springframework/cloud/kubernetes/discovery/KubernetesReactiveDiscoveryClient.java @@ -34,15 +34,6 @@ public class KubernetesReactiveDiscoveryClient implements ReactiveDiscoveryClien private final WebClient webClient; - @Deprecated(forRemoval = true) - public KubernetesReactiveDiscoveryClient(WebClient.Builder webClientBuilder, - KubernetesDiscoveryClientProperties properties) { - if (!StringUtils.hasText(properties.getDiscoveryServerUrl())) { - throw new DiscoveryServerUrlInvalidException(); - } - webClient = webClientBuilder.baseUrl(properties.getDiscoveryServerUrl()).build(); - } - KubernetesReactiveDiscoveryClient(WebClient.Builder webClientBuilder, KubernetesDiscoveryProperties properties) { if (!StringUtils.hasText(properties.discoveryServerUrl())) { throw new DiscoveryServerUrlInvalidException(); From 1e07b0bec29d2f6d365932bfc2296f78261986bc Mon Sep 17 00:00:00 2001 From: wind57 Date: Fri, 29 Aug 2025 14:53:27 +0300 Subject: [PATCH 04/10] fix compilation Signed-off-by: wind57 --- ...ientConfigReloadAutoConfigurationTest.java | 3 +- ...ernetesClientConfigServerBootstrapper.java | 7 +- .../KubernetesInformerDiscoveryClient.java | 4 +- ...ormerDiscoveryClientAutoConfiguration.java | 11 ++- ...ctiveDiscoveryClientAutoConfiguration.java | 17 ++-- ...etesDiscoveryClientFilterMetadataTest.java | 45 +++++---- ...veryClientServiceWithoutPortNameTests.java | 9 +- .../KubernetesDiscoveryClientTests.java | 65 ++++++++----- ...ubernetesInformerDiscoveryClientTests.java | 96 ++++++++++++------- ...sInformerReactiveDiscoveryClientTests.java | 40 ++++---- 10 files changed, 181 insertions(+), 116 deletions(-) diff --git a/spring-cloud-kubernetes-client-config/src/test/java/org/springframework/cloud/kubernetes/client/config/KubernetesClientConfigReloadAutoConfigurationTest.java b/spring-cloud-kubernetes-client-config/src/test/java/org/springframework/cloud/kubernetes/client/config/KubernetesClientConfigReloadAutoConfigurationTest.java index 0827a6d134..9b070ace1d 100644 --- a/spring-cloud-kubernetes-client-config/src/test/java/org/springframework/cloud/kubernetes/client/config/KubernetesClientConfigReloadAutoConfigurationTest.java +++ b/spring-cloud-kubernetes-client-config/src/test/java/org/springframework/cloud/kubernetes/client/config/KubernetesClientConfigReloadAutoConfigurationTest.java @@ -499,8 +499,7 @@ static class LocalTestConfig { @Bean KubernetesClientProperties kubernetesClientProperties() { return new KubernetesClientProperties(null, null, null, "default", null, null, null, null, null, null, null, - null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, - null); + null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null); } @Bean diff --git a/spring-cloud-kubernetes-client-discovery/src/main/java/org/springframework/cloud/kubernetes/client/discovery/KubernetesClientConfigServerBootstrapper.java b/spring-cloud-kubernetes-client-discovery/src/main/java/org/springframework/cloud/kubernetes/client/discovery/KubernetesClientConfigServerBootstrapper.java index 133ae40b10..1d9623af04 100644 --- a/spring-cloud-kubernetes-client-discovery/src/main/java/org/springframework/cloud/kubernetes/client/discovery/KubernetesClientConfigServerBootstrapper.java +++ b/spring-cloud-kubernetes-client-discovery/src/main/java/org/springframework/cloud/kubernetes/client/discovery/KubernetesClientConfigServerBootstrapper.java @@ -17,11 +17,13 @@ package org.springframework.cloud.kubernetes.client.discovery; import java.util.Collections; +import java.util.List; import io.kubernetes.client.informer.SharedIndexInformer; import io.kubernetes.client.informer.SharedInformerFactory; import io.kubernetes.client.informer.cache.Lister; import io.kubernetes.client.openapi.ApiClient; +import io.kubernetes.client.openapi.apis.CoreV1Api; import io.kubernetes.client.openapi.models.V1Endpoints; import io.kubernetes.client.openapi.models.V1EndpointsList; import io.kubernetes.client.openapi.models.V1Service; @@ -96,8 +98,9 @@ public void initialize(BootstrapRegistry registry) { .sharedIndexInformerFor(endpointsApi, V1Endpoints.class, 0L, namespace); Lister endpointsLister = new Lister<>(endpointsSharedIndexInformer.getIndexer()); KubernetesInformerDiscoveryClient discoveryClient = new KubernetesInformerDiscoveryClient( - sharedInformerFactory, serviceLister, endpointsLister, serviceSharedIndexInformer, - endpointsSharedIndexInformer, discoveryProperties); + List.of(sharedInformerFactory), List.of(serviceLister), List.of(endpointsLister), + List.of(serviceSharedIndexInformer), List.of(endpointsSharedIndexInformer), discoveryProperties, + new CoreV1Api(apiClient)); try { discoveryClient.afterPropertiesSet(); return discoveryClient::getInstances; diff --git a/spring-cloud-kubernetes-client-discovery/src/main/java/org/springframework/cloud/kubernetes/client/discovery/KubernetesInformerDiscoveryClient.java b/spring-cloud-kubernetes-client-discovery/src/main/java/org/springframework/cloud/kubernetes/client/discovery/KubernetesInformerDiscoveryClient.java index 39d5081b96..1102171f67 100644 --- a/spring-cloud-kubernetes-client-discovery/src/main/java/org/springframework/cloud/kubernetes/client/discovery/KubernetesInformerDiscoveryClient.java +++ b/spring-cloud-kubernetes-client-discovery/src/main/java/org/springframework/cloud/kubernetes/client/discovery/KubernetesInformerDiscoveryClient.java @@ -35,7 +35,6 @@ import jakarta.annotation.PostConstruct; import org.apache.commons.logging.LogFactory; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.cloud.client.ServiceInstance; import org.springframework.cloud.client.discovery.DiscoveryClient; import org.springframework.cloud.kubernetes.commons.discovery.KubernetesDiscoveryProperties; @@ -87,11 +86,12 @@ public class KubernetesInformerDiscoveryClient implements DiscoveryClient { public KubernetesInformerDiscoveryClient(List sharedInformerFactories, List> serviceListers, List> endpointsListers, List> serviceInformers, List> endpointsInformers, - KubernetesDiscoveryProperties properties) { + KubernetesDiscoveryProperties properties, CoreV1Api coreV1Api) { this.sharedInformerFactories = sharedInformerFactories; this.serviceListers = serviceListers; this.endpointsListers = endpointsListers; + this.coreV1Api = coreV1Api; this.informersReadyFunc = () -> { boolean serviceInformersReady = serviceInformers.isEmpty() || serviceInformers.stream() .map(SharedInformer::hasSynced) diff --git a/spring-cloud-kubernetes-client-discovery/src/main/java/org/springframework/cloud/kubernetes/client/discovery/KubernetesInformerDiscoveryClientAutoConfiguration.java b/spring-cloud-kubernetes-client-discovery/src/main/java/org/springframework/cloud/kubernetes/client/discovery/KubernetesInformerDiscoveryClientAutoConfiguration.java index 466ae1d077..39c28335dc 100644 --- a/spring-cloud-kubernetes-client-discovery/src/main/java/org/springframework/cloud/kubernetes/client/discovery/KubernetesInformerDiscoveryClientAutoConfiguration.java +++ b/spring-cloud-kubernetes-client-discovery/src/main/java/org/springframework/cloud/kubernetes/client/discovery/KubernetesInformerDiscoveryClientAutoConfiguration.java @@ -21,6 +21,7 @@ import io.kubernetes.client.informer.SharedInformer; import io.kubernetes.client.informer.SharedInformerFactory; import io.kubernetes.client.informer.cache.Lister; +import io.kubernetes.client.openapi.apis.CoreV1Api; import io.kubernetes.client.openapi.models.V1Endpoints; import io.kubernetes.client.openapi.models.V1Service; import org.apache.commons.logging.LogFactory; @@ -77,9 +78,10 @@ public KubernetesDiscoveryClientHealthIndicatorInitializer indicatorInitializer( KubernetesInformerDiscoveryClient kubernetesClientInformerDiscoveryClient( SharedInformerFactory sharedInformerFactory, Lister serviceLister, Lister endpointsLister, SharedInformer serviceInformer, - SharedInformer endpointsInformer, KubernetesDiscoveryProperties properties) { + SharedInformer endpointsInformer, KubernetesDiscoveryProperties properties, + CoreV1Api coreV1Api) { return new KubernetesInformerDiscoveryClient(List.of(sharedInformerFactory), List.of(serviceLister), - List.of(endpointsLister), List.of(serviceInformer), List.of(endpointsInformer), properties); + List.of(endpointsLister), List.of(serviceInformer), List.of(endpointsInformer), properties, coreV1Api); } @Bean @@ -88,9 +90,10 @@ KubernetesInformerDiscoveryClient kubernetesClientInformerDiscoveryClient( KubernetesInformerDiscoveryClient selectiveNamespacesKubernetesInformerDiscoveryClient( List sharedInformerFactories, List> serviceListers, List> endpointsListers, List> serviceInformers, - List> endpointsInformers, KubernetesDiscoveryProperties properties) { + List> endpointsInformers, KubernetesDiscoveryProperties properties, + CoreV1Api coreV1Api) { return new KubernetesInformerDiscoveryClient(sharedInformerFactories, serviceListers, endpointsListers, - serviceInformers, endpointsInformers, properties); + serviceInformers, endpointsInformers, properties, coreV1Api); } } diff --git a/spring-cloud-kubernetes-client-discovery/src/main/java/org/springframework/cloud/kubernetes/client/discovery/reactive/KubernetesInformerReactiveDiscoveryClientAutoConfiguration.java b/spring-cloud-kubernetes-client-discovery/src/main/java/org/springframework/cloud/kubernetes/client/discovery/reactive/KubernetesInformerReactiveDiscoveryClientAutoConfiguration.java index 9064d6a060..641df506c1 100644 --- a/spring-cloud-kubernetes-client-discovery/src/main/java/org/springframework/cloud/kubernetes/client/discovery/reactive/KubernetesInformerReactiveDiscoveryClientAutoConfiguration.java +++ b/spring-cloud-kubernetes-client-discovery/src/main/java/org/springframework/cloud/kubernetes/client/discovery/reactive/KubernetesInformerReactiveDiscoveryClientAutoConfiguration.java @@ -21,6 +21,7 @@ import io.kubernetes.client.informer.SharedInformer; import io.kubernetes.client.informer.SharedInformerFactory; import io.kubernetes.client.informer.cache.Lister; +import io.kubernetes.client.openapi.apis.CoreV1Api; import io.kubernetes.client.openapi.models.V1Endpoints; import io.kubernetes.client.openapi.models.V1Service; import org.apache.commons.logging.LogFactory; @@ -30,11 +31,9 @@ import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; import org.springframework.cloud.client.ReactiveCommonsClientAutoConfiguration; import org.springframework.cloud.client.discovery.composite.reactive.ReactiveCompositeDiscoveryClientAutoConfiguration; -import org.springframework.cloud.client.discovery.event.InstanceRegisteredEvent; import org.springframework.cloud.client.discovery.health.DiscoveryClientHealthIndicatorProperties; import org.springframework.cloud.client.discovery.health.reactive.ReactiveDiscoveryClientHealthIndicator; import org.springframework.cloud.client.discovery.simple.reactive.SimpleReactiveDiscoveryClientAutoConfiguration; -import org.springframework.cloud.kubernetes.client.KubernetesClientPodUtils; import org.springframework.cloud.kubernetes.client.discovery.ConditionalOnSelectiveNamespacesMissing; import org.springframework.cloud.kubernetes.client.discovery.ConditionalOnSelectiveNamespacesPresent; import org.springframework.cloud.kubernetes.client.discovery.KubernetesClientInformerAutoConfiguration; @@ -52,8 +51,6 @@ import org.springframework.context.annotation.Configuration; import org.springframework.core.log.LogAccessor; -import static org.springframework.cloud.kubernetes.commons.discovery.KubernetesDiscoveryClientHealthIndicatorInitializer.RegisteredEventSource; - /** * @author Ryan Baxter */ @@ -104,9 +101,10 @@ KubernetesInformerReactiveDiscoveryClient kubernetesClientReactiveDiscoveryClien KubernetesInformerDiscoveryClient kubernetesClientInformerDiscoveryClient( SharedInformerFactory sharedInformerFactory, Lister serviceLister, Lister endpointsLister, SharedInformer serviceInformer, - SharedInformer endpointsInformer, KubernetesDiscoveryProperties properties) { - return new KubernetesInformerDiscoveryClient(sharedInformerFactory, serviceLister, endpointsLister, - serviceInformer, endpointsInformer, properties); + SharedInformer endpointsInformer, KubernetesDiscoveryProperties properties, + CoreV1Api coreV1Api) { + return new KubernetesInformerDiscoveryClient(List.of(sharedInformerFactory), List.of(serviceLister), + List.of(endpointsLister), List.of(serviceInformer), List.of(endpointsInformer), properties, coreV1Api); } @Bean @@ -115,9 +113,10 @@ KubernetesInformerDiscoveryClient kubernetesClientInformerDiscoveryClient( KubernetesInformerDiscoveryClient selectiveNamespacesKubernetesClientInformerDiscoveryClient( List sharedInformerFactories, List> serviceListers, List> endpointsListers, List> serviceInformers, - List> endpointsInformers, KubernetesDiscoveryProperties properties) { + List> endpointsInformers, KubernetesDiscoveryProperties properties, + CoreV1Api coreV1Api) { return new KubernetesInformerDiscoveryClient(sharedInformerFactories, serviceListers, endpointsListers, - serviceInformers, endpointsInformers, properties); + serviceInformers, endpointsInformers, properties, coreV1Api); } } diff --git a/spring-cloud-kubernetes-client-discovery/src/test/java/org/springframework/cloud/kubernetes/client/discovery/KubernetesDiscoveryClientFilterMetadataTest.java b/spring-cloud-kubernetes-client-discovery/src/test/java/org/springframework/cloud/kubernetes/client/discovery/KubernetesDiscoveryClientFilterMetadataTest.java index 9cea1485eb..255c2d59ee 100644 --- a/spring-cloud-kubernetes-client-discovery/src/test/java/org/springframework/cloud/kubernetes/client/discovery/KubernetesDiscoveryClientFilterMetadataTest.java +++ b/spring-cloud-kubernetes-client-discovery/src/test/java/org/springframework/cloud/kubernetes/client/discovery/KubernetesDiscoveryClientFilterMetadataTest.java @@ -22,6 +22,7 @@ import io.kubernetes.client.informer.cache.Cache; import io.kubernetes.client.informer.cache.Lister; +import io.kubernetes.client.openapi.apis.CoreV1Api; import io.kubernetes.client.openapi.models.CoreV1EndpointPort; import io.kubernetes.client.openapi.models.CoreV1EndpointPortBuilder; import io.kubernetes.client.openapi.models.V1Endpoints; @@ -36,8 +37,10 @@ import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; +import org.mockito.Mockito; import org.springframework.cloud.client.ServiceInstance; import org.springframework.cloud.kubernetes.commons.discovery.KubernetesDiscoveryProperties; +import org.testcontainers.shaded.org.checkerframework.checker.units.qual.C; import static java.util.Map.entry; import static java.util.stream.Collectors.toList; @@ -62,6 +65,8 @@ class KubernetesDiscoveryClientFilterMetadataTest { private Lister endpointsLister; + private static final CoreV1Api CORE_V1_API = Mockito.mock(CoreV1Api.class); + @BeforeEach void beforeEach() { servicesCache = new Cache<>(); @@ -80,8 +85,9 @@ void testAllExtraMetadataDisabled() { KubernetesDiscoveryProperties properties = new KubernetesDiscoveryProperties(true, false, Set.of(), true, 60, false, null, Set.of(), Map.of(), null, metadata, 0, true); - KubernetesInformerDiscoveryClient discoveryClient = new KubernetesInformerDiscoveryClient(STUB, servicesLister, - endpointsLister, SERVICE_SHARED_INFORMER_STUB, ENDPOINTS_SHARED_INFORMER_STUB, properties); + KubernetesInformerDiscoveryClient discoveryClient = new KubernetesInformerDiscoveryClient(List.of(STUB), + List.of(servicesLister), List.of(endpointsLister), List.of(SERVICE_SHARED_INFORMER_STUB), + List.of(ENDPOINTS_SHARED_INFORMER_STUB), properties, CORE_V1_API); setup(serviceId, "ns", Map.of("l1", "lab"), Map.of("l1", "lab"), Map.of(80, "http", 5555, "")); @@ -99,8 +105,9 @@ void testLabelsEnabled() { KubernetesDiscoveryProperties properties = new KubernetesDiscoveryProperties(true, false, Set.of(), true, 60, false, null, Set.of(), Map.of(), null, metadata, 0, true); - KubernetesInformerDiscoveryClient discoveryClient = new KubernetesInformerDiscoveryClient(STUB, servicesLister, - endpointsLister, SERVICE_SHARED_INFORMER_STUB, ENDPOINTS_SHARED_INFORMER_STUB, properties); + KubernetesInformerDiscoveryClient discoveryClient = new KubernetesInformerDiscoveryClient(List.of(STUB), + List.of(servicesLister), List.of(endpointsLister), List.of(SERVICE_SHARED_INFORMER_STUB), + List.of(ENDPOINTS_SHARED_INFORMER_STUB), properties, CORE_V1_API); setup(serviceId, "ns", Map.of("l1", "v1", "l2", "v2"), Map.of("l1", "lab"), Map.of(80, "http", 5555, "")); @@ -119,8 +126,9 @@ void testLabelsEnabledWithPrefix() { KubernetesDiscoveryProperties properties = new KubernetesDiscoveryProperties(true, false, Set.of(), true, 60, false, null, Set.of(), Map.of(), null, metadata, 0, true); - KubernetesInformerDiscoveryClient discoveryClient = new KubernetesInformerDiscoveryClient(STUB, servicesLister, - endpointsLister, SERVICE_SHARED_INFORMER_STUB, ENDPOINTS_SHARED_INFORMER_STUB, properties); + KubernetesInformerDiscoveryClient discoveryClient = new KubernetesInformerDiscoveryClient(List.of(STUB), + List.of(servicesLister), List.of(endpointsLister), List.of(SERVICE_SHARED_INFORMER_STUB), + List.of(ENDPOINTS_SHARED_INFORMER_STUB), properties, CORE_V1_API); setup(serviceId, "ns", Map.of("l1", "v1", "l2", "v2"), Map.of("l1", "lab"), Map.of(80, "http", 5555, "")); @@ -139,8 +147,9 @@ void testAnnotationsEnabled() { KubernetesDiscoveryProperties properties = new KubernetesDiscoveryProperties(true, false, Set.of(), true, 60, false, null, Set.of(), Map.of(), null, metadata, 0, true); - KubernetesInformerDiscoveryClient discoveryClient = new KubernetesInformerDiscoveryClient(STUB, servicesLister, - endpointsLister, SERVICE_SHARED_INFORMER_STUB, ENDPOINTS_SHARED_INFORMER_STUB, properties); + KubernetesInformerDiscoveryClient discoveryClient = new KubernetesInformerDiscoveryClient(List.of(STUB), + List.of(servicesLister), List.of(endpointsLister), List.of(SERVICE_SHARED_INFORMER_STUB), + List.of(ENDPOINTS_SHARED_INFORMER_STUB), properties, CORE_V1_API); setup(serviceId, "ns", Map.of("l1", "v1"), Map.of("a1", "v1", "a2", "v2"), Map.of(80, "http", 5555, "")); @@ -159,8 +168,9 @@ void testAnnotationsEnabledWithPrefix() { KubernetesDiscoveryProperties properties = new KubernetesDiscoveryProperties(true, false, Set.of(), true, 60, false, null, Set.of(), Map.of(), null, metadata, 0, true); - KubernetesInformerDiscoveryClient discoveryClient = new KubernetesInformerDiscoveryClient(STUB, servicesLister, - endpointsLister, SERVICE_SHARED_INFORMER_STUB, ENDPOINTS_SHARED_INFORMER_STUB, properties); + KubernetesInformerDiscoveryClient discoveryClient = new KubernetesInformerDiscoveryClient(List.of(STUB), + List.of(servicesLister), List.of(endpointsLister), List.of(SERVICE_SHARED_INFORMER_STUB), + List.of(ENDPOINTS_SHARED_INFORMER_STUB), properties, CORE_V1_API); setup(serviceId, "ns", Map.of("l1", "v1"), Map.of("a1", "v1", "a2", "v2"), Map.of(80, "http", 5555, "")); @@ -179,8 +189,9 @@ void testPortsEnabled() { KubernetesDiscoveryProperties properties = new KubernetesDiscoveryProperties(true, false, Set.of(), true, 60, false, null, Set.of(), Map.of(), null, metadata, 0, true); - KubernetesInformerDiscoveryClient discoveryClient = new KubernetesInformerDiscoveryClient(STUB, servicesLister, - endpointsLister, SERVICE_SHARED_INFORMER_STUB, ENDPOINTS_SHARED_INFORMER_STUB, properties); + KubernetesInformerDiscoveryClient discoveryClient = new KubernetesInformerDiscoveryClient(List.of(STUB), + List.of(servicesLister), List.of(endpointsLister), List.of(SERVICE_SHARED_INFORMER_STUB), + List.of(ENDPOINTS_SHARED_INFORMER_STUB), properties, CORE_V1_API); setup(serviceId, "test", Map.of("l1", "v1"), Map.of("a1", "v1", "a2", "v2"), Map.of(80, "http", 5555, "")); @@ -199,8 +210,9 @@ void testPortsEnabledWithPrefix() { KubernetesDiscoveryProperties properties = new KubernetesDiscoveryProperties(true, false, Set.of(), true, 60, false, null, Set.of(), Map.of(), null, metadata, 0, true); - KubernetesInformerDiscoveryClient discoveryClient = new KubernetesInformerDiscoveryClient(STUB, servicesLister, - endpointsLister, SERVICE_SHARED_INFORMER_STUB, ENDPOINTS_SHARED_INFORMER_STUB, properties); + KubernetesInformerDiscoveryClient discoveryClient = new KubernetesInformerDiscoveryClient(List.of(STUB), + List.of(servicesLister), List.of(endpointsLister), List.of(SERVICE_SHARED_INFORMER_STUB), + List.of(ENDPOINTS_SHARED_INFORMER_STUB), properties, CORE_V1_API); setup(serviceId, "ns", Map.of("l1", "v1"), Map.of("a1", "v1", "a2", "v2"), Map.of(80, "http", 5555, "")); @@ -219,8 +231,9 @@ void testLabelsAndAnnotationsAndPortsEnabledWithPrefix() { KubernetesDiscoveryProperties properties = new KubernetesDiscoveryProperties(true, false, Set.of(), true, 60, false, null, Set.of(), Map.of(), null, metadata, 0, true); - KubernetesInformerDiscoveryClient discoveryClient = new KubernetesInformerDiscoveryClient(STUB, servicesLister, - endpointsLister, SERVICE_SHARED_INFORMER_STUB, ENDPOINTS_SHARED_INFORMER_STUB, properties); + KubernetesInformerDiscoveryClient discoveryClient = new KubernetesInformerDiscoveryClient(List.of(STUB), + List.of(servicesLister), List.of(endpointsLister), List.of(SERVICE_SHARED_INFORMER_STUB), + List.of(ENDPOINTS_SHARED_INFORMER_STUB), properties, CORE_V1_API); setup(serviceId, "ns", Map.of("l1", "la1"), Map.of("a1", "an1", "a2", "an2"), Map.of(80, "http", 5555, "")); diff --git a/spring-cloud-kubernetes-client-discovery/src/test/java/org/springframework/cloud/kubernetes/client/discovery/KubernetesDiscoveryClientServiceWithoutPortNameTests.java b/spring-cloud-kubernetes-client-discovery/src/test/java/org/springframework/cloud/kubernetes/client/discovery/KubernetesDiscoveryClientServiceWithoutPortNameTests.java index 381eecbca1..c0a94da454 100644 --- a/spring-cloud-kubernetes-client-discovery/src/test/java/org/springframework/cloud/kubernetes/client/discovery/KubernetesDiscoveryClientServiceWithoutPortNameTests.java +++ b/spring-cloud-kubernetes-client-discovery/src/test/java/org/springframework/cloud/kubernetes/client/discovery/KubernetesDiscoveryClientServiceWithoutPortNameTests.java @@ -22,6 +22,7 @@ import io.kubernetes.client.informer.cache.Cache; import io.kubernetes.client.informer.cache.Lister; +import io.kubernetes.client.openapi.apis.CoreV1Api; import io.kubernetes.client.openapi.models.CoreV1EndpointPortBuilder; import io.kubernetes.client.openapi.models.V1EndpointAddressBuilder; import io.kubernetes.client.openapi.models.V1EndpointSubsetBuilder; @@ -36,6 +37,7 @@ import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; +import org.mockito.Mockito; import org.springframework.cloud.client.ServiceInstance; import org.springframework.cloud.kubernetes.commons.discovery.KubernetesDiscoveryProperties; @@ -60,6 +62,8 @@ class KubernetesDiscoveryClientServiceWithoutPortNameTests { private Lister endpointsLister; + private static final CoreV1Api CORE_V1_API = Mockito.mock(CoreV1Api.class); + @BeforeEach void beforeEach() { servicesCache = new Cache<>(); @@ -90,8 +94,9 @@ void testDiscoveryWithoutAServicePortName() { KubernetesDiscoveryProperties properties = new KubernetesDiscoveryProperties(true, false, Set.of(NAMESPACE), true, 60, false, null, Set.of(), Map.of(), null, KubernetesDiscoveryProperties.Metadata.DEFAULT, 0, true); - KubernetesInformerDiscoveryClient discoveryClient = new KubernetesInformerDiscoveryClient(STUB, servicesLister, - endpointsLister, SERVICE_SHARED_INFORMER_STUB, ENDPOINTS_SHARED_INFORMER_STUB, properties); + KubernetesInformerDiscoveryClient discoveryClient = new KubernetesInformerDiscoveryClient(List.of(STUB), + List.of(servicesLister), List.of(endpointsLister), List.of(SERVICE_SHARED_INFORMER_STUB), + List.of(ENDPOINTS_SHARED_INFORMER_STUB), properties, CORE_V1_API); List serviceInstances = discoveryClient.getInstances("no-port-name-service"); Assertions.assertThat(serviceInstances.size()).isEqualTo(1); diff --git a/spring-cloud-kubernetes-client-discovery/src/test/java/org/springframework/cloud/kubernetes/client/discovery/KubernetesDiscoveryClientTests.java b/spring-cloud-kubernetes-client-discovery/src/test/java/org/springframework/cloud/kubernetes/client/discovery/KubernetesDiscoveryClientTests.java index 9bb15b20c3..b2af2b0d6d 100644 --- a/spring-cloud-kubernetes-client-discovery/src/test/java/org/springframework/cloud/kubernetes/client/discovery/KubernetesDiscoveryClientTests.java +++ b/spring-cloud-kubernetes-client-discovery/src/test/java/org/springframework/cloud/kubernetes/client/discovery/KubernetesDiscoveryClientTests.java @@ -24,6 +24,7 @@ import io.kubernetes.client.informer.cache.Cache; import io.kubernetes.client.informer.cache.Lister; +import io.kubernetes.client.openapi.apis.CoreV1Api; import io.kubernetes.client.openapi.models.CoreV1EndpointPort; import io.kubernetes.client.openapi.models.CoreV1EndpointPortBuilder; import io.kubernetes.client.openapi.models.V1EndpointAddress; @@ -38,6 +39,7 @@ import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; +import org.mockito.Mockito; import org.springframework.cloud.client.ServiceInstance; import org.springframework.cloud.kubernetes.commons.discovery.KubernetesDiscoveryProperties; import org.springframework.cloud.kubernetes.commons.discovery.KubernetesServiceInstance; @@ -55,6 +57,8 @@ class KubernetesDiscoveryClientTests { private static final SharedInformerStub ENDPOINTS_SHARED_INFORMER_STUB = new SharedInformerStub<>(); + private static final CoreV1Api CORE_V1_API = Mockito.mock(CoreV1Api.class); + private Cache servicesCache; private Lister servicesLister; @@ -92,8 +96,9 @@ void getInstancesShouldBeAbleToHandleEndpointsSingleAddress() { KubernetesDiscoveryProperties properties = new KubernetesDiscoveryProperties(true, false, Set.of(), true, 60, false, null, Set.of(), Map.of(), null, metadata, 0, true); - KubernetesInformerDiscoveryClient discoveryClient = new KubernetesInformerDiscoveryClient(STUB, servicesLister, - endpointsLister, SERVICE_SHARED_INFORMER_STUB, ENDPOINTS_SHARED_INFORMER_STUB, properties); + KubernetesInformerDiscoveryClient discoveryClient = new KubernetesInformerDiscoveryClient(List.of(STUB), + List.of(servicesLister), List.of(endpointsLister), List.of(SERVICE_SHARED_INFORMER_STUB), + List.of(ENDPOINTS_SHARED_INFORMER_STUB), properties, null); List instances = discoveryClient.getInstances("id"); @@ -122,8 +127,9 @@ void getInstancesShouldBeAbleToHandleEndpointsSingleAddressAndMultiplePorts() { KubernetesDiscoveryProperties properties = new KubernetesDiscoveryProperties(true, true, Set.of(), true, 60, false, null, Set.of(), labels, "http_tcp", KubernetesDiscoveryProperties.Metadata.DEFAULT, 0, true); - KubernetesInformerDiscoveryClient discoveryClient = new KubernetesInformerDiscoveryClient(STUB, servicesLister, - endpointsLister, SERVICE_SHARED_INFORMER_STUB, ENDPOINTS_SHARED_INFORMER_STUB, properties); + KubernetesInformerDiscoveryClient discoveryClient = new KubernetesInformerDiscoveryClient(List.of(STUB), + List.of(servicesLister), List.of(endpointsLister), List.of(SERVICE_SHARED_INFORMER_STUB), + List.of(ENDPOINTS_SHARED_INFORMER_STUB), properties, CORE_V1_API); List instances = discoveryClient.getInstances("endpoint"); @@ -156,8 +162,9 @@ void getInstancesShouldBeAbleToHandleEndpointsMultipleAddresses() { KubernetesDiscoveryProperties properties = new KubernetesDiscoveryProperties(true, true, Set.of(), true, 60, false, null, Set.of(443, 8443), labels, null, metadata, 0, true); - KubernetesInformerDiscoveryClient discoveryClient = new KubernetesInformerDiscoveryClient(STUB, servicesLister, - endpointsLister, SERVICE_SHARED_INFORMER_STUB, ENDPOINTS_SHARED_INFORMER_STUB, properties); + KubernetesInformerDiscoveryClient discoveryClient = new KubernetesInformerDiscoveryClient(List.of(STUB), + List.of(servicesLister), List.of(endpointsLister), List.of(SERVICE_SHARED_INFORMER_STUB), + List.of(ENDPOINTS_SHARED_INFORMER_STUB), properties, CORE_V1_API); List instances = discoveryClient.getInstances("endpoint"); @@ -192,8 +199,9 @@ void getInstancesShouldBeAbleToHandleEndpointsFromMultipleNamespaces() { KubernetesDiscoveryProperties properties = new KubernetesDiscoveryProperties(true, true, Set.of(), true, 60, false, null, Set.of(), Map.of(), null, KubernetesDiscoveryProperties.Metadata.DEFAULT, 0, true); - KubernetesInformerDiscoveryClient discoveryClient = new KubernetesInformerDiscoveryClient(STUB, servicesLister, - endpointsLister, SERVICE_SHARED_INFORMER_STUB, ENDPOINTS_SHARED_INFORMER_STUB, properties); + KubernetesInformerDiscoveryClient discoveryClient = new KubernetesInformerDiscoveryClient(List.of(STUB), + List.of(servicesLister), List.of(endpointsLister), List.of(SERVICE_SHARED_INFORMER_STUB), + List.of(ENDPOINTS_SHARED_INFORMER_STUB), properties, CORE_V1_API); List instances = discoveryClient.getInstances("endpoint"); @@ -231,8 +239,9 @@ void instanceWithoutSubsetsShouldBeSkipped() { KubernetesDiscoveryProperties properties = new KubernetesDiscoveryProperties(true, true, Set.of(), true, 60, false, null, Set.of(), Map.of(), null, KubernetesDiscoveryProperties.Metadata.DEFAULT, 0, true); - KubernetesInformerDiscoveryClient discoveryClient = new KubernetesInformerDiscoveryClient(STUB, servicesLister, - endpointsLister, SERVICE_SHARED_INFORMER_STUB, ENDPOINTS_SHARED_INFORMER_STUB, properties); + KubernetesInformerDiscoveryClient discoveryClient = new KubernetesInformerDiscoveryClient(List.of(STUB), + List.of(servicesLister), List.of(endpointsLister), List.of(SERVICE_SHARED_INFORMER_STUB), + List.of(ENDPOINTS_SHARED_INFORMER_STUB), properties, CORE_V1_API); List instances = discoveryClient.getInstances("endpoint1"); @@ -257,8 +266,9 @@ void getInstancesShouldBeAbleToHandleEndpointsSingleAddressAndMultiplePortsUsing KubernetesDiscoveryProperties properties = new KubernetesDiscoveryProperties(true, true, Set.of(), true, 60, false, null, Set.of(443, 8443), Map.of(), null, KubernetesDiscoveryProperties.Metadata.DEFAULT, 0, true); - KubernetesInformerDiscoveryClient discoveryClient = new KubernetesInformerDiscoveryClient(STUB, servicesLister, - endpointsLister, SERVICE_SHARED_INFORMER_STUB, ENDPOINTS_SHARED_INFORMER_STUB, properties); + KubernetesInformerDiscoveryClient discoveryClient = new KubernetesInformerDiscoveryClient(List.of(STUB), + List.of(servicesLister), List.of(endpointsLister), List.of(SERVICE_SHARED_INFORMER_STUB), + List.of(ENDPOINTS_SHARED_INFORMER_STUB), properties, CORE_V1_API); List instances = discoveryClient.getInstances("endpoint2"); @@ -289,8 +299,9 @@ void instanceWithMultiplePortsAndMisconfiguredPrimaryPortNameInLabelWithoutFallb KubernetesDiscoveryProperties properties = new KubernetesDiscoveryProperties(true, false, Set.of(), true, 60, false, null, Set.of(443, 8443), Map.of(), null, KubernetesDiscoveryProperties.Metadata.DEFAULT, 0, true); - KubernetesInformerDiscoveryClient discoveryClient = new KubernetesInformerDiscoveryClient(STUB, servicesLister, - endpointsLister, SERVICE_SHARED_INFORMER_STUB, ENDPOINTS_SHARED_INFORMER_STUB, properties); + KubernetesInformerDiscoveryClient discoveryClient = new KubernetesInformerDiscoveryClient(List.of(STUB), + List.of(servicesLister), List.of(endpointsLister), List.of(SERVICE_SHARED_INFORMER_STUB), + List.of(ENDPOINTS_SHARED_INFORMER_STUB), properties, CORE_V1_API); List instances = discoveryClient.getInstances("endpoint3"); @@ -320,8 +331,9 @@ void instanceWithMultiplePortsAndMisconfiguredGenericPrimaryPortNameWithoutFallb KubernetesDiscoveryProperties properties = new KubernetesDiscoveryProperties(true, false, Set.of(), true, 60, false, null, Set.of(443, 8443), Map.of(), "oops", KubernetesDiscoveryProperties.Metadata.DEFAULT, 0, true); - KubernetesInformerDiscoveryClient discoveryClient = new KubernetesInformerDiscoveryClient(STUB, servicesLister, - endpointsLister, SERVICE_SHARED_INFORMER_STUB, ENDPOINTS_SHARED_INFORMER_STUB, properties); + KubernetesInformerDiscoveryClient discoveryClient = new KubernetesInformerDiscoveryClient(List.of(STUB), + List.of(servicesLister), List.of(endpointsLister), List.of(SERVICE_SHARED_INFORMER_STUB), + List.of(ENDPOINTS_SHARED_INFORMER_STUB), properties, CORE_V1_API); List instances = discoveryClient.getInstances("endpoint4"); @@ -352,8 +364,9 @@ void instanceWithMultiplePortsAndWithoutPrimaryPortNameSpecifiedShouldFallBackTo false, null, Set.of(443, 8443), Map.of(), null, KubernetesDiscoveryProperties.Metadata.DEFAULT, 0, true); - KubernetesInformerDiscoveryClient discoveryClient = new KubernetesInformerDiscoveryClient(STUB, servicesLister, - endpointsLister, SERVICE_SHARED_INFORMER_STUB, ENDPOINTS_SHARED_INFORMER_STUB, properties); + KubernetesInformerDiscoveryClient discoveryClient = new KubernetesInformerDiscoveryClient(List.of(STUB), + List.of(servicesLister), List.of(endpointsLister), List.of(SERVICE_SHARED_INFORMER_STUB), + List.of(ENDPOINTS_SHARED_INFORMER_STUB), properties, CORE_V1_API); List instances = discoveryClient.getInstances("endpoint5"); @@ -381,9 +394,9 @@ void instanceWithMultiplePortsAndWithoutPrimaryPortNameSpecifiedOrHttpsPortShoul setup(serviceId, serviceType, namespace, labels, ips, uuids, names, protocols, ports, appProtocols); - KubernetesInformerDiscoveryClient discoveryClient = new KubernetesInformerDiscoveryClient(STUB, servicesLister, - endpointsLister, SERVICE_SHARED_INFORMER_STUB, ENDPOINTS_SHARED_INFORMER_STUB, - KubernetesDiscoveryProperties.DEFAULT); + KubernetesInformerDiscoveryClient discoveryClient = new KubernetesInformerDiscoveryClient(List.of(STUB), + List.of(servicesLister), List.of(endpointsLister), List.of(SERVICE_SHARED_INFORMER_STUB), + List.of(ENDPOINTS_SHARED_INFORMER_STUB), KubernetesDiscoveryProperties.DEFAULT, CORE_V1_API); List instances = discoveryClient.getInstances("endpoint5"); @@ -414,8 +427,9 @@ void instanceWithMultiplePortsAndWithoutPrimaryPortNameSpecifiedShouldLogWarning KubernetesDiscoveryProperties properties = new KubernetesDiscoveryProperties(true, true, Set.of(), true, 60, true, null, Set.of(443, 8443), Map.of(), null, KubernetesDiscoveryProperties.Metadata.DEFAULT, 0, true); - KubernetesInformerDiscoveryClient discoveryClient = new KubernetesInformerDiscoveryClient(STUB, servicesLister, - endpointsLister, SERVICE_SHARED_INFORMER_STUB, ENDPOINTS_SHARED_INFORMER_STUB, properties); + KubernetesInformerDiscoveryClient discoveryClient = new KubernetesInformerDiscoveryClient(List.of(STUB), + List.of(servicesLister), List.of(endpointsLister), List.of(SERVICE_SHARED_INFORMER_STUB), + List.of(ENDPOINTS_SHARED_INFORMER_STUB), properties, CORE_V1_API); List instances = discoveryClient.getInstances("endpoint5"); @@ -446,8 +460,9 @@ public void instanceWithoutPorts() { KubernetesDiscoveryProperties properties = KubernetesDiscoveryProperties.DEFAULT; - KubernetesInformerDiscoveryClient discoveryClient = new KubernetesInformerDiscoveryClient(STUB, servicesLister, - endpointsLister, SERVICE_SHARED_INFORMER_STUB, ENDPOINTS_SHARED_INFORMER_STUB, properties); + KubernetesInformerDiscoveryClient discoveryClient = new KubernetesInformerDiscoveryClient(List.of(STUB), + List.of(servicesLister), List.of(endpointsLister), List.of(SERVICE_SHARED_INFORMER_STUB), + List.of(ENDPOINTS_SHARED_INFORMER_STUB), properties, CORE_V1_API); List instances = discoveryClient.getInstances("endpoint5"); diff --git a/spring-cloud-kubernetes-client-discovery/src/test/java/org/springframework/cloud/kubernetes/client/discovery/KubernetesInformerDiscoveryClientTests.java b/spring-cloud-kubernetes-client-discovery/src/test/java/org/springframework/cloud/kubernetes/client/discovery/KubernetesInformerDiscoveryClientTests.java index 9d68504d75..3996779c17 100644 --- a/spring-cloud-kubernetes-client-discovery/src/test/java/org/springframework/cloud/kubernetes/client/discovery/KubernetesInformerDiscoveryClientTests.java +++ b/spring-cloud-kubernetes-client-discovery/src/test/java/org/springframework/cloud/kubernetes/client/discovery/KubernetesInformerDiscoveryClientTests.java @@ -97,13 +97,16 @@ class KubernetesInformerDiscoveryClientTests { private static final KubernetesDiscoveryProperties NOT_ALL_NAMESPACES = properties(false, Map.of()); + private static final CoreV1Api coreV1Api = new CoreV1Api(); + @Test void testServiceWithUnsetPortNames() { Lister serviceLister = setupServiceLister(SERVICE_1); Lister endpointsLister = setupEndpointsLister(ENDPOINTS_NO_UNSET_PORT_NAME); KubernetesInformerDiscoveryClient discoveryClient = new KubernetesInformerDiscoveryClient( - SHARED_INFORMER_FACTORY, serviceLister, endpointsLister, null, null, ALL_NAMESPACES); + List.of(SHARED_INFORMER_FACTORY), List.of(serviceLister), List.of(endpointsLister), + null, null, ALL_NAMESPACES, coreV1Api); assertThat(discoveryClient.getInstances("test-svc-1").toArray()) .containsOnly(new DefaultKubernetesServiceInstance(null, "test-svc-1", "1.1.1.1", 80, @@ -117,8 +120,8 @@ void testDiscoveryGetServicesAllNamespaceShouldWork() { Lister endpointsLister = setupEndpointsLister(ENDPOINTS_NO_UNSET_PORT_NAME); KubernetesInformerDiscoveryClient discoveryClient = new KubernetesInformerDiscoveryClient( - SHARED_INFORMER_FACTORY, serviceLister, endpointsLister, null, null, - KubernetesDiscoveryProperties.DEFAULT); + List.of(SHARED_INFORMER_FACTORY), List.of(serviceLister), List.of(endpointsLister), null, null, + KubernetesDiscoveryProperties.DEFAULT, coreV1Api); assertThat(discoveryClient.getServices().toArray()).containsOnly(SERVICE_1.getMetadata().getName(), SERVICE_2.getMetadata().getName()); @@ -134,7 +137,8 @@ void testDiscoveryWithServiceLabels() { KubernetesDiscoveryProperties kubernetesDiscoveryProperties = properties(true, labels); KubernetesInformerDiscoveryClient discoveryClient = new KubernetesInformerDiscoveryClient( - SHARED_INFORMER_FACTORY, serviceLister, endpointsLister, null, null, kubernetesDiscoveryProperties); + List.of(SHARED_INFORMER_FACTORY), List.of(serviceLister), List.of(endpointsLister), + null, null, kubernetesDiscoveryProperties, coreV1Api); assertThat(discoveryClient.getServices().toArray()).containsOnly(SERVICE_3.getMetadata().getName()); @@ -149,7 +153,8 @@ void testDiscoveryInstancesWithServiceLabels() { KubernetesDiscoveryProperties kubernetesDiscoveryProperties = properties(true, labels); KubernetesInformerDiscoveryClient discoveryClient = new KubernetesInformerDiscoveryClient( - SHARED_INFORMER_FACTORY, serviceLister, endpointsLister, null, null, kubernetesDiscoveryProperties); + List.of(SHARED_INFORMER_FACTORY), List.of(serviceLister), List.of(endpointsLister), + null, null, kubernetesDiscoveryProperties, coreV1Api); assertThat(discoveryClient.getInstances("test-svc-1").toArray()).isEmpty(); assertThat(discoveryClient.getInstances("test-svc-3").toArray()).containsOnly( @@ -164,7 +169,8 @@ void testDiscoveryInstancesWithSecuredServiceByAnnotations() { Lister serviceLister = setupServiceLister(SERVICE_4); Lister endpointsLister = setupEndpointsLister(ENDPOINTS_1); KubernetesInformerDiscoveryClient discoveryClient = new KubernetesInformerDiscoveryClient( - SHARED_INFORMER_FACTORY, serviceLister, endpointsLister, null, null, ALL_NAMESPACES); + List.of(SHARED_INFORMER_FACTORY), List.of(serviceLister), List.of(endpointsLister), + null, null, ALL_NAMESPACES, coreV1Api); assertThat(discoveryClient.getServices().toArray()).containsOnly(SERVICE_4.getMetadata().getName()); ServiceInstance serviceInstance = discoveryClient.getInstances(SERVICE_4.getMetadata().getName()).get(0); assertThat(serviceInstance.isSecure()).isTrue(); @@ -175,7 +181,8 @@ void testDiscoveryInstancesWithSecuredServiceByLabels() { Lister serviceLister = setupServiceLister(SERVICE_4); Lister endpointsLister = setupEndpointsLister(ENDPOINTS_1); KubernetesInformerDiscoveryClient discoveryClient = new KubernetesInformerDiscoveryClient( - SHARED_INFORMER_FACTORY, serviceLister, endpointsLister, null, null, ALL_NAMESPACES); + List.of(SHARED_INFORMER_FACTORY), List.of(serviceLister), List.of(endpointsLister), + null, null, ALL_NAMESPACES, coreV1Api); assertThat(discoveryClient.getServices().toArray()).containsOnly(SERVICE_4.getMetadata().getName()); ServiceInstance serviceInstance = discoveryClient.getInstances(SERVICE_4.getMetadata().getName()).get(0); @@ -188,8 +195,8 @@ void testDiscoveryGetServicesOneNamespaceShouldWork() { Lister endpointsLister = setupEndpointsLister(ENDPOINTS_NO_UNSET_PORT_NAME); KubernetesInformerDiscoveryClient discoveryClient = new KubernetesInformerDiscoveryClient( - SHARED_INFORMER_FACTORY, serviceLister, endpointsLister, null, null, - KubernetesDiscoveryProperties.DEFAULT); + List.of(SHARED_INFORMER_FACTORY), List.of(serviceLister), List.of(endpointsLister), null, null, + KubernetesDiscoveryProperties.DEFAULT, coreV1Api); assertThat(discoveryClient.getServices().toArray()).containsOnly(SERVICE_1.getMetadata().getName()); @@ -201,7 +208,8 @@ void testDiscoveryGetInstanceAllNamespaceShouldWork() { Lister endpointsLister = setupEndpointsLister(ENDPOINTS_1); KubernetesInformerDiscoveryClient discoveryClient = new KubernetesInformerDiscoveryClient( - SHARED_INFORMER_FACTORY, serviceLister, endpointsLister, null, null, ALL_NAMESPACES); + List.of(SHARED_INFORMER_FACTORY), List.of(serviceLister), List.of(endpointsLister), + null, null, ALL_NAMESPACES, coreV1Api); assertThat(discoveryClient.getInstances("test-svc-1")) .containsOnly(new DefaultKubernetesServiceInstance(null, "test-svc-1", "2.2.2.2", 8080, @@ -215,7 +223,8 @@ void testDiscoveryGetInstanceOneNamespaceShouldWork() { Lister endpointsLister = setupEndpointsLister(ENDPOINTS_1); KubernetesInformerDiscoveryClient discoveryClient = new KubernetesInformerDiscoveryClient( - SHARED_INFORMER_FACTORY, serviceLister, endpointsLister, null, null, NOT_ALL_NAMESPACES); + List.of(SHARED_INFORMER_FACTORY), List.of(serviceLister), List.of(endpointsLister), + null, null, NOT_ALL_NAMESPACES, coreV1Api); assertThat(discoveryClient.getInstances("test-svc-1")) .containsOnly(new DefaultKubernetesServiceInstance(null, "test-svc-1", "2.2.2.2", 8080, @@ -229,8 +238,8 @@ void testDiscoveryGetInstanceWithoutReadyAddressesShouldWork() { Lister endpointsLister = setupEndpointsLister(ENDPOINTS_NOT_READY_ADDRESS); KubernetesInformerDiscoveryClient discoveryClient = new KubernetesInformerDiscoveryClient( - SHARED_INFORMER_FACTORY, serviceLister, endpointsLister, null, null, - KubernetesDiscoveryProperties.DEFAULT); + List.of(SHARED_INFORMER_FACTORY), List.of(serviceLister), List.of(endpointsLister), null, null, + KubernetesDiscoveryProperties.DEFAULT, coreV1Api); assertThat(discoveryClient.getInstances("test-svc-1")).isEmpty(); } @@ -245,7 +254,8 @@ void testDiscoveryGetInstanceWithNotReadyAddressesIncludedShouldWork() { KubernetesDiscoveryProperties.Metadata.DEFAULT, 0, true); KubernetesInformerDiscoveryClient discoveryClient = new KubernetesInformerDiscoveryClient( - SHARED_INFORMER_FACTORY, serviceLister, endpointsLister, null, null, kubernetesDiscoveryProperties); + List.of(SHARED_INFORMER_FACTORY), List.of(serviceLister), List.of(endpointsLister), + null, null, kubernetesDiscoveryProperties, coreV1Api); assertThat(discoveryClient.getInstances("test-svc-1")) .containsOnly(new DefaultKubernetesServiceInstance(null, "test-svc-1", "2.2.2.2", 8080, @@ -259,8 +269,8 @@ void instanceWithoutEndpointsShouldBeSkipped() { Lister endpointsLister = setupEndpointsLister(); KubernetesInformerDiscoveryClient discoveryClient = new KubernetesInformerDiscoveryClient( - SHARED_INFORMER_FACTORY, serviceLister, endpointsLister, null, null, - KubernetesDiscoveryProperties.DEFAULT); + List.of(SHARED_INFORMER_FACTORY), List.of(serviceLister), List.of(endpointsLister), null, null, + KubernetesDiscoveryProperties.DEFAULT, coreV1Api); assertThat(discoveryClient.getInstances("test-svc-1")).isEmpty(); } @@ -271,8 +281,8 @@ void instanceWithoutPortsWillNotBeSkipped() { Lister endpointsLister = setupEndpointsLister(ENDPOINTS_NO_PORTS); KubernetesInformerDiscoveryClient discoveryClient = new KubernetesInformerDiscoveryClient( - SHARED_INFORMER_FACTORY, serviceLister, endpointsLister, null, null, - KubernetesDiscoveryProperties.DEFAULT); + List.of(SHARED_INFORMER_FACTORY), List.of(serviceLister), List.of(endpointsLister), null, null, + KubernetesDiscoveryProperties.DEFAULT, coreV1Api); assertThat(discoveryClient.getInstances("test-svc-1")) .containsOnly(new DefaultKubernetesServiceInstance(null, "test-svc-1", "1.1.1.1", 0, @@ -285,7 +295,8 @@ void instanceWithMultiplePortsAndPrimaryPortNameConfiguredWithLabelShouldWork() Lister endpointsLister = setupEndpointsLister(ENDPOINTS_WITH); KubernetesInformerDiscoveryClient discoveryClient = new KubernetesInformerDiscoveryClient( - SHARED_INFORMER_FACTORY, serviceLister, endpointsLister, null, null, NOT_ALL_NAMESPACES); + List.of(SHARED_INFORMER_FACTORY), List.of(serviceLister), List.of(endpointsLister), + null, null, NOT_ALL_NAMESPACES, coreV1Api); assertThat(discoveryClient.getInstances("test-svc-1")).containsOnly(new DefaultKubernetesServiceInstance( null, "test-svc-1", "1.1.1.1", 443, Map.of("port.http", "80", "primary-port-name", "https", @@ -300,7 +311,8 @@ void instanceWithMultiplePortsAndMisconfiguredPrimaryPortNameInLabelShouldReturn ENDPOINTS_MULTIPLE_PORTS_WITHOUT_SUPPORTED_PORT_NAMES); KubernetesInformerDiscoveryClient discoveryClient = new KubernetesInformerDiscoveryClient( - SHARED_INFORMER_FACTORY, serviceLister, endpointsLister, null, null, NOT_ALL_NAMESPACES); + List.of(SHARED_INFORMER_FACTORY), List.of(serviceLister), List.of(endpointsLister), + null, null, NOT_ALL_NAMESPACES, coreV1Api); assertThat(discoveryClient.getInstances("test-svc-1")) .containsOnly(new DefaultKubernetesServiceInstance( @@ -315,7 +327,8 @@ void instanceWithMultiplePortsAndGenericPrimaryPortNameConfiguredShouldWork() { Lister endpointsLister = setupEndpointsLister(ENDPOINTS_WITH); KubernetesInformerDiscoveryClient discoveryClient = new KubernetesInformerDiscoveryClient( - SHARED_INFORMER_FACTORY, serviceLister, endpointsLister, null, null, NOT_ALL_NAMESPACES); + List.of(SHARED_INFORMER_FACTORY), List.of(serviceLister), List.of(endpointsLister), + null, null, NOT_ALL_NAMESPACES, coreV1Api); assertThat(discoveryClient.getInstances("test-svc-1")) .containsOnly(new DefaultKubernetesServiceInstance(null, "test-svc-1", "1.1.1.1", 443, @@ -330,7 +343,8 @@ void instanceWithMultiplePortsAndMisconfiguredGenericPrimaryPortNameShouldReturn ENDPOINTS_MULTIPLE_PORTS_WITHOUT_SUPPORTED_PORT_NAMES); KubernetesInformerDiscoveryClient discoveryClient = new KubernetesInformerDiscoveryClient( - SHARED_INFORMER_FACTORY, serviceLister, endpointsLister, null, null, NOT_ALL_NAMESPACES); + List.of(SHARED_INFORMER_FACTORY), List.of(serviceLister), List.of(endpointsLister), + null, null, NOT_ALL_NAMESPACES, coreV1Api); assertThat(discoveryClient.getInstances("test-svc-1")) .containsOnly(new DefaultKubernetesServiceInstance(null, "test-svc-1", "1.1.1.1", 80, @@ -344,7 +358,8 @@ void instanceWithMultiplePortsAndWithoutPrimaryPortNameSpecifiedShouldFallBackTo Lister endpointsLister = setupEndpointsLister(ENDPOINTS_WITH); KubernetesInformerDiscoveryClient discoveryClient = new KubernetesInformerDiscoveryClient( - SHARED_INFORMER_FACTORY, serviceLister, endpointsLister, null, null, NOT_ALL_NAMESPACES); + List.of(SHARED_INFORMER_FACTORY), List.of(serviceLister), List.of(endpointsLister), + null, null, NOT_ALL_NAMESPACES, coreV1Api); assertThat(discoveryClient.getInstances("test-svc-1")) .containsOnly(new DefaultKubernetesServiceInstance(null, "test-svc-1", "1.1.1.1", 443, @@ -358,7 +373,8 @@ void instanceWithMultiplePortsAndWithoutPrimaryPortNameSpecifiedOrHttpsPortShoul Lister endpointsLister = setupEndpointsLister(ENDPOINTS_WITH_MULTIPLE_PORTS_NO_HTTPS); KubernetesInformerDiscoveryClient discoveryClient = new KubernetesInformerDiscoveryClient( - SHARED_INFORMER_FACTORY, serviceLister, endpointsLister, null, null, NOT_ALL_NAMESPACES); + List.of(SHARED_INFORMER_FACTORY), List.of(serviceLister), List.of(endpointsLister), + null, null, NOT_ALL_NAMESPACES, coreV1Api); assertThat(discoveryClient.getInstances("test-svc-1")) .containsOnly(new DefaultKubernetesServiceInstance(null, "test-svc-1", "1.1.1.1", 80, @@ -373,7 +389,8 @@ void instanceWithMultiplePortsAndWithoutAnyConfigurationShouldPickTheFirstPort() ENDPOINTS_MULTIPLE_PORTS_WITHOUT_SUPPORTED_PORT_NAMES); KubernetesInformerDiscoveryClient discoveryClient = new KubernetesInformerDiscoveryClient( - SHARED_INFORMER_FACTORY, serviceLister, endpointsLister, null, null, NOT_ALL_NAMESPACES); + List.of(SHARED_INFORMER_FACTORY), List.of(serviceLister), List.of(endpointsLister), + null, null, NOT_ALL_NAMESPACES, coreV1Api); assertThat(discoveryClient.getInstances("test-svc-1")) .containsOnly(new DefaultKubernetesServiceInstance(null, "test-svc-1", "1.1.1.1", 80, @@ -387,7 +404,8 @@ void getInstancesShouldReturnInstancesWithTheSameServiceIdFromNamespaces() { Lister endpointsLister = setupEndpointsLister(ENDPOINTS_1, ENDPOINTS_2); KubernetesInformerDiscoveryClient discoveryClient = new KubernetesInformerDiscoveryClient( - SHARED_INFORMER_FACTORY, serviceLister, endpointsLister, null, null, ALL_NAMESPACES); + List.of(SHARED_INFORMER_FACTORY), List.of(serviceLister), List.of(endpointsLister), + null, null, ALL_NAMESPACES, coreV1Api); assertThat(discoveryClient.getInstances("test-svc-1")).containsOnly( new DefaultKubernetesServiceInstance(null, "test-svc-1", "2.2.2.2", 8080, @@ -410,7 +428,8 @@ void testBothServicesMatchesFilter() { false, spelFilter, Set.of(), Map.of(), null, KubernetesDiscoveryProperties.Metadata.DEFAULT, 0, false); KubernetesInformerDiscoveryClient discoveryClient = new KubernetesInformerDiscoveryClient( - SHARED_INFORMER_FACTORY, serviceLister, endpointsLister, null, null, properties); + List.of(SHARED_INFORMER_FACTORY), List.of(serviceLister), List.of(endpointsLister), + null, null, properties, coreV1Api); assertThat(discoveryClient.getServices()).contains("test-svc-1", "test-svc-3"); @@ -433,7 +452,8 @@ void testOneServiceMatchesFilter() { false, spelFilter, Set.of(), Map.of(), null, KubernetesDiscoveryProperties.Metadata.DEFAULT, 0, false); KubernetesInformerDiscoveryClient discoveryClient = new KubernetesInformerDiscoveryClient( - SHARED_INFORMER_FACTORY, serviceLister, endpointsLister, null, null, properties); + List.of(SHARED_INFORMER_FACTORY), List.of(serviceLister), List.of(endpointsLister), + null, null, properties, coreV1Api); // only one here because of distinct assertThat(discoveryClient.getServices()).contains("test-svc-1"); @@ -452,8 +472,8 @@ void testOneServiceMatchesFilter() { """; properties = new KubernetesDiscoveryProperties(false, false, Set.of(), true, 60L, false, spelFilter, Set.of(), Map.of(), null, KubernetesDiscoveryProperties.Metadata.DEFAULT, 0, false); - discoveryClient = new KubernetesInformerDiscoveryClient(SHARED_INFORMER_FACTORY, serviceLister, endpointsLister, - null, null, properties); + discoveryClient = new KubernetesInformerDiscoveryClient(List.of(SHARED_INFORMER_FACTORY), + List.of(serviceLister), List.of(endpointsLister), null, null, properties, coreV1Api); // only one here because of distinct assertThat(discoveryClient.getServices()).contains("test-svc-1"); @@ -483,7 +503,8 @@ void testServicesWithDifferentMetadataLabels() { 0, false); KubernetesInformerDiscoveryClient discoveryClient = new KubernetesInformerDiscoveryClient( - SHARED_INFORMER_FACTORY, serviceLister, endpointsLister, null, null, properties); + List.of(SHARED_INFORMER_FACTORY), List.of(serviceLister), List.of(endpointsLister), + null, null, properties, coreV1Api); List serviceInstances = discoveryClient.getInstances("serviceX"); assertThat(serviceInstances.size()).isEqualTo(1); @@ -506,7 +527,8 @@ void testServicesWithSameMetadataLabels() { 0, false); KubernetesInformerDiscoveryClient discoveryClient = new KubernetesInformerDiscoveryClient( - SHARED_INFORMER_FACTORY, serviceLister, endpointsLister, null, null, properties); + List.of(SHARED_INFORMER_FACTORY), List.of(serviceLister), List.of(endpointsLister), + null, null, properties, coreV1Api); List serviceInstances = discoveryClient.getInstances("serviceX") .stream() @@ -541,7 +563,8 @@ void testExternalNameService() { 60L, false, "", Set.of(), Map.of(), "", metadata, 0, false, true); KubernetesInformerDiscoveryClient discoveryClient = new KubernetesInformerDiscoveryClient( - SHARED_INFORMER_FACTORY, serviceLister, endpointsLister, null, null, properties); + List.of(SHARED_INFORMER_FACTORY), List.of(serviceLister), List.of(endpointsLister), + null, null, properties, coreV1Api); List result = discoveryClient.getInstances("blue-service"); assertThat(result.size()).isEqualTo(1); @@ -598,8 +621,8 @@ void testPodMetadata() { true, 60L, false, "", Set.of(), Map.of(), "", metadata, 0, false, true); KubernetesInformerDiscoveryClient discoveryClient = new KubernetesInformerDiscoveryClient( - SHARED_INFORMER_FACTORY, serviceLister, endpointsLister, null, null, properties); - discoveryClient.coreV1Api = new CoreV1Api(apiClient); + List.of(SHARED_INFORMER_FACTORY), List.of(serviceLister), List.of(endpointsLister), null, null, + properties, new CoreV1Api(apiClient)); List result = discoveryClient.getInstances("blue-service"); assertThat(result.size()).isEqualTo(1); @@ -626,7 +649,8 @@ void testOrder() { Lister endpointsLister = setupEndpointsLister(ENDPOINTS_1); KubernetesInformerDiscoveryClient discoveryClient = new KubernetesInformerDiscoveryClient( - SHARED_INFORMER_FACTORY, serviceLister, endpointsLister, null, null, properties); + List.of(SHARED_INFORMER_FACTORY), List.of(serviceLister), List.of(endpointsLister), + null, null, properties, coreV1Api); assertThat(discoveryClient.getOrder()).isEqualTo(57); } diff --git a/spring-cloud-kubernetes-client-discovery/src/test/java/org/springframework/cloud/kubernetes/client/discovery/reactive/KubernetesInformerReactiveDiscoveryClientTests.java b/spring-cloud-kubernetes-client-discovery/src/test/java/org/springframework/cloud/kubernetes/client/discovery/reactive/KubernetesInformerReactiveDiscoveryClientTests.java index 7ef2af41b7..28d3cce0da 100644 --- a/spring-cloud-kubernetes-client-discovery/src/test/java/org/springframework/cloud/kubernetes/client/discovery/reactive/KubernetesInformerReactiveDiscoveryClientTests.java +++ b/spring-cloud-kubernetes-client-discovery/src/test/java/org/springframework/cloud/kubernetes/client/discovery/reactive/KubernetesInformerReactiveDiscoveryClientTests.java @@ -23,6 +23,7 @@ import io.kubernetes.client.informer.SharedInformerFactory; import io.kubernetes.client.informer.cache.Cache; import io.kubernetes.client.informer.cache.Lister; +import io.kubernetes.client.openapi.apis.CoreV1Api; import io.kubernetes.client.openapi.models.CoreV1EndpointPort; import io.kubernetes.client.openapi.models.V1EndpointAddress; import io.kubernetes.client.openapi.models.V1EndpointSubset; @@ -76,6 +77,8 @@ class KubernetesInformerReactiveDiscoveryClientTests { .addSubsetsItem(new V1EndpointSubset().addPortsItem(new CoreV1EndpointPort().port(8080)) .addAddressesItem(new V1EndpointAddress().ip("2.2.2.2"))); + private static final CoreV1Api CORE_V1_API = Mockito.mock(CoreV1Api.class); + @AfterEach void afterEach() { serviceCache = new Cache<>(); @@ -92,8 +95,8 @@ void testDiscoveryGetServicesAllNamespaceShouldWork() { Set.of(), true, 60, false, null, Set.of(), Map.of(), null, null, 0, false); KubernetesInformerReactiveDiscoveryClient discoveryClient = new KubernetesInformerReactiveDiscoveryClient( - new KubernetesInformerDiscoveryClient(sharedInformerFactory, serviceLister, endpointsLister, null, null, - kubernetesDiscoveryProperties)); + new KubernetesInformerDiscoveryClient(List.of(sharedInformerFactory), List.of(serviceLister), + List.of(endpointsLister), null, null, kubernetesDiscoveryProperties, CORE_V1_API)); StepVerifier.create(discoveryClient.getServices()) .expectNext(TEST_SERVICE_1.getMetadata().getName(), TEST_SERVICE_2.getMetadata().getName()) @@ -108,8 +111,8 @@ void testDiscoveryGetServicesOneNamespaceShouldWork() { Lister endpointsLister = setupEndpointsLister(); KubernetesInformerReactiveDiscoveryClient discoveryClient = new KubernetesInformerReactiveDiscoveryClient( - new KubernetesInformerDiscoveryClient(sharedInformerFactory, serviceLister, endpointsLister, null, null, - KubernetesDiscoveryProperties.DEFAULT)); + new KubernetesInformerDiscoveryClient(List.of(sharedInformerFactory), List.of(serviceLister), + List.of(endpointsLister), null, null, KubernetesDiscoveryProperties.DEFAULT, CORE_V1_API)); StepVerifier.create(discoveryClient.getServices()) .expectNext(TEST_SERVICE_1.getMetadata().getName()) @@ -128,8 +131,8 @@ void testDiscoveryGetInstanceAllNamespaceShouldWork() { KubernetesDiscoveryProperties.Metadata.DEFAULT, 0, false); KubernetesInformerReactiveDiscoveryClient discoveryClient = new KubernetesInformerReactiveDiscoveryClient( - new KubernetesInformerDiscoveryClient(sharedInformerFactory, serviceLister, endpointsLister, null, null, - kubernetesDiscoveryProperties)); + new KubernetesInformerDiscoveryClient(List.of(sharedInformerFactory), List.of(serviceLister), + List.of(endpointsLister), null, null, kubernetesDiscoveryProperties, CORE_V1_API)); StepVerifier.create(discoveryClient.getInstances("test-svc-1")) .expectNext(new DefaultKubernetesServiceInstance(null, "test-svc-1", "2.2.2.2", 8080, @@ -150,8 +153,8 @@ void testDiscoveryGetInstanceOneNamespaceShouldWork() { KubernetesDiscoveryProperties.Metadata.DEFAULT, 0, false); KubernetesInformerReactiveDiscoveryClient discoveryClient = new KubernetesInformerReactiveDiscoveryClient( - new KubernetesInformerDiscoveryClient(sharedInformerFactory, serviceLister, endpointsLister, null, null, - kubernetesDiscoveryProperties)); + new KubernetesInformerDiscoveryClient(List.of(sharedInformerFactory), List.of(serviceLister), + List.of(endpointsLister), null, null, kubernetesDiscoveryProperties, CORE_V1_API)); StepVerifier.create(discoveryClient.getInstances("test-svc-1")) .expectNext(new DefaultKubernetesServiceInstance(null, "test-svc-1", "2.2.2.2", 8080, @@ -186,8 +189,8 @@ void testAllNamespacesTwoServicesPresent() { allNamespaces, Set.of(), true, 60, false, null, Set.of(), Map.of(), null, null, 0, false); KubernetesInformerReactiveDiscoveryClient discoveryClient = new KubernetesInformerReactiveDiscoveryClient( - new KubernetesInformerDiscoveryClient(sharedInformerFactory, serviceLister, endpointsLister, null, null, - kubernetesDiscoveryProperties)); + new KubernetesInformerDiscoveryClient(List.of(sharedInformerFactory), List.of(serviceLister), + List.of(endpointsLister), null, null, kubernetesDiscoveryProperties, CORE_V1_API)); List result = discoveryClient.getServices().collectList().block(); Assertions.assertThat(result.size()).isEqualTo(2); @@ -220,8 +223,8 @@ void testSingleNamespaceTwoServicesPresent() { allNamespaces, Set.of(), true, 60, false, null, Set.of(), Map.of(), null, null, 0, false); KubernetesInformerReactiveDiscoveryClient discoveryClient = new KubernetesInformerReactiveDiscoveryClient( - new KubernetesInformerDiscoveryClient(sharedInformerFactory, serviceLister, endpointsLister, null, null, - kubernetesDiscoveryProperties)); + new KubernetesInformerDiscoveryClient(List.of(sharedInformerFactory), List.of(serviceLister), + List.of(endpointsLister), null, null, kubernetesDiscoveryProperties, CORE_V1_API)); List result = discoveryClient.getServices().collectList().block(); Assertions.assertThat(result.size()).isEqualTo(1); @@ -270,8 +273,8 @@ void testAllNamespacesTwoEndpointsPresent() { KubernetesDiscoveryProperties.Metadata.DEFAULT, 0, false); KubernetesInformerReactiveDiscoveryClient discoveryClient = new KubernetesInformerReactiveDiscoveryClient( - new KubernetesInformerDiscoveryClient(sharedInformerFactory, serviceLister, endpointsLister, null, null, - kubernetesDiscoveryProperties)); + new KubernetesInformerDiscoveryClient(List.of(sharedInformerFactory), List.of(serviceLister), + List.of(endpointsLister), null, null, kubernetesDiscoveryProperties, CORE_V1_API)); List result = discoveryClient.getInstances("endpoints-x").collectList().block(); Assertions.assertThat(result.size()).isEqualTo(2); @@ -321,8 +324,8 @@ void testAllSingleTwoEndpointsPresent() { KubernetesDiscoveryProperties.Metadata.DEFAULT, 0, false); KubernetesInformerReactiveDiscoveryClient discoveryClient = new KubernetesInformerReactiveDiscoveryClient( - new KubernetesInformerDiscoveryClient(sharedInformerFactory, serviceLister, endpointsLister, null, null, - kubernetesDiscoveryProperties)); + new KubernetesInformerDiscoveryClient(List.of(sharedInformerFactory), List.of(serviceLister), + List.of(endpointsLister), null, null, kubernetesDiscoveryProperties, CORE_V1_API)); List result = discoveryClient.getInstances("endpoints-x").collectList().block(); Assertions.assertThat(result.size()).isEqualTo(1); @@ -338,8 +341,9 @@ void testOrder() { Lister serviceLister = setupServiceLister(NAMESPACE_ALL, TEST_SERVICE_1, TEST_SERVICE_2); Lister endpointsLister = setupEndpointsLister(TEST_ENDPOINTS_1); - KubernetesInformerDiscoveryClient discoveryClient = new KubernetesInformerDiscoveryClient(sharedInformerFactory, - serviceLister, endpointsLister, null, null, properties); + KubernetesInformerDiscoveryClient discoveryClient = new KubernetesInformerDiscoveryClient( + List.of(sharedInformerFactory), List.of(serviceLister), List.of(endpointsLister), null, null, + properties, CORE_V1_API); Assertions.assertThat(discoveryClient.getOrder()).isEqualTo(57); } From c4ed64cb8df36ae21e47ef0b2a611d363f7fb510 Mon Sep 17 00:00:00 2001 From: wind57 Date: Fri, 29 Aug 2025 14:58:53 +0300 Subject: [PATCH 05/10] fix compilation Signed-off-by: wind57 --- .../kubernetes/commons/config/reload/ConfigReloadUtil.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/spring-cloud-kubernetes-commons/src/main/java/org/springframework/cloud/kubernetes/commons/config/reload/ConfigReloadUtil.java b/spring-cloud-kubernetes-commons/src/main/java/org/springframework/cloud/kubernetes/commons/config/reload/ConfigReloadUtil.java index 1278f46412..d5c9d7d4b8 100644 --- a/spring-cloud-kubernetes-commons/src/main/java/org/springframework/cloud/kubernetes/commons/config/reload/ConfigReloadUtil.java +++ b/spring-cloud-kubernetes-commons/src/main/java/org/springframework/cloud/kubernetes/commons/config/reload/ConfigReloadUtil.java @@ -87,7 +87,8 @@ public static boolean reload(PropertySourceLocator locator, ConfigurableEnvironm * @param sourceClass class for which property sources will be found * @return finds all registered property sources of the given type */ - static > List findPropertySources(Class sourceClass, + @SuppressWarnings("unchecked") + public static > List findPropertySources(Class sourceClass, ConfigurableEnvironment environment) { List managedSources = new ArrayList<>(); From c4b36472dae504f61ffbefef2b31ae9342df07bf Mon Sep 17 00:00:00 2001 From: wind57 Date: Fri, 29 Aug 2025 15:38:20 +0300 Subject: [PATCH 06/10] fix compilation Signed-off-by: wind57 --- ...ernetesClientConfigServerBootstrapper.java | 6 +- ...ormerDiscoveryClientAutoConfiguration.java | 2 +- ...ctiveDiscoveryClientAutoConfiguration.java | 2 +- ...etesDiscoveryClientFilterMetadataTest.java | 35 +++--- ...veryClientServiceWithoutPortNameTests.java | 6 +- .../KubernetesDiscoveryClientTests.java | 50 ++++----- ...ubernetesInformerDiscoveryClientTests.java | 102 +++++++++--------- ...sInformerReactiveDiscoveryClientTests.java | 20 ++-- ...eryServerIntegrationAppsEndpointTests.java | 7 +- ...erverIntegrationAppsNameEndpointTests.java | 7 +- ...erverIntegrationInstanceEndpointTests.java | 7 +- 11 files changed, 126 insertions(+), 118 deletions(-) diff --git a/spring-cloud-kubernetes-client-discovery/src/main/java/org/springframework/cloud/kubernetes/client/discovery/KubernetesClientConfigServerBootstrapper.java b/spring-cloud-kubernetes-client-discovery/src/main/java/org/springframework/cloud/kubernetes/client/discovery/KubernetesClientConfigServerBootstrapper.java index 1d9623af04..a3710daa8d 100644 --- a/spring-cloud-kubernetes-client-discovery/src/main/java/org/springframework/cloud/kubernetes/client/discovery/KubernetesClientConfigServerBootstrapper.java +++ b/spring-cloud-kubernetes-client-discovery/src/main/java/org/springframework/cloud/kubernetes/client/discovery/KubernetesClientConfigServerBootstrapper.java @@ -98,9 +98,9 @@ public void initialize(BootstrapRegistry registry) { .sharedIndexInformerFor(endpointsApi, V1Endpoints.class, 0L, namespace); Lister endpointsLister = new Lister<>(endpointsSharedIndexInformer.getIndexer()); KubernetesInformerDiscoveryClient discoveryClient = new KubernetesInformerDiscoveryClient( - List.of(sharedInformerFactory), List.of(serviceLister), List.of(endpointsLister), - List.of(serviceSharedIndexInformer), List.of(endpointsSharedIndexInformer), discoveryProperties, - new CoreV1Api(apiClient)); + List.of(sharedInformerFactory), List.of(serviceLister), List.of(endpointsLister), + List.of(serviceSharedIndexInformer), List.of(endpointsSharedIndexInformer), discoveryProperties, + new CoreV1Api(apiClient)); try { discoveryClient.afterPropertiesSet(); return discoveryClient::getInstances; diff --git a/spring-cloud-kubernetes-client-discovery/src/main/java/org/springframework/cloud/kubernetes/client/discovery/KubernetesInformerDiscoveryClientAutoConfiguration.java b/spring-cloud-kubernetes-client-discovery/src/main/java/org/springframework/cloud/kubernetes/client/discovery/KubernetesInformerDiscoveryClientAutoConfiguration.java index 39c28335dc..467fa53a2a 100644 --- a/spring-cloud-kubernetes-client-discovery/src/main/java/org/springframework/cloud/kubernetes/client/discovery/KubernetesInformerDiscoveryClientAutoConfiguration.java +++ b/spring-cloud-kubernetes-client-discovery/src/main/java/org/springframework/cloud/kubernetes/client/discovery/KubernetesInformerDiscoveryClientAutoConfiguration.java @@ -81,7 +81,7 @@ KubernetesInformerDiscoveryClient kubernetesClientInformerDiscoveryClient( SharedInformer endpointsInformer, KubernetesDiscoveryProperties properties, CoreV1Api coreV1Api) { return new KubernetesInformerDiscoveryClient(List.of(sharedInformerFactory), List.of(serviceLister), - List.of(endpointsLister), List.of(serviceInformer), List.of(endpointsInformer), properties, coreV1Api); + List.of(endpointsLister), List.of(serviceInformer), List.of(endpointsInformer), properties, coreV1Api); } @Bean diff --git a/spring-cloud-kubernetes-client-discovery/src/main/java/org/springframework/cloud/kubernetes/client/discovery/reactive/KubernetesInformerReactiveDiscoveryClientAutoConfiguration.java b/spring-cloud-kubernetes-client-discovery/src/main/java/org/springframework/cloud/kubernetes/client/discovery/reactive/KubernetesInformerReactiveDiscoveryClientAutoConfiguration.java index 641df506c1..d5c402f935 100644 --- a/spring-cloud-kubernetes-client-discovery/src/main/java/org/springframework/cloud/kubernetes/client/discovery/reactive/KubernetesInformerReactiveDiscoveryClientAutoConfiguration.java +++ b/spring-cloud-kubernetes-client-discovery/src/main/java/org/springframework/cloud/kubernetes/client/discovery/reactive/KubernetesInformerReactiveDiscoveryClientAutoConfiguration.java @@ -104,7 +104,7 @@ KubernetesInformerDiscoveryClient kubernetesClientInformerDiscoveryClient( SharedInformer endpointsInformer, KubernetesDiscoveryProperties properties, CoreV1Api coreV1Api) { return new KubernetesInformerDiscoveryClient(List.of(sharedInformerFactory), List.of(serviceLister), - List.of(endpointsLister), List.of(serviceInformer), List.of(endpointsInformer), properties, coreV1Api); + List.of(endpointsLister), List.of(serviceInformer), List.of(endpointsInformer), properties, coreV1Api); } @Bean diff --git a/spring-cloud-kubernetes-client-discovery/src/test/java/org/springframework/cloud/kubernetes/client/discovery/KubernetesDiscoveryClientFilterMetadataTest.java b/spring-cloud-kubernetes-client-discovery/src/test/java/org/springframework/cloud/kubernetes/client/discovery/KubernetesDiscoveryClientFilterMetadataTest.java index 255c2d59ee..87f6482d49 100644 --- a/spring-cloud-kubernetes-client-discovery/src/test/java/org/springframework/cloud/kubernetes/client/discovery/KubernetesDiscoveryClientFilterMetadataTest.java +++ b/spring-cloud-kubernetes-client-discovery/src/test/java/org/springframework/cloud/kubernetes/client/discovery/KubernetesDiscoveryClientFilterMetadataTest.java @@ -36,11 +36,10 @@ import org.assertj.core.util.Strings; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; - import org.mockito.Mockito; + import org.springframework.cloud.client.ServiceInstance; import org.springframework.cloud.kubernetes.commons.discovery.KubernetesDiscoveryProperties; -import org.testcontainers.shaded.org.checkerframework.checker.units.qual.C; import static java.util.Map.entry; import static java.util.stream.Collectors.toList; @@ -86,8 +85,8 @@ void testAllExtraMetadataDisabled() { false, null, Set.of(), Map.of(), null, metadata, 0, true); KubernetesInformerDiscoveryClient discoveryClient = new KubernetesInformerDiscoveryClient(List.of(STUB), - List.of(servicesLister), List.of(endpointsLister), List.of(SERVICE_SHARED_INFORMER_STUB), - List.of(ENDPOINTS_SHARED_INFORMER_STUB), properties, CORE_V1_API); + List.of(servicesLister), List.of(endpointsLister), List.of(SERVICE_SHARED_INFORMER_STUB), + List.of(ENDPOINTS_SHARED_INFORMER_STUB), properties, CORE_V1_API); setup(serviceId, "ns", Map.of("l1", "lab"), Map.of("l1", "lab"), Map.of(80, "http", 5555, "")); @@ -106,8 +105,8 @@ void testLabelsEnabled() { false, null, Set.of(), Map.of(), null, metadata, 0, true); KubernetesInformerDiscoveryClient discoveryClient = new KubernetesInformerDiscoveryClient(List.of(STUB), - List.of(servicesLister), List.of(endpointsLister), List.of(SERVICE_SHARED_INFORMER_STUB), - List.of(ENDPOINTS_SHARED_INFORMER_STUB), properties, CORE_V1_API); + List.of(servicesLister), List.of(endpointsLister), List.of(SERVICE_SHARED_INFORMER_STUB), + List.of(ENDPOINTS_SHARED_INFORMER_STUB), properties, CORE_V1_API); setup(serviceId, "ns", Map.of("l1", "v1", "l2", "v2"), Map.of("l1", "lab"), Map.of(80, "http", 5555, "")); @@ -127,8 +126,8 @@ void testLabelsEnabledWithPrefix() { false, null, Set.of(), Map.of(), null, metadata, 0, true); KubernetesInformerDiscoveryClient discoveryClient = new KubernetesInformerDiscoveryClient(List.of(STUB), - List.of(servicesLister), List.of(endpointsLister), List.of(SERVICE_SHARED_INFORMER_STUB), - List.of(ENDPOINTS_SHARED_INFORMER_STUB), properties, CORE_V1_API); + List.of(servicesLister), List.of(endpointsLister), List.of(SERVICE_SHARED_INFORMER_STUB), + List.of(ENDPOINTS_SHARED_INFORMER_STUB), properties, CORE_V1_API); setup(serviceId, "ns", Map.of("l1", "v1", "l2", "v2"), Map.of("l1", "lab"), Map.of(80, "http", 5555, "")); @@ -148,8 +147,8 @@ void testAnnotationsEnabled() { false, null, Set.of(), Map.of(), null, metadata, 0, true); KubernetesInformerDiscoveryClient discoveryClient = new KubernetesInformerDiscoveryClient(List.of(STUB), - List.of(servicesLister), List.of(endpointsLister), List.of(SERVICE_SHARED_INFORMER_STUB), - List.of(ENDPOINTS_SHARED_INFORMER_STUB), properties, CORE_V1_API); + List.of(servicesLister), List.of(endpointsLister), List.of(SERVICE_SHARED_INFORMER_STUB), + List.of(ENDPOINTS_SHARED_INFORMER_STUB), properties, CORE_V1_API); setup(serviceId, "ns", Map.of("l1", "v1"), Map.of("a1", "v1", "a2", "v2"), Map.of(80, "http", 5555, "")); @@ -169,8 +168,8 @@ void testAnnotationsEnabledWithPrefix() { false, null, Set.of(), Map.of(), null, metadata, 0, true); KubernetesInformerDiscoveryClient discoveryClient = new KubernetesInformerDiscoveryClient(List.of(STUB), - List.of(servicesLister), List.of(endpointsLister), List.of(SERVICE_SHARED_INFORMER_STUB), - List.of(ENDPOINTS_SHARED_INFORMER_STUB), properties, CORE_V1_API); + List.of(servicesLister), List.of(endpointsLister), List.of(SERVICE_SHARED_INFORMER_STUB), + List.of(ENDPOINTS_SHARED_INFORMER_STUB), properties, CORE_V1_API); setup(serviceId, "ns", Map.of("l1", "v1"), Map.of("a1", "v1", "a2", "v2"), Map.of(80, "http", 5555, "")); @@ -190,8 +189,8 @@ void testPortsEnabled() { false, null, Set.of(), Map.of(), null, metadata, 0, true); KubernetesInformerDiscoveryClient discoveryClient = new KubernetesInformerDiscoveryClient(List.of(STUB), - List.of(servicesLister), List.of(endpointsLister), List.of(SERVICE_SHARED_INFORMER_STUB), - List.of(ENDPOINTS_SHARED_INFORMER_STUB), properties, CORE_V1_API); + List.of(servicesLister), List.of(endpointsLister), List.of(SERVICE_SHARED_INFORMER_STUB), + List.of(ENDPOINTS_SHARED_INFORMER_STUB), properties, CORE_V1_API); setup(serviceId, "test", Map.of("l1", "v1"), Map.of("a1", "v1", "a2", "v2"), Map.of(80, "http", 5555, "")); @@ -211,8 +210,8 @@ void testPortsEnabledWithPrefix() { false, null, Set.of(), Map.of(), null, metadata, 0, true); KubernetesInformerDiscoveryClient discoveryClient = new KubernetesInformerDiscoveryClient(List.of(STUB), - List.of(servicesLister), List.of(endpointsLister), List.of(SERVICE_SHARED_INFORMER_STUB), - List.of(ENDPOINTS_SHARED_INFORMER_STUB), properties, CORE_V1_API); + List.of(servicesLister), List.of(endpointsLister), List.of(SERVICE_SHARED_INFORMER_STUB), + List.of(ENDPOINTS_SHARED_INFORMER_STUB), properties, CORE_V1_API); setup(serviceId, "ns", Map.of("l1", "v1"), Map.of("a1", "v1", "a2", "v2"), Map.of(80, "http", 5555, "")); @@ -232,8 +231,8 @@ void testLabelsAndAnnotationsAndPortsEnabledWithPrefix() { false, null, Set.of(), Map.of(), null, metadata, 0, true); KubernetesInformerDiscoveryClient discoveryClient = new KubernetesInformerDiscoveryClient(List.of(STUB), - List.of(servicesLister), List.of(endpointsLister), List.of(SERVICE_SHARED_INFORMER_STUB), - List.of(ENDPOINTS_SHARED_INFORMER_STUB), properties, CORE_V1_API); + List.of(servicesLister), List.of(endpointsLister), List.of(SERVICE_SHARED_INFORMER_STUB), + List.of(ENDPOINTS_SHARED_INFORMER_STUB), properties, CORE_V1_API); setup(serviceId, "ns", Map.of("l1", "la1"), Map.of("a1", "an1", "a2", "an2"), Map.of(80, "http", 5555, "")); diff --git a/spring-cloud-kubernetes-client-discovery/src/test/java/org/springframework/cloud/kubernetes/client/discovery/KubernetesDiscoveryClientServiceWithoutPortNameTests.java b/spring-cloud-kubernetes-client-discovery/src/test/java/org/springframework/cloud/kubernetes/client/discovery/KubernetesDiscoveryClientServiceWithoutPortNameTests.java index c0a94da454..2427a9c34f 100644 --- a/spring-cloud-kubernetes-client-discovery/src/test/java/org/springframework/cloud/kubernetes/client/discovery/KubernetesDiscoveryClientServiceWithoutPortNameTests.java +++ b/spring-cloud-kubernetes-client-discovery/src/test/java/org/springframework/cloud/kubernetes/client/discovery/KubernetesDiscoveryClientServiceWithoutPortNameTests.java @@ -36,8 +36,8 @@ import org.assertj.core.api.Assertions; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; - import org.mockito.Mockito; + import org.springframework.cloud.client.ServiceInstance; import org.springframework.cloud.kubernetes.commons.discovery.KubernetesDiscoveryProperties; @@ -95,8 +95,8 @@ void testDiscoveryWithoutAServicePortName() { true, 60, false, null, Set.of(), Map.of(), null, KubernetesDiscoveryProperties.Metadata.DEFAULT, 0, true); KubernetesInformerDiscoveryClient discoveryClient = new KubernetesInformerDiscoveryClient(List.of(STUB), - List.of(servicesLister), List.of(endpointsLister), List.of(SERVICE_SHARED_INFORMER_STUB), - List.of(ENDPOINTS_SHARED_INFORMER_STUB), properties, CORE_V1_API); + List.of(servicesLister), List.of(endpointsLister), List.of(SERVICE_SHARED_INFORMER_STUB), + List.of(ENDPOINTS_SHARED_INFORMER_STUB), properties, CORE_V1_API); List serviceInstances = discoveryClient.getInstances("no-port-name-service"); Assertions.assertThat(serviceInstances.size()).isEqualTo(1); diff --git a/spring-cloud-kubernetes-client-discovery/src/test/java/org/springframework/cloud/kubernetes/client/discovery/KubernetesDiscoveryClientTests.java b/spring-cloud-kubernetes-client-discovery/src/test/java/org/springframework/cloud/kubernetes/client/discovery/KubernetesDiscoveryClientTests.java index b2af2b0d6d..fb933ff9be 100644 --- a/spring-cloud-kubernetes-client-discovery/src/test/java/org/springframework/cloud/kubernetes/client/discovery/KubernetesDiscoveryClientTests.java +++ b/spring-cloud-kubernetes-client-discovery/src/test/java/org/springframework/cloud/kubernetes/client/discovery/KubernetesDiscoveryClientTests.java @@ -38,8 +38,8 @@ import io.kubernetes.client.openapi.models.V1ServiceSpecBuilder; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; - import org.mockito.Mockito; + import org.springframework.cloud.client.ServiceInstance; import org.springframework.cloud.kubernetes.commons.discovery.KubernetesDiscoveryProperties; import org.springframework.cloud.kubernetes.commons.discovery.KubernetesServiceInstance; @@ -97,8 +97,8 @@ void getInstancesShouldBeAbleToHandleEndpointsSingleAddress() { false, null, Set.of(), Map.of(), null, metadata, 0, true); KubernetesInformerDiscoveryClient discoveryClient = new KubernetesInformerDiscoveryClient(List.of(STUB), - List.of(servicesLister), List.of(endpointsLister), List.of(SERVICE_SHARED_INFORMER_STUB), - List.of(ENDPOINTS_SHARED_INFORMER_STUB), properties, null); + List.of(servicesLister), List.of(endpointsLister), List.of(SERVICE_SHARED_INFORMER_STUB), + List.of(ENDPOINTS_SHARED_INFORMER_STUB), properties, null); List instances = discoveryClient.getInstances("id"); @@ -128,8 +128,8 @@ void getInstancesShouldBeAbleToHandleEndpointsSingleAddressAndMultiplePorts() { false, null, Set.of(), labels, "http_tcp", KubernetesDiscoveryProperties.Metadata.DEFAULT, 0, true); KubernetesInformerDiscoveryClient discoveryClient = new KubernetesInformerDiscoveryClient(List.of(STUB), - List.of(servicesLister), List.of(endpointsLister), List.of(SERVICE_SHARED_INFORMER_STUB), - List.of(ENDPOINTS_SHARED_INFORMER_STUB), properties, CORE_V1_API); + List.of(servicesLister), List.of(endpointsLister), List.of(SERVICE_SHARED_INFORMER_STUB), + List.of(ENDPOINTS_SHARED_INFORMER_STUB), properties, CORE_V1_API); List instances = discoveryClient.getInstances("endpoint"); @@ -163,8 +163,8 @@ void getInstancesShouldBeAbleToHandleEndpointsMultipleAddresses() { false, null, Set.of(443, 8443), labels, null, metadata, 0, true); KubernetesInformerDiscoveryClient discoveryClient = new KubernetesInformerDiscoveryClient(List.of(STUB), - List.of(servicesLister), List.of(endpointsLister), List.of(SERVICE_SHARED_INFORMER_STUB), - List.of(ENDPOINTS_SHARED_INFORMER_STUB), properties, CORE_V1_API); + List.of(servicesLister), List.of(endpointsLister), List.of(SERVICE_SHARED_INFORMER_STUB), + List.of(ENDPOINTS_SHARED_INFORMER_STUB), properties, CORE_V1_API); List instances = discoveryClient.getInstances("endpoint"); @@ -200,8 +200,8 @@ void getInstancesShouldBeAbleToHandleEndpointsFromMultipleNamespaces() { false, null, Set.of(), Map.of(), null, KubernetesDiscoveryProperties.Metadata.DEFAULT, 0, true); KubernetesInformerDiscoveryClient discoveryClient = new KubernetesInformerDiscoveryClient(List.of(STUB), - List.of(servicesLister), List.of(endpointsLister), List.of(SERVICE_SHARED_INFORMER_STUB), - List.of(ENDPOINTS_SHARED_INFORMER_STUB), properties, CORE_V1_API); + List.of(servicesLister), List.of(endpointsLister), List.of(SERVICE_SHARED_INFORMER_STUB), + List.of(ENDPOINTS_SHARED_INFORMER_STUB), properties, CORE_V1_API); List instances = discoveryClient.getInstances("endpoint"); @@ -240,8 +240,8 @@ void instanceWithoutSubsetsShouldBeSkipped() { KubernetesDiscoveryProperties properties = new KubernetesDiscoveryProperties(true, true, Set.of(), true, 60, false, null, Set.of(), Map.of(), null, KubernetesDiscoveryProperties.Metadata.DEFAULT, 0, true); KubernetesInformerDiscoveryClient discoveryClient = new KubernetesInformerDiscoveryClient(List.of(STUB), - List.of(servicesLister), List.of(endpointsLister), List.of(SERVICE_SHARED_INFORMER_STUB), - List.of(ENDPOINTS_SHARED_INFORMER_STUB), properties, CORE_V1_API); + List.of(servicesLister), List.of(endpointsLister), List.of(SERVICE_SHARED_INFORMER_STUB), + List.of(ENDPOINTS_SHARED_INFORMER_STUB), properties, CORE_V1_API); List instances = discoveryClient.getInstances("endpoint1"); @@ -267,8 +267,8 @@ void getInstancesShouldBeAbleToHandleEndpointsSingleAddressAndMultiplePortsUsing false, null, Set.of(443, 8443), Map.of(), null, KubernetesDiscoveryProperties.Metadata.DEFAULT, 0, true); KubernetesInformerDiscoveryClient discoveryClient = new KubernetesInformerDiscoveryClient(List.of(STUB), - List.of(servicesLister), List.of(endpointsLister), List.of(SERVICE_SHARED_INFORMER_STUB), - List.of(ENDPOINTS_SHARED_INFORMER_STUB), properties, CORE_V1_API); + List.of(servicesLister), List.of(endpointsLister), List.of(SERVICE_SHARED_INFORMER_STUB), + List.of(ENDPOINTS_SHARED_INFORMER_STUB), properties, CORE_V1_API); List instances = discoveryClient.getInstances("endpoint2"); @@ -300,8 +300,8 @@ void instanceWithMultiplePortsAndMisconfiguredPrimaryPortNameInLabelWithoutFallb false, null, Set.of(443, 8443), Map.of(), null, KubernetesDiscoveryProperties.Metadata.DEFAULT, 0, true); KubernetesInformerDiscoveryClient discoveryClient = new KubernetesInformerDiscoveryClient(List.of(STUB), - List.of(servicesLister), List.of(endpointsLister), List.of(SERVICE_SHARED_INFORMER_STUB), - List.of(ENDPOINTS_SHARED_INFORMER_STUB), properties, CORE_V1_API); + List.of(servicesLister), List.of(endpointsLister), List.of(SERVICE_SHARED_INFORMER_STUB), + List.of(ENDPOINTS_SHARED_INFORMER_STUB), properties, CORE_V1_API); List instances = discoveryClient.getInstances("endpoint3"); @@ -332,8 +332,8 @@ void instanceWithMultiplePortsAndMisconfiguredGenericPrimaryPortNameWithoutFallb false, null, Set.of(443, 8443), Map.of(), "oops", KubernetesDiscoveryProperties.Metadata.DEFAULT, 0, true); KubernetesInformerDiscoveryClient discoveryClient = new KubernetesInformerDiscoveryClient(List.of(STUB), - List.of(servicesLister), List.of(endpointsLister), List.of(SERVICE_SHARED_INFORMER_STUB), - List.of(ENDPOINTS_SHARED_INFORMER_STUB), properties, CORE_V1_API); + List.of(servicesLister), List.of(endpointsLister), List.of(SERVICE_SHARED_INFORMER_STUB), + List.of(ENDPOINTS_SHARED_INFORMER_STUB), properties, CORE_V1_API); List instances = discoveryClient.getInstances("endpoint4"); @@ -365,8 +365,8 @@ void instanceWithMultiplePortsAndWithoutPrimaryPortNameSpecifiedShouldFallBackTo true); KubernetesInformerDiscoveryClient discoveryClient = new KubernetesInformerDiscoveryClient(List.of(STUB), - List.of(servicesLister), List.of(endpointsLister), List.of(SERVICE_SHARED_INFORMER_STUB), - List.of(ENDPOINTS_SHARED_INFORMER_STUB), properties, CORE_V1_API); + List.of(servicesLister), List.of(endpointsLister), List.of(SERVICE_SHARED_INFORMER_STUB), + List.of(ENDPOINTS_SHARED_INFORMER_STUB), properties, CORE_V1_API); List instances = discoveryClient.getInstances("endpoint5"); @@ -395,8 +395,8 @@ void instanceWithMultiplePortsAndWithoutPrimaryPortNameSpecifiedOrHttpsPortShoul setup(serviceId, serviceType, namespace, labels, ips, uuids, names, protocols, ports, appProtocols); KubernetesInformerDiscoveryClient discoveryClient = new KubernetesInformerDiscoveryClient(List.of(STUB), - List.of(servicesLister), List.of(endpointsLister), List.of(SERVICE_SHARED_INFORMER_STUB), - List.of(ENDPOINTS_SHARED_INFORMER_STUB), KubernetesDiscoveryProperties.DEFAULT, CORE_V1_API); + List.of(servicesLister), List.of(endpointsLister), List.of(SERVICE_SHARED_INFORMER_STUB), + List.of(ENDPOINTS_SHARED_INFORMER_STUB), KubernetesDiscoveryProperties.DEFAULT, CORE_V1_API); List instances = discoveryClient.getInstances("endpoint5"); @@ -428,8 +428,8 @@ void instanceWithMultiplePortsAndWithoutPrimaryPortNameSpecifiedShouldLogWarning true, null, Set.of(443, 8443), Map.of(), null, KubernetesDiscoveryProperties.Metadata.DEFAULT, 0, true); KubernetesInformerDiscoveryClient discoveryClient = new KubernetesInformerDiscoveryClient(List.of(STUB), - List.of(servicesLister), List.of(endpointsLister), List.of(SERVICE_SHARED_INFORMER_STUB), - List.of(ENDPOINTS_SHARED_INFORMER_STUB), properties, CORE_V1_API); + List.of(servicesLister), List.of(endpointsLister), List.of(SERVICE_SHARED_INFORMER_STUB), + List.of(ENDPOINTS_SHARED_INFORMER_STUB), properties, CORE_V1_API); List instances = discoveryClient.getInstances("endpoint5"); @@ -461,8 +461,8 @@ public void instanceWithoutPorts() { KubernetesDiscoveryProperties properties = KubernetesDiscoveryProperties.DEFAULT; KubernetesInformerDiscoveryClient discoveryClient = new KubernetesInformerDiscoveryClient(List.of(STUB), - List.of(servicesLister), List.of(endpointsLister), List.of(SERVICE_SHARED_INFORMER_STUB), - List.of(ENDPOINTS_SHARED_INFORMER_STUB), properties, CORE_V1_API); + List.of(servicesLister), List.of(endpointsLister), List.of(SERVICE_SHARED_INFORMER_STUB), + List.of(ENDPOINTS_SHARED_INFORMER_STUB), properties, CORE_V1_API); List instances = discoveryClient.getInstances("endpoint5"); diff --git a/spring-cloud-kubernetes-client-discovery/src/test/java/org/springframework/cloud/kubernetes/client/discovery/KubernetesInformerDiscoveryClientTests.java b/spring-cloud-kubernetes-client-discovery/src/test/java/org/springframework/cloud/kubernetes/client/discovery/KubernetesInformerDiscoveryClientTests.java index 3996779c17..a6051a1c37 100644 --- a/spring-cloud-kubernetes-client-discovery/src/test/java/org/springframework/cloud/kubernetes/client/discovery/KubernetesInformerDiscoveryClientTests.java +++ b/spring-cloud-kubernetes-client-discovery/src/test/java/org/springframework/cloud/kubernetes/client/discovery/KubernetesInformerDiscoveryClientTests.java @@ -105,8 +105,8 @@ void testServiceWithUnsetPortNames() { Lister endpointsLister = setupEndpointsLister(ENDPOINTS_NO_UNSET_PORT_NAME); KubernetesInformerDiscoveryClient discoveryClient = new KubernetesInformerDiscoveryClient( - List.of(SHARED_INFORMER_FACTORY), List.of(serviceLister), List.of(endpointsLister), - null, null, ALL_NAMESPACES, coreV1Api); + List.of(SHARED_INFORMER_FACTORY), List.of(serviceLister), List.of(endpointsLister), null, null, + ALL_NAMESPACES, coreV1Api); assertThat(discoveryClient.getInstances("test-svc-1").toArray()) .containsOnly(new DefaultKubernetesServiceInstance(null, "test-svc-1", "1.1.1.1", 80, @@ -137,8 +137,8 @@ void testDiscoveryWithServiceLabels() { KubernetesDiscoveryProperties kubernetesDiscoveryProperties = properties(true, labels); KubernetesInformerDiscoveryClient discoveryClient = new KubernetesInformerDiscoveryClient( - List.of(SHARED_INFORMER_FACTORY), List.of(serviceLister), List.of(endpointsLister), - null, null, kubernetesDiscoveryProperties, coreV1Api); + List.of(SHARED_INFORMER_FACTORY), List.of(serviceLister), List.of(endpointsLister), null, null, + kubernetesDiscoveryProperties, coreV1Api); assertThat(discoveryClient.getServices().toArray()).containsOnly(SERVICE_3.getMetadata().getName()); @@ -153,8 +153,8 @@ void testDiscoveryInstancesWithServiceLabels() { KubernetesDiscoveryProperties kubernetesDiscoveryProperties = properties(true, labels); KubernetesInformerDiscoveryClient discoveryClient = new KubernetesInformerDiscoveryClient( - List.of(SHARED_INFORMER_FACTORY), List.of(serviceLister), List.of(endpointsLister), - null, null, kubernetesDiscoveryProperties, coreV1Api); + List.of(SHARED_INFORMER_FACTORY), List.of(serviceLister), List.of(endpointsLister), null, null, + kubernetesDiscoveryProperties, coreV1Api); assertThat(discoveryClient.getInstances("test-svc-1").toArray()).isEmpty(); assertThat(discoveryClient.getInstances("test-svc-3").toArray()).containsOnly( @@ -169,8 +169,8 @@ void testDiscoveryInstancesWithSecuredServiceByAnnotations() { Lister serviceLister = setupServiceLister(SERVICE_4); Lister endpointsLister = setupEndpointsLister(ENDPOINTS_1); KubernetesInformerDiscoveryClient discoveryClient = new KubernetesInformerDiscoveryClient( - List.of(SHARED_INFORMER_FACTORY), List.of(serviceLister), List.of(endpointsLister), - null, null, ALL_NAMESPACES, coreV1Api); + List.of(SHARED_INFORMER_FACTORY), List.of(serviceLister), List.of(endpointsLister), null, null, + ALL_NAMESPACES, coreV1Api); assertThat(discoveryClient.getServices().toArray()).containsOnly(SERVICE_4.getMetadata().getName()); ServiceInstance serviceInstance = discoveryClient.getInstances(SERVICE_4.getMetadata().getName()).get(0); assertThat(serviceInstance.isSecure()).isTrue(); @@ -181,8 +181,8 @@ void testDiscoveryInstancesWithSecuredServiceByLabels() { Lister serviceLister = setupServiceLister(SERVICE_4); Lister endpointsLister = setupEndpointsLister(ENDPOINTS_1); KubernetesInformerDiscoveryClient discoveryClient = new KubernetesInformerDiscoveryClient( - List.of(SHARED_INFORMER_FACTORY), List.of(serviceLister), List.of(endpointsLister), - null, null, ALL_NAMESPACES, coreV1Api); + List.of(SHARED_INFORMER_FACTORY), List.of(serviceLister), List.of(endpointsLister), null, null, + ALL_NAMESPACES, coreV1Api); assertThat(discoveryClient.getServices().toArray()).containsOnly(SERVICE_4.getMetadata().getName()); ServiceInstance serviceInstance = discoveryClient.getInstances(SERVICE_4.getMetadata().getName()).get(0); @@ -195,7 +195,7 @@ void testDiscoveryGetServicesOneNamespaceShouldWork() { Lister endpointsLister = setupEndpointsLister(ENDPOINTS_NO_UNSET_PORT_NAME); KubernetesInformerDiscoveryClient discoveryClient = new KubernetesInformerDiscoveryClient( - List.of(SHARED_INFORMER_FACTORY), List.of(serviceLister), List.of(endpointsLister), null, null, + List.of(SHARED_INFORMER_FACTORY), List.of(serviceLister), List.of(endpointsLister), null, null, KubernetesDiscoveryProperties.DEFAULT, coreV1Api); assertThat(discoveryClient.getServices().toArray()).containsOnly(SERVICE_1.getMetadata().getName()); @@ -208,8 +208,8 @@ void testDiscoveryGetInstanceAllNamespaceShouldWork() { Lister endpointsLister = setupEndpointsLister(ENDPOINTS_1); KubernetesInformerDiscoveryClient discoveryClient = new KubernetesInformerDiscoveryClient( - List.of(SHARED_INFORMER_FACTORY), List.of(serviceLister), List.of(endpointsLister), - null, null, ALL_NAMESPACES, coreV1Api); + List.of(SHARED_INFORMER_FACTORY), List.of(serviceLister), List.of(endpointsLister), null, null, + ALL_NAMESPACES, coreV1Api); assertThat(discoveryClient.getInstances("test-svc-1")) .containsOnly(new DefaultKubernetesServiceInstance(null, "test-svc-1", "2.2.2.2", 8080, @@ -223,8 +223,8 @@ void testDiscoveryGetInstanceOneNamespaceShouldWork() { Lister endpointsLister = setupEndpointsLister(ENDPOINTS_1); KubernetesInformerDiscoveryClient discoveryClient = new KubernetesInformerDiscoveryClient( - List.of(SHARED_INFORMER_FACTORY), List.of(serviceLister), List.of(endpointsLister), - null, null, NOT_ALL_NAMESPACES, coreV1Api); + List.of(SHARED_INFORMER_FACTORY), List.of(serviceLister), List.of(endpointsLister), null, null, + NOT_ALL_NAMESPACES, coreV1Api); assertThat(discoveryClient.getInstances("test-svc-1")) .containsOnly(new DefaultKubernetesServiceInstance(null, "test-svc-1", "2.2.2.2", 8080, @@ -238,7 +238,7 @@ void testDiscoveryGetInstanceWithoutReadyAddressesShouldWork() { Lister endpointsLister = setupEndpointsLister(ENDPOINTS_NOT_READY_ADDRESS); KubernetesInformerDiscoveryClient discoveryClient = new KubernetesInformerDiscoveryClient( - List.of(SHARED_INFORMER_FACTORY), List.of(serviceLister), List.of(endpointsLister), null, null, + List.of(SHARED_INFORMER_FACTORY), List.of(serviceLister), List.of(endpointsLister), null, null, KubernetesDiscoveryProperties.DEFAULT, coreV1Api); assertThat(discoveryClient.getInstances("test-svc-1")).isEmpty(); @@ -254,8 +254,8 @@ void testDiscoveryGetInstanceWithNotReadyAddressesIncludedShouldWork() { KubernetesDiscoveryProperties.Metadata.DEFAULT, 0, true); KubernetesInformerDiscoveryClient discoveryClient = new KubernetesInformerDiscoveryClient( - List.of(SHARED_INFORMER_FACTORY), List.of(serviceLister), List.of(endpointsLister), - null, null, kubernetesDiscoveryProperties, coreV1Api); + List.of(SHARED_INFORMER_FACTORY), List.of(serviceLister), List.of(endpointsLister), null, null, + kubernetesDiscoveryProperties, coreV1Api); assertThat(discoveryClient.getInstances("test-svc-1")) .containsOnly(new DefaultKubernetesServiceInstance(null, "test-svc-1", "2.2.2.2", 8080, @@ -269,7 +269,7 @@ void instanceWithoutEndpointsShouldBeSkipped() { Lister endpointsLister = setupEndpointsLister(); KubernetesInformerDiscoveryClient discoveryClient = new KubernetesInformerDiscoveryClient( - List.of(SHARED_INFORMER_FACTORY), List.of(serviceLister), List.of(endpointsLister), null, null, + List.of(SHARED_INFORMER_FACTORY), List.of(serviceLister), List.of(endpointsLister), null, null, KubernetesDiscoveryProperties.DEFAULT, coreV1Api); assertThat(discoveryClient.getInstances("test-svc-1")).isEmpty(); @@ -281,7 +281,7 @@ void instanceWithoutPortsWillNotBeSkipped() { Lister endpointsLister = setupEndpointsLister(ENDPOINTS_NO_PORTS); KubernetesInformerDiscoveryClient discoveryClient = new KubernetesInformerDiscoveryClient( - List.of(SHARED_INFORMER_FACTORY), List.of(serviceLister), List.of(endpointsLister), null, null, + List.of(SHARED_INFORMER_FACTORY), List.of(serviceLister), List.of(endpointsLister), null, null, KubernetesDiscoveryProperties.DEFAULT, coreV1Api); assertThat(discoveryClient.getInstances("test-svc-1")) @@ -295,8 +295,8 @@ void instanceWithMultiplePortsAndPrimaryPortNameConfiguredWithLabelShouldWork() Lister endpointsLister = setupEndpointsLister(ENDPOINTS_WITH); KubernetesInformerDiscoveryClient discoveryClient = new KubernetesInformerDiscoveryClient( - List.of(SHARED_INFORMER_FACTORY), List.of(serviceLister), List.of(endpointsLister), - null, null, NOT_ALL_NAMESPACES, coreV1Api); + List.of(SHARED_INFORMER_FACTORY), List.of(serviceLister), List.of(endpointsLister), null, null, + NOT_ALL_NAMESPACES, coreV1Api); assertThat(discoveryClient.getInstances("test-svc-1")).containsOnly(new DefaultKubernetesServiceInstance( null, "test-svc-1", "1.1.1.1", 443, Map.of("port.http", "80", "primary-port-name", "https", @@ -311,8 +311,8 @@ void instanceWithMultiplePortsAndMisconfiguredPrimaryPortNameInLabelShouldReturn ENDPOINTS_MULTIPLE_PORTS_WITHOUT_SUPPORTED_PORT_NAMES); KubernetesInformerDiscoveryClient discoveryClient = new KubernetesInformerDiscoveryClient( - List.of(SHARED_INFORMER_FACTORY), List.of(serviceLister), List.of(endpointsLister), - null, null, NOT_ALL_NAMESPACES, coreV1Api); + List.of(SHARED_INFORMER_FACTORY), List.of(serviceLister), List.of(endpointsLister), null, null, + NOT_ALL_NAMESPACES, coreV1Api); assertThat(discoveryClient.getInstances("test-svc-1")) .containsOnly(new DefaultKubernetesServiceInstance( @@ -327,8 +327,8 @@ void instanceWithMultiplePortsAndGenericPrimaryPortNameConfiguredShouldWork() { Lister endpointsLister = setupEndpointsLister(ENDPOINTS_WITH); KubernetesInformerDiscoveryClient discoveryClient = new KubernetesInformerDiscoveryClient( - List.of(SHARED_INFORMER_FACTORY), List.of(serviceLister), List.of(endpointsLister), - null, null, NOT_ALL_NAMESPACES, coreV1Api); + List.of(SHARED_INFORMER_FACTORY), List.of(serviceLister), List.of(endpointsLister), null, null, + NOT_ALL_NAMESPACES, coreV1Api); assertThat(discoveryClient.getInstances("test-svc-1")) .containsOnly(new DefaultKubernetesServiceInstance(null, "test-svc-1", "1.1.1.1", 443, @@ -343,8 +343,8 @@ void instanceWithMultiplePortsAndMisconfiguredGenericPrimaryPortNameShouldReturn ENDPOINTS_MULTIPLE_PORTS_WITHOUT_SUPPORTED_PORT_NAMES); KubernetesInformerDiscoveryClient discoveryClient = new KubernetesInformerDiscoveryClient( - List.of(SHARED_INFORMER_FACTORY), List.of(serviceLister), List.of(endpointsLister), - null, null, NOT_ALL_NAMESPACES, coreV1Api); + List.of(SHARED_INFORMER_FACTORY), List.of(serviceLister), List.of(endpointsLister), null, null, + NOT_ALL_NAMESPACES, coreV1Api); assertThat(discoveryClient.getInstances("test-svc-1")) .containsOnly(new DefaultKubernetesServiceInstance(null, "test-svc-1", "1.1.1.1", 80, @@ -358,8 +358,8 @@ void instanceWithMultiplePortsAndWithoutPrimaryPortNameSpecifiedShouldFallBackTo Lister endpointsLister = setupEndpointsLister(ENDPOINTS_WITH); KubernetesInformerDiscoveryClient discoveryClient = new KubernetesInformerDiscoveryClient( - List.of(SHARED_INFORMER_FACTORY), List.of(serviceLister), List.of(endpointsLister), - null, null, NOT_ALL_NAMESPACES, coreV1Api); + List.of(SHARED_INFORMER_FACTORY), List.of(serviceLister), List.of(endpointsLister), null, null, + NOT_ALL_NAMESPACES, coreV1Api); assertThat(discoveryClient.getInstances("test-svc-1")) .containsOnly(new DefaultKubernetesServiceInstance(null, "test-svc-1", "1.1.1.1", 443, @@ -373,8 +373,8 @@ void instanceWithMultiplePortsAndWithoutPrimaryPortNameSpecifiedOrHttpsPortShoul Lister endpointsLister = setupEndpointsLister(ENDPOINTS_WITH_MULTIPLE_PORTS_NO_HTTPS); KubernetesInformerDiscoveryClient discoveryClient = new KubernetesInformerDiscoveryClient( - List.of(SHARED_INFORMER_FACTORY), List.of(serviceLister), List.of(endpointsLister), - null, null, NOT_ALL_NAMESPACES, coreV1Api); + List.of(SHARED_INFORMER_FACTORY), List.of(serviceLister), List.of(endpointsLister), null, null, + NOT_ALL_NAMESPACES, coreV1Api); assertThat(discoveryClient.getInstances("test-svc-1")) .containsOnly(new DefaultKubernetesServiceInstance(null, "test-svc-1", "1.1.1.1", 80, @@ -389,8 +389,8 @@ void instanceWithMultiplePortsAndWithoutAnyConfigurationShouldPickTheFirstPort() ENDPOINTS_MULTIPLE_PORTS_WITHOUT_SUPPORTED_PORT_NAMES); KubernetesInformerDiscoveryClient discoveryClient = new KubernetesInformerDiscoveryClient( - List.of(SHARED_INFORMER_FACTORY), List.of(serviceLister), List.of(endpointsLister), - null, null, NOT_ALL_NAMESPACES, coreV1Api); + List.of(SHARED_INFORMER_FACTORY), List.of(serviceLister), List.of(endpointsLister), null, null, + NOT_ALL_NAMESPACES, coreV1Api); assertThat(discoveryClient.getInstances("test-svc-1")) .containsOnly(new DefaultKubernetesServiceInstance(null, "test-svc-1", "1.1.1.1", 80, @@ -404,8 +404,8 @@ void getInstancesShouldReturnInstancesWithTheSameServiceIdFromNamespaces() { Lister endpointsLister = setupEndpointsLister(ENDPOINTS_1, ENDPOINTS_2); KubernetesInformerDiscoveryClient discoveryClient = new KubernetesInformerDiscoveryClient( - List.of(SHARED_INFORMER_FACTORY), List.of(serviceLister), List.of(endpointsLister), - null, null, ALL_NAMESPACES, coreV1Api); + List.of(SHARED_INFORMER_FACTORY), List.of(serviceLister), List.of(endpointsLister), null, null, + ALL_NAMESPACES, coreV1Api); assertThat(discoveryClient.getInstances("test-svc-1")).containsOnly( new DefaultKubernetesServiceInstance(null, "test-svc-1", "2.2.2.2", 8080, @@ -428,8 +428,8 @@ void testBothServicesMatchesFilter() { false, spelFilter, Set.of(), Map.of(), null, KubernetesDiscoveryProperties.Metadata.DEFAULT, 0, false); KubernetesInformerDiscoveryClient discoveryClient = new KubernetesInformerDiscoveryClient( - List.of(SHARED_INFORMER_FACTORY), List.of(serviceLister), List.of(endpointsLister), - null, null, properties, coreV1Api); + List.of(SHARED_INFORMER_FACTORY), List.of(serviceLister), List.of(endpointsLister), null, null, + properties, coreV1Api); assertThat(discoveryClient.getServices()).contains("test-svc-1", "test-svc-3"); @@ -452,8 +452,8 @@ void testOneServiceMatchesFilter() { false, spelFilter, Set.of(), Map.of(), null, KubernetesDiscoveryProperties.Metadata.DEFAULT, 0, false); KubernetesInformerDiscoveryClient discoveryClient = new KubernetesInformerDiscoveryClient( - List.of(SHARED_INFORMER_FACTORY), List.of(serviceLister), List.of(endpointsLister), - null, null, properties, coreV1Api); + List.of(SHARED_INFORMER_FACTORY), List.of(serviceLister), List.of(endpointsLister), null, null, + properties, coreV1Api); // only one here because of distinct assertThat(discoveryClient.getServices()).contains("test-svc-1"); @@ -473,7 +473,7 @@ void testOneServiceMatchesFilter() { properties = new KubernetesDiscoveryProperties(false, false, Set.of(), true, 60L, false, spelFilter, Set.of(), Map.of(), null, KubernetesDiscoveryProperties.Metadata.DEFAULT, 0, false); discoveryClient = new KubernetesInformerDiscoveryClient(List.of(SHARED_INFORMER_FACTORY), - List.of(serviceLister), List.of(endpointsLister), null, null, properties, coreV1Api); + List.of(serviceLister), List.of(endpointsLister), null, null, properties, coreV1Api); // only one here because of distinct assertThat(discoveryClient.getServices()).contains("test-svc-1"); @@ -503,8 +503,8 @@ void testServicesWithDifferentMetadataLabels() { 0, false); KubernetesInformerDiscoveryClient discoveryClient = new KubernetesInformerDiscoveryClient( - List.of(SHARED_INFORMER_FACTORY), List.of(serviceLister), List.of(endpointsLister), - null, null, properties, coreV1Api); + List.of(SHARED_INFORMER_FACTORY), List.of(serviceLister), List.of(endpointsLister), null, null, + properties, coreV1Api); List serviceInstances = discoveryClient.getInstances("serviceX"); assertThat(serviceInstances.size()).isEqualTo(1); @@ -527,8 +527,8 @@ void testServicesWithSameMetadataLabels() { 0, false); KubernetesInformerDiscoveryClient discoveryClient = new KubernetesInformerDiscoveryClient( - List.of(SHARED_INFORMER_FACTORY), List.of(serviceLister), List.of(endpointsLister), - null, null, properties, coreV1Api); + List.of(SHARED_INFORMER_FACTORY), List.of(serviceLister), List.of(endpointsLister), null, null, + properties, coreV1Api); List serviceInstances = discoveryClient.getInstances("serviceX") .stream() @@ -563,8 +563,8 @@ void testExternalNameService() { 60L, false, "", Set.of(), Map.of(), "", metadata, 0, false, true); KubernetesInformerDiscoveryClient discoveryClient = new KubernetesInformerDiscoveryClient( - List.of(SHARED_INFORMER_FACTORY), List.of(serviceLister), List.of(endpointsLister), - null, null, properties, coreV1Api); + List.of(SHARED_INFORMER_FACTORY), List.of(serviceLister), List.of(endpointsLister), null, null, + properties, coreV1Api); List result = discoveryClient.getInstances("blue-service"); assertThat(result.size()).isEqualTo(1); @@ -621,8 +621,8 @@ void testPodMetadata() { true, 60L, false, "", Set.of(), Map.of(), "", metadata, 0, false, true); KubernetesInformerDiscoveryClient discoveryClient = new KubernetesInformerDiscoveryClient( - List.of(SHARED_INFORMER_FACTORY), List.of(serviceLister), List.of(endpointsLister), null, null, - properties, new CoreV1Api(apiClient)); + List.of(SHARED_INFORMER_FACTORY), List.of(serviceLister), List.of(endpointsLister), null, null, + properties, new CoreV1Api(apiClient)); List result = discoveryClient.getInstances("blue-service"); assertThat(result.size()).isEqualTo(1); @@ -649,8 +649,8 @@ void testOrder() { Lister endpointsLister = setupEndpointsLister(ENDPOINTS_1); KubernetesInformerDiscoveryClient discoveryClient = new KubernetesInformerDiscoveryClient( - List.of(SHARED_INFORMER_FACTORY), List.of(serviceLister), List.of(endpointsLister), - null, null, properties, coreV1Api); + List.of(SHARED_INFORMER_FACTORY), List.of(serviceLister), List.of(endpointsLister), null, null, + properties, coreV1Api); assertThat(discoveryClient.getOrder()).isEqualTo(57); } diff --git a/spring-cloud-kubernetes-client-discovery/src/test/java/org/springframework/cloud/kubernetes/client/discovery/reactive/KubernetesInformerReactiveDiscoveryClientTests.java b/spring-cloud-kubernetes-client-discovery/src/test/java/org/springframework/cloud/kubernetes/client/discovery/reactive/KubernetesInformerReactiveDiscoveryClientTests.java index 28d3cce0da..34fb80cd7a 100644 --- a/spring-cloud-kubernetes-client-discovery/src/test/java/org/springframework/cloud/kubernetes/client/discovery/reactive/KubernetesInformerReactiveDiscoveryClientTests.java +++ b/spring-cloud-kubernetes-client-discovery/src/test/java/org/springframework/cloud/kubernetes/client/discovery/reactive/KubernetesInformerReactiveDiscoveryClientTests.java @@ -96,7 +96,7 @@ void testDiscoveryGetServicesAllNamespaceShouldWork() { KubernetesInformerReactiveDiscoveryClient discoveryClient = new KubernetesInformerReactiveDiscoveryClient( new KubernetesInformerDiscoveryClient(List.of(sharedInformerFactory), List.of(serviceLister), - List.of(endpointsLister), null, null, kubernetesDiscoveryProperties, CORE_V1_API)); + List.of(endpointsLister), null, null, kubernetesDiscoveryProperties, CORE_V1_API)); StepVerifier.create(discoveryClient.getServices()) .expectNext(TEST_SERVICE_1.getMetadata().getName(), TEST_SERVICE_2.getMetadata().getName()) @@ -112,7 +112,7 @@ void testDiscoveryGetServicesOneNamespaceShouldWork() { KubernetesInformerReactiveDiscoveryClient discoveryClient = new KubernetesInformerReactiveDiscoveryClient( new KubernetesInformerDiscoveryClient(List.of(sharedInformerFactory), List.of(serviceLister), - List.of(endpointsLister), null, null, KubernetesDiscoveryProperties.DEFAULT, CORE_V1_API)); + List.of(endpointsLister), null, null, KubernetesDiscoveryProperties.DEFAULT, CORE_V1_API)); StepVerifier.create(discoveryClient.getServices()) .expectNext(TEST_SERVICE_1.getMetadata().getName()) @@ -132,7 +132,7 @@ void testDiscoveryGetInstanceAllNamespaceShouldWork() { KubernetesInformerReactiveDiscoveryClient discoveryClient = new KubernetesInformerReactiveDiscoveryClient( new KubernetesInformerDiscoveryClient(List.of(sharedInformerFactory), List.of(serviceLister), - List.of(endpointsLister), null, null, kubernetesDiscoveryProperties, CORE_V1_API)); + List.of(endpointsLister), null, null, kubernetesDiscoveryProperties, CORE_V1_API)); StepVerifier.create(discoveryClient.getInstances("test-svc-1")) .expectNext(new DefaultKubernetesServiceInstance(null, "test-svc-1", "2.2.2.2", 8080, @@ -154,7 +154,7 @@ void testDiscoveryGetInstanceOneNamespaceShouldWork() { KubernetesInformerReactiveDiscoveryClient discoveryClient = new KubernetesInformerReactiveDiscoveryClient( new KubernetesInformerDiscoveryClient(List.of(sharedInformerFactory), List.of(serviceLister), - List.of(endpointsLister), null, null, kubernetesDiscoveryProperties, CORE_V1_API)); + List.of(endpointsLister), null, null, kubernetesDiscoveryProperties, CORE_V1_API)); StepVerifier.create(discoveryClient.getInstances("test-svc-1")) .expectNext(new DefaultKubernetesServiceInstance(null, "test-svc-1", "2.2.2.2", 8080, @@ -190,7 +190,7 @@ void testAllNamespacesTwoServicesPresent() { KubernetesInformerReactiveDiscoveryClient discoveryClient = new KubernetesInformerReactiveDiscoveryClient( new KubernetesInformerDiscoveryClient(List.of(sharedInformerFactory), List.of(serviceLister), - List.of(endpointsLister), null, null, kubernetesDiscoveryProperties, CORE_V1_API)); + List.of(endpointsLister), null, null, kubernetesDiscoveryProperties, CORE_V1_API)); List result = discoveryClient.getServices().collectList().block(); Assertions.assertThat(result.size()).isEqualTo(2); @@ -224,7 +224,7 @@ void testSingleNamespaceTwoServicesPresent() { KubernetesInformerReactiveDiscoveryClient discoveryClient = new KubernetesInformerReactiveDiscoveryClient( new KubernetesInformerDiscoveryClient(List.of(sharedInformerFactory), List.of(serviceLister), - List.of(endpointsLister), null, null, kubernetesDiscoveryProperties, CORE_V1_API)); + List.of(endpointsLister), null, null, kubernetesDiscoveryProperties, CORE_V1_API)); List result = discoveryClient.getServices().collectList().block(); Assertions.assertThat(result.size()).isEqualTo(1); @@ -274,7 +274,7 @@ void testAllNamespacesTwoEndpointsPresent() { KubernetesInformerReactiveDiscoveryClient discoveryClient = new KubernetesInformerReactiveDiscoveryClient( new KubernetesInformerDiscoveryClient(List.of(sharedInformerFactory), List.of(serviceLister), - List.of(endpointsLister), null, null, kubernetesDiscoveryProperties, CORE_V1_API)); + List.of(endpointsLister), null, null, kubernetesDiscoveryProperties, CORE_V1_API)); List result = discoveryClient.getInstances("endpoints-x").collectList().block(); Assertions.assertThat(result.size()).isEqualTo(2); @@ -325,7 +325,7 @@ void testAllSingleTwoEndpointsPresent() { KubernetesInformerReactiveDiscoveryClient discoveryClient = new KubernetesInformerReactiveDiscoveryClient( new KubernetesInformerDiscoveryClient(List.of(sharedInformerFactory), List.of(serviceLister), - List.of(endpointsLister), null, null, kubernetesDiscoveryProperties, CORE_V1_API)); + List.of(endpointsLister), null, null, kubernetesDiscoveryProperties, CORE_V1_API)); List result = discoveryClient.getInstances("endpoints-x").collectList().block(); Assertions.assertThat(result.size()).isEqualTo(1); @@ -342,8 +342,8 @@ void testOrder() { Lister endpointsLister = setupEndpointsLister(TEST_ENDPOINTS_1); KubernetesInformerDiscoveryClient discoveryClient = new KubernetesInformerDiscoveryClient( - List.of(sharedInformerFactory), List.of(serviceLister), List.of(endpointsLister), null, null, - properties, CORE_V1_API); + List.of(sharedInformerFactory), List.of(serviceLister), List.of(endpointsLister), null, null, + properties, CORE_V1_API); Assertions.assertThat(discoveryClient.getOrder()).isEqualTo(57); } diff --git a/spring-cloud-kubernetes-controllers/spring-cloud-kubernetes-discoveryserver/src/test/java/org/springframework/cloud/kubernetes/discoveryserver/DiscoveryServerIntegrationAppsEndpointTests.java b/spring-cloud-kubernetes-controllers/spring-cloud-kubernetes-discoveryserver/src/test/java/org/springframework/cloud/kubernetes/discoveryserver/DiscoveryServerIntegrationAppsEndpointTests.java index c17a1bebc8..8daf0a77b4 100644 --- a/spring-cloud-kubernetes-controllers/spring-cloud-kubernetes-discoveryserver/src/test/java/org/springframework/cloud/kubernetes/discoveryserver/DiscoveryServerIntegrationAppsEndpointTests.java +++ b/spring-cloud-kubernetes-controllers/spring-cloud-kubernetes-discoveryserver/src/test/java/org/springframework/cloud/kubernetes/discoveryserver/DiscoveryServerIntegrationAppsEndpointTests.java @@ -18,10 +18,12 @@ import java.util.Collections; import java.util.HashMap; +import java.util.List; import java.util.Map; import io.kubernetes.client.informer.SharedInformerFactory; import io.kubernetes.client.informer.cache.Lister; +import io.kubernetes.client.openapi.apis.CoreV1Api; import io.kubernetes.client.openapi.models.CoreV1EndpointPort; import io.kubernetes.client.openapi.models.V1EndpointAddress; import io.kubernetes.client.openapi.models.V1EndpointSubset; @@ -147,8 +149,9 @@ private KubernetesInformerDiscoveryClient kubernetesInformerDiscoveryClient() { Lister serviceLister = Util.setupServiceLister(TEST_SERVICE_A, TEST_SERVICE_B); Lister endpointsLister = Util.setupEndpointsLister(TEST_ENDPOINTS_A, TEST_ENDPOINTS_B); - return new KubernetesInformerDiscoveryClient(SHARED_INFORMER_FACTORY, serviceLister, endpointsLister, null, - null, KubernetesDiscoveryProperties.DEFAULT); + return new KubernetesInformerDiscoveryClient(List.of(SHARED_INFORMER_FACTORY), List.of(serviceLister), + List.of(endpointsLister), null, null, KubernetesDiscoveryProperties.DEFAULT, + Mockito.mock(CoreV1Api.class)); } } diff --git a/spring-cloud-kubernetes-controllers/spring-cloud-kubernetes-discoveryserver/src/test/java/org/springframework/cloud/kubernetes/discoveryserver/DiscoveryServerIntegrationAppsNameEndpointTests.java b/spring-cloud-kubernetes-controllers/spring-cloud-kubernetes-discoveryserver/src/test/java/org/springframework/cloud/kubernetes/discoveryserver/DiscoveryServerIntegrationAppsNameEndpointTests.java index 2059636a99..039b88c049 100644 --- a/spring-cloud-kubernetes-controllers/spring-cloud-kubernetes-discoveryserver/src/test/java/org/springframework/cloud/kubernetes/discoveryserver/DiscoveryServerIntegrationAppsNameEndpointTests.java +++ b/spring-cloud-kubernetes-controllers/spring-cloud-kubernetes-discoveryserver/src/test/java/org/springframework/cloud/kubernetes/discoveryserver/DiscoveryServerIntegrationAppsNameEndpointTests.java @@ -17,10 +17,12 @@ package org.springframework.cloud.kubernetes.discoveryserver; import java.util.HashMap; +import java.util.List; import java.util.Map; import io.kubernetes.client.informer.SharedInformerFactory; import io.kubernetes.client.informer.cache.Lister; +import io.kubernetes.client.openapi.apis.CoreV1Api; import io.kubernetes.client.openapi.models.CoreV1EndpointPort; import io.kubernetes.client.openapi.models.V1EndpointAddress; import io.kubernetes.client.openapi.models.V1EndpointSubset; @@ -124,8 +126,9 @@ private KubernetesInformerDiscoveryClient kubernetesInformerDiscoveryClient() { Lister serviceLister = Util.setupServiceLister(TEST_SERVICE); Lister endpointsLister = Util.setupEndpointsLister(TEST_ENDPOINTS); - return new KubernetesInformerDiscoveryClient(SHARED_INFORMER_FACTORY, serviceLister, endpointsLister, null, - null, KubernetesDiscoveryProperties.DEFAULT); + return new KubernetesInformerDiscoveryClient(List.of(SHARED_INFORMER_FACTORY), List.of(serviceLister), + List.of(endpointsLister), null, null, KubernetesDiscoveryProperties.DEFAULT, + Mockito.mock(CoreV1Api.class)); } } diff --git a/spring-cloud-kubernetes-controllers/spring-cloud-kubernetes-discoveryserver/src/test/java/org/springframework/cloud/kubernetes/discoveryserver/DiscoveryServerIntegrationInstanceEndpointTests.java b/spring-cloud-kubernetes-controllers/spring-cloud-kubernetes-discoveryserver/src/test/java/org/springframework/cloud/kubernetes/discoveryserver/DiscoveryServerIntegrationInstanceEndpointTests.java index 9307510c2f..f8e177c277 100644 --- a/spring-cloud-kubernetes-controllers/spring-cloud-kubernetes-discoveryserver/src/test/java/org/springframework/cloud/kubernetes/discoveryserver/DiscoveryServerIntegrationInstanceEndpointTests.java +++ b/spring-cloud-kubernetes-controllers/spring-cloud-kubernetes-discoveryserver/src/test/java/org/springframework/cloud/kubernetes/discoveryserver/DiscoveryServerIntegrationInstanceEndpointTests.java @@ -17,10 +17,12 @@ package org.springframework.cloud.kubernetes.discoveryserver; import java.util.HashMap; +import java.util.List; import java.util.Map; import io.kubernetes.client.informer.SharedInformerFactory; import io.kubernetes.client.informer.cache.Lister; +import io.kubernetes.client.openapi.apis.CoreV1Api; import io.kubernetes.client.openapi.models.CoreV1EndpointPort; import io.kubernetes.client.openapi.models.V1EndpointAddress; import io.kubernetes.client.openapi.models.V1EndpointSubset; @@ -143,8 +145,9 @@ private KubernetesInformerDiscoveryClient kubernetesInformerDiscoveryClient() { Lister serviceLister = Util.setupServiceLister(TEST_SERVICE); Lister endpointsLister = Util.setupEndpointsLister(TEST_ENDPOINTS); - return new KubernetesInformerDiscoveryClient(SHARED_INFORMER_FACTORY, serviceLister, endpointsLister, null, - null, KubernetesDiscoveryProperties.DEFAULT); + return new KubernetesInformerDiscoveryClient(List.of(SHARED_INFORMER_FACTORY), List.of(serviceLister), + List.of(endpointsLister), null, null, KubernetesDiscoveryProperties.DEFAULT, + Mockito.mock(CoreV1Api.class)); } } From a0f9b2acbe91c4b92dc7503769a2623ffa4c46ba Mon Sep 17 00:00:00 2001 From: wind57 Date: Fri, 29 Aug 2025 16:01:05 +0300 Subject: [PATCH 07/10] drop method Signed-off-by: wind57 --- ...erverIntegrationInstanceEndpointTests.java | 21 ------------------- 1 file changed, 21 deletions(-) diff --git a/spring-cloud-kubernetes-controllers/spring-cloud-kubernetes-discoveryserver/src/test/java/org/springframework/cloud/kubernetes/discoveryserver/DiscoveryServerIntegrationInstanceEndpointTests.java b/spring-cloud-kubernetes-controllers/spring-cloud-kubernetes-discoveryserver/src/test/java/org/springframework/cloud/kubernetes/discoveryserver/DiscoveryServerIntegrationInstanceEndpointTests.java index f8e177c277..d3de3ae0bc 100644 --- a/spring-cloud-kubernetes-controllers/spring-cloud-kubernetes-discoveryserver/src/test/java/org/springframework/cloud/kubernetes/discoveryserver/DiscoveryServerIntegrationInstanceEndpointTests.java +++ b/spring-cloud-kubernetes-controllers/spring-cloud-kubernetes-discoveryserver/src/test/java/org/springframework/cloud/kubernetes/discoveryserver/DiscoveryServerIntegrationInstanceEndpointTests.java @@ -83,27 +83,6 @@ class DiscoveryServerIntegrationInstanceEndpointTests { @Autowired private WebTestClient webTestClient; - @Test - void instanceDeprecated() { - Map metadata = new HashMap<>(); - metadata.put("spring", "true"); - metadata.put("port.http", "8080"); - metadata.put("k8s_namespace", "namespace"); - metadata.put("type", "ClusterIP"); - metadata.put("k8s", "true"); - - DefaultKubernetesServiceInstance kubernetesServiceInstance = new DefaultKubernetesServiceInstance( - TEST_ENDPOINTS.getSubsets().get(0).getAddresses().get(0).getTargetRef().getUid(), - TEST_SERVICE.getMetadata().getName(), TEST_ENDPOINTS.getSubsets().get(0).getAddresses().get(0).getIp(), - TEST_ENDPOINTS.getSubsets().get(0).getPorts().get(0).getPort(), metadata, false, - TEST_SERVICE.getMetadata().getNamespace(), null); - webTestClient.get() - .uri("/app/test-svc-3/uid2") - .exchange() - .expectBody(DefaultKubernetesServiceInstance.class) - .isEqualTo(kubernetesServiceInstance); - } - @Test void instance() { Map metadata = new HashMap<>(); From a5569615143ba1dcc612cebb56ca9170cb2ec9e2 Mon Sep 17 00:00:00 2001 From: wind57 Date: Fri, 29 Aug 2025 18:24:03 +0300 Subject: [PATCH 08/10] more deprecations removal Signed-off-by: wind57 --- ...onditionalOnBlockingOrReactiveEnabled.java | 66 ------- .../KubernetesInformerAutoConfiguration.java | 133 -------------- .../commons/config/PrefixContext.java | 32 ---- ...netesDiscoveryClientAutoConfiguration.java | 121 ------------- .../KubernetesDiscoveryClientProperties.java | 67 ------- .../discovery/KubernetesServiceInstance.java | 167 ------------------ .../cloud/kubernetes/discovery/Service.java | 50 ------ ...ernetesClientServicesFunctionProvider.java | 6 - .../DisabledTestsCondition.java | 55 ------ 9 files changed, 697 deletions(-) delete mode 100644 spring-cloud-kubernetes-client-discovery/src/main/java/org/springframework/cloud/kubernetes/client/discovery/ConditionalOnBlockingOrReactiveEnabled.java delete mode 100644 spring-cloud-kubernetes-client-discovery/src/main/java/org/springframework/cloud/kubernetes/client/discovery/KubernetesInformerAutoConfiguration.java delete mode 100644 spring-cloud-kubernetes-commons/src/main/java/org/springframework/cloud/kubernetes/commons/config/PrefixContext.java delete mode 100644 spring-cloud-kubernetes-discovery/src/main/java/org/springframework/cloud/kubernetes/discovery/KubernetesDiscoveryClientAutoConfiguration.java delete mode 100644 spring-cloud-kubernetes-discovery/src/main/java/org/springframework/cloud/kubernetes/discovery/KubernetesDiscoveryClientProperties.java delete mode 100644 spring-cloud-kubernetes-discovery/src/main/java/org/springframework/cloud/kubernetes/discovery/KubernetesServiceInstance.java delete mode 100644 spring-cloud-kubernetes-discovery/src/main/java/org/springframework/cloud/kubernetes/discovery/Service.java delete mode 100644 spring-cloud-kubernetes-test-support/src/main/java/org/springframework/cloud/kubernetes/tests/commons/junit_extension/DisabledTestsCondition.java diff --git a/spring-cloud-kubernetes-client-discovery/src/main/java/org/springframework/cloud/kubernetes/client/discovery/ConditionalOnBlockingOrReactiveEnabled.java b/spring-cloud-kubernetes-client-discovery/src/main/java/org/springframework/cloud/kubernetes/client/discovery/ConditionalOnBlockingOrReactiveEnabled.java deleted file mode 100644 index 6647f25153..0000000000 --- a/spring-cloud-kubernetes-client-discovery/src/main/java/org/springframework/cloud/kubernetes/client/discovery/ConditionalOnBlockingOrReactiveEnabled.java +++ /dev/null @@ -1,66 +0,0 @@ -/* - * Copyright 2013-present the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.springframework.cloud.kubernetes.client.discovery; - -import java.lang.annotation.Documented; -import java.lang.annotation.ElementType; -import java.lang.annotation.Inherited; -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; -import java.lang.annotation.Target; - -import org.springframework.boot.autoconfigure.condition.AnyNestedCondition; -import org.springframework.cloud.client.ConditionalOnBlockingDiscoveryEnabled; -import org.springframework.cloud.client.ConditionalOnReactiveDiscoveryEnabled; -import org.springframework.cloud.kubernetes.commons.discovery.ConditionalOnBlockingOrReactiveDiscoveryEnabled; -import org.springframework.context.annotation.Conditional; - -/** - * Conditional that is resolved to active when either - * {@link ConditionalOnBlockingDiscoveryEnabled} or - * {@link ConditionalOnReactiveDiscoveryEnabled} matches. - * - * @deprecated in favor of {@link ConditionalOnBlockingOrReactiveDiscoveryEnabled} - * @author wind57 - */ -@Target({ ElementType.TYPE, ElementType.METHOD }) -@Retention(RetentionPolicy.RUNTIME) -@Documented -@Inherited -@Conditional(ConditionalOnBlockingOrReactiveEnabled.OnBlockingOrReactiveEnabled.class) -@Deprecated(forRemoval = true) -public @interface ConditionalOnBlockingOrReactiveEnabled { - - class OnBlockingOrReactiveEnabled extends AnyNestedCondition { - - OnBlockingOrReactiveEnabled() { - super(ConfigurationPhase.REGISTER_BEAN); - } - - @ConditionalOnBlockingDiscoveryEnabled - static class OnBlockingEnabled { - - } - - @ConditionalOnReactiveDiscoveryEnabled - static class OnReactiveEnabled { - - } - - } - -} diff --git a/spring-cloud-kubernetes-client-discovery/src/main/java/org/springframework/cloud/kubernetes/client/discovery/KubernetesInformerAutoConfiguration.java b/spring-cloud-kubernetes-client-discovery/src/main/java/org/springframework/cloud/kubernetes/client/discovery/KubernetesInformerAutoConfiguration.java deleted file mode 100644 index f884d5b74f..0000000000 --- a/spring-cloud-kubernetes-client-discovery/src/main/java/org/springframework/cloud/kubernetes/client/discovery/KubernetesInformerAutoConfiguration.java +++ /dev/null @@ -1,133 +0,0 @@ -/* - * Copyright 2013-present the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.springframework.cloud.kubernetes.client.discovery; - -import io.kubernetes.client.informer.SharedIndexInformer; -import io.kubernetes.client.informer.SharedInformerFactory; -import io.kubernetes.client.informer.cache.Lister; -import io.kubernetes.client.openapi.ApiClient; -import io.kubernetes.client.openapi.models.V1Endpoints; -import io.kubernetes.client.openapi.models.V1EndpointsList; -import io.kubernetes.client.openapi.models.V1Service; -import io.kubernetes.client.openapi.models.V1ServiceList; -import io.kubernetes.client.util.generic.GenericKubernetesApi; -import org.apache.commons.logging.LogFactory; - -import org.springframework.boot.autoconfigure.AutoConfigureAfter; -import org.springframework.boot.autoconfigure.AutoConfigureBefore; -import org.springframework.boot.autoconfigure.condition.ConditionalOnCloudPlatform; -import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; -import org.springframework.boot.cloud.CloudPlatform; -import org.springframework.cloud.client.CommonsClientAutoConfiguration; -import org.springframework.cloud.client.ConditionalOnDiscoveryEnabled; -import org.springframework.cloud.client.discovery.simple.SimpleDiscoveryClientAutoConfiguration; -import org.springframework.cloud.kubernetes.client.KubernetesClientAutoConfiguration; -import org.springframework.cloud.kubernetes.commons.KubernetesNamespaceProvider; -import org.springframework.cloud.kubernetes.commons.discovery.ConditionalOnBlockingOrReactiveDiscoveryEnabled; -import org.springframework.cloud.kubernetes.commons.discovery.ConditionalOnKubernetesDiscoveryEnabled; -import org.springframework.cloud.kubernetes.commons.discovery.KubernetesDiscoveryProperties; -import org.springframework.cloud.kubernetes.commons.discovery.KubernetesDiscoveryPropertiesAutoConfiguration; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Conditional; -import org.springframework.context.annotation.Configuration; -import org.springframework.core.log.LogAccessor; - -import static io.kubernetes.client.util.Namespaces.NAMESPACE_ALL; -import static io.kubernetes.client.util.Namespaces.NAMESPACE_DEFAULT; - -/** - * This configuration is not used by us internally and will be removed in a future - * release. Use it at your own risk. - * - * @author wind57 - */ -@Deprecated(forRemoval = true) -@Configuration(proxyBeanMethods = false) -@ConditionalOnDiscoveryEnabled -@ConditionalOnKubernetesDiscoveryEnabled -@ConditionalOnBlockingOrReactiveDiscoveryEnabled -@ConditionalOnCloudPlatform(CloudPlatform.KUBERNETES) -@Conditional(ConditionalOnSelectiveNamespacesMissing.class) -@AutoConfigureBefore({ SimpleDiscoveryClientAutoConfiguration.class, CommonsClientAutoConfiguration.class }) -@AutoConfigureAfter({ KubernetesClientAutoConfiguration.class, KubernetesDiscoveryPropertiesAutoConfiguration.class }) -public class KubernetesInformerAutoConfiguration { - - private static final LogAccessor LOG = new LogAccessor( - LogFactory.getLog(KubernetesInformerAutoConfiguration.class)); - - @Bean - @ConditionalOnMissingBean - public SharedInformerFactory sharedInformerFactory(ApiClient client) { - return new SharedInformerFactory(client); - } - - @Bean - @ConditionalOnMissingBean(value = V1Service.class, parameterizedContainer = SharedIndexInformer.class) - public SharedIndexInformer servicesSharedIndexInformer(SharedInformerFactory sharedInformerFactory, - ApiClient apiClient, KubernetesNamespaceProvider kubernetesNamespaceProvider, - KubernetesDiscoveryProperties discoveryProperties) { - - GenericKubernetesApi servicesApi = new GenericKubernetesApi<>(V1Service.class, - V1ServiceList.class, "", "v1", "services", apiClient); - - return sharedInformerFactory.sharedIndexInformerFor(servicesApi, V1Service.class, 0L, - namespace(discoveryProperties, kubernetesNamespaceProvider)); - } - - @Bean - @ConditionalOnMissingBean(value = V1Endpoints.class, parameterizedContainer = SharedIndexInformer.class) - public SharedIndexInformer endpointsSharedIndexInformer(SharedInformerFactory sharedInformerFactory, - ApiClient apiClient, KubernetesNamespaceProvider kubernetesNamespaceProvider, - KubernetesDiscoveryProperties discoveryProperties) { - - GenericKubernetesApi servicesApi = new GenericKubernetesApi<>(V1Endpoints.class, - V1EndpointsList.class, "", "v1", "endpoints", apiClient); - - return sharedInformerFactory.sharedIndexInformerFor(servicesApi, V1Endpoints.class, 0L, - namespace(discoveryProperties, kubernetesNamespaceProvider)); - } - - @Bean - @ConditionalOnMissingBean(value = V1Service.class, parameterizedContainer = Lister.class) - public Lister servicesLister(SharedIndexInformer servicesSharedIndexInformer) { - return new Lister<>(servicesSharedIndexInformer.getIndexer()); - } - - @Bean - @ConditionalOnMissingBean(value = V1Endpoints.class, parameterizedContainer = Lister.class) - public Lister endpointsLister(SharedIndexInformer endpointsSharedIndexInformer) { - return new Lister<>(endpointsSharedIndexInformer.getIndexer()); - } - - private String namespace(KubernetesDiscoveryProperties discoveryProperties, - KubernetesNamespaceProvider kubernetesNamespaceProvider) { - String namespace; - if (discoveryProperties.allNamespaces()) { - namespace = NAMESPACE_ALL; - } - else if (kubernetesNamespaceProvider.getNamespace() == null) { - namespace = NAMESPACE_DEFAULT; - } - else { - namespace = kubernetesNamespaceProvider.getNamespace(); - } - - LOG.debug(() -> "serviceSharedInformer will use namespace : " + namespace); - return namespace; - } - -} diff --git a/spring-cloud-kubernetes-commons/src/main/java/org/springframework/cloud/kubernetes/commons/config/PrefixContext.java b/spring-cloud-kubernetes-commons/src/main/java/org/springframework/cloud/kubernetes/commons/config/PrefixContext.java deleted file mode 100644 index 2c11087714..0000000000 --- a/spring-cloud-kubernetes-commons/src/main/java/org/springframework/cloud/kubernetes/commons/config/PrefixContext.java +++ /dev/null @@ -1,32 +0,0 @@ -/* - * Copyright 2013-present the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.springframework.cloud.kubernetes.commons.config; - -import java.util.Map; -import java.util.Set; - -/** - * A holder for data needed to compute prefix based properties, in case of a secret or - * config map. - * - * @author wind57 - * @deprecated will be deleted in a future release. - */ -@Deprecated(forRemoval = true) -public record PrefixContext(Map data, String prefix, String namespace, - Set propertySourceNames) { -} diff --git a/spring-cloud-kubernetes-discovery/src/main/java/org/springframework/cloud/kubernetes/discovery/KubernetesDiscoveryClientAutoConfiguration.java b/spring-cloud-kubernetes-discovery/src/main/java/org/springframework/cloud/kubernetes/discovery/KubernetesDiscoveryClientAutoConfiguration.java deleted file mode 100644 index e807bbc86f..0000000000 --- a/spring-cloud-kubernetes-discovery/src/main/java/org/springframework/cloud/kubernetes/discovery/KubernetesDiscoveryClientAutoConfiguration.java +++ /dev/null @@ -1,121 +0,0 @@ -/* - * Copyright 2013-present the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.springframework.cloud.kubernetes.discovery; - -import org.springframework.beans.factory.InitializingBean; -import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; -import org.springframework.boot.autoconfigure.condition.ConditionalOnCloudPlatform; -import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; -import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingClass; -import org.springframework.boot.cloud.CloudPlatform; -import org.springframework.boot.context.properties.EnableConfigurationProperties; -import org.springframework.boot.health.contributor.HealthIndicator; -import org.springframework.boot.restclient.RestTemplateBuilder; -import org.springframework.cloud.client.ConditionalOnDiscoveryEnabled; -import org.springframework.cloud.client.ConditionalOnDiscoveryHealthIndicatorEnabled; -import org.springframework.cloud.client.ConditionalOnReactiveDiscoveryEnabled; -import org.springframework.cloud.client.discovery.DiscoveryClient; -import org.springframework.cloud.client.discovery.ReactiveDiscoveryClient; -import org.springframework.cloud.client.discovery.event.InstanceRegisteredEvent; -import org.springframework.cloud.client.discovery.health.DiscoveryClientHealthIndicatorProperties; -import org.springframework.cloud.client.discovery.health.reactive.ReactiveDiscoveryClientHealthIndicator; -import org.springframework.cloud.kubernetes.commons.discovery.ConditionalOnKubernetesDiscoveryEnabled; -import org.springframework.context.ApplicationContext; -import org.springframework.context.ApplicationEventPublisher; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import org.springframework.web.client.RestTemplate; -import org.springframework.web.reactive.function.client.WebClient; - -/** - * @author Ryan Baxter - * @deprecated in favor of {@link KubernetesDiscoveryClientBlockingAutoConfiguration} and - * {@link KubernetesDiscoveryClientReactiveAutoConfiguration} - */ -@Configuration(proxyBeanMethods = false) -@ConditionalOnDiscoveryEnabled -@ConditionalOnCloudPlatform(CloudPlatform.KUBERNETES) -@ConditionalOnKubernetesDiscoveryEnabled -@EnableConfigurationProperties({ DiscoveryClientHealthIndicatorProperties.class, - KubernetesDiscoveryClientProperties.class }) -@Deprecated(forRemoval = true) -public class KubernetesDiscoveryClientAutoConfiguration { - - @Configuration(proxyBeanMethods = false) - public static class Servlet { - - @Bean - @ConditionalOnMissingClass("org.springframework.web.reactive.function.client.WebClient") - @ConditionalOnMissingBean(RestTemplate.class) - public RestTemplate restTemplate() { - return new RestTemplateBuilder().build(); - } - - @Bean - @ConditionalOnMissingClass("org.springframework.web.reactive.function.client.WebClient") - public DiscoveryClient kubernetesDiscoveryClient(RestTemplate restTemplate, - KubernetesDiscoveryClientProperties properties) { - return new KubernetesDiscoveryClient(restTemplate, properties); - } - - @Bean - @ConditionalOnClass({ HealthIndicator.class }) - @ConditionalOnDiscoveryHealthIndicatorEnabled - public InitializingBean indicatorInitializer(ApplicationEventPublisher applicationEventPublisher, - ApplicationContext applicationContext) { - return () -> applicationEventPublisher - .publishEvent(new InstanceRegisteredEvent<>(applicationContext.getId(), null)); - - } - - } - - @Configuration(proxyBeanMethods = false) - @ConditionalOnReactiveDiscoveryEnabled - public static class Reactive { - - @Bean - @ConditionalOnClass(name = { "org.springframework.web.reactive.function.client.WebClient" }) - @ConditionalOnMissingBean(WebClient.Builder.class) - public WebClient.Builder webClientBuilder() { - return WebClient.builder(); - } - - @Bean - @ConditionalOnClass(name = { "org.springframework.web.reactive.function.client.WebClient" }) - public ReactiveDiscoveryClient kubernetesReactiveDiscoveryClient(WebClient.Builder webClientBuilder, - KubernetesDiscoveryClientProperties properties) { - return new KubernetesReactiveDiscoveryClient(webClientBuilder, properties); - } - - @Bean - @ConditionalOnClass(name = { "org.springframework.boot.health.contributor.ReactiveHealthIndicator", - "org.springframework.boot.actuate.health.HealthEndpoint" }) - @ConditionalOnDiscoveryHealthIndicatorEnabled - public ReactiveDiscoveryClientHealthIndicator kubernetesReactiveDiscoveryClientHealthIndicator( - KubernetesReactiveDiscoveryClient client, DiscoveryClientHealthIndicatorProperties properties, - ApplicationContext applicationContext) { - ReactiveDiscoveryClientHealthIndicator healthIndicator = new ReactiveDiscoveryClientHealthIndicator(client, - properties); - InstanceRegisteredEvent event = new InstanceRegisteredEvent(applicationContext.getId(), null); - healthIndicator.onApplicationEvent(event); - return healthIndicator; - } - - } - -} diff --git a/spring-cloud-kubernetes-discovery/src/main/java/org/springframework/cloud/kubernetes/discovery/KubernetesDiscoveryClientProperties.java b/spring-cloud-kubernetes-discovery/src/main/java/org/springframework/cloud/kubernetes/discovery/KubernetesDiscoveryClientProperties.java deleted file mode 100644 index de65cc8aaf..0000000000 --- a/spring-cloud-kubernetes-discovery/src/main/java/org/springframework/cloud/kubernetes/discovery/KubernetesDiscoveryClientProperties.java +++ /dev/null @@ -1,67 +0,0 @@ -/* - * Copyright 2013-present the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.springframework.cloud.kubernetes.discovery; - -import java.util.Set; - -import org.springframework.boot.context.properties.ConfigurationProperties; - -/** - * @author Ryan Baxter - * @deprecated use - * {@link org.springframework.cloud.kubernetes.commons.discovery.KubernetesDiscoveryProperties} - * instead. - */ -@Deprecated(forRemoval = true) -@ConfigurationProperties("spring.cloud.kubernetes.discovery") -public class KubernetesDiscoveryClientProperties { - - private String discoveryServerUrl; - - private boolean enabled = true; - - /** - * If set then only the services and endpoints matching these namespaces will be - * fetched from the Kubernetes API server. - */ - private Set namespaces = Set.of(); - - public String getDiscoveryServerUrl() { - return discoveryServerUrl; - } - - public void setDiscoveryServerUrl(String discoveryServerUrl) { - this.discoveryServerUrl = discoveryServerUrl; - } - - public boolean isEnabled() { - return enabled; - } - - public void setEnabled(boolean enabled) { - this.enabled = enabled; - } - - Set getNamespaces() { - return namespaces; - } - - void setNamespaces(Set namespaces) { - this.namespaces = namespaces; - } - -} diff --git a/spring-cloud-kubernetes-discovery/src/main/java/org/springframework/cloud/kubernetes/discovery/KubernetesServiceInstance.java b/spring-cloud-kubernetes-discovery/src/main/java/org/springframework/cloud/kubernetes/discovery/KubernetesServiceInstance.java deleted file mode 100644 index 767873e6cd..0000000000 --- a/spring-cloud-kubernetes-discovery/src/main/java/org/springframework/cloud/kubernetes/discovery/KubernetesServiceInstance.java +++ /dev/null @@ -1,167 +0,0 @@ -/* - * Copyright 2013-present the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.springframework.cloud.kubernetes.discovery; - -import java.net.URI; -import java.util.Map; -import java.util.Objects; - -import org.springframework.cloud.client.ServiceInstance; - -/** - * @author Ryan Baxter - */ -@Deprecated(forRemoval = true) -public class KubernetesServiceInstance implements ServiceInstance { - - private String instanceId; - - private String serviceId; - - private String host; - - private int port; - - private boolean secure; - - private URI uri; - - private Map metadata; - - private String scheme; - - private String namespace; - - public KubernetesServiceInstance() { - } - - public KubernetesServiceInstance(String instanceId, String serviceId, String host, int port, boolean secure, - URI uri, Map metadata, String scheme, String namespace) { - this.instanceId = instanceId; - this.serviceId = serviceId; - this.host = host; - this.port = port; - this.secure = secure; - this.uri = uri; - this.metadata = metadata; - this.scheme = scheme; - this.namespace = namespace; - } - - @Override - public String getInstanceId() { - return instanceId; - } - - @Override - public String getServiceId() { - return serviceId; - } - - @Override - public String getHost() { - return host; - } - - @Override - public int getPort() { - return port; - } - - @Override - public boolean isSecure() { - return secure; - } - - @Override - public URI getUri() { - return uri; - } - - @Override - public Map getMetadata() { - return metadata; - } - - public void setInstanceId(String instanceId) { - this.instanceId = instanceId; - } - - public void setServiceId(String serviceId) { - this.serviceId = serviceId; - } - - public void setHost(String host) { - this.host = host; - } - - public void setPort(int port) { - this.port = port; - } - - public void setSecure(boolean secure) { - this.secure = secure; - } - - public void setUri(URI uri) { - this.uri = uri; - } - - public void setMetadata(Map metadata) { - this.metadata = metadata; - } - - public void setScheme(String scheme) { - this.scheme = scheme; - } - - public String getNamespace() { - return namespace; - } - - public void setNamespace(String namespace) { - this.namespace = namespace; - } - - @Override - public String getScheme() { - return scheme; - } - - @Override - public boolean equals(Object o) { - if (this == o) { - return true; - } - if (o == null || getClass() != o.getClass()) { - return false; - } - KubernetesServiceInstance that = (KubernetesServiceInstance) o; - return getPort() == that.getPort() && isSecure() == that.isSecure() - && Objects.equals(getInstanceId(), that.getInstanceId()) - && Objects.equals(getServiceId(), that.getServiceId()) && Objects.equals(getHost(), that.getHost()) - && Objects.equals(getUri(), that.getUri()) && Objects.equals(getMetadata(), that.getMetadata()) - && Objects.equals(getScheme(), that.getScheme()) && Objects.equals(getNamespace(), that.getNamespace()); - } - - @Override - public int hashCode() { - return Objects.hash(getInstanceId(), getServiceId(), getHost(), getPort(), isSecure(), getUri(), getMetadata(), - getScheme(), getNamespace()); - } - -} diff --git a/spring-cloud-kubernetes-discovery/src/main/java/org/springframework/cloud/kubernetes/discovery/Service.java b/spring-cloud-kubernetes-discovery/src/main/java/org/springframework/cloud/kubernetes/discovery/Service.java deleted file mode 100644 index d5edeb0731..0000000000 --- a/spring-cloud-kubernetes-discovery/src/main/java/org/springframework/cloud/kubernetes/discovery/Service.java +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Copyright 2013-present the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.springframework.cloud.kubernetes.discovery; - -import java.util.List; - -/** - * @author Ryan Baxter - */ -@Deprecated(forRemoval = true) -public class Service { - - private String name; - - private List serviceInstances = List.of(); - - public Service() { - } - - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } - - public List getServiceInstances() { - return serviceInstances; - } - - public void setServiceInstances(List serviceInstances) { - this.serviceInstances = serviceInstances; - } - -} diff --git a/spring-cloud-kubernetes-fabric8-discovery/src/main/java/org/springframework/cloud/kubernetes/fabric8/discovery/KubernetesClientServicesFunctionProvider.java b/spring-cloud-kubernetes-fabric8-discovery/src/main/java/org/springframework/cloud/kubernetes/fabric8/discovery/KubernetesClientServicesFunctionProvider.java index fd47772997..c38799232b 100644 --- a/spring-cloud-kubernetes-fabric8-discovery/src/main/java/org/springframework/cloud/kubernetes/fabric8/discovery/KubernetesClientServicesFunctionProvider.java +++ b/spring-cloud-kubernetes-fabric8-discovery/src/main/java/org/springframework/cloud/kubernetes/fabric8/discovery/KubernetesClientServicesFunctionProvider.java @@ -46,12 +46,6 @@ public static KubernetesClientServicesFunction servicesFunction(KubernetesDiscov } - @Deprecated(forRemoval = true) - public static KubernetesClientServicesFunction servicesFunction(KubernetesDiscoveryProperties properties, - Binder binder, BindHandler bindHandler) { - return servicesFunction(properties, new KubernetesNamespaceProvider(binder, bindHandler)); - } - public static KubernetesClientServicesFunction servicesFunction(KubernetesDiscoveryProperties properties, KubernetesNamespaceProvider namespaceProvider) { diff --git a/spring-cloud-kubernetes-test-support/src/main/java/org/springframework/cloud/kubernetes/tests/commons/junit_extension/DisabledTestsCondition.java b/spring-cloud-kubernetes-test-support/src/main/java/org/springframework/cloud/kubernetes/tests/commons/junit_extension/DisabledTestsCondition.java deleted file mode 100644 index 50b119c23d..0000000000 --- a/spring-cloud-kubernetes-test-support/src/main/java/org/springframework/cloud/kubernetes/tests/commons/junit_extension/DisabledTestsCondition.java +++ /dev/null @@ -1,55 +0,0 @@ -/* - * Copyright 2013-present the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.springframework.cloud.kubernetes.tests.commons.junit_extension; - -import org.junit.jupiter.api.extension.ConditionEvaluationResult; -import org.junit.jupiter.api.extension.ExecutionCondition; -import org.junit.jupiter.api.extension.ExtensionContext; - -/** - * This is mainly needed for our pipeline, to get the test classes names. Its purpose is - * to act like a 'dry-run': show all the tests fully qualified names without actually - * running them. - * - * The way to use it: "mvn clean test -Dspring.cloud.k8s.skip.tests=true". This way all - * tests will be skipped, but also will be printed to the standard output as a fully - * qualified name, i.e.: - * - *
- *     spring.cloud.k8s.test.to.run -> org.springframework.cloud.kubernetes.Fabric8InsideHealthIndicatorTest
- * 
- * - * @author wind57 - */ -@Deprecated -public class DisabledTestsCondition implements ExecutionCondition { - - private static final boolean SKIP_RUNNING_TESTS = "true".equals(System.getProperty("spring.cloud.k8s.skip.tests")); - - @Override - public ConditionEvaluationResult evaluateExecutionCondition(ExtensionContext extensionContext) { - if (SKIP_RUNNING_TESTS) { - System.out.println( - "\nspring.cloud.k8s.test.to.run -> " + extensionContext.getRequiredTestClass().getName() + " \n"); - return ConditionEvaluationResult.disabled(""); - } - else { - return ConditionEvaluationResult.enabled(""); - } - } - -} From 82983c30cbe2b453b76977561fdca2aee778cdd1 Mon Sep 17 00:00:00 2001 From: wind57 Date: Fri, 29 Aug 2025 18:27:54 +0300 Subject: [PATCH 09/10] checkstyle Signed-off-by: wind57 --- .../discovery/KubernetesClientServicesFunctionProvider.java | 2 -- 1 file changed, 2 deletions(-) diff --git a/spring-cloud-kubernetes-fabric8-discovery/src/main/java/org/springframework/cloud/kubernetes/fabric8/discovery/KubernetesClientServicesFunctionProvider.java b/spring-cloud-kubernetes-fabric8-discovery/src/main/java/org/springframework/cloud/kubernetes/fabric8/discovery/KubernetesClientServicesFunctionProvider.java index c38799232b..ffb0a64677 100644 --- a/spring-cloud-kubernetes-fabric8-discovery/src/main/java/org/springframework/cloud/kubernetes/fabric8/discovery/KubernetesClientServicesFunctionProvider.java +++ b/spring-cloud-kubernetes-fabric8-discovery/src/main/java/org/springframework/cloud/kubernetes/fabric8/discovery/KubernetesClientServicesFunctionProvider.java @@ -16,8 +16,6 @@ package org.springframework.cloud.kubernetes.fabric8.discovery; -import org.springframework.boot.context.properties.bind.BindHandler; -import org.springframework.boot.context.properties.bind.Binder; import org.springframework.cloud.kubernetes.commons.KubernetesNamespaceProvider; import org.springframework.cloud.kubernetes.commons.discovery.KubernetesDiscoveryProperties; import org.springframework.cloud.kubernetes.fabric8.Fabric8Utils; From 31b10ccec51e73c72ffa1870b01aa2ad76aa935f Mon Sep 17 00:00:00 2001 From: wind57 Date: Fri, 29 Aug 2025 18:58:14 +0300 Subject: [PATCH 10/10] non-public method Signed-off-by: wind57 --- .../config/reload/ConfigReloadUtil.java | 2 +- ...BasedConfigurationChangeDetectorTests.java | 80 ------------------- 2 files changed, 1 insertion(+), 81 deletions(-) delete mode 100644 spring-cloud-kubernetes-fabric8-config/src/test/java/org/springframework/cloud/kubernetes/fabric8/config/EventBasedConfigurationChangeDetectorTests.java diff --git a/spring-cloud-kubernetes-commons/src/main/java/org/springframework/cloud/kubernetes/commons/config/reload/ConfigReloadUtil.java b/spring-cloud-kubernetes-commons/src/main/java/org/springframework/cloud/kubernetes/commons/config/reload/ConfigReloadUtil.java index d5c9d7d4b8..bd4167d129 100644 --- a/spring-cloud-kubernetes-commons/src/main/java/org/springframework/cloud/kubernetes/commons/config/reload/ConfigReloadUtil.java +++ b/spring-cloud-kubernetes-commons/src/main/java/org/springframework/cloud/kubernetes/commons/config/reload/ConfigReloadUtil.java @@ -88,7 +88,7 @@ public static boolean reload(PropertySourceLocator locator, ConfigurableEnvironm * @return finds all registered property sources of the given type */ @SuppressWarnings("unchecked") - public static > List findPropertySources(Class sourceClass, + static > List findPropertySources(Class sourceClass, ConfigurableEnvironment environment) { List managedSources = new ArrayList<>(); diff --git a/spring-cloud-kubernetes-fabric8-config/src/test/java/org/springframework/cloud/kubernetes/fabric8/config/EventBasedConfigurationChangeDetectorTests.java b/spring-cloud-kubernetes-fabric8-config/src/test/java/org/springframework/cloud/kubernetes/fabric8/config/EventBasedConfigurationChangeDetectorTests.java deleted file mode 100644 index f7bdedb2a0..0000000000 --- a/spring-cloud-kubernetes-fabric8-config/src/test/java/org/springframework/cloud/kubernetes/fabric8/config/EventBasedConfigurationChangeDetectorTests.java +++ /dev/null @@ -1,80 +0,0 @@ -/* - * Copyright 2013-present the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.springframework.cloud.kubernetes.fabric8.config; - -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import io.fabric8.kubernetes.api.model.ConfigMap; -import io.fabric8.kubernetes.api.model.ConfigMapList; -import io.fabric8.kubernetes.api.model.ConfigMapListBuilder; -import io.fabric8.kubernetes.api.model.ObjectMetaBuilder; -import io.fabric8.kubernetes.client.KubernetesClient; -import io.fabric8.kubernetes.client.dsl.MixedOperation; -import io.fabric8.kubernetes.client.dsl.NonNamespaceOperation; -import io.fabric8.kubernetes.client.dsl.Resource; -import org.junit.jupiter.api.Test; - -import org.springframework.cloud.bootstrap.config.BootstrapPropertySource; -import org.springframework.cloud.kubernetes.commons.config.NamedConfigMapNormalizedSource; -import org.springframework.cloud.kubernetes.commons.config.NormalizedSource; -import org.springframework.cloud.kubernetes.commons.config.reload.ConfigReloadUtil; -import org.springframework.mock.env.MockEnvironment; - -import static org.assertj.core.api.Assertions.assertThat; -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.when; - -/** - * @author Ryan Baxter - */ -class EventBasedConfigurationChangeDetectorTests { - - @SuppressWarnings({ "unchecked", "rawtypes" }) - @Test - void verifyConfigChangesAccountsForBootstrapPropertySources() { - MockEnvironment env = new MockEnvironment(); - KubernetesClient k8sClient = mock(KubernetesClient.class); - ConfigMap configMap = new ConfigMap(); - configMap.setMetadata(new ObjectMetaBuilder().withName("myconfigmap").build()); - Map data = new HashMap<>(); - data.put("foo", "bar"); - configMap.setData(data); - MixedOperation> mixedOperation = mock(MixedOperation.class); - when(k8sClient.configMaps()).thenReturn(mixedOperation); - NonNamespaceOperation nonNamespaceOperation = mock(NonNamespaceOperation.class); - when(mixedOperation.inNamespace("default")).thenReturn(nonNamespaceOperation); - when(nonNamespaceOperation.list()).thenReturn(new ConfigMapListBuilder().addToItems(configMap).build()); - - Resource resource = mock(Resource.class); - - when(resource.get()).thenReturn(configMap); - when(k8sClient.getNamespace()).thenReturn("default"); - - NormalizedSource source = new NamedConfigMapNormalizedSource("myconfigmap", "default", true, false); - Fabric8ConfigContext context = new Fabric8ConfigContext(k8sClient, source, "default", env); - Fabric8ConfigMapPropertySource fabric8ConfigMapPropertySource = new Fabric8ConfigMapPropertySource(context); - env.getPropertySources().addFirst(new BootstrapPropertySource<>(fabric8ConfigMapPropertySource)); - - List sources = ConfigReloadUtil - .findPropertySources(Fabric8ConfigMapPropertySource.class, env); - assertThat(sources.size()).isEqualTo(1); - assertThat(sources.get(0).getProperty("foo")).isEqualTo("bar"); - } - -}