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));
+       }
 }

Reply via email to