You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2022/06/26 07:48:46 UTC

[camel] branch main updated: CAMEL-18171: camel-kubernetes - Add secret/configmap property placeholder function

This is an automated email from the ASF dual-hosted git repository.

davsclaus pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel.git


The following commit(s) were added to refs/heads/main by this push:
     new fea24c359e4 CAMEL-18171: camel-kubernetes - Add secret/configmap property placeholder function
fea24c359e4 is described below

commit fea24c359e42095040149bc5fb09adb9885414f8
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Sun Jun 26 09:48:36 2022 +0200

    CAMEL-18171: camel-kubernetes - Add secret/configmap property placeholder function
---
 .../properties/BasePropertiesFunction.java         | 27 +++++++++++++++++-----
 .../ConfigMapMountPropertiesFunctionTest.java      |  1 +
 .../properties/KubernetesClientConfigureTest.java  |  4 ++--
 .../SecretMountPropertiesFunctionTest.java         |  1 +
 4 files changed, 25 insertions(+), 8 deletions(-)

diff --git a/components/camel-kubernetes/src/main/java/org/apache/camel/component/kubernetes/properties/BasePropertiesFunction.java b/components/camel-kubernetes/src/main/java/org/apache/camel/component/kubernetes/properties/BasePropertiesFunction.java
index ab8255f9de3..9b670086ec6 100644
--- a/components/camel-kubernetes/src/main/java/org/apache/camel/component/kubernetes/properties/BasePropertiesFunction.java
+++ b/components/camel-kubernetes/src/main/java/org/apache/camel/component/kubernetes/properties/BasePropertiesFunction.java
@@ -60,6 +60,7 @@ abstract class BasePropertiesFunction extends ServiceSupport implements Properti
 
     private CamelContext camelContext;
     private KubernetesClient client;
+    private boolean clientEnabled = true;
     private String mountPathConfigMaps;
     private String mountPathSecrets;
 
@@ -75,10 +76,10 @@ abstract class BasePropertiesFunction extends ServiceSupport implements Properti
             mountPathSecrets = camelContext.getPropertiesComponent().resolveProperty(MOUNT_PATH_SECRETS)
                     .orElseGet(() -> System.getProperty(ENV_MOUNT_PATH_SECRETS, System.getenv(ENV_MOUNT_PATH_SECRETS)));
         }
-        if (client == null) {
+        if (clientEnabled && client == null) {
             client = CamelContextHelper.findSingleByType(camelContext, KubernetesClient.class);
         }
-        if (client == null) {
+        if (clientEnabled && client == null) {
             // try to auto-configure via properties
             PropertiesComponent pc = camelContext.getPropertiesComponent();
             OrderedLocationProperties properties = (OrderedLocationProperties) pc
@@ -115,10 +116,13 @@ abstract class BasePropertiesFunction extends ServiceSupport implements Properti
             // add to registry so the client can be reused
             camelContext.getRegistry().bind("camelKubernetesClient", client);
         }
-        if (client == null && getMountPath() == null) {
+
+        if (clientEnabled && client == null && getMountPath() == null) {
             throw new IllegalArgumentException("Either a mount path or the Kubernetes Client must be configured");
         }
-
+        if (!clientEnabled && getMountPath() == null) {
+            throw new IllegalArgumentException("Mount path must be configured");
+        }
         if (client != null && LOGGED.compareAndSet(false, true)) {
             // only log once
             LOG.info("KubernetesClient using masterUrl: {} with namespace: {}", client.getMasterUrl(), client.getNamespace());
@@ -146,12 +150,23 @@ abstract class BasePropertiesFunction extends ServiceSupport implements Properti
         this.client = client;
     }
 
+    public boolean isClientEnabled() {
+        return clientEnabled;
+    }
+
+    /**
+     * Whether to use KubernetesClient to lookup from the Kubernetes API server. Is by default enabled.
+     */
+    public void setClientEnabled(boolean clientEnabled) {
+        this.clientEnabled = clientEnabled;
+    }
+
     public String getMountPathConfigMaps() {
         return mountPathConfigMaps;
     }
 
     /**
-     * To use a volume mount to load configmaps, instead of using the Kubernetes API server
+     * To use a volume mount to load configmaps (first), and fallback to using the Kubernetes API server
      */
     public void setMountPathConfigMaps(String mountPathConfigMaps) {
         this.mountPathConfigMaps = mountPathConfigMaps;
@@ -162,7 +177,7 @@ abstract class BasePropertiesFunction extends ServiceSupport implements Properti
     }
 
     /**
-     * To use a volume mount to load secrets, instead of using the Kubernetes API server.
+     * To use a volume mount to load secrets (first), and fallback to using the Kubernetes API server
      */
     public void setMountPathSecrets(String mountPathSecrets) {
         this.mountPathSecrets = mountPathSecrets;
diff --git a/components/camel-kubernetes/src/test/java/org/apache/camel/component/kubernetes/properties/ConfigMapMountPropertiesFunctionTest.java b/components/camel-kubernetes/src/test/java/org/apache/camel/component/kubernetes/properties/ConfigMapMountPropertiesFunctionTest.java
index 64eee16ca01..63606f17641 100644
--- a/components/camel-kubernetes/src/test/java/org/apache/camel/component/kubernetes/properties/ConfigMapMountPropertiesFunctionTest.java
+++ b/components/camel-kubernetes/src/test/java/org/apache/camel/component/kubernetes/properties/ConfigMapMountPropertiesFunctionTest.java
@@ -30,6 +30,7 @@ public class ConfigMapMountPropertiesFunctionTest extends KubernetesTestSupport
     @Order(1)
     public void configMapMountPropertiesFunction() throws Exception {
         ConfigMapPropertiesFunction cmf = new ConfigMapPropertiesFunction();
+        cmf.setClientEnabled(false);
         cmf.setMountPathConfigMaps("src/test/resources/");
         cmf.setCamelContext(context);
         cmf.start();
diff --git a/components/camel-kubernetes/src/test/java/org/apache/camel/component/kubernetes/properties/KubernetesClientConfigureTest.java b/components/camel-kubernetes/src/test/java/org/apache/camel/component/kubernetes/properties/KubernetesClientConfigureTest.java
index 4c155f108da..664a3d14c11 100644
--- a/components/camel-kubernetes/src/test/java/org/apache/camel/component/kubernetes/properties/KubernetesClientConfigureTest.java
+++ b/components/camel-kubernetes/src/test/java/org/apache/camel/component/kubernetes/properties/KubernetesClientConfigureTest.java
@@ -16,6 +16,8 @@
  */
 package org.apache.camel.component.kubernetes.properties;
 
+import java.util.Map;
+
 import io.fabric8.kubernetes.client.ConfigBuilder;
 import org.apache.camel.CamelContext;
 import org.apache.camel.impl.DefaultCamelContext;
@@ -23,8 +25,6 @@ import org.apache.camel.support.PropertyBindingSupport;
 import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.Test;
 
-import java.util.Map;
-
 public class KubernetesClientConfigureTest {
 
     @Test
diff --git a/components/camel-kubernetes/src/test/java/org/apache/camel/component/kubernetes/properties/SecretMountPropertiesFunctionTest.java b/components/camel-kubernetes/src/test/java/org/apache/camel/component/kubernetes/properties/SecretMountPropertiesFunctionTest.java
index d45a1bb8356..fa6e88f1c75 100644
--- a/components/camel-kubernetes/src/test/java/org/apache/camel/component/kubernetes/properties/SecretMountPropertiesFunctionTest.java
+++ b/components/camel-kubernetes/src/test/java/org/apache/camel/component/kubernetes/properties/SecretMountPropertiesFunctionTest.java
@@ -31,6 +31,7 @@ public class SecretMountPropertiesFunctionTest extends KubernetesTestSupport {
     public void secretMountPropertiesFunction() throws Exception {
         SecretPropertiesFunction cmf = new SecretPropertiesFunction();
         cmf.setMountPathSecrets("src/test/resources/");
+        cmf.setClientEnabled(false);
         cmf.setCamelContext(context);
         cmf.start();