From 82cfd7c6c961e7d1d791440006eb5e13f3dbd61e Mon Sep 17 00:00:00 2001 From: Phillip Webb Date: Mon, 13 Apr 2020 13:54:23 -0700 Subject: [PATCH] Restructure probes auto-configuration Relocate probe auto-configuration from the `kubernetes` package to `availability` since probes could also be used on other platforms. The classes have also been renamed to named to `AvailabilityProbes...` See gh-20962 --- .../AvailabilityProbesAutoConfiguration.java} | 20 +++++++++---------- ...yProbesHealthEndpointGroupsRegistrar.java} | 4 ++-- .../availability}/package-info.java | 5 +++-- .../kubernetes/package-info.java | 20 ------------------- .../main/resources/META-INF/spring.factories | 2 +- ...labilityProbesAutoConfigurationTests.java} | 8 ++++---- ...esHealthEndpointGroupsRegistrarTests.java} | 9 +++++---- 7 files changed, 25 insertions(+), 43 deletions(-) rename spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/{kubernetes/ProbesHealthContributorAutoConfiguration.java => availability/AvailabilityProbesAutoConfiguration.java} (80%) rename spring-boot-project/{spring-boot-actuator/src/main/java/org/springframework/boot/actuate/kubernetes/ProbesHealthEndpointGroupsRegistrar.java => spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/availability/AvailabilityProbesHealthEndpointGroupsRegistrar.java} (90%) rename spring-boot-project/{spring-boot-actuator/src/main/java/org/springframework/boot/actuate/kubernetes => spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/availability}/package-info.java (78%) delete mode 100644 spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/kubernetes/package-info.java rename spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/{kubernetes/ProbesHealthContributorAutoConfigurationTests.java => availability/AvailabilityProbesAutoConfigurationTests.java} (88%) rename spring-boot-project/{spring-boot-actuator/src/test/java/org/springframework/boot/actuate/kubernetes/ProbesHealthEndpointGroupsRegistrarTests.java => spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/availability/AvailabilityProbesHealthEndpointGroupsRegistrarTests.java} (82%) diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/kubernetes/ProbesHealthContributorAutoConfiguration.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/availability/AvailabilityProbesAutoConfiguration.java similarity index 80% rename from spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/kubernetes/ProbesHealthContributorAutoConfiguration.java rename to spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/availability/AvailabilityProbesAutoConfiguration.java index d1293a4679..4370770912 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/kubernetes/ProbesHealthContributorAutoConfiguration.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/availability/AvailabilityProbesAutoConfiguration.java @@ -14,14 +14,13 @@ * limitations under the License. */ -package org.springframework.boot.actuate.autoconfigure.kubernetes; +package org.springframework.boot.actuate.autoconfigure.availability; +import org.springframework.boot.actuate.autoconfigure.availability.AvailabilityProbesAutoConfiguration.KubernetesOrPropertyCondition; import org.springframework.boot.actuate.autoconfigure.health.ConditionalOnEnabledHealthIndicator; -import org.springframework.boot.actuate.autoconfigure.kubernetes.ProbesHealthContributorAutoConfiguration.KubernetesOrPropertyCondition; import org.springframework.boot.actuate.availability.LivenessStateHealthIndicator; import org.springframework.boot.actuate.availability.ReadinessStateHealthIndicator; import org.springframework.boot.actuate.health.HealthEndpointGroupsRegistryCustomizer; -import org.springframework.boot.actuate.kubernetes.ProbesHealthEndpointGroupsRegistrar; import org.springframework.boot.autoconfigure.AutoConfigureAfter; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.boot.autoconfigure.availability.ApplicationAvailabilityAutoConfiguration; @@ -37,7 +36,8 @@ import org.springframework.context.annotation.Configuration; /** * {@link EnableAutoConfiguration Auto-configuration} for - * {@link LivenessStateHealthIndicator} and {@link ReadinessStateHealthIndicator}. + * {@link LivenessStateHealthIndicator}, {@link ReadinessStateHealthIndicator} and + * {@link HealthEndpointGroupsRegistryCustomizer}. * * @author Brian Clozel * @since 2.3.0 @@ -45,26 +45,26 @@ import org.springframework.context.annotation.Configuration; @Configuration(proxyBeanMethods = false) @Conditional(KubernetesOrPropertyCondition.class) @AutoConfigureAfter(ApplicationAvailabilityAutoConfiguration.class) -public class ProbesHealthContributorAutoConfiguration { +public class AvailabilityProbesAutoConfiguration { @Bean - @ConditionalOnEnabledHealthIndicator("livenessProbe") + @ConditionalOnEnabledHealthIndicator("livenessState") @ConditionalOnMissingBean - public LivenessStateHealthIndicator livenessProbeHealthIndicator(ApplicationAvailability applicationAvailability) { + public LivenessStateHealthIndicator livenessStateHealthIndicator(ApplicationAvailability applicationAvailability) { return new LivenessStateHealthIndicator(applicationAvailability); } @Bean - @ConditionalOnEnabledHealthIndicator("readinessProbe") + @ConditionalOnEnabledHealthIndicator("readinessState") @ConditionalOnMissingBean - public ReadinessStateHealthIndicator readinessProbeHealthIndicator( + public ReadinessStateHealthIndicator readinessStateHealthIndicator( ApplicationAvailability applicationAvailability) { return new ReadinessStateHealthIndicator(applicationAvailability); } @Bean public HealthEndpointGroupsRegistryCustomizer probesRegistryCustomizer() { - return new ProbesHealthEndpointGroupsRegistrar(); + return new AvailabilityProbesHealthEndpointGroupsRegistrar(); } static class KubernetesOrPropertyCondition extends AnyNestedCondition { diff --git a/spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/kubernetes/ProbesHealthEndpointGroupsRegistrar.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/availability/AvailabilityProbesHealthEndpointGroupsRegistrar.java similarity index 90% rename from spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/kubernetes/ProbesHealthEndpointGroupsRegistrar.java rename to spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/availability/AvailabilityProbesHealthEndpointGroupsRegistrar.java index 04ce82781a..6b997809a6 100644 --- a/spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/kubernetes/ProbesHealthEndpointGroupsRegistrar.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/availability/AvailabilityProbesHealthEndpointGroupsRegistrar.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.boot.actuate.kubernetes; +package org.springframework.boot.actuate.autoconfigure.availability; import org.springframework.boot.actuate.health.HealthEndpointGroup; import org.springframework.boot.actuate.health.HealthEndpointGroupsRegistry; @@ -27,7 +27,7 @@ import org.springframework.boot.actuate.health.HealthEndpointGroupsRegistryCusto * @author Brian Clozel * @since 2.3.0 */ -public class ProbesHealthEndpointGroupsRegistrar implements HealthEndpointGroupsRegistryCustomizer { +public class AvailabilityProbesHealthEndpointGroupsRegistrar implements HealthEndpointGroupsRegistryCustomizer { private static final String LIVENESS_GROUP_NAME = "liveness"; diff --git a/spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/kubernetes/package-info.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/availability/package-info.java similarity index 78% rename from spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/kubernetes/package-info.java rename to spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/availability/package-info.java index 873594316b..bec5a50f53 100644 --- a/spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/kubernetes/package-info.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/availability/package-info.java @@ -15,6 +15,7 @@ */ /** - * Actuator support for kubernetes-related concerns. + * Auto-configuration that extends health endpoints so that they can be used as + * availability probes. */ -package org.springframework.boot.actuate.kubernetes; +package org.springframework.boot.actuate.autoconfigure.availability; diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/kubernetes/package-info.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/kubernetes/package-info.java deleted file mode 100644 index d580ef7afd..0000000000 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/kubernetes/package-info.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright 2012-2020 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. - */ - -/** - * Auto-configuration for actuator kubernetes concerns. - */ -package org.springframework.boot.actuate.autoconfigure.kubernetes; diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/resources/META-INF/spring.factories b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/resources/META-INF/spring.factories index 7c21d9b101..0771aebd53 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/resources/META-INF/spring.factories +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/resources/META-INF/spring.factories @@ -2,6 +2,7 @@ org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ org.springframework.boot.actuate.autoconfigure.amqp.RabbitHealthContributorAutoConfiguration,\ org.springframework.boot.actuate.autoconfigure.audit.AuditAutoConfiguration,\ org.springframework.boot.actuate.autoconfigure.audit.AuditEventsEndpointAutoConfiguration,\ +org.springframework.boot.actuate.autoconfigure.availability.AvailabilityProbesAutoConfiguration,\ org.springframework.boot.actuate.autoconfigure.beans.BeansEndpointAutoConfiguration,\ org.springframework.boot.actuate.autoconfigure.cache.CachesEndpointAutoConfiguration,\ org.springframework.boot.actuate.autoconfigure.cassandra.CassandraHealthContributorAutoConfiguration,\ @@ -29,7 +30,6 @@ org.springframework.boot.actuate.autoconfigure.integration.IntegrationGraphEndpo org.springframework.boot.actuate.autoconfigure.jdbc.DataSourceHealthContributorAutoConfiguration,\ org.springframework.boot.actuate.autoconfigure.jms.JmsHealthContributorAutoConfiguration,\ org.springframework.boot.actuate.autoconfigure.jolokia.JolokiaEndpointAutoConfiguration,\ -org.springframework.boot.actuate.autoconfigure.kubernetes.ProbesHealthContributorAutoConfiguration,\ org.springframework.boot.actuate.autoconfigure.ldap.LdapHealthContributorAutoConfiguration,\ org.springframework.boot.actuate.autoconfigure.liquibase.LiquibaseEndpointAutoConfiguration,\ org.springframework.boot.actuate.autoconfigure.logging.LogFileWebEndpointAutoConfiguration,\ diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/kubernetes/ProbesHealthContributorAutoConfigurationTests.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/availability/AvailabilityProbesAutoConfigurationTests.java similarity index 88% rename from spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/kubernetes/ProbesHealthContributorAutoConfigurationTests.java rename to spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/availability/AvailabilityProbesAutoConfigurationTests.java index f37f735214..02129c50d9 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/kubernetes/ProbesHealthContributorAutoConfigurationTests.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/availability/AvailabilityProbesAutoConfigurationTests.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.boot.actuate.autoconfigure.kubernetes; +package org.springframework.boot.actuate.autoconfigure.availability; import org.junit.jupiter.api.Test; @@ -29,14 +29,14 @@ import org.springframework.boot.test.context.runner.ApplicationContextRunner; import static org.assertj.core.api.Assertions.assertThat; /** - * Tests for {@link ProbesHealthContributorAutoConfiguration}. + * Tests for {@link AvailabilityProbesAutoConfiguration}. * * @author Brian Clozel */ -class ProbesHealthContributorAutoConfigurationTests { +class AvailabilityProbesAutoConfigurationTests { private ApplicationContextRunner contextRunner = new ApplicationContextRunner().withConfiguration(AutoConfigurations - .of(ApplicationAvailabilityAutoConfiguration.class, ProbesHealthContributorAutoConfiguration.class)); + .of(ApplicationAvailabilityAutoConfiguration.class, AvailabilityProbesAutoConfiguration.class)); @Test void probesNotConfiguredIfNotKubernetes() { diff --git a/spring-boot-project/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/kubernetes/ProbesHealthEndpointGroupsRegistrarTests.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/availability/AvailabilityProbesHealthEndpointGroupsRegistrarTests.java similarity index 82% rename from spring-boot-project/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/kubernetes/ProbesHealthEndpointGroupsRegistrarTests.java rename to spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/availability/AvailabilityProbesHealthEndpointGroupsRegistrarTests.java index 9059fe58c1..962e9befe4 100644 --- a/spring-boot-project/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/kubernetes/ProbesHealthEndpointGroupsRegistrarTests.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/availability/AvailabilityProbesHealthEndpointGroupsRegistrarTests.java @@ -14,10 +14,11 @@ * limitations under the License. */ -package org.springframework.boot.actuate.kubernetes; +package org.springframework.boot.actuate.autoconfigure.availability; import org.junit.jupiter.api.Test; +import org.springframework.boot.actuate.autoconfigure.availability.AvailabilityProbesHealthEndpointGroupsRegistrar; import org.springframework.boot.actuate.health.HealthEndpointGroup; import org.springframework.boot.actuate.health.HealthEndpointGroupsRegistry; import org.springframework.boot.actuate.health.TestHealthEndpointGroupsRegistry; @@ -25,13 +26,13 @@ import org.springframework.boot.actuate.health.TestHealthEndpointGroupsRegistry; import static org.assertj.core.api.Assertions.assertThat; /** - * Tests for {@code ProbesHealthEndpointGroupsRegistrar } + * Tests for {@code ProbesHealthEndpointGroupsRegistrar} * * @author Brian Clozel */ -class ProbesHealthEndpointGroupsRegistrarTests { +class AvailabilityProbesHealthEndpointGroupsRegistrarTests { - private ProbesHealthEndpointGroupsRegistrar registrar = new ProbesHealthEndpointGroupsRegistrar(); + private AvailabilityProbesHealthEndpointGroupsRegistrar registrar = new AvailabilityProbesHealthEndpointGroupsRegistrar(); @Test void shouldAddKubernetesProbes() {