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();