You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by ac...@apache.org on 2025/11/06 13:03:50 UTC
(camel) branch ops-cyberark created (now e9678bafeddd)
This is an automated email from the ASF dual-hosted git repository.
acosentino pushed a change to branch ops-cyberark
in repository https://gitbox.apache.org/repos/asf/camel.git
at e9678bafeddd CAMEL-22665 - Camel-Cyberark-Vault: Support more producer operation
This branch includes the following new commits:
new 438252d5a9ab CAMEL-22665 - Camel-Cyberark-Vault: Support more producer operation
new e9678bafeddd CAMEL-22665 - Camel-Cyberark-Vault: Support more producer operation
The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails. The revisions
listed as "add" were already present in the repository and have only
been added to this reference.
(camel) 01/02: CAMEL-22665 - Camel-Cyberark-Vault: Support more producer operation
Posted by ac...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
acosentino pushed a commit to branch ops-cyberark
in repository https://gitbox.apache.org/repos/asf/camel.git
commit 438252d5a9ab049a3bcc63a33515b854f4730511
Author: Andrea Cosentino <an...@gmail.com>
AuthorDate: Wed Nov 5 18:55:11 2025 +0100
CAMEL-22665 - Camel-Cyberark-Vault: Support more producer operation
Signed-off-by: Andrea Cosentino <an...@gmail.com>
---
.../camel/catalog/components/cyberark-vault.json | 34 ++++++++--------
.../vault/CyberArkVaultComponentConfigurer.java | 3 ++
.../vault/CyberArkVaultEndpointConfigurer.java | 3 ++
.../vault/CyberArkVaultEndpointUriFactory.java | 3 +-
.../component/cyberark/vault/cyberark-vault.json | 34 ++++++++--------
.../cyberark/vault/CyberArkVaultConfiguration.java | 14 +++++++
.../cyberark/vault/CyberArkVaultOperations.java | 33 ++++++++++++++++
.../cyberark/vault/CyberArkVaultProducer.java | 45 +++++++++++++++++-----
.../cyberark/vault/client/ConjurClient.java | 8 ++++
.../vault/client/impl/ConjurClientImpl.java | 41 ++++++++++++++++++++
.../camel/main/DefaultConfigurationConfigurer.java | 5 +++
.../dsl/CyberarkVaultComponentBuilderFactory.java | 19 +++++++++
.../dsl/CyberArkVaultEndpointBuilderFactory.java | 32 +++++++++++++++
13 files changed, 231 insertions(+), 43 deletions(-)
diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/cyberark-vault.json b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/cyberark-vault.json
index 35d20a8facf5..86e62ebf0c16 100644
--- a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/cyberark-vault.json
+++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/cyberark-vault.json
@@ -29,27 +29,29 @@
"configuration": { "index": 2, "kind": "property", "displayName": "Configuration", "group": "producer", "label": "", "required": false, "type": "object", "javaType": "org.apache.camel.component.cyberark.vault.CyberArkVaultConfiguration", "deprecated": false, "autowired": false, "secret": false, "description": "Component configuration" },
"conjurClient": { "index": 3, "kind": "property", "displayName": "Conjur Client", "group": "producer", "label": "", "required": false, "type": "object", "javaType": "org.apache.camel.component.cyberark.vault.client.ConjurClient", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.cyberark.vault.CyberArkVaultConfiguration", "configurationField": "configuration", "description": "Reference to a ConjurClient instance in the registry" },
"lazyStartProducer": { "index": 4, "kind": "property", "displayName": "Lazy Start Producer", "group": "producer", "label": "producer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail [...]
- "secretId": { "index": 5, "kind": "property", "displayName": "Secret Id", "group": "producer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.cyberark.vault.CyberArkVaultConfiguration", "configurationField": "configuration", "description": "The secret ID to retrieve from CyberArk Conjur" },
- "url": { "index": 6, "kind": "property", "displayName": "Url", "group": "producer", "label": "", "required": true, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.cyberark.vault.CyberArkVaultConfiguration", "configurationField": "configuration", "description": "The CyberArk Conjur instance URL" },
- "verifySsl": { "index": 7, "kind": "property", "displayName": "Verify Ssl", "group": "producer", "label": "", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "configurationClass": "org.apache.camel.component.cyberark.vault.CyberArkVaultConfiguration", "configurationField": "configuration", "description": "Whether to verify SSL certificates when connecting to CyberArk Conjur" },
- "autowiredEnabled": { "index": 8, "kind": "property", "displayName": "Autowired Enabled", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "description": "Whether autowiring is enabled. This is used for automatic autowiring options (the option must be marked as autowired) by looking up in the registry to find if there is a single instance of matching t [...]
- "apiKey": { "index": 9, "kind": "property", "displayName": "Api Key", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.cyberark.vault.CyberArkVaultConfiguration", "configurationField": "configuration", "description": "The API key for authentication with CyberArk Conjur" },
- "authToken": { "index": 10, "kind": "property", "displayName": "Auth Token", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.cyberark.vault.CyberArkVaultConfiguration", "configurationField": "configuration", "description": "Pre-authenticated token to use for CyberArk Conjur" },
- "password": { "index": 11, "kind": "property", "displayName": "Password", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.cyberark.vault.CyberArkVaultConfiguration", "configurationField": "configuration", "description": "The password for authentication with CyberArk Conjur" },
- "username": { "index": 12, "kind": "property", "displayName": "Username", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.cyberark.vault.CyberArkVaultConfiguration", "configurationField": "configuration", "description": "The username for authentication with CyberArk Conjur" }
+ "operation": { "index": 5, "kind": "property", "displayName": "Operation", "group": "producer", "label": "", "required": false, "type": "enum", "javaType": "org.apache.camel.component.cyberark.vault.CyberArkVaultOperations", "enum": [ "getSecret", "createSecret" ], "deprecated": false, "autowired": false, "secret": false, "defaultValue": "getSecret", "configurationClass": "org.apache.camel.component.cyberark.vault.CyberArkVaultConfiguration", "configurationField": "configuration", "d [...]
+ "secretId": { "index": 6, "kind": "property", "displayName": "Secret Id", "group": "producer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.cyberark.vault.CyberArkVaultConfiguration", "configurationField": "configuration", "description": "The secret ID to retrieve from CyberArk Conjur" },
+ "url": { "index": 7, "kind": "property", "displayName": "Url", "group": "producer", "label": "", "required": true, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.cyberark.vault.CyberArkVaultConfiguration", "configurationField": "configuration", "description": "The CyberArk Conjur instance URL" },
+ "verifySsl": { "index": 8, "kind": "property", "displayName": "Verify Ssl", "group": "producer", "label": "", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "configurationClass": "org.apache.camel.component.cyberark.vault.CyberArkVaultConfiguration", "configurationField": "configuration", "description": "Whether to verify SSL certificates when connecting to CyberArk Conjur" },
+ "autowiredEnabled": { "index": 9, "kind": "property", "displayName": "Autowired Enabled", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "description": "Whether autowiring is enabled. This is used for automatic autowiring options (the option must be marked as autowired) by looking up in the registry to find if there is a single instance of matching t [...]
+ "apiKey": { "index": 10, "kind": "property", "displayName": "Api Key", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.cyberark.vault.CyberArkVaultConfiguration", "configurationField": "configuration", "description": "The API key for authentication with CyberArk Conjur" },
+ "authToken": { "index": 11, "kind": "property", "displayName": "Auth Token", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.cyberark.vault.CyberArkVaultConfiguration", "configurationField": "configuration", "description": "Pre-authenticated token to use for CyberArk Conjur" },
+ "password": { "index": 12, "kind": "property", "displayName": "Password", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.cyberark.vault.CyberArkVaultConfiguration", "configurationField": "configuration", "description": "The password for authentication with CyberArk Conjur" },
+ "username": { "index": 13, "kind": "property", "displayName": "Username", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.cyberark.vault.CyberArkVaultConfiguration", "configurationField": "configuration", "description": "The username for authentication with CyberArk Conjur" }
},
"properties": {
"label": { "index": 0, "kind": "path", "displayName": "Label", "group": "producer", "label": "", "required": true, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.cyberark.vault.CyberArkVaultConfiguration", "configurationField": "configuration", "description": "Logical name" },
"account": { "index": 1, "kind": "parameter", "displayName": "Account", "group": "producer", "label": "", "required": true, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.cyberark.vault.CyberArkVaultConfiguration", "configurationField": "configuration", "description": "The CyberArk Conjur account name" },
"certificatePath": { "index": 2, "kind": "parameter", "displayName": "Certificate Path", "group": "producer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.cyberark.vault.CyberArkVaultConfiguration", "configurationField": "configuration", "description": "Path to the SSL certificate for verification" },
"conjurClient": { "index": 3, "kind": "parameter", "displayName": "Conjur Client", "group": "producer", "label": "", "required": false, "type": "object", "javaType": "org.apache.camel.component.cyberark.vault.client.ConjurClient", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.cyberark.vault.CyberArkVaultConfiguration", "configurationField": "configuration", "description": "Reference to a ConjurClient instance in the registry" },
- "secretId": { "index": 4, "kind": "parameter", "displayName": "Secret Id", "group": "producer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.cyberark.vault.CyberArkVaultConfiguration", "configurationField": "configuration", "description": "The secret ID to retrieve from CyberArk Conjur" },
- "url": { "index": 5, "kind": "parameter", "displayName": "Url", "group": "producer", "label": "", "required": true, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.cyberark.vault.CyberArkVaultConfiguration", "configurationField": "configuration", "description": "The CyberArk Conjur instance URL" },
- "verifySsl": { "index": 6, "kind": "parameter", "displayName": "Verify Ssl", "group": "producer", "label": "", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "configurationClass": "org.apache.camel.component.cyberark.vault.CyberArkVaultConfiguration", "configurationField": "configuration", "description": "Whether to verify SSL certificates when connecting to CyberArk Conjur" },
- "lazyStartProducer": { "index": 7, "kind": "parameter", "displayName": "Lazy Start Producer", "group": "producer (advanced)", "label": "producer,advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a produc [...]
- "apiKey": { "index": 8, "kind": "parameter", "displayName": "Api Key", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.cyberark.vault.CyberArkVaultConfiguration", "configurationField": "configuration", "description": "The API key for authentication with CyberArk Conjur" },
- "authToken": { "index": 9, "kind": "parameter", "displayName": "Auth Token", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.cyberark.vault.CyberArkVaultConfiguration", "configurationField": "configuration", "description": "Pre-authenticated token to use for CyberArk Conjur" },
- "password": { "index": 10, "kind": "parameter", "displayName": "Password", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.cyberark.vault.CyberArkVaultConfiguration", "configurationField": "configuration", "description": "The password for authentication with CyberArk Conjur" },
- "username": { "index": 11, "kind": "parameter", "displayName": "Username", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.cyberark.vault.CyberArkVaultConfiguration", "configurationField": "configuration", "description": "The username for authentication with CyberArk Conjur" }
+ "operation": { "index": 4, "kind": "parameter", "displayName": "Operation", "group": "producer", "label": "", "required": false, "type": "enum", "javaType": "org.apache.camel.component.cyberark.vault.CyberArkVaultOperations", "enum": [ "getSecret", "createSecret" ], "deprecated": false, "autowired": false, "secret": false, "defaultValue": "getSecret", "configurationClass": "org.apache.camel.component.cyberark.vault.CyberArkVaultConfiguration", "configurationField": "configuration", " [...]
+ "secretId": { "index": 5, "kind": "parameter", "displayName": "Secret Id", "group": "producer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.cyberark.vault.CyberArkVaultConfiguration", "configurationField": "configuration", "description": "The secret ID to retrieve from CyberArk Conjur" },
+ "url": { "index": 6, "kind": "parameter", "displayName": "Url", "group": "producer", "label": "", "required": true, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.cyberark.vault.CyberArkVaultConfiguration", "configurationField": "configuration", "description": "The CyberArk Conjur instance URL" },
+ "verifySsl": { "index": 7, "kind": "parameter", "displayName": "Verify Ssl", "group": "producer", "label": "", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "configurationClass": "org.apache.camel.component.cyberark.vault.CyberArkVaultConfiguration", "configurationField": "configuration", "description": "Whether to verify SSL certificates when connecting to CyberArk Conjur" },
+ "lazyStartProducer": { "index": 8, "kind": "parameter", "displayName": "Lazy Start Producer", "group": "producer (advanced)", "label": "producer,advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a produc [...]
+ "apiKey": { "index": 9, "kind": "parameter", "displayName": "Api Key", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.cyberark.vault.CyberArkVaultConfiguration", "configurationField": "configuration", "description": "The API key for authentication with CyberArk Conjur" },
+ "authToken": { "index": 10, "kind": "parameter", "displayName": "Auth Token", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.cyberark.vault.CyberArkVaultConfiguration", "configurationField": "configuration", "description": "Pre-authenticated token to use for CyberArk Conjur" },
+ "password": { "index": 11, "kind": "parameter", "displayName": "Password", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.cyberark.vault.CyberArkVaultConfiguration", "configurationField": "configuration", "description": "The password for authentication with CyberArk Conjur" },
+ "username": { "index": 12, "kind": "parameter", "displayName": "Username", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.cyberark.vault.CyberArkVaultConfiguration", "configurationField": "configuration", "description": "The username for authentication with CyberArk Conjur" }
}
}
diff --git a/components/camel-cyberark-vault/src/generated/java/org/apache/camel/component/cyberark/vault/CyberArkVaultComponentConfigurer.java b/components/camel-cyberark-vault/src/generated/java/org/apache/camel/component/cyberark/vault/CyberArkVaultComponentConfigurer.java
index 2152522a502b..de7072cdf68e 100644
--- a/components/camel-cyberark-vault/src/generated/java/org/apache/camel/component/cyberark/vault/CyberArkVaultComponentConfigurer.java
+++ b/components/camel-cyberark-vault/src/generated/java/org/apache/camel/component/cyberark/vault/CyberArkVaultComponentConfigurer.java
@@ -44,6 +44,7 @@ public class CyberArkVaultComponentConfigurer extends PropertyConfigurerSupport
case "conjurClient": getOrCreateConfiguration(target).setConjurClient(property(camelContext, org.apache.camel.component.cyberark.vault.client.ConjurClient.class, value)); return true;
case "lazystartproducer":
case "lazyStartProducer": target.setLazyStartProducer(property(camelContext, boolean.class, value)); return true;
+ case "operation": getOrCreateConfiguration(target).setOperation(property(camelContext, org.apache.camel.component.cyberark.vault.CyberArkVaultOperations.class, value)); return true;
case "password": getOrCreateConfiguration(target).setPassword(property(camelContext, java.lang.String.class, value)); return true;
case "secretid":
case "secretId": getOrCreateConfiguration(target).setSecretId(property(camelContext, java.lang.String.class, value)); return true;
@@ -72,6 +73,7 @@ public class CyberArkVaultComponentConfigurer extends PropertyConfigurerSupport
case "conjurClient": return org.apache.camel.component.cyberark.vault.client.ConjurClient.class;
case "lazystartproducer":
case "lazyStartProducer": return boolean.class;
+ case "operation": return org.apache.camel.component.cyberark.vault.CyberArkVaultOperations.class;
case "password": return java.lang.String.class;
case "secretid":
case "secretId": return java.lang.String.class;
@@ -101,6 +103,7 @@ public class CyberArkVaultComponentConfigurer extends PropertyConfigurerSupport
case "conjurClient": return getOrCreateConfiguration(target).getConjurClient();
case "lazystartproducer":
case "lazyStartProducer": return target.isLazyStartProducer();
+ case "operation": return getOrCreateConfiguration(target).getOperation();
case "password": return getOrCreateConfiguration(target).getPassword();
case "secretid":
case "secretId": return getOrCreateConfiguration(target).getSecretId();
diff --git a/components/camel-cyberark-vault/src/generated/java/org/apache/camel/component/cyberark/vault/CyberArkVaultEndpointConfigurer.java b/components/camel-cyberark-vault/src/generated/java/org/apache/camel/component/cyberark/vault/CyberArkVaultEndpointConfigurer.java
index 4ac03c22b058..bb26aa512acd 100644
--- a/components/camel-cyberark-vault/src/generated/java/org/apache/camel/component/cyberark/vault/CyberArkVaultEndpointConfigurer.java
+++ b/components/camel-cyberark-vault/src/generated/java/org/apache/camel/component/cyberark/vault/CyberArkVaultEndpointConfigurer.java
@@ -34,6 +34,7 @@ public class CyberArkVaultEndpointConfigurer extends PropertyConfigurerSupport i
case "conjurClient": target.getConfiguration().setConjurClient(property(camelContext, org.apache.camel.component.cyberark.vault.client.ConjurClient.class, value)); return true;
case "lazystartproducer":
case "lazyStartProducer": target.setLazyStartProducer(property(camelContext, boolean.class, value)); return true;
+ case "operation": target.getConfiguration().setOperation(property(camelContext, org.apache.camel.component.cyberark.vault.CyberArkVaultOperations.class, value)); return true;
case "password": target.getConfiguration().setPassword(property(camelContext, java.lang.String.class, value)); return true;
case "secretid":
case "secretId": target.getConfiguration().setSecretId(property(camelContext, java.lang.String.class, value)); return true;
@@ -59,6 +60,7 @@ public class CyberArkVaultEndpointConfigurer extends PropertyConfigurerSupport i
case "conjurClient": return org.apache.camel.component.cyberark.vault.client.ConjurClient.class;
case "lazystartproducer":
case "lazyStartProducer": return boolean.class;
+ case "operation": return org.apache.camel.component.cyberark.vault.CyberArkVaultOperations.class;
case "password": return java.lang.String.class;
case "secretid":
case "secretId": return java.lang.String.class;
@@ -85,6 +87,7 @@ public class CyberArkVaultEndpointConfigurer extends PropertyConfigurerSupport i
case "conjurClient": return target.getConfiguration().getConjurClient();
case "lazystartproducer":
case "lazyStartProducer": return target.isLazyStartProducer();
+ case "operation": return target.getConfiguration().getOperation();
case "password": return target.getConfiguration().getPassword();
case "secretid":
case "secretId": return target.getConfiguration().getSecretId();
diff --git a/components/camel-cyberark-vault/src/generated/java/org/apache/camel/component/cyberark/vault/CyberArkVaultEndpointUriFactory.java b/components/camel-cyberark-vault/src/generated/java/org/apache/camel/component/cyberark/vault/CyberArkVaultEndpointUriFactory.java
index 1f2ba8d12ff3..79ca1030626c 100644
--- a/components/camel-cyberark-vault/src/generated/java/org/apache/camel/component/cyberark/vault/CyberArkVaultEndpointUriFactory.java
+++ b/components/camel-cyberark-vault/src/generated/java/org/apache/camel/component/cyberark/vault/CyberArkVaultEndpointUriFactory.java
@@ -23,7 +23,7 @@ public class CyberArkVaultEndpointUriFactory extends org.apache.camel.support.co
private static final Set<String> SECRET_PROPERTY_NAMES;
private static final Map<String, String> MULTI_VALUE_PREFIXES;
static {
- Set<String> props = new HashSet<>(12);
+ Set<String> props = new HashSet<>(13);
props.add("account");
props.add("apiKey");
props.add("authToken");
@@ -31,6 +31,7 @@ public class CyberArkVaultEndpointUriFactory extends org.apache.camel.support.co
props.add("conjurClient");
props.add("label");
props.add("lazyStartProducer");
+ props.add("operation");
props.add("password");
props.add("secretId");
props.add("url");
diff --git a/components/camel-cyberark-vault/src/generated/resources/META-INF/org/apache/camel/component/cyberark/vault/cyberark-vault.json b/components/camel-cyberark-vault/src/generated/resources/META-INF/org/apache/camel/component/cyberark/vault/cyberark-vault.json
index 35d20a8facf5..86e62ebf0c16 100644
--- a/components/camel-cyberark-vault/src/generated/resources/META-INF/org/apache/camel/component/cyberark/vault/cyberark-vault.json
+++ b/components/camel-cyberark-vault/src/generated/resources/META-INF/org/apache/camel/component/cyberark/vault/cyberark-vault.json
@@ -29,27 +29,29 @@
"configuration": { "index": 2, "kind": "property", "displayName": "Configuration", "group": "producer", "label": "", "required": false, "type": "object", "javaType": "org.apache.camel.component.cyberark.vault.CyberArkVaultConfiguration", "deprecated": false, "autowired": false, "secret": false, "description": "Component configuration" },
"conjurClient": { "index": 3, "kind": "property", "displayName": "Conjur Client", "group": "producer", "label": "", "required": false, "type": "object", "javaType": "org.apache.camel.component.cyberark.vault.client.ConjurClient", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.cyberark.vault.CyberArkVaultConfiguration", "configurationField": "configuration", "description": "Reference to a ConjurClient instance in the registry" },
"lazyStartProducer": { "index": 4, "kind": "property", "displayName": "Lazy Start Producer", "group": "producer", "label": "producer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail [...]
- "secretId": { "index": 5, "kind": "property", "displayName": "Secret Id", "group": "producer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.cyberark.vault.CyberArkVaultConfiguration", "configurationField": "configuration", "description": "The secret ID to retrieve from CyberArk Conjur" },
- "url": { "index": 6, "kind": "property", "displayName": "Url", "group": "producer", "label": "", "required": true, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.cyberark.vault.CyberArkVaultConfiguration", "configurationField": "configuration", "description": "The CyberArk Conjur instance URL" },
- "verifySsl": { "index": 7, "kind": "property", "displayName": "Verify Ssl", "group": "producer", "label": "", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "configurationClass": "org.apache.camel.component.cyberark.vault.CyberArkVaultConfiguration", "configurationField": "configuration", "description": "Whether to verify SSL certificates when connecting to CyberArk Conjur" },
- "autowiredEnabled": { "index": 8, "kind": "property", "displayName": "Autowired Enabled", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "description": "Whether autowiring is enabled. This is used for automatic autowiring options (the option must be marked as autowired) by looking up in the registry to find if there is a single instance of matching t [...]
- "apiKey": { "index": 9, "kind": "property", "displayName": "Api Key", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.cyberark.vault.CyberArkVaultConfiguration", "configurationField": "configuration", "description": "The API key for authentication with CyberArk Conjur" },
- "authToken": { "index": 10, "kind": "property", "displayName": "Auth Token", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.cyberark.vault.CyberArkVaultConfiguration", "configurationField": "configuration", "description": "Pre-authenticated token to use for CyberArk Conjur" },
- "password": { "index": 11, "kind": "property", "displayName": "Password", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.cyberark.vault.CyberArkVaultConfiguration", "configurationField": "configuration", "description": "The password for authentication with CyberArk Conjur" },
- "username": { "index": 12, "kind": "property", "displayName": "Username", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.cyberark.vault.CyberArkVaultConfiguration", "configurationField": "configuration", "description": "The username for authentication with CyberArk Conjur" }
+ "operation": { "index": 5, "kind": "property", "displayName": "Operation", "group": "producer", "label": "", "required": false, "type": "enum", "javaType": "org.apache.camel.component.cyberark.vault.CyberArkVaultOperations", "enum": [ "getSecret", "createSecret" ], "deprecated": false, "autowired": false, "secret": false, "defaultValue": "getSecret", "configurationClass": "org.apache.camel.component.cyberark.vault.CyberArkVaultConfiguration", "configurationField": "configuration", "d [...]
+ "secretId": { "index": 6, "kind": "property", "displayName": "Secret Id", "group": "producer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.cyberark.vault.CyberArkVaultConfiguration", "configurationField": "configuration", "description": "The secret ID to retrieve from CyberArk Conjur" },
+ "url": { "index": 7, "kind": "property", "displayName": "Url", "group": "producer", "label": "", "required": true, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.cyberark.vault.CyberArkVaultConfiguration", "configurationField": "configuration", "description": "The CyberArk Conjur instance URL" },
+ "verifySsl": { "index": 8, "kind": "property", "displayName": "Verify Ssl", "group": "producer", "label": "", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "configurationClass": "org.apache.camel.component.cyberark.vault.CyberArkVaultConfiguration", "configurationField": "configuration", "description": "Whether to verify SSL certificates when connecting to CyberArk Conjur" },
+ "autowiredEnabled": { "index": 9, "kind": "property", "displayName": "Autowired Enabled", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "description": "Whether autowiring is enabled. This is used for automatic autowiring options (the option must be marked as autowired) by looking up in the registry to find if there is a single instance of matching t [...]
+ "apiKey": { "index": 10, "kind": "property", "displayName": "Api Key", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.cyberark.vault.CyberArkVaultConfiguration", "configurationField": "configuration", "description": "The API key for authentication with CyberArk Conjur" },
+ "authToken": { "index": 11, "kind": "property", "displayName": "Auth Token", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.cyberark.vault.CyberArkVaultConfiguration", "configurationField": "configuration", "description": "Pre-authenticated token to use for CyberArk Conjur" },
+ "password": { "index": 12, "kind": "property", "displayName": "Password", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.cyberark.vault.CyberArkVaultConfiguration", "configurationField": "configuration", "description": "The password for authentication with CyberArk Conjur" },
+ "username": { "index": 13, "kind": "property", "displayName": "Username", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.cyberark.vault.CyberArkVaultConfiguration", "configurationField": "configuration", "description": "The username for authentication with CyberArk Conjur" }
},
"properties": {
"label": { "index": 0, "kind": "path", "displayName": "Label", "group": "producer", "label": "", "required": true, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.cyberark.vault.CyberArkVaultConfiguration", "configurationField": "configuration", "description": "Logical name" },
"account": { "index": 1, "kind": "parameter", "displayName": "Account", "group": "producer", "label": "", "required": true, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.cyberark.vault.CyberArkVaultConfiguration", "configurationField": "configuration", "description": "The CyberArk Conjur account name" },
"certificatePath": { "index": 2, "kind": "parameter", "displayName": "Certificate Path", "group": "producer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.cyberark.vault.CyberArkVaultConfiguration", "configurationField": "configuration", "description": "Path to the SSL certificate for verification" },
"conjurClient": { "index": 3, "kind": "parameter", "displayName": "Conjur Client", "group": "producer", "label": "", "required": false, "type": "object", "javaType": "org.apache.camel.component.cyberark.vault.client.ConjurClient", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.cyberark.vault.CyberArkVaultConfiguration", "configurationField": "configuration", "description": "Reference to a ConjurClient instance in the registry" },
- "secretId": { "index": 4, "kind": "parameter", "displayName": "Secret Id", "group": "producer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.cyberark.vault.CyberArkVaultConfiguration", "configurationField": "configuration", "description": "The secret ID to retrieve from CyberArk Conjur" },
- "url": { "index": 5, "kind": "parameter", "displayName": "Url", "group": "producer", "label": "", "required": true, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.cyberark.vault.CyberArkVaultConfiguration", "configurationField": "configuration", "description": "The CyberArk Conjur instance URL" },
- "verifySsl": { "index": 6, "kind": "parameter", "displayName": "Verify Ssl", "group": "producer", "label": "", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "configurationClass": "org.apache.camel.component.cyberark.vault.CyberArkVaultConfiguration", "configurationField": "configuration", "description": "Whether to verify SSL certificates when connecting to CyberArk Conjur" },
- "lazyStartProducer": { "index": 7, "kind": "parameter", "displayName": "Lazy Start Producer", "group": "producer (advanced)", "label": "producer,advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a produc [...]
- "apiKey": { "index": 8, "kind": "parameter", "displayName": "Api Key", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.cyberark.vault.CyberArkVaultConfiguration", "configurationField": "configuration", "description": "The API key for authentication with CyberArk Conjur" },
- "authToken": { "index": 9, "kind": "parameter", "displayName": "Auth Token", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.cyberark.vault.CyberArkVaultConfiguration", "configurationField": "configuration", "description": "Pre-authenticated token to use for CyberArk Conjur" },
- "password": { "index": 10, "kind": "parameter", "displayName": "Password", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.cyberark.vault.CyberArkVaultConfiguration", "configurationField": "configuration", "description": "The password for authentication with CyberArk Conjur" },
- "username": { "index": 11, "kind": "parameter", "displayName": "Username", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.cyberark.vault.CyberArkVaultConfiguration", "configurationField": "configuration", "description": "The username for authentication with CyberArk Conjur" }
+ "operation": { "index": 4, "kind": "parameter", "displayName": "Operation", "group": "producer", "label": "", "required": false, "type": "enum", "javaType": "org.apache.camel.component.cyberark.vault.CyberArkVaultOperations", "enum": [ "getSecret", "createSecret" ], "deprecated": false, "autowired": false, "secret": false, "defaultValue": "getSecret", "configurationClass": "org.apache.camel.component.cyberark.vault.CyberArkVaultConfiguration", "configurationField": "configuration", " [...]
+ "secretId": { "index": 5, "kind": "parameter", "displayName": "Secret Id", "group": "producer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.cyberark.vault.CyberArkVaultConfiguration", "configurationField": "configuration", "description": "The secret ID to retrieve from CyberArk Conjur" },
+ "url": { "index": 6, "kind": "parameter", "displayName": "Url", "group": "producer", "label": "", "required": true, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.cyberark.vault.CyberArkVaultConfiguration", "configurationField": "configuration", "description": "The CyberArk Conjur instance URL" },
+ "verifySsl": { "index": 7, "kind": "parameter", "displayName": "Verify Ssl", "group": "producer", "label": "", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "configurationClass": "org.apache.camel.component.cyberark.vault.CyberArkVaultConfiguration", "configurationField": "configuration", "description": "Whether to verify SSL certificates when connecting to CyberArk Conjur" },
+ "lazyStartProducer": { "index": 8, "kind": "parameter", "displayName": "Lazy Start Producer", "group": "producer (advanced)", "label": "producer,advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a produc [...]
+ "apiKey": { "index": 9, "kind": "parameter", "displayName": "Api Key", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.cyberark.vault.CyberArkVaultConfiguration", "configurationField": "configuration", "description": "The API key for authentication with CyberArk Conjur" },
+ "authToken": { "index": 10, "kind": "parameter", "displayName": "Auth Token", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.cyberark.vault.CyberArkVaultConfiguration", "configurationField": "configuration", "description": "Pre-authenticated token to use for CyberArk Conjur" },
+ "password": { "index": 11, "kind": "parameter", "displayName": "Password", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.cyberark.vault.CyberArkVaultConfiguration", "configurationField": "configuration", "description": "The password for authentication with CyberArk Conjur" },
+ "username": { "index": 12, "kind": "parameter", "displayName": "Username", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.cyberark.vault.CyberArkVaultConfiguration", "configurationField": "configuration", "description": "The username for authentication with CyberArk Conjur" }
}
}
diff --git a/components/camel-cyberark-vault/src/main/java/org/apache/camel/component/cyberark/vault/CyberArkVaultConfiguration.java b/components/camel-cyberark-vault/src/main/java/org/apache/camel/component/cyberark/vault/CyberArkVaultConfiguration.java
index fc6583d455a4..d7b862b8cded 100644
--- a/components/camel-cyberark-vault/src/main/java/org/apache/camel/component/cyberark/vault/CyberArkVaultConfiguration.java
+++ b/components/camel-cyberark-vault/src/main/java/org/apache/camel/component/cyberark/vault/CyberArkVaultConfiguration.java
@@ -36,6 +36,9 @@ public class CyberArkVaultConfiguration implements Cloneable {
@UriParam(description = "The secret ID to retrieve from CyberArk Conjur")
private String secretId;
+ @UriParam(defaultValue = "getSecret")
+ private CyberArkVaultOperations operation = CyberArkVaultOperations.getSecret;
+
@UriParam
@Metadata(required = true)
private String url;
@@ -87,6 +90,17 @@ public class CyberArkVaultConfiguration implements Cloneable {
this.secretId = secretId;
}
+ public CyberArkVaultOperations getOperation() {
+ return operation;
+ }
+
+ /**
+ * The operation to perform. It can be getSecret or createSecret
+ */
+ public void setOperation(CyberArkVaultOperations operation) {
+ this.operation = operation;
+ }
+
public String getUrl() {
return url;
}
diff --git a/components/camel-cyberark-vault/src/main/java/org/apache/camel/component/cyberark/vault/CyberArkVaultOperations.java b/components/camel-cyberark-vault/src/main/java/org/apache/camel/component/cyberark/vault/CyberArkVaultOperations.java
new file mode 100644
index 000000000000..16c3a1a55110
--- /dev/null
+++ b/components/camel-cyberark-vault/src/main/java/org/apache/camel/component/cyberark/vault/CyberArkVaultOperations.java
@@ -0,0 +1,33 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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
+ *
+ * http://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.apache.camel.component.cyberark.vault;
+
+/**
+ * CyberArk Conjur Vault operations
+ */
+public enum CyberArkVaultOperations {
+
+ /**
+ * Retrieve a secret value from Conjur Vault
+ */
+ getSecret,
+
+ /**
+ * Create or update a secret in Conjur Vault
+ */
+ createSecret
+}
diff --git a/components/camel-cyberark-vault/src/main/java/org/apache/camel/component/cyberark/vault/CyberArkVaultProducer.java b/components/camel-cyberark-vault/src/main/java/org/apache/camel/component/cyberark/vault/CyberArkVaultProducer.java
index df090ab6fd42..badd6041711a 100644
--- a/components/camel-cyberark-vault/src/main/java/org/apache/camel/component/cyberark/vault/CyberArkVaultProducer.java
+++ b/components/camel-cyberark-vault/src/main/java/org/apache/camel/component/cyberark/vault/CyberArkVaultProducer.java
@@ -38,7 +38,12 @@ public class CyberArkVaultProducer extends DefaultProducer {
@Override
public void process(Exchange exchange) throws Exception {
- String version = exchange.getMessage().getHeader(CyberArkVaultConstants.SECRET_VERSION, String.class);
+ // Determine operation: Header > URI parameter
+ CyberArkVaultOperations operation = exchange.getMessage().getHeader(
+ CyberArkVaultConstants.OPERATION, CyberArkVaultOperations.class);
+ if (operation == null) {
+ operation = getConfiguration().getOperation();
+ }
// Priority: Header > URI parameter
String secretId = exchange.getMessage().getHeader(CyberArkVaultConstants.SECRET_ID, String.class);
@@ -52,17 +57,37 @@ public class CyberArkVaultProducer extends DefaultProducer {
+ CyberArkVaultConstants.SECRET_ID + ")");
}
- LOG.trace("Retrieving secret from CyberArk Conjur with id: {}", secretId);
-
ConjurClient client = getEndpoint().getConjurClient();
- String secretValue = client.retrieveSecret(secretId, version);
-
Message message = exchange.getMessage();
- message.setBody(secretValue);
- message.setHeader(CyberArkVaultConstants.SECRET_ID, secretId);
- message.setHeader(CyberArkVaultConstants.SECRET_VALUE, secretValue);
- if (version != null) {
- message.setHeader(CyberArkVaultConstants.SECRET_VERSION, version);
+
+ switch (operation) {
+ case getSecret:
+ String version = message.getHeader(CyberArkVaultConstants.SECRET_VERSION, String.class);
+ LOG.trace("Retrieving secret from CyberArk Conjur with id: {}", secretId);
+ String secretValue = client.retrieveSecret(secretId, version);
+ message.setBody(secretValue);
+ message.setHeader(CyberArkVaultConstants.SECRET_ID, secretId);
+ message.setHeader(CyberArkVaultConstants.SECRET_VALUE, secretValue);
+ if (version != null) {
+ message.setHeader(CyberArkVaultConstants.SECRET_VERSION, version);
+ }
+ break;
+ case createSecret:
+ String secretValueToCreate = message.getHeader(CyberArkVaultConstants.SECRET_VALUE, String.class);
+ if (ObjectHelper.isEmpty(secretValueToCreate)) {
+ secretValueToCreate = message.getBody(String.class);
+ }
+ if (ObjectHelper.isEmpty(secretValueToCreate)) {
+ throw new IllegalArgumentException(
+ "Secret value must be specified either as message body or as a message header ("
+ + CyberArkVaultConstants.SECRET_VALUE + ")");
+ }
+ LOG.trace("Creating/updating secret in CyberArk Conjur with id: {}", secretId);
+ client.createSecret(secretId, secretValueToCreate);
+ message.setHeader(CyberArkVaultConstants.SECRET_ID, secretId);
+ break;
+ default:
+ throw new IllegalArgumentException("Unsupported operation: " + operation);
}
}
diff --git a/components/camel-cyberark-vault/src/main/java/org/apache/camel/component/cyberark/vault/client/ConjurClient.java b/components/camel-cyberark-vault/src/main/java/org/apache/camel/component/cyberark/vault/client/ConjurClient.java
index ccf2c36f1aac..f82222465b8c 100644
--- a/components/camel-cyberark-vault/src/main/java/org/apache/camel/component/cyberark/vault/client/ConjurClient.java
+++ b/components/camel-cyberark-vault/src/main/java/org/apache/camel/component/cyberark/vault/client/ConjurClient.java
@@ -38,6 +38,14 @@ public interface ConjurClient extends AutoCloseable {
*/
String retrieveSecret(String secretId, String version);
+ /**
+ * Create or update a secret in Conjur
+ *
+ * @param secretId the ID of the secret to create/update
+ * @param secretValue the value to store
+ */
+ void createSecret(String secretId, String secretValue);
+
/**
* Authenticate with Conjur and obtain an access token
*
diff --git a/components/camel-cyberark-vault/src/main/java/org/apache/camel/component/cyberark/vault/client/impl/ConjurClientImpl.java b/components/camel-cyberark-vault/src/main/java/org/apache/camel/component/cyberark/vault/client/impl/ConjurClientImpl.java
index 34d5b4b99b0d..339f3154e367 100644
--- a/components/camel-cyberark-vault/src/main/java/org/apache/camel/component/cyberark/vault/client/impl/ConjurClientImpl.java
+++ b/components/camel-cyberark-vault/src/main/java/org/apache/camel/component/cyberark/vault/client/impl/ConjurClientImpl.java
@@ -155,6 +155,47 @@ public class ConjurClientImpl implements ConjurClient {
}
}
+ @Override
+ public void createSecret(String secretId, String secretValue) {
+ try {
+ // Ensure we have a valid token
+ if (authToken == null) {
+ authToken = authenticate();
+ }
+
+ // URL encode the secret ID
+ String encodedSecretId = URLEncoder.encode(secretId, StandardCharsets.UTF_8);
+
+ // Build the secrets endpoint URL for creating/updating
+ String secretsUrl = String.format("%s/secrets/%s/variable/%s",
+ url, account, encodedSecretId);
+
+ HttpRequest request = HttpRequest.newBuilder()
+ .uri(URI.create(secretsUrl))
+ .header("Authorization", "Token token=\"" + Base64.getEncoder()
+ .encodeToString(authToken.getBytes(StandardCharsets.UTF_8)) + "\"")
+ .header("Content-Type", "text/plain")
+ .POST(HttpRequest.BodyPublishers.ofString(secretValue))
+ .build();
+
+ HttpResponse<String> response = httpClient.send(request, HttpResponse.BodyHandlers.ofString());
+
+ if (response.statusCode() == 201 || response.statusCode() == 200) {
+ LOG.debug("Successfully created/updated secret: {}", secretId);
+ } else if (response.statusCode() == 401) {
+ // Token expired, re-authenticate and retry
+ LOG.debug("Token expired, re-authenticating");
+ authToken = authenticate();
+ createSecret(secretId, secretValue);
+ } else {
+ throw new IOException(
+ "Failed to create/update secret: HTTP " + response.statusCode() + " - " + response.body());
+ }
+ } catch (IOException | InterruptedException e) {
+ throw new RuntimeException("Error creating/updating secret in Conjur: " + secretId, e);
+ }
+ }
+
@Override
public void close() throws Exception {
authToken = null;
diff --git a/core/camel-main/src/main/java/org/apache/camel/main/DefaultConfigurationConfigurer.java b/core/camel-main/src/main/java/org/apache/camel/main/DefaultConfigurationConfigurer.java
index 92420d4d765a..63bb32b3f063 100644
--- a/core/camel-main/src/main/java/org/apache/camel/main/DefaultConfigurationConfigurer.java
+++ b/core/camel-main/src/main/java/org/apache/camel/main/DefaultConfigurationConfigurer.java
@@ -659,6 +659,11 @@ public final class DefaultConfigurationConfigurer {
VaultConfiguration vault = camelContext.getVaultConfiguration();
vault.setIBMSecretsManagerVaultConfiguration(ibmSecretsManager);
}
+ CyberArkVaultConfiguration cyberark = getSingleBeanOfType(registry, CyberArkVaultConfiguration.class);
+ if (cyberark != null) {
+ VaultConfiguration vault = camelContext.getVaultConfiguration();
+ vault.setCyberArkVaultConfiguration(cyberark);
+ }
configureVaultRefresh(camelContext);
// apply custom configurations if any
diff --git a/dsl/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/CyberarkVaultComponentBuilderFactory.java b/dsl/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/CyberarkVaultComponentBuilderFactory.java
index 2fd7298616db..9b956fec3ab2 100644
--- a/dsl/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/CyberarkVaultComponentBuilderFactory.java
+++ b/dsl/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/CyberarkVaultComponentBuilderFactory.java
@@ -137,6 +137,24 @@ public interface CyberarkVaultComponentBuilderFactory {
return this;
}
+
+ /**
+ * The operation to perform. It can be getSecret or createSecret.
+ *
+ * The option is a:
+ * <code>org.apache.camel.component.cyberark.vault.CyberArkVaultOperations</code> type.
+ *
+ * Default: getSecret
+ * Group: producer
+ *
+ * @param operation the value to set
+ * @return the dsl builder
+ */
+ default CyberarkVaultComponentBuilder operation(org.apache.camel.component.cyberark.vault.CyberArkVaultOperations operation) {
+ doSetProperty("operation", operation);
+ return this;
+ }
+
/**
* The secret ID to retrieve from CyberArk Conjur.
*
@@ -292,6 +310,7 @@ public interface CyberarkVaultComponentBuilderFactory {
case "configuration": ((CyberArkVaultComponent) component).setConfiguration((org.apache.camel.component.cyberark.vault.CyberArkVaultConfiguration) value); return true;
case "conjurClient": getOrCreateConfiguration((CyberArkVaultComponent) component).setConjurClient((org.apache.camel.component.cyberark.vault.client.ConjurClient) value); return true;
case "lazyStartProducer": ((CyberArkVaultComponent) component).setLazyStartProducer((boolean) value); return true;
+ case "operation": getOrCreateConfiguration((CyberArkVaultComponent) component).setOperation((org.apache.camel.component.cyberark.vault.CyberArkVaultOperations) value); return true;
case "secretId": getOrCreateConfiguration((CyberArkVaultComponent) component).setSecretId((java.lang.String) value); return true;
case "url": getOrCreateConfiguration((CyberArkVaultComponent) component).setUrl((java.lang.String) value); return true;
case "verifySsl": getOrCreateConfiguration((CyberArkVaultComponent) component).setVerifySsl((boolean) value); return true;
diff --git a/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/CyberArkVaultEndpointBuilderFactory.java b/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/CyberArkVaultEndpointBuilderFactory.java
index 01866351a578..b9a35f973e9f 100644
--- a/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/CyberArkVaultEndpointBuilderFactory.java
+++ b/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/CyberArkVaultEndpointBuilderFactory.java
@@ -103,6 +103,38 @@ public interface CyberArkVaultEndpointBuilderFactory {
doSetProperty("conjurClient", conjurClient);
return this;
}
+ /**
+ * The operation to perform. It can be getSecret or createSecret.
+ *
+ * The option is a:
+ * <code>org.apache.camel.component.cyberark.vault.CyberArkVaultOperations</code> type.
+ *
+ * Default: getSecret
+ * Group: producer
+ *
+ * @param operation the value to set
+ * @return the dsl builder
+ */
+ default CyberArkVaultEndpointBuilder operation(org.apache.camel.component.cyberark.vault.CyberArkVaultOperations operation) {
+ doSetProperty("operation", operation);
+ return this;
+ }
+ /**
+ * The operation to perform. It can be getSecret or createSecret.
+ *
+ * The option will be converted to a
+ * <code>org.apache.camel.component.cyberark.vault.CyberArkVaultOperations</code> type.
+ *
+ * Default: getSecret
+ * Group: producer
+ *
+ * @param operation the value to set
+ * @return the dsl builder
+ */
+ default CyberArkVaultEndpointBuilder operation(String operation) {
+ doSetProperty("operation", operation);
+ return this;
+ }
/**
* The secret ID to retrieve from CyberArk Conjur.
*
(camel) 02/02: CAMEL-22665 - Camel-Cyberark-Vault: Support more producer operation
Posted by ac...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
acosentino pushed a commit to branch ops-cyberark
in repository https://gitbox.apache.org/repos/asf/camel.git
commit e9678bafeddd2441e1838bd89e901b1bcd8428c3
Author: Andrea Cosentino <an...@gmail.com>
AuthorDate: Thu Nov 6 14:02:44 2025 +0100
CAMEL-22665 - Camel-Cyberark-Vault: Support more producer operation
Signed-off-by: Andrea Cosentino <an...@gmail.com>
---
.../src/main/docs/cyberark-vault-component.adoc | 69 ++++++++++++++++++++--
1 file changed, 65 insertions(+), 4 deletions(-)
diff --git a/components/camel-cyberark-vault/src/main/docs/cyberark-vault-component.adoc b/components/camel-cyberark-vault/src/main/docs/cyberark-vault-component.adoc
index 63a37e18d8dd..d995cff30e3e 100644
--- a/components/camel-cyberark-vault/src/main/docs/cyberark-vault-component.adoc
+++ b/components/camel-cyberark-vault/src/main/docs/cyberark-vault-component.adoc
@@ -112,6 +112,25 @@ camel.vault.cyberark.username=host/myapp
camel.vault.cyberark.apiKey=3ahx8dy3...
----
+=== Operations
+
+The component supports the following operations:
+
+* **getSecret** (default) - Retrieve a secret value from CyberArk Conjur
+* **createSecret** - Create or update a secret in CyberArk Conjur
+
+You can specify the operation either as a URI parameter or via message header:
+
+[source,java]
+----
+// Using URI parameter
+.to("cyberark-vault:secret?operation=getSecret&secretId=db/password&...")
+
+// Using message header
+.setHeader(CyberArkVaultConstants.OPERATION, constant(CyberArkVaultOperations.createSecret))
+.to("cyberark-vault:secret?...")
+----
+
=== Examples
==== Property Placeholders
@@ -146,15 +165,15 @@ from("direct:start")
.to("...");
----
-==== Using the Component Endpoint
+==== Retrieve a Secret (getSecret)
-You can also use the component endpoint directly:
+You can retrieve a secret using the component endpoint:
Using URI parameter:
[source,java]
----
from("direct:start")
- .to("cyberark-vault:secret?secretId=db/password&url=https://conjur.example.com&account=myaccount&username=admin&password=secretpass")
+ .to("cyberark-vault:secret?operation=getSecret&secretId=db/password&url=https://conjur.example.com&account=myaccount&username=admin&password=secretpass")
.log("Retrieved secret: ${body}");
----
@@ -163,10 +182,52 @@ Using message header for dynamic secret retrieval:
----
from("direct:start")
.setHeader(CyberArkVaultConstants.SECRET_ID, simple("${header.secretName}"))
- .to("cyberark-vault:secret?url=https://conjur.example.com&account=myaccount&username=admin&password=secretpass")
+ .to("cyberark-vault:secret?operation=getSecret&url=https://conjur.example.com&account=myaccount&username=admin&password=secretpass")
.log("Retrieved secret: ${body}");
----
+Retrieve a specific version of a secret:
+[source,java]
+----
+from("direct:start")
+ .setHeader(CyberArkVaultConstants.SECRET_VERSION, constant("3"))
+ .to("cyberark-vault:secret?secretId=db/password&url=https://conjur.example.com&account=myaccount&username=admin&apiKey=3ahx8dy3...")
+ .log("Retrieved secret version 3: ${body}");
+----
+
+==== Create or Update a Secret (createSecret)
+
+To create or update a secret, use the createSecret operation with the secret value in the message body or header:
+
+Using message body:
+[source,java]
+----
+from("direct:start")
+ .setBody(constant("mySecretValue123"))
+ .to("cyberark-vault:secret?operation=createSecret&secretId=app/apikey&url=https://conjur.example.com&account=myaccount&username=admin&apiKey=3ahx8dy3...")
+ .log("Secret created/updated");
+----
+
+Using message header:
+[source,java]
+----
+from("direct:start")
+ .setHeader(CyberArkVaultConstants.SECRET_VALUE, constant("myNewPassword"))
+ .setHeader(CyberArkVaultConstants.SECRET_ID, constant("db/password"))
+ .to("cyberark-vault:secret?operation=createSecret&url=https://conjur.example.com&account=myaccount&username=admin&apiKey=3ahx8dy3...")
+ .log("Secret created/updated");
+----
+
+Dynamic secret creation:
+[source,java]
+----
+from("direct:start")
+ .setBody(simple("${header.newSecretValue}"))
+ .setHeader(CyberArkVaultConstants.SECRET_ID, simple("${header.secretPath}"))
+ .to("cyberark-vault:secret?operation=createSecret&url=https://conjur.example.com&account=myaccount&username=admin&apiKey=3ahx8dy3...")
+ .log("Secret ${header.secretPath} created/updated");
+----
+
=== SSL Certificate Verification
By default, SSL certificate verification is enabled. You can disable it for testing purposes (not recommended for production):