From e72d553c743a75b5f931967c83cb62052a169ebb Mon Sep 17 00:00:00 2001 From: wind57 Date: Tue, 7 Oct 2025 19:20:18 +0300 Subject: [PATCH 1/2] fabric8 autoconfig tighther Signed-off-by: wind57 --- .../fabric8/Fabric8ActuatorConfiguration.java | 6 ++--- .../fabric8/Fabric8AutoConfiguration.java | 24 +++++++++---------- .../fabric8/Fabric8HealthIndicator.java | 4 ++-- .../fabric8/Fabric8InfoContributor.java | 4 ++-- .../kubernetes/fabric8/Fabric8PodUtils.java | 16 +++---------- ...abric8ProfileEnvironmentPostProcessor.java | 7 +++--- .../kubernetes/fabric8/Fabric8Utils.java | 6 ++--- .../main/resources/META-INF/spring.factories | 2 +- .../Fabric8AutoConfigurationTests.java | 8 ++----- ...abric8ClientUserAgentEnvPropertyTests.java | 3 +-- .../Fabric8HealthIndicatorDisabledTest.java | 5 ++-- .../Fabric8InsideHealthIndicatorTest.java | 6 ++--- .../Fabric8InsideInfoContributorTest.java | 6 ++--- .../Fabric8NotInsideHealthIndicatorTest.java | 5 ++-- .../Fabric8NotInsideInfoContributorTest.java | 5 ++-- .../{ => fabric8}/Fabric8PodUtilsTest.java | 11 +++------ ...8ProfileEnvironmentPostProcessorTests.java | 7 +++--- ...ic8UserAgentDefaultConfigurationTests.java | 3 +-- ...UserAgentPropertiesConfigurationTests.java | 3 +-- .../App.java => fabric8/TestApp.java} | 4 ++-- 20 files changed, 52 insertions(+), 83 deletions(-) rename spring-cloud-kubernetes-fabric8-autoconfig/src/main/java/org/springframework/cloud/kubernetes/fabric8/{profile => }/Fabric8ProfileEnvironmentPostProcessor.java (78%) rename spring-cloud-kubernetes-fabric8-autoconfig/src/test/java/org/springframework/cloud/kubernetes/{ => fabric8}/Fabric8AutoConfigurationTests.java (90%) rename spring-cloud-kubernetes-fabric8-autoconfig/src/test/java/org/springframework/cloud/kubernetes/{ => fabric8}/Fabric8HealthIndicatorDisabledTest.java (94%) rename spring-cloud-kubernetes-fabric8-autoconfig/src/test/java/org/springframework/cloud/kubernetes/{ => fabric8}/Fabric8InsideHealthIndicatorTest.java (95%) rename spring-cloud-kubernetes-fabric8-autoconfig/src/test/java/org/springframework/cloud/kubernetes/{ => fabric8}/Fabric8InsideInfoContributorTest.java (94%) rename spring-cloud-kubernetes-fabric8-autoconfig/src/test/java/org/springframework/cloud/kubernetes/{ => fabric8}/Fabric8NotInsideHealthIndicatorTest.java (95%) rename spring-cloud-kubernetes-fabric8-autoconfig/src/test/java/org/springframework/cloud/kubernetes/{ => fabric8}/Fabric8NotInsideInfoContributorTest.java (93%) rename spring-cloud-kubernetes-fabric8-autoconfig/src/test/java/org/springframework/cloud/kubernetes/{ => fabric8}/Fabric8PodUtilsTest.java (92%) rename spring-cloud-kubernetes-fabric8-autoconfig/src/test/java/org/springframework/cloud/kubernetes/fabric8/{profile => }/Fabric8ProfileEnvironmentPostProcessorTests.java (91%) rename spring-cloud-kubernetes-fabric8-autoconfig/src/test/java/org/springframework/cloud/kubernetes/{example/App.java => fabric8/TestApp.java} (90%) diff --git a/spring-cloud-kubernetes-fabric8-autoconfig/src/main/java/org/springframework/cloud/kubernetes/fabric8/Fabric8ActuatorConfiguration.java b/spring-cloud-kubernetes-fabric8-autoconfig/src/main/java/org/springframework/cloud/kubernetes/fabric8/Fabric8ActuatorConfiguration.java index 48360284c5..2b1db0b66a 100644 --- a/spring-cloud-kubernetes-fabric8-autoconfig/src/main/java/org/springframework/cloud/kubernetes/fabric8/Fabric8ActuatorConfiguration.java +++ b/spring-cloud-kubernetes-fabric8-autoconfig/src/main/java/org/springframework/cloud/kubernetes/fabric8/Fabric8ActuatorConfiguration.java @@ -30,17 +30,17 @@ */ @Configuration(proxyBeanMethods = false) @ConditionalOnKubernetesHealthIndicatorEnabled -public class Fabric8ActuatorConfiguration { +final class Fabric8ActuatorConfiguration { @Bean @ConditionalOnEnabledHealthIndicator("kubernetes") - public Fabric8HealthIndicator kubernetesHealthIndicator(PodUtils podUtils) { + Fabric8HealthIndicator kubernetesHealthIndicator(PodUtils podUtils) { return new Fabric8HealthIndicator(podUtils); } @Bean @ConditionalOnEnabledInfoContributor("kubernetes") - public Fabric8InfoContributor kubernetesInfoContributor(PodUtils podUtils) { + Fabric8InfoContributor kubernetesInfoContributor(PodUtils podUtils) { return new Fabric8InfoContributor(podUtils); } diff --git a/spring-cloud-kubernetes-fabric8-autoconfig/src/main/java/org/springframework/cloud/kubernetes/fabric8/Fabric8AutoConfiguration.java b/spring-cloud-kubernetes-fabric8-autoconfig/src/main/java/org/springframework/cloud/kubernetes/fabric8/Fabric8AutoConfiguration.java index c366486815..34c7b039a3 100644 --- a/spring-cloud-kubernetes-fabric8-autoconfig/src/main/java/org/springframework/cloud/kubernetes/fabric8/Fabric8AutoConfiguration.java +++ b/spring-cloud-kubernetes-fabric8-autoconfig/src/main/java/org/springframework/cloud/kubernetes/fabric8/Fabric8AutoConfiguration.java @@ -42,19 +42,11 @@ @Configuration(proxyBeanMethods = false) @ConditionalOnCloudPlatform(CloudPlatform.KUBERNETES) @AutoConfigureAfter(KubernetesCommonsAutoConfiguration.class) -public class Fabric8AutoConfiguration { - - private static D or(D left, D right) { - return left != null ? left : right; - } - - private static Integer orDurationInt(Duration left, Integer right) { - return left != null ? (int) left.toMillis() : right; - } +final class Fabric8AutoConfiguration { @Bean @ConditionalOnMissingBean(Config.class) - public Config kubernetesClientConfig(KubernetesClientProperties kubernetesClientProperties) { + Config kubernetesClientConfig(KubernetesClientProperties kubernetesClientProperties) { Config base = Config.autoConfigure(null); ConfigBuilder builder = new ConfigBuilder(base) // Only set values that have been explicitly specified @@ -103,14 +95,22 @@ public Config kubernetesClientConfig(KubernetesClientProperties kubernetesClient @Bean @ConditionalOnMissingBean - public KubernetesClient kubernetesClient(Config config) { + KubernetesClient kubernetesClient(Config config) { return new KubernetesClientBuilder().withConfig(config).build(); } @Bean @ConditionalOnMissingBean - public Fabric8PodUtils kubernetesPodUtils(KubernetesClient client) { + Fabric8PodUtils kubernetesPodUtils(KubernetesClient client) { return new Fabric8PodUtils(client); } + private static D or(D left, D right) { + return left != null ? left : right; + } + + private static Integer orDurationInt(Duration left, Integer right) { + return left != null ? (int) left.toMillis() : right; + } + } diff --git a/spring-cloud-kubernetes-fabric8-autoconfig/src/main/java/org/springframework/cloud/kubernetes/fabric8/Fabric8HealthIndicator.java b/spring-cloud-kubernetes-fabric8-autoconfig/src/main/java/org/springframework/cloud/kubernetes/fabric8/Fabric8HealthIndicator.java index 74d88cc40b..0a2142887b 100644 --- a/spring-cloud-kubernetes-fabric8-autoconfig/src/main/java/org/springframework/cloud/kubernetes/fabric8/Fabric8HealthIndicator.java +++ b/spring-cloud-kubernetes-fabric8-autoconfig/src/main/java/org/springframework/cloud/kubernetes/fabric8/Fabric8HealthIndicator.java @@ -35,11 +35,11 @@ * @author Ioannis Canellos * @author EddĂș MelĂ©ndez */ -public class Fabric8HealthIndicator extends AbstractKubernetesHealthIndicator { +final class Fabric8HealthIndicator extends AbstractKubernetesHealthIndicator { private final PodUtils utils; - public Fabric8HealthIndicator(PodUtils utils) { + Fabric8HealthIndicator(PodUtils utils) { this.utils = utils; } diff --git a/spring-cloud-kubernetes-fabric8-autoconfig/src/main/java/org/springframework/cloud/kubernetes/fabric8/Fabric8InfoContributor.java b/spring-cloud-kubernetes-fabric8-autoconfig/src/main/java/org/springframework/cloud/kubernetes/fabric8/Fabric8InfoContributor.java index f77caee2f8..d7f2950fc6 100644 --- a/spring-cloud-kubernetes-fabric8-autoconfig/src/main/java/org/springframework/cloud/kubernetes/fabric8/Fabric8InfoContributor.java +++ b/spring-cloud-kubernetes-fabric8-autoconfig/src/main/java/org/springframework/cloud/kubernetes/fabric8/Fabric8InfoContributor.java @@ -34,11 +34,11 @@ * * @author Mark Anderson */ -public class Fabric8InfoContributor extends AbstractKubernetesInfoContributor { +final class Fabric8InfoContributor extends AbstractKubernetesInfoContributor { private final PodUtils utils; - public Fabric8InfoContributor(PodUtils utils) { + Fabric8InfoContributor(PodUtils utils) { this.utils = utils; } diff --git a/spring-cloud-kubernetes-fabric8-autoconfig/src/main/java/org/springframework/cloud/kubernetes/fabric8/Fabric8PodUtils.java b/spring-cloud-kubernetes-fabric8-autoconfig/src/main/java/org/springframework/cloud/kubernetes/fabric8/Fabric8PodUtils.java index d0c364bf11..1a0b207d39 100644 --- a/spring-cloud-kubernetes-fabric8-autoconfig/src/main/java/org/springframework/cloud/kubernetes/fabric8/Fabric8PodUtils.java +++ b/spring-cloud-kubernetes-fabric8-autoconfig/src/main/java/org/springframework/cloud/kubernetes/fabric8/Fabric8PodUtils.java @@ -35,17 +35,7 @@ * * @author Ioannis Canellos */ -public class Fabric8PodUtils implements PodUtils { - - /** - * HOSTNAME environment variable name. - */ - public static final String HOSTNAME = "HOSTNAME"; - - /** - * KUBERNETES_SERVICE_HOST environment variable name. - */ - public static final String KUBERNETES_SERVICE_HOST = "KUBERNETES_SERVICE_HOST"; +final class Fabric8PodUtils implements PodUtils { private static final Log LOG = LogFactory.getLog(Fabric8PodUtils.class); @@ -63,8 +53,8 @@ public Fabric8PodUtils(KubernetesClient client) { } this.client = client; - this.hostName = EnvReader.getEnv(HOSTNAME); - this.serviceHost = EnvReader.getEnv(KUBERNETES_SERVICE_HOST); + this.hostName = EnvReader.getEnv("HOSTNAME"); + this.serviceHost = EnvReader.getEnv("KUBERNETES_SERVICE_HOST"); this.current = LazilyInstantiate.using(this::internalGetPod); } diff --git a/spring-cloud-kubernetes-fabric8-autoconfig/src/main/java/org/springframework/cloud/kubernetes/fabric8/profile/Fabric8ProfileEnvironmentPostProcessor.java b/spring-cloud-kubernetes-fabric8-autoconfig/src/main/java/org/springframework/cloud/kubernetes/fabric8/Fabric8ProfileEnvironmentPostProcessor.java similarity index 78% rename from spring-cloud-kubernetes-fabric8-autoconfig/src/main/java/org/springframework/cloud/kubernetes/fabric8/profile/Fabric8ProfileEnvironmentPostProcessor.java rename to spring-cloud-kubernetes-fabric8-autoconfig/src/main/java/org/springframework/cloud/kubernetes/fabric8/Fabric8ProfileEnvironmentPostProcessor.java index 6b13bb252f..9f46df1af1 100644 --- a/spring-cloud-kubernetes-fabric8-autoconfig/src/main/java/org/springframework/cloud/kubernetes/fabric8/profile/Fabric8ProfileEnvironmentPostProcessor.java +++ b/spring-cloud-kubernetes-fabric8-autoconfig/src/main/java/org/springframework/cloud/kubernetes/fabric8/Fabric8ProfileEnvironmentPostProcessor.java @@ -14,23 +14,22 @@ * limitations under the License. */ -package org.springframework.cloud.kubernetes.fabric8.profile; +package org.springframework.cloud.kubernetes.fabric8; import io.fabric8.kubernetes.client.KubernetesClient; import io.fabric8.kubernetes.client.KubernetesClientBuilder; import org.springframework.cloud.kubernetes.commons.profile.AbstractKubernetesProfileEnvironmentPostProcessor; -import org.springframework.cloud.kubernetes.fabric8.Fabric8PodUtils; import org.springframework.core.env.Environment; -public class Fabric8ProfileEnvironmentPostProcessor extends AbstractKubernetesProfileEnvironmentPostProcessor { +final class Fabric8ProfileEnvironmentPostProcessor extends AbstractKubernetesProfileEnvironmentPostProcessor { @Override protected boolean isInsideKubernetes(Environment environment) { try (KubernetesClient client = new KubernetesClientBuilder().build()) { Fabric8PodUtils podUtils = new Fabric8PodUtils(client); - return environment.containsProperty(Fabric8PodUtils.KUBERNETES_SERVICE_HOST) + return environment.containsProperty("KUBERNETES_SERVICE_HOST") || podUtils.isInsideKubernetes(); } } diff --git a/spring-cloud-kubernetes-fabric8-autoconfig/src/main/java/org/springframework/cloud/kubernetes/fabric8/Fabric8Utils.java b/spring-cloud-kubernetes-fabric8-autoconfig/src/main/java/org/springframework/cloud/kubernetes/fabric8/Fabric8Utils.java index c9550a9e63..8c0ef32e33 100644 --- a/spring-cloud-kubernetes-fabric8-autoconfig/src/main/java/org/springframework/cloud/kubernetes/fabric8/Fabric8Utils.java +++ b/spring-cloud-kubernetes-fabric8-autoconfig/src/main/java/org/springframework/cloud/kubernetes/fabric8/Fabric8Utils.java @@ -37,6 +37,8 @@ */ public final class Fabric8Utils { + private static final LogAccessor LOG = new LogAccessor(LogFactory.getLog(Fabric8Utils.class)); + private Fabric8Utils() { } @@ -48,8 +50,6 @@ public static ServiceMetadata serviceMetadata(Service service) { metadata.getLabels(), metadata.getAnnotations()); } - private static final LogAccessor LOG = new LogAccessor(LogFactory.getLog(Fabric8Utils.class)); - /** * this method does the namespace resolution. Namespace is being searched according to * the order below. @@ -76,7 +76,7 @@ public static String getApplicationNamespace(KubernetesClient client, @Nullable String configurationTarget, KubernetesNamespaceProvider provider) { if (StringUtils.hasText(namespace)) { - LOG.debug(configurationTarget + " namespace : " + namespace); + LOG.debug(() -> configurationTarget + " namespace : " + namespace); return namespace; } diff --git a/spring-cloud-kubernetes-fabric8-autoconfig/src/main/resources/META-INF/spring.factories b/spring-cloud-kubernetes-fabric8-autoconfig/src/main/resources/META-INF/spring.factories index 5fa337bfb6..d118dae87e 100644 --- a/spring-cloud-kubernetes-fabric8-autoconfig/src/main/resources/META-INF/spring.factories +++ b/spring-cloud-kubernetes-fabric8-autoconfig/src/main/resources/META-INF/spring.factories @@ -1,2 +1,2 @@ org.springframework.boot.EnvironmentPostProcessor=\ -org.springframework.cloud.kubernetes.fabric8.profile.Fabric8ProfileEnvironmentPostProcessor +org.springframework.cloud.kubernetes.fabric8.Fabric8ProfileEnvironmentPostProcessor diff --git a/spring-cloud-kubernetes-fabric8-autoconfig/src/test/java/org/springframework/cloud/kubernetes/Fabric8AutoConfigurationTests.java b/spring-cloud-kubernetes-fabric8-autoconfig/src/test/java/org/springframework/cloud/kubernetes/fabric8/Fabric8AutoConfigurationTests.java similarity index 90% rename from spring-cloud-kubernetes-fabric8-autoconfig/src/test/java/org/springframework/cloud/kubernetes/Fabric8AutoConfigurationTests.java rename to spring-cloud-kubernetes-fabric8-autoconfig/src/test/java/org/springframework/cloud/kubernetes/fabric8/Fabric8AutoConfigurationTests.java index 1961d6babb..cb5d7369bf 100644 --- a/spring-cloud-kubernetes-fabric8-autoconfig/src/test/java/org/springframework/cloud/kubernetes/Fabric8AutoConfigurationTests.java +++ b/spring-cloud-kubernetes-fabric8-autoconfig/src/test/java/org/springframework/cloud/kubernetes/fabric8/Fabric8AutoConfigurationTests.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.cloud.kubernetes; +package org.springframework.cloud.kubernetes.fabric8; import io.fabric8.kubernetes.client.Config; import io.fabric8.kubernetes.client.KubernetesClient; @@ -26,15 +26,11 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.cloud.kubernetes.commons.KubernetesClientProperties; -import org.springframework.cloud.kubernetes.example.App; -import org.springframework.cloud.kubernetes.fabric8.Fabric8HealthIndicator; -import org.springframework.cloud.kubernetes.fabric8.Fabric8InfoContributor; -import org.springframework.cloud.kubernetes.fabric8.Fabric8PodUtils; import org.springframework.context.ConfigurableApplicationContext; import static org.assertj.core.api.Assertions.assertThat; -@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT, classes = App.class, +@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT, classes = TestApp.class, properties = { "spring.main.cloud-platform=KUBERNETES", "spring.cloud.kubernetes.client.password=mypassword", "spring.cloud.kubernetes.client.proxy-password=myproxypassword" }) @EnableKubernetesMockClient(crud = true, https = false) diff --git a/spring-cloud-kubernetes-fabric8-autoconfig/src/test/java/org/springframework/cloud/kubernetes/fabric8/Fabric8ClientUserAgentEnvPropertyTests.java b/spring-cloud-kubernetes-fabric8-autoconfig/src/test/java/org/springframework/cloud/kubernetes/fabric8/Fabric8ClientUserAgentEnvPropertyTests.java index 32a844087b..e8c82afadc 100644 --- a/spring-cloud-kubernetes-fabric8-autoconfig/src/test/java/org/springframework/cloud/kubernetes/fabric8/Fabric8ClientUserAgentEnvPropertyTests.java +++ b/spring-cloud-kubernetes-fabric8-autoconfig/src/test/java/org/springframework/cloud/kubernetes/fabric8/Fabric8ClientUserAgentEnvPropertyTests.java @@ -24,7 +24,6 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.cloud.kubernetes.example.App; import org.springframework.test.annotation.DirtiesContext; import static org.assertj.core.api.Assertions.assertThat; @@ -34,7 +33,7 @@ * * test "User-Agent" functionality via system properties */ -@SpringBootTest(classes = App.class, properties = "spring.main.cloud-platform=KUBERNETES") +@SpringBootTest(classes = TestApp.class, properties = "spring.main.cloud-platform=KUBERNETES") @DirtiesContext class Fabric8ClientUserAgentEnvPropertyTests { diff --git a/spring-cloud-kubernetes-fabric8-autoconfig/src/test/java/org/springframework/cloud/kubernetes/Fabric8HealthIndicatorDisabledTest.java b/spring-cloud-kubernetes-fabric8-autoconfig/src/test/java/org/springframework/cloud/kubernetes/fabric8/Fabric8HealthIndicatorDisabledTest.java similarity index 94% rename from spring-cloud-kubernetes-fabric8-autoconfig/src/test/java/org/springframework/cloud/kubernetes/Fabric8HealthIndicatorDisabledTest.java rename to spring-cloud-kubernetes-fabric8-autoconfig/src/test/java/org/springframework/cloud/kubernetes/fabric8/Fabric8HealthIndicatorDisabledTest.java index 3e9482672c..22eaf6b910 100644 --- a/spring-cloud-kubernetes-fabric8-autoconfig/src/test/java/org/springframework/cloud/kubernetes/Fabric8HealthIndicatorDisabledTest.java +++ b/spring-cloud-kubernetes-fabric8-autoconfig/src/test/java/org/springframework/cloud/kubernetes/fabric8/Fabric8HealthIndicatorDisabledTest.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.cloud.kubernetes; +package org.springframework.cloud.kubernetes.fabric8; import io.fabric8.kubernetes.client.Config; import io.fabric8.kubernetes.client.KubernetesClient; @@ -25,11 +25,10 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.boot.web.server.test.LocalManagementPort; -import org.springframework.cloud.kubernetes.example.App; import org.springframework.http.MediaType; import org.springframework.test.web.reactive.server.WebTestClient; -@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT, classes = App.class, +@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT, classes = TestApp.class, properties = { "management.health.kubernetes.enabled=false" }) @EnableKubernetesMockClient(crud = true, https = false) class Fabric8HealthIndicatorDisabledTest { diff --git a/spring-cloud-kubernetes-fabric8-autoconfig/src/test/java/org/springframework/cloud/kubernetes/Fabric8InsideHealthIndicatorTest.java b/spring-cloud-kubernetes-fabric8-autoconfig/src/test/java/org/springframework/cloud/kubernetes/fabric8/Fabric8InsideHealthIndicatorTest.java similarity index 95% rename from spring-cloud-kubernetes-fabric8-autoconfig/src/test/java/org/springframework/cloud/kubernetes/Fabric8InsideHealthIndicatorTest.java rename to spring-cloud-kubernetes-fabric8-autoconfig/src/test/java/org/springframework/cloud/kubernetes/fabric8/Fabric8InsideHealthIndicatorTest.java index 7a66bfa79c..a641249877 100644 --- a/spring-cloud-kubernetes-fabric8-autoconfig/src/test/java/org/springframework/cloud/kubernetes/Fabric8InsideHealthIndicatorTest.java +++ b/spring-cloud-kubernetes-fabric8-autoconfig/src/test/java/org/springframework/cloud/kubernetes/fabric8/Fabric8InsideHealthIndicatorTest.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.cloud.kubernetes; +package org.springframework.cloud.kubernetes.fabric8; import java.util.Collections; @@ -29,8 +29,6 @@ import org.springframework.boot.test.context.SpringBootTest; import org.springframework.boot.web.server.test.LocalManagementPort; import org.springframework.cloud.kubernetes.commons.PodUtils; -import org.springframework.cloud.kubernetes.example.App; -import org.springframework.cloud.kubernetes.fabric8.Fabric8HealthIndicator; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Import; @@ -44,7 +42,7 @@ * test to see if proper fields are set in health when it is running inside the container */ @Import(Fabric8InsideHealthIndicatorTest.KubernetesActuatorTestConfiguration.class) -@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT, classes = App.class, +@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT, classes = TestApp.class, properties = { "management.endpoint.health.show-details=always" }) class Fabric8InsideHealthIndicatorTest { diff --git a/spring-cloud-kubernetes-fabric8-autoconfig/src/test/java/org/springframework/cloud/kubernetes/Fabric8InsideInfoContributorTest.java b/spring-cloud-kubernetes-fabric8-autoconfig/src/test/java/org/springframework/cloud/kubernetes/fabric8/Fabric8InsideInfoContributorTest.java similarity index 94% rename from spring-cloud-kubernetes-fabric8-autoconfig/src/test/java/org/springframework/cloud/kubernetes/Fabric8InsideInfoContributorTest.java rename to spring-cloud-kubernetes-fabric8-autoconfig/src/test/java/org/springframework/cloud/kubernetes/fabric8/Fabric8InsideInfoContributorTest.java index 06b6847722..98cbdb4ce7 100644 --- a/spring-cloud-kubernetes-fabric8-autoconfig/src/test/java/org/springframework/cloud/kubernetes/Fabric8InsideInfoContributorTest.java +++ b/spring-cloud-kubernetes-fabric8-autoconfig/src/test/java/org/springframework/cloud/kubernetes/fabric8/Fabric8InsideInfoContributorTest.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.cloud.kubernetes; +package org.springframework.cloud.kubernetes.fabric8; import io.fabric8.kubernetes.api.model.Pod; import io.fabric8.kubernetes.api.model.PodBuilder; @@ -26,8 +26,6 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.boot.web.server.test.LocalManagementPort; -import org.springframework.cloud.kubernetes.example.App; -import org.springframework.cloud.kubernetes.fabric8.Fabric8PodUtils; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Import; @@ -40,7 +38,7 @@ * test proper fields being set in /actuator/info */ @Import(Fabric8InsideInfoContributorTest.InfoContributorTestConfig.class) -@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT, classes = App.class, +@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT, classes = TestApp.class, properties = { "spring.main.cloud-platform=KUBERNETES", "management.endpoints.web.exposure.include=info", "management.endpoint.info.show-details=always", "management.info.kubernetes.enabled=true" }) class Fabric8InsideInfoContributorTest { diff --git a/spring-cloud-kubernetes-fabric8-autoconfig/src/test/java/org/springframework/cloud/kubernetes/Fabric8NotInsideHealthIndicatorTest.java b/spring-cloud-kubernetes-fabric8-autoconfig/src/test/java/org/springframework/cloud/kubernetes/fabric8/Fabric8NotInsideHealthIndicatorTest.java similarity index 95% rename from spring-cloud-kubernetes-fabric8-autoconfig/src/test/java/org/springframework/cloud/kubernetes/Fabric8NotInsideHealthIndicatorTest.java rename to spring-cloud-kubernetes-fabric8-autoconfig/src/test/java/org/springframework/cloud/kubernetes/fabric8/Fabric8NotInsideHealthIndicatorTest.java index cc12bfe34a..7ad9e749bc 100644 --- a/spring-cloud-kubernetes-fabric8-autoconfig/src/test/java/org/springframework/cloud/kubernetes/Fabric8NotInsideHealthIndicatorTest.java +++ b/spring-cloud-kubernetes-fabric8-autoconfig/src/test/java/org/springframework/cloud/kubernetes/fabric8/Fabric8NotInsideHealthIndicatorTest.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.cloud.kubernetes; +package org.springframework.cloud.kubernetes.fabric8; import io.fabric8.kubernetes.client.Config; import io.fabric8.kubernetes.client.KubernetesClient; @@ -26,11 +26,10 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.boot.web.server.test.LocalManagementPort; -import org.springframework.cloud.kubernetes.example.App; import org.springframework.http.MediaType; import org.springframework.test.web.reactive.server.WebTestClient; -@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT, classes = App.class, +@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT, classes = TestApp.class, properties = { "spring.main.cloud-platform=KUBERNETES", "management.endpoint.health.show-details=always" }) @EnableKubernetesMockClient(crud = true, https = false) class Fabric8NotInsideHealthIndicatorTest { diff --git a/spring-cloud-kubernetes-fabric8-autoconfig/src/test/java/org/springframework/cloud/kubernetes/Fabric8NotInsideInfoContributorTest.java b/spring-cloud-kubernetes-fabric8-autoconfig/src/test/java/org/springframework/cloud/kubernetes/fabric8/Fabric8NotInsideInfoContributorTest.java similarity index 93% rename from spring-cloud-kubernetes-fabric8-autoconfig/src/test/java/org/springframework/cloud/kubernetes/Fabric8NotInsideInfoContributorTest.java rename to spring-cloud-kubernetes-fabric8-autoconfig/src/test/java/org/springframework/cloud/kubernetes/fabric8/Fabric8NotInsideInfoContributorTest.java index 71afb251e6..88acdd5ab1 100644 --- a/spring-cloud-kubernetes-fabric8-autoconfig/src/test/java/org/springframework/cloud/kubernetes/Fabric8NotInsideInfoContributorTest.java +++ b/spring-cloud-kubernetes-fabric8-autoconfig/src/test/java/org/springframework/cloud/kubernetes/fabric8/Fabric8NotInsideInfoContributorTest.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.cloud.kubernetes; +package org.springframework.cloud.kubernetes.fabric8; import io.fabric8.kubernetes.client.KubernetesClient; import io.fabric8.kubernetes.client.server.mock.EnableKubernetesMockClient; @@ -23,11 +23,10 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.boot.web.server.test.LocalManagementPort; -import org.springframework.cloud.kubernetes.example.App; import org.springframework.http.MediaType; import org.springframework.test.web.reactive.server.WebTestClient; -@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT, classes = App.class, +@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT, classes = TestApp.class, properties = { "spring.main.cloud-platform=KUBERNETES", "management.endpoints.web.exposure.include=info", "management.endpoint.info.show-details=always", "management.info.kubernetes.enabled=true" }) @EnableKubernetesMockClient(crud = true, https = false) diff --git a/spring-cloud-kubernetes-fabric8-autoconfig/src/test/java/org/springframework/cloud/kubernetes/Fabric8PodUtilsTest.java b/spring-cloud-kubernetes-fabric8-autoconfig/src/test/java/org/springframework/cloud/kubernetes/fabric8/Fabric8PodUtilsTest.java similarity index 92% rename from spring-cloud-kubernetes-fabric8-autoconfig/src/test/java/org/springframework/cloud/kubernetes/Fabric8PodUtilsTest.java rename to spring-cloud-kubernetes-fabric8-autoconfig/src/test/java/org/springframework/cloud/kubernetes/fabric8/Fabric8PodUtilsTest.java index 6cb07ff17a..7911f3b716 100644 --- a/spring-cloud-kubernetes-fabric8-autoconfig/src/test/java/org/springframework/cloud/kubernetes/Fabric8PodUtilsTest.java +++ b/spring-cloud-kubernetes-fabric8-autoconfig/src/test/java/org/springframework/cloud/kubernetes/fabric8/Fabric8PodUtilsTest.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.cloud.kubernetes; +package org.springframework.cloud.kubernetes.fabric8; import java.io.File; import java.nio.file.Path; @@ -35,15 +35,10 @@ import org.mockito.Mockito; import org.springframework.cloud.kubernetes.commons.EnvReader; -import org.springframework.cloud.kubernetes.fabric8.Fabric8PodUtils; @SuppressWarnings("unchecked") class Fabric8PodUtilsTest { - private static final String KUBERNETES_SERVICE_HOST = Fabric8PodUtils.KUBERNETES_SERVICE_HOST; - - private static final String HOSTNAME = Fabric8PodUtils.HOSTNAME; - private static final String SERVICE_ACCOUNT_TOKEN_PATH = Config.KUBERNETES_SERVICE_ACCOUNT_TOKEN_PATH; private static final String SERVICE_ACCOUNT_CERT_PATH = Config.KUBERNETES_SERVICE_ACCOUNT_CA_CRT_PATH; @@ -147,11 +142,11 @@ void allPresent() { } private void mockHost(String host) { - envReader.when(() -> EnvReader.getEnv(KUBERNETES_SERVICE_HOST)).thenReturn(host); + envReader.when(() -> EnvReader.getEnv("KUBERNETES_SERVICE_HOST")).thenReturn(host); } private void mockHostname(String name) { - envReader.when(() -> EnvReader.getEnv(HOSTNAME)).thenReturn(name); + envReader.when(() -> EnvReader.getEnv("HOSTNAME")).thenReturn(name); } private void mockTokenPath(boolean result) { diff --git a/spring-cloud-kubernetes-fabric8-autoconfig/src/test/java/org/springframework/cloud/kubernetes/fabric8/profile/Fabric8ProfileEnvironmentPostProcessorTests.java b/spring-cloud-kubernetes-fabric8-autoconfig/src/test/java/org/springframework/cloud/kubernetes/fabric8/Fabric8ProfileEnvironmentPostProcessorTests.java similarity index 91% rename from spring-cloud-kubernetes-fabric8-autoconfig/src/test/java/org/springframework/cloud/kubernetes/fabric8/profile/Fabric8ProfileEnvironmentPostProcessorTests.java rename to spring-cloud-kubernetes-fabric8-autoconfig/src/test/java/org/springframework/cloud/kubernetes/fabric8/Fabric8ProfileEnvironmentPostProcessorTests.java index 84de3427ff..3ef9633600 100644 --- a/spring-cloud-kubernetes-fabric8-autoconfig/src/test/java/org/springframework/cloud/kubernetes/fabric8/profile/Fabric8ProfileEnvironmentPostProcessorTests.java +++ b/spring-cloud-kubernetes-fabric8-autoconfig/src/test/java/org/springframework/cloud/kubernetes/fabric8/Fabric8ProfileEnvironmentPostProcessorTests.java @@ -14,12 +14,11 @@ * limitations under the License. */ -package org.springframework.cloud.kubernetes.fabric8.profile; +package org.springframework.cloud.kubernetes.fabric8; import org.junit.jupiter.api.Test; import org.springframework.boot.builder.SpringApplicationBuilder; -import org.springframework.cloud.kubernetes.example.App; import org.springframework.context.ConfigurableApplicationContext; import static org.assertj.core.api.Assertions.assertThat; @@ -32,7 +31,7 @@ class Fabric8ProfileEnvironmentPostProcessorTests { @Test void whenKubernetesEnvironmentAndNoApiAccessThenProfileEnabled() { - ConfigurableApplicationContext context = new SpringApplicationBuilder(App.class) + ConfigurableApplicationContext context = new SpringApplicationBuilder(TestApp.class) .web(org.springframework.boot.WebApplicationType.NONE) .properties("KUBERNETES_SERVICE_HOST=10.0.0.1", "spring.main.cloud-platform=KUBERNETES") .run(); @@ -42,7 +41,7 @@ void whenKubernetesEnvironmentAndNoApiAccessThenProfileEnabled() { @Test void whenNoKubernetesEnvironmentAndNoApiAccessThenNoProfileEnabled() { - ConfigurableApplicationContext context = new SpringApplicationBuilder(App.class) + ConfigurableApplicationContext context = new SpringApplicationBuilder(TestApp.class) .web(org.springframework.boot.WebApplicationType.NONE) .run(); diff --git a/spring-cloud-kubernetes-fabric8-autoconfig/src/test/java/org/springframework/cloud/kubernetes/fabric8/Fabric8UserAgentDefaultConfigurationTests.java b/spring-cloud-kubernetes-fabric8-autoconfig/src/test/java/org/springframework/cloud/kubernetes/fabric8/Fabric8UserAgentDefaultConfigurationTests.java index d03289fa6b..33f9abd1e5 100644 --- a/spring-cloud-kubernetes-fabric8-autoconfig/src/test/java/org/springframework/cloud/kubernetes/fabric8/Fabric8UserAgentDefaultConfigurationTests.java +++ b/spring-cloud-kubernetes-fabric8-autoconfig/src/test/java/org/springframework/cloud/kubernetes/fabric8/Fabric8UserAgentDefaultConfigurationTests.java @@ -21,14 +21,13 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.cloud.kubernetes.example.App; import static org.assertj.core.api.Assertions.assertThat; /** * @author wind57 */ -@SpringBootTest(classes = App.class, properties = "spring.main.cloud-platform=KUBERNETES") +@SpringBootTest(classes = TestApp.class, properties = "spring.main.cloud-platform=KUBERNETES") class Fabric8UserAgentDefaultConfigurationTests { @Autowired diff --git a/spring-cloud-kubernetes-fabric8-autoconfig/src/test/java/org/springframework/cloud/kubernetes/fabric8/Fabric8UserAgentPropertiesConfigurationTests.java b/spring-cloud-kubernetes-fabric8-autoconfig/src/test/java/org/springframework/cloud/kubernetes/fabric8/Fabric8UserAgentPropertiesConfigurationTests.java index e3c239ddbd..8ace0678e0 100644 --- a/spring-cloud-kubernetes-fabric8-autoconfig/src/test/java/org/springframework/cloud/kubernetes/fabric8/Fabric8UserAgentPropertiesConfigurationTests.java +++ b/spring-cloud-kubernetes-fabric8-autoconfig/src/test/java/org/springframework/cloud/kubernetes/fabric8/Fabric8UserAgentPropertiesConfigurationTests.java @@ -21,14 +21,13 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.cloud.kubernetes.example.App; import static org.assertj.core.api.Assertions.assertThat; /** * @author wind57 */ -@SpringBootTest(classes = App.class, properties = { "spring.cloud.kubernetes.client.userAgent=non-default", +@SpringBootTest(classes = TestApp.class, properties = { "spring.cloud.kubernetes.client.userAgent=non-default", "spring.main.cloud-platform=KUBERNETES" }) class Fabric8UserAgentPropertiesConfigurationTests { diff --git a/spring-cloud-kubernetes-fabric8-autoconfig/src/test/java/org/springframework/cloud/kubernetes/example/App.java b/spring-cloud-kubernetes-fabric8-autoconfig/src/test/java/org/springframework/cloud/kubernetes/fabric8/TestApp.java similarity index 90% rename from spring-cloud-kubernetes-fabric8-autoconfig/src/test/java/org/springframework/cloud/kubernetes/example/App.java rename to spring-cloud-kubernetes-fabric8-autoconfig/src/test/java/org/springframework/cloud/kubernetes/fabric8/TestApp.java index a8bfc4b9f8..ce8039945f 100644 --- a/spring-cloud-kubernetes-fabric8-autoconfig/src/test/java/org/springframework/cloud/kubernetes/example/App.java +++ b/spring-cloud-kubernetes-fabric8-autoconfig/src/test/java/org/springframework/cloud/kubernetes/fabric8/TestApp.java @@ -14,11 +14,11 @@ * limitations under the License. */ -package org.springframework.cloud.kubernetes.example; +package org.springframework.cloud.kubernetes.fabric8; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication -public class App { +public class TestApp { } From 19903071acc026e0f7a803111b505fa6653a0a37 Mon Sep 17 00:00:00 2001 From: wind57 Date: Tue, 7 Oct 2025 19:24:32 +0300 Subject: [PATCH 2/2] started Signed-off-by: wind57 --- .../cloud/kubernetes/fabric8/Fabric8AutoConfiguration.java | 6 +++--- .../cloud/kubernetes/fabric8/Fabric8PodUtils.java | 2 +- .../fabric8/Fabric8ProfileEnvironmentPostProcessor.java | 3 +-- 3 files changed, 5 insertions(+), 6 deletions(-) diff --git a/spring-cloud-kubernetes-fabric8-autoconfig/src/main/java/org/springframework/cloud/kubernetes/fabric8/Fabric8AutoConfiguration.java b/spring-cloud-kubernetes-fabric8-autoconfig/src/main/java/org/springframework/cloud/kubernetes/fabric8/Fabric8AutoConfiguration.java index 34c7b039a3..900c04f8d1 100644 --- a/spring-cloud-kubernetes-fabric8-autoconfig/src/main/java/org/springframework/cloud/kubernetes/fabric8/Fabric8AutoConfiguration.java +++ b/spring-cloud-kubernetes-fabric8-autoconfig/src/main/java/org/springframework/cloud/kubernetes/fabric8/Fabric8AutoConfiguration.java @@ -42,11 +42,11 @@ @Configuration(proxyBeanMethods = false) @ConditionalOnCloudPlatform(CloudPlatform.KUBERNETES) @AutoConfigureAfter(KubernetesCommonsAutoConfiguration.class) -final class Fabric8AutoConfiguration { +public final class Fabric8AutoConfiguration { @Bean @ConditionalOnMissingBean(Config.class) - Config kubernetesClientConfig(KubernetesClientProperties kubernetesClientProperties) { + public Config kubernetesClientConfig(KubernetesClientProperties kubernetesClientProperties) { Config base = Config.autoConfigure(null); ConfigBuilder builder = new ConfigBuilder(base) // Only set values that have been explicitly specified @@ -95,7 +95,7 @@ Config kubernetesClientConfig(KubernetesClientProperties kubernetesClientPropert @Bean @ConditionalOnMissingBean - KubernetesClient kubernetesClient(Config config) { + public KubernetesClient kubernetesClient(Config config) { return new KubernetesClientBuilder().withConfig(config).build(); } diff --git a/spring-cloud-kubernetes-fabric8-autoconfig/src/main/java/org/springframework/cloud/kubernetes/fabric8/Fabric8PodUtils.java b/spring-cloud-kubernetes-fabric8-autoconfig/src/main/java/org/springframework/cloud/kubernetes/fabric8/Fabric8PodUtils.java index 1a0b207d39..ad1f562f1c 100644 --- a/spring-cloud-kubernetes-fabric8-autoconfig/src/main/java/org/springframework/cloud/kubernetes/fabric8/Fabric8PodUtils.java +++ b/spring-cloud-kubernetes-fabric8-autoconfig/src/main/java/org/springframework/cloud/kubernetes/fabric8/Fabric8PodUtils.java @@ -47,7 +47,7 @@ final class Fabric8PodUtils implements PodUtils { private final Supplier current; - public Fabric8PodUtils(KubernetesClient client) { + Fabric8PodUtils(KubernetesClient client) { if (client == null) { throw new IllegalArgumentException("Must provide an instance of KubernetesClient"); } diff --git a/spring-cloud-kubernetes-fabric8-autoconfig/src/main/java/org/springframework/cloud/kubernetes/fabric8/Fabric8ProfileEnvironmentPostProcessor.java b/spring-cloud-kubernetes-fabric8-autoconfig/src/main/java/org/springframework/cloud/kubernetes/fabric8/Fabric8ProfileEnvironmentPostProcessor.java index 9f46df1af1..f4067ade09 100644 --- a/spring-cloud-kubernetes-fabric8-autoconfig/src/main/java/org/springframework/cloud/kubernetes/fabric8/Fabric8ProfileEnvironmentPostProcessor.java +++ b/spring-cloud-kubernetes-fabric8-autoconfig/src/main/java/org/springframework/cloud/kubernetes/fabric8/Fabric8ProfileEnvironmentPostProcessor.java @@ -29,8 +29,7 @@ protected boolean isInsideKubernetes(Environment environment) { try (KubernetesClient client = new KubernetesClientBuilder().build()) { Fabric8PodUtils podUtils = new Fabric8PodUtils(client); - return environment.containsProperty("KUBERNETES_SERVICE_HOST") - || podUtils.isInsideKubernetes(); + return environment.containsProperty("KUBERNETES_SERVICE_HOST") || podUtils.isInsideKubernetes(); } }