This is an automated email from the ASF dual-hosted git repository. davsclaus pushed a commit to branch camel-spring-boot-4.8.x in repository https://gitbox.apache.org/repos/asf/camel-spring-boot.git
The following commit(s) were added to refs/heads/camel-spring-boot-4.8.x by this push: new 409f5ab2cd2 camel-jolokia-starter: Enables discovery on local environment (#1337) 409f5ab2cd2 is described below commit 409f5ab2cd22785eed5fc84d51c503336687b319 Author: Tom Cunningham <tcunn...@redhat.com> AuthorDate: Wed Jan 8 02:20:06 2025 -0500 camel-jolokia-starter: Enables discovery on local environment (#1337) Co-authored-by: Marco Carletti <mcarl...@redhat.com> --- .../src/main/docs/jolokia.adoc | 1 + .../JolokiaComponentAutoConfiguration.java | 6 ++++++ ...entAutoConfigurationDiscoveryDisabledTest.java} | 23 ++++++++++------------ ...JolokiaComponentAutoConfigurationOnK8STest.java | 2 ++ .../JolokiaComponentAutoConfigurationTest.java | 5 ++++- .../springboot/JolokiaComponentTestBase.java | 14 +++++++++++++ 6 files changed, 37 insertions(+), 14 deletions(-) diff --git a/components-starter/camel-jolokia-starter/src/main/docs/jolokia.adoc b/components-starter/camel-jolokia-starter/src/main/docs/jolokia.adoc index 49f1c2d9435..d9fff0f299a 100644 --- a/components-starter/camel-jolokia-starter/src/main/docs/jolokia.adoc +++ b/components-starter/camel-jolokia-starter/src/main/docs/jolokia.adoc @@ -29,6 +29,7 @@ Moreover, it is possible to configure the Jolokia server accessing to the config according to https://jolokia.org/reference/html/manual/agents.html#jvm-agent-installation[Jolokia agent configuration] using `camel.component.jolokia.server-config` map configuration, i.e. `camel.component.jolokia.server-config.port=8779` or `camel.component.jolokia.server-config.authMode=jaas` + The value of the `discoveryEnabled` configuration key is set to `true` on JVM local environment (not on Kubernetes), to allow the Hawtio process to discover the Jolokia agent. It is possible to disable the default configuration by setting `camel.component.jolokia.server-config.discoveryEnabled=false`. To avoid to expose all the JMX MBeans (see https://jolokia.org/reference/html/manual/security.html[Security] considerations), it is provided a default Jolokia https://jolokia.org/reference/html/manual/security.html#security-restrictor[Restrictor] diff --git a/components-starter/camel-jolokia-starter/src/main/java/org/apache/camel/component/jolokia/springboot/JolokiaComponentAutoConfiguration.java b/components-starter/camel-jolokia-starter/src/main/java/org/apache/camel/component/jolokia/springboot/JolokiaComponentAutoConfiguration.java index d7b2a5aba14..275b5611e9b 100644 --- a/components-starter/camel-jolokia-starter/src/main/java/org/apache/camel/component/jolokia/springboot/JolokiaComponentAutoConfiguration.java +++ b/components-starter/camel-jolokia-starter/src/main/java/org/apache/camel/component/jolokia/springboot/JolokiaComponentAutoConfiguration.java @@ -89,6 +89,7 @@ public class JolokiaComponentAutoConfiguration { setDefaultConfigValue(ConfigKey.RESTRICTOR_CLASS.getKeyValue(), "org.apache.camel.component.jolokia.springboot.restrictor.CamelRestrictor"); } + boolean k8sSet = false; if (configuration.isKubernetesDiscover()) { LOG.debug("trying to discover k8s environment"); final String caCert = configuration.isKubernetesUseDefaultCa() ? DEFAULT_CA_ON_K8S @@ -97,10 +98,15 @@ public class JolokiaComponentAutoConfiguration { setDefaultConfigValue("protocol", "https"); setDefaultConfigValue("useSslClientAuthentication", "true"); setDefaultConfigValue("caCert", caCert); + k8sSet = true; } else { LOG.debug("kubernetesDiscover is enabled but the file {} does not exist, no additional properties will be set", caCert); } } + //enable discovery on local JVM not in a POD + if (!k8sSet && !Files.exists(Path.of(DEFAULT_CA_ON_K8S))) { + setDefaultConfigValue("discoveryEnabled", "true"); + } springJolokiaConfigHolder.setConfig(configuration.getServerConfig()); return springJolokiaConfigHolder; } diff --git a/components-starter/camel-jolokia-starter/src/test/java/org/apache/camel/component/jolokia/springboot/JolokiaComponentTestBase.java b/components-starter/camel-jolokia-starter/src/test/java/org/apache/camel/component/jolokia/springboot/JolokiaComponentAutoConfigurationDiscoveryDisabledTest.java similarity index 60% copy from components-starter/camel-jolokia-starter/src/test/java/org/apache/camel/component/jolokia/springboot/JolokiaComponentTestBase.java copy to components-starter/camel-jolokia-starter/src/test/java/org/apache/camel/component/jolokia/springboot/JolokiaComponentAutoConfigurationDiscoveryDisabledTest.java index 096ad25bc30..0b5902f5893 100644 --- a/components-starter/camel-jolokia-starter/src/test/java/org/apache/camel/component/jolokia/springboot/JolokiaComponentTestBase.java +++ b/components-starter/camel-jolokia-starter/src/test/java/org/apache/camel/component/jolokia/springboot/JolokiaComponentAutoConfigurationDiscoveryDisabledTest.java @@ -16,20 +16,17 @@ */ package org.apache.camel.component.jolokia.springboot; -import static org.assertj.core.api.AssertionsForClassTypes.assertThat; +import org.apache.camel.spring.boot.CamelAutoConfiguration; +import org.junit.jupiter.api.Test; +import org.springframework.boot.test.context.SpringBootTest; -import org.junit.jupiter.api.BeforeEach; +@SpringBootTest(classes = {CamelAutoConfiguration.class, JolokiaComponentAutoConfiguration.class}, + properties = {"camel.component.jolokia.serverConfig.port=0" + , "camel.component.jolokia.server-config.discoveryEnabled=false"}) +public class JolokiaComponentAutoConfigurationDiscoveryDisabledTest extends JolokiaComponentTestBase { -import org.jolokia.support.spring.SpringJolokiaAgent; -import org.springframework.beans.factory.annotation.Autowired; - -class JolokiaComponentTestBase { - - @Autowired(required = false) - protected SpringJolokiaAgent agent; - - @BeforeEach - void checkAgentIsAutoWired() { - assertThat(agent).isNotNull(); + @Test + void discoveryDisabledByPropertyTest() { + assertDiscoveryEnabled(false); } } diff --git a/components-starter/camel-jolokia-starter/src/test/java/org/apache/camel/component/jolokia/springboot/JolokiaComponentAutoConfigurationOnK8STest.java b/components-starter/camel-jolokia-starter/src/test/java/org/apache/camel/component/jolokia/springboot/JolokiaComponentAutoConfigurationOnK8STest.java index 27428fb51af..b1f547b7976 100644 --- a/components-starter/camel-jolokia-starter/src/test/java/org/apache/camel/component/jolokia/springboot/JolokiaComponentAutoConfigurationOnK8STest.java +++ b/components-starter/camel-jolokia-starter/src/test/java/org/apache/camel/component/jolokia/springboot/JolokiaComponentAutoConfigurationOnK8STest.java @@ -69,5 +69,7 @@ public class JolokiaComponentAutoConfigurationOnK8STest extends JolokiaComponent .hasFieldOrPropertyWithValue("context", "/jolokia/") .hasFieldOrPropertyWithValue("useSslClientAuthentication", true) .hasFieldOrProperty("caCert").isNotNull(); + + assertDiscoveryEnabled(false); } } diff --git a/components-starter/camel-jolokia-starter/src/test/java/org/apache/camel/component/jolokia/springboot/JolokiaComponentAutoConfigurationTest.java b/components-starter/camel-jolokia-starter/src/test/java/org/apache/camel/component/jolokia/springboot/JolokiaComponentAutoConfigurationTest.java index 6504a2ee11e..e9d858b6c90 100644 --- a/components-starter/camel-jolokia-starter/src/test/java/org/apache/camel/component/jolokia/springboot/JolokiaComponentAutoConfigurationTest.java +++ b/components-starter/camel-jolokia-starter/src/test/java/org/apache/camel/component/jolokia/springboot/JolokiaComponentAutoConfigurationTest.java @@ -78,7 +78,8 @@ public class JolokiaComponentAutoConfigurationTest extends JolokiaComponentTestB .asInstanceOf(InstanceOfAssertFactories.map(String.class, String.class)) .containsEntry("host", "0.0.0.0") .containsEntry("autoStart", "true") - .containsEntry("restrictorClass", CamelRestrictor.class.getCanonicalName()); + .containsEntry("restrictorClass", CamelRestrictor.class.getCanonicalName()) + .containsEntry("discoveryEnabled", "true"); Assertions.assertThat(agent).as("check default agent/server configuration") .hasFieldOrPropertyWithValue("lookupConfig", false) @@ -89,5 +90,7 @@ public class JolokiaComponentAutoConfigurationTest extends JolokiaComponentTestB .extracting("config") .hasFieldOrPropertyWithValue("protocol", "http") .hasFieldOrPropertyWithValue("context", "/jolokia/"); + + assertDiscoveryEnabled(true); } } diff --git a/components-starter/camel-jolokia-starter/src/test/java/org/apache/camel/component/jolokia/springboot/JolokiaComponentTestBase.java b/components-starter/camel-jolokia-starter/src/test/java/org/apache/camel/component/jolokia/springboot/JolokiaComponentTestBase.java index 096ad25bc30..e1b26025c9d 100644 --- a/components-starter/camel-jolokia-starter/src/test/java/org/apache/camel/component/jolokia/springboot/JolokiaComponentTestBase.java +++ b/components-starter/camel-jolokia-starter/src/test/java/org/apache/camel/component/jolokia/springboot/JolokiaComponentTestBase.java @@ -20,6 +20,9 @@ import static org.assertj.core.api.AssertionsForClassTypes.assertThat; import org.junit.jupiter.api.BeforeEach; +import org.assertj.core.api.Assertions; +import org.assertj.core.api.InstanceOfAssertFactories; +import org.jolokia.server.core.config.ConfigKey; import org.jolokia.support.spring.SpringJolokiaAgent; import org.springframework.beans.factory.annotation.Autowired; @@ -32,4 +35,15 @@ class JolokiaComponentTestBase { void checkAgentIsAutoWired() { assertThat(agent).isNotNull(); } + + protected void assertDiscoveryEnabled(boolean value) { + Assertions.assertThat(agent).as("check Discovery feature configuration") + .extracting("serviceManager") + .extracting("configuration") + .extracting("configMap") + .asInstanceOf(InstanceOfAssertFactories.map(ConfigKey.class, String.class)) + .extractingByKey(ConfigKey.DISCOVERY_ENABLED) + .isNotNull() + .isEqualTo(String.valueOf(value)); + } }