Merge branch '2.7.x'
This commit is contained in:
		
						commit
						abb622023d
					
				| 
						 | 
				
			
			@ -1,5 +1,5 @@
 | 
			
		|||
/*
 | 
			
		||||
 * Copyright 2012-2021 the original author or authors.
 | 
			
		||||
 * Copyright 2012-2022 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.
 | 
			
		||||
| 
						 | 
				
			
			@ -21,6 +21,7 @@ import org.springframework.boot.actuate.info.EnvironmentInfoContributor;
 | 
			
		|||
import org.springframework.boot.actuate.info.GitInfoContributor;
 | 
			
		||||
import org.springframework.boot.actuate.info.InfoContributor;
 | 
			
		||||
import org.springframework.boot.actuate.info.JavaInfoContributor;
 | 
			
		||||
import org.springframework.boot.actuate.info.OsInfoContributor;
 | 
			
		||||
import org.springframework.boot.autoconfigure.AutoConfigureAfter;
 | 
			
		||||
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
 | 
			
		||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
 | 
			
		||||
| 
						 | 
				
			
			@ -86,4 +87,11 @@ public class InfoContributorAutoConfiguration {
 | 
			
		|||
		return new JavaInfoContributor();
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	@Bean
 | 
			
		||||
	@ConditionalOnEnabledInfoContributor(value = "os", fallback = InfoContributorFallback.DISABLE)
 | 
			
		||||
	@Order(DEFAULT_ORDER)
 | 
			
		||||
	public OsInfoContributor osInfoContributor() {
 | 
			
		||||
		return new OsInfoContributor();
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -279,6 +279,12 @@
 | 
			
		|||
      "description": "Whether to enable Java info.",
 | 
			
		||||
      "defaultValue": false
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
      "name": "management.info.os.enabled",
 | 
			
		||||
      "type": "java.lang.Boolean",
 | 
			
		||||
      "description": "Whether to enable Operating System info.",
 | 
			
		||||
      "defaultValue": false
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
      "name": "management.metrics.binders.files.enabled",
 | 
			
		||||
      "type": "java.lang.Boolean",
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,5 +1,5 @@
 | 
			
		|||
/*
 | 
			
		||||
 * Copyright 2012-2021 the original author or authors.
 | 
			
		||||
 * Copyright 2012-2022 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.
 | 
			
		||||
| 
						 | 
				
			
			@ -27,10 +27,12 @@ import org.springframework.boot.actuate.info.GitInfoContributor;
 | 
			
		|||
import org.springframework.boot.actuate.info.Info;
 | 
			
		||||
import org.springframework.boot.actuate.info.InfoContributor;
 | 
			
		||||
import org.springframework.boot.actuate.info.JavaInfoContributor;
 | 
			
		||||
import org.springframework.boot.actuate.info.OsInfoContributor;
 | 
			
		||||
import org.springframework.boot.autoconfigure.AutoConfigurations;
 | 
			
		||||
import org.springframework.boot.info.BuildProperties;
 | 
			
		||||
import org.springframework.boot.info.GitProperties;
 | 
			
		||||
import org.springframework.boot.info.JavaInfo;
 | 
			
		||||
import org.springframework.boot.info.OsInfo;
 | 
			
		||||
import org.springframework.boot.test.context.runner.ApplicationContextRunner;
 | 
			
		||||
import org.springframework.context.annotation.Bean;
 | 
			
		||||
import org.springframework.context.annotation.Configuration;
 | 
			
		||||
| 
						 | 
				
			
			@ -151,6 +153,16 @@ class InfoContributorAutoConfigurationTests {
 | 
			
		|||
		});
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	@Test
 | 
			
		||||
	void osInfoContributor() {
 | 
			
		||||
		this.contextRunner.withPropertyValues("management.info.os.enabled=true").run((context) -> {
 | 
			
		||||
			assertThat(context).hasSingleBean(OsInfoContributor.class);
 | 
			
		||||
			Map<String, Object> content = invokeContributor(context.getBean(OsInfoContributor.class));
 | 
			
		||||
			assertThat(content).containsKey("os");
 | 
			
		||||
			assertThat(content.get("os")).isInstanceOf(OsInfo.class);
 | 
			
		||||
		});
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	private Map<String, Object> invokeContributor(InfoContributor contributor) {
 | 
			
		||||
		Info.Builder builder = new Info.Builder();
 | 
			
		||||
		contributor.contribute(builder);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -0,0 +1,40 @@
 | 
			
		|||
/*
 | 
			
		||||
 * Copyright 2012-2022 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.boot.actuate.info;
 | 
			
		||||
 | 
			
		||||
import org.springframework.boot.info.OsInfo;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * An {@link InfoContributor} that exposes {@link OsInfo}.
 | 
			
		||||
 *
 | 
			
		||||
 * @author Jonatan Ivanov
 | 
			
		||||
 * @since 2.7.0
 | 
			
		||||
 */
 | 
			
		||||
public class OsInfoContributor implements InfoContributor {
 | 
			
		||||
 | 
			
		||||
	private final OsInfo osInfo;
 | 
			
		||||
 | 
			
		||||
	public OsInfoContributor() {
 | 
			
		||||
		this.osInfo = new OsInfo();
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	@Override
 | 
			
		||||
	public void contribute(Info.Builder builder) {
 | 
			
		||||
		builder.withDetail("os", this.osInfo);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,41 @@
 | 
			
		|||
/*
 | 
			
		||||
 * Copyright 2012-2022 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.boot.actuate.info;
 | 
			
		||||
 | 
			
		||||
import org.junit.jupiter.api.Test;
 | 
			
		||||
 | 
			
		||||
import org.springframework.boot.info.OsInfo;
 | 
			
		||||
 | 
			
		||||
import static org.assertj.core.api.Assertions.assertThat;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Tests for {@link OsInfoContributor}
 | 
			
		||||
 *
 | 
			
		||||
 * @author Jonatan Ivanov
 | 
			
		||||
 */
 | 
			
		||||
class OsInfoContributorTests {
 | 
			
		||||
 | 
			
		||||
	@Test
 | 
			
		||||
	void osInfoShouldBeAdded() {
 | 
			
		||||
		OsInfoContributor osInfoContributor = new OsInfoContributor();
 | 
			
		||||
		Info.Builder builder = new Info.Builder();
 | 
			
		||||
		osInfoContributor.contribute(builder);
 | 
			
		||||
		Info info = builder.build();
 | 
			
		||||
		assertThat(info.getDetails().get("os")).isInstanceOf(OsInfo.class);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -1165,13 +1165,18 @@ When appropriate, Spring auto-configures the following `InfoContributor` beans:
 | 
			
		|||
| Exposes Java runtime information.
 | 
			
		||||
| None.
 | 
			
		||||
 | 
			
		||||
| `os`
 | 
			
		||||
| {spring-boot-actuator-module-code}/info/OsInfoContributor.java[`OsInfoContributor`]
 | 
			
		||||
| Exposes Operating System information.
 | 
			
		||||
| None.
 | 
			
		||||
 | 
			
		||||
|===
 | 
			
		||||
 | 
			
		||||
Whether or not an individual contributor is enabled is controlled by its `management.info.<id>.enabled` property.
 | 
			
		||||
Whether an individual contributor is enabled is controlled by its `management.info.<id>.enabled` property.
 | 
			
		||||
Different contributors have different defaults for this property, depending on their prerequisites and the nature of the information that they expose.
 | 
			
		||||
 | 
			
		||||
With no prerequisites to indicate that they should be enabled, the `env` and `java` contributors are disabled by default.
 | 
			
		||||
You can enable them by setting the configprop:management.info.env.enabled[] or configprop:management.info.java.enabled[] properties to `true`.
 | 
			
		||||
With no prerequisites to indicate that they should be enabled, the `env`, `java`, and `os` contributors are disabled by default.
 | 
			
		||||
Each can be enabled by setting its `management.info.<id>.enabled` property to `true`.
 | 
			
		||||
 | 
			
		||||
The `build` and `git` info contributors are enabled by default.
 | 
			
		||||
Each can be disabled by setting its `management.info.<id>.enabled` property to `false`.
 | 
			
		||||
| 
						 | 
				
			
			@ -1262,6 +1267,12 @@ The `info` endpoint publishes information about your Java runtime environment, s
 | 
			
		|||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
[[actuator.endpoints.info.os-information]]
 | 
			
		||||
==== OS Information
 | 
			
		||||
The `info` endpoint publishes information about your Operating System, see {spring-boot-module-api}/info/OsInfo.html[`OsInfo`] for more details.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
[[actuator.endpoints.info.writing-custom-info-contributors]]
 | 
			
		||||
==== Writing Custom InfoContributors
 | 
			
		||||
To provide custom application information, you can register Spring beans that implement the {spring-boot-actuator-module-code}/info/InfoContributor.java[`InfoContributor`] interface.
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -0,0 +1,51 @@
 | 
			
		|||
/*
 | 
			
		||||
 * Copyright 2012-2022 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.boot.info;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Information about the Operating System the application is running on.
 | 
			
		||||
 *
 | 
			
		||||
 * @author Jonatan Ivanov
 | 
			
		||||
 * @since 2.7.0
 | 
			
		||||
 */
 | 
			
		||||
public class OsInfo {
 | 
			
		||||
 | 
			
		||||
	private final String name;
 | 
			
		||||
 | 
			
		||||
	private final String version;
 | 
			
		||||
 | 
			
		||||
	private final String arch;
 | 
			
		||||
 | 
			
		||||
	public OsInfo() {
 | 
			
		||||
		this.name = System.getProperty("os.name");
 | 
			
		||||
		this.version = System.getProperty("os.version");
 | 
			
		||||
		this.arch = System.getProperty("os.arch");
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	public String getName() {
 | 
			
		||||
		return this.name;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	public String getVersion() {
 | 
			
		||||
		return this.version;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	public String getArch() {
 | 
			
		||||
		return this.arch;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,38 @@
 | 
			
		|||
/*
 | 
			
		||||
 * Copyright 2012-2022 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.boot.info;
 | 
			
		||||
 | 
			
		||||
import org.junit.jupiter.api.Test;
 | 
			
		||||
 | 
			
		||||
import static org.assertj.core.api.Assertions.assertThat;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Tests for {@link OsInfo}.
 | 
			
		||||
 *
 | 
			
		||||
 * @author Jonatan Ivanov
 | 
			
		||||
 */
 | 
			
		||||
public class OsInfoTests {
 | 
			
		||||
 | 
			
		||||
	@Test
 | 
			
		||||
	void osInfoIsAvailable() {
 | 
			
		||||
		OsInfo osInfo = new OsInfo();
 | 
			
		||||
		assertThat(osInfo.getName()).isEqualTo(System.getProperty("os.name"));
 | 
			
		||||
		assertThat(osInfo.getVersion()).isEqualTo(System.getProperty("os.version"));
 | 
			
		||||
		assertThat(osInfo.getArch()).isEqualTo(System.getProperty("os.arch"));
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
		Loading…
	
		Reference in New Issue