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
This commit is contained in:
Phillip Webb 2020-04-13 13:54:23 -07:00
parent 71e4801e68
commit 82cfd7c6c9
7 changed files with 25 additions and 43 deletions

View File

@ -14,14 +14,13 @@
* limitations under the License. * 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.health.ConditionalOnEnabledHealthIndicator;
import org.springframework.boot.actuate.autoconfigure.kubernetes.ProbesHealthContributorAutoConfiguration.KubernetesOrPropertyCondition;
import org.springframework.boot.actuate.availability.LivenessStateHealthIndicator; import org.springframework.boot.actuate.availability.LivenessStateHealthIndicator;
import org.springframework.boot.actuate.availability.ReadinessStateHealthIndicator; import org.springframework.boot.actuate.availability.ReadinessStateHealthIndicator;
import org.springframework.boot.actuate.health.HealthEndpointGroupsRegistryCustomizer; 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.AutoConfigureAfter;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.autoconfigure.availability.ApplicationAvailabilityAutoConfiguration; import org.springframework.boot.autoconfigure.availability.ApplicationAvailabilityAutoConfiguration;
@ -37,7 +36,8 @@ import org.springframework.context.annotation.Configuration;
/** /**
* {@link EnableAutoConfiguration Auto-configuration} for * {@link EnableAutoConfiguration Auto-configuration} for
* {@link LivenessStateHealthIndicator} and {@link ReadinessStateHealthIndicator}. * {@link LivenessStateHealthIndicator}, {@link ReadinessStateHealthIndicator} and
* {@link HealthEndpointGroupsRegistryCustomizer}.
* *
* @author Brian Clozel * @author Brian Clozel
* @since 2.3.0 * @since 2.3.0
@ -45,26 +45,26 @@ import org.springframework.context.annotation.Configuration;
@Configuration(proxyBeanMethods = false) @Configuration(proxyBeanMethods = false)
@Conditional(KubernetesOrPropertyCondition.class) @Conditional(KubernetesOrPropertyCondition.class)
@AutoConfigureAfter(ApplicationAvailabilityAutoConfiguration.class) @AutoConfigureAfter(ApplicationAvailabilityAutoConfiguration.class)
public class ProbesHealthContributorAutoConfiguration { public class AvailabilityProbesAutoConfiguration {
@Bean @Bean
@ConditionalOnEnabledHealthIndicator("livenessProbe") @ConditionalOnEnabledHealthIndicator("livenessState")
@ConditionalOnMissingBean @ConditionalOnMissingBean
public LivenessStateHealthIndicator livenessProbeHealthIndicator(ApplicationAvailability applicationAvailability) { public LivenessStateHealthIndicator livenessStateHealthIndicator(ApplicationAvailability applicationAvailability) {
return new LivenessStateHealthIndicator(applicationAvailability); return new LivenessStateHealthIndicator(applicationAvailability);
} }
@Bean @Bean
@ConditionalOnEnabledHealthIndicator("readinessProbe") @ConditionalOnEnabledHealthIndicator("readinessState")
@ConditionalOnMissingBean @ConditionalOnMissingBean
public ReadinessStateHealthIndicator readinessProbeHealthIndicator( public ReadinessStateHealthIndicator readinessStateHealthIndicator(
ApplicationAvailability applicationAvailability) { ApplicationAvailability applicationAvailability) {
return new ReadinessStateHealthIndicator(applicationAvailability); return new ReadinessStateHealthIndicator(applicationAvailability);
} }
@Bean @Bean
public HealthEndpointGroupsRegistryCustomizer probesRegistryCustomizer() { public HealthEndpointGroupsRegistryCustomizer probesRegistryCustomizer() {
return new ProbesHealthEndpointGroupsRegistrar(); return new AvailabilityProbesHealthEndpointGroupsRegistrar();
} }
static class KubernetesOrPropertyCondition extends AnyNestedCondition { static class KubernetesOrPropertyCondition extends AnyNestedCondition {

View File

@ -14,7 +14,7 @@
* limitations under the License. * 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.HealthEndpointGroup;
import org.springframework.boot.actuate.health.HealthEndpointGroupsRegistry; import org.springframework.boot.actuate.health.HealthEndpointGroupsRegistry;
@ -27,7 +27,7 @@ import org.springframework.boot.actuate.health.HealthEndpointGroupsRegistryCusto
* @author Brian Clozel * @author Brian Clozel
* @since 2.3.0 * @since 2.3.0
*/ */
public class ProbesHealthEndpointGroupsRegistrar implements HealthEndpointGroupsRegistryCustomizer { public class AvailabilityProbesHealthEndpointGroupsRegistrar implements HealthEndpointGroupsRegistryCustomizer {
private static final String LIVENESS_GROUP_NAME = "liveness"; private static final String LIVENESS_GROUP_NAME = "liveness";

View File

@ -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;

View File

@ -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;

View File

@ -2,6 +2,7 @@ org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
org.springframework.boot.actuate.autoconfigure.amqp.RabbitHealthContributorAutoConfiguration,\ org.springframework.boot.actuate.autoconfigure.amqp.RabbitHealthContributorAutoConfiguration,\
org.springframework.boot.actuate.autoconfigure.audit.AuditAutoConfiguration,\ org.springframework.boot.actuate.autoconfigure.audit.AuditAutoConfiguration,\
org.springframework.boot.actuate.autoconfigure.audit.AuditEventsEndpointAutoConfiguration,\ 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.beans.BeansEndpointAutoConfiguration,\
org.springframework.boot.actuate.autoconfigure.cache.CachesEndpointAutoConfiguration,\ org.springframework.boot.actuate.autoconfigure.cache.CachesEndpointAutoConfiguration,\
org.springframework.boot.actuate.autoconfigure.cassandra.CassandraHealthContributorAutoConfiguration,\ 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.jdbc.DataSourceHealthContributorAutoConfiguration,\
org.springframework.boot.actuate.autoconfigure.jms.JmsHealthContributorAutoConfiguration,\ org.springframework.boot.actuate.autoconfigure.jms.JmsHealthContributorAutoConfiguration,\
org.springframework.boot.actuate.autoconfigure.jolokia.JolokiaEndpointAutoConfiguration,\ 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.ldap.LdapHealthContributorAutoConfiguration,\
org.springframework.boot.actuate.autoconfigure.liquibase.LiquibaseEndpointAutoConfiguration,\ org.springframework.boot.actuate.autoconfigure.liquibase.LiquibaseEndpointAutoConfiguration,\
org.springframework.boot.actuate.autoconfigure.logging.LogFileWebEndpointAutoConfiguration,\ org.springframework.boot.actuate.autoconfigure.logging.LogFileWebEndpointAutoConfiguration,\

View File

@ -14,7 +14,7 @@
* limitations under the License. * limitations under the License.
*/ */
package org.springframework.boot.actuate.autoconfigure.kubernetes; package org.springframework.boot.actuate.autoconfigure.availability;
import org.junit.jupiter.api.Test; 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; import static org.assertj.core.api.Assertions.assertThat;
/** /**
* Tests for {@link ProbesHealthContributorAutoConfiguration}. * Tests for {@link AvailabilityProbesAutoConfiguration}.
* *
* @author Brian Clozel * @author Brian Clozel
*/ */
class ProbesHealthContributorAutoConfigurationTests { class AvailabilityProbesAutoConfigurationTests {
private ApplicationContextRunner contextRunner = new ApplicationContextRunner().withConfiguration(AutoConfigurations private ApplicationContextRunner contextRunner = new ApplicationContextRunner().withConfiguration(AutoConfigurations
.of(ApplicationAvailabilityAutoConfiguration.class, ProbesHealthContributorAutoConfiguration.class)); .of(ApplicationAvailabilityAutoConfiguration.class, AvailabilityProbesAutoConfiguration.class));
@Test @Test
void probesNotConfiguredIfNotKubernetes() { void probesNotConfiguredIfNotKubernetes() {

View File

@ -14,10 +14,11 @@
* limitations under the License. * 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.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.HealthEndpointGroup;
import org.springframework.boot.actuate.health.HealthEndpointGroupsRegistry; import org.springframework.boot.actuate.health.HealthEndpointGroupsRegistry;
import org.springframework.boot.actuate.health.TestHealthEndpointGroupsRegistry; 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; import static org.assertj.core.api.Assertions.assertThat;
/** /**
* Tests for {@code ProbesHealthEndpointGroupsRegistrar } * Tests for {@code ProbesHealthEndpointGroupsRegistrar}
* *
* @author Brian Clozel * @author Brian Clozel
*/ */
class ProbesHealthEndpointGroupsRegistrarTests { class AvailabilityProbesHealthEndpointGroupsRegistrarTests {
private ProbesHealthEndpointGroupsRegistrar registrar = new ProbesHealthEndpointGroupsRegistrar(); private AvailabilityProbesHealthEndpointGroupsRegistrar registrar = new AvailabilityProbesHealthEndpointGroupsRegistrar();
@Test @Test
void shouldAddKubernetesProbes() { void shouldAddKubernetesProbes() {