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.
*/
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 {

View File

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

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.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,\

View File

@ -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() {

View File

@ -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() {