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

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

commit e99f68716eb8d6b2b8b7cf703a3f978776e20670
Author: Andrea Cosentino <anco...@gmail.com>
AuthorDate: Tue Jul 5 13:43:34 2022 +0200

    CAMEL-18257 - Camel-Hashicorp-vault: Support list secrets operation
---
 .../camel/component/hashicorp/vault/hashicorp-vault.json       |  2 +-
 .../component/hashicorp/vault/HashicorpVaultOperation.java     |  3 ++-
 .../component/hashicorp/vault/HashicorpVaultProducer.java      | 10 ++++++++++
 3 files changed, 13 insertions(+), 2 deletions(-)

diff --git 
a/components/camel-hashicorp-vault/src/generated/resources/org/apache/camel/component/hashicorp/vault/hashicorp-vault.json
 
b/components/camel-hashicorp-vault/src/generated/resources/org/apache/camel/component/hashicorp/vault/hashicorp-vault.json
index 11dbe253dbe..f81d73d5f55 100644
--- 
a/components/camel-hashicorp-vault/src/generated/resources/org/apache/camel/component/hashicorp/vault/hashicorp-vault.json
+++ 
b/components/camel-hashicorp-vault/src/generated/resources/org/apache/camel/component/hashicorp/vault/hashicorp-vault.json
@@ -33,7 +33,7 @@
   "properties": {
     "secretsEngine": { "kind": "path", "displayName": "Secrets Engine", 
"group": "producer", "label": "", "required": false, "type": "string", 
"javaType": "java.lang.String", "deprecated": false, "autowired": false, 
"secret": false, "configurationClass": 
"org.apache.camel.component.hashicorp.vault.HashicorpVaultConfiguration", 
"configurationField": "configuration", "description": "Vault Name to be used" },
     "host": { "kind": "parameter", "displayName": "Host", "group": "producer", 
"label": "", "required": false, "type": "string", "javaType": 
"java.lang.String", "deprecated": false, "autowired": false, "secret": false, 
"configurationClass": 
"org.apache.camel.component.hashicorp.vault.HashicorpVaultConfiguration", 
"configurationField": "configuration", "description": "Hashicorp Vault instance 
host to be used" },
-    "operation": { "kind": "parameter", "displayName": "Operation", "group": 
"producer", "label": "producer", "required": false, "type": "object", 
"javaType": 
"org.apache.camel.component.hashicorp.vault.HashicorpVaultOperation", "enum": [ 
"createSecret", "getSecret", "deleteSecret" ], "deprecated": false, 
"autowired": false, "secret": false, "configurationClass": 
"org.apache.camel.component.hashicorp.vault.HashicorpVaultConfiguration", 
"configurationField": "configuration", "description" [...]
+    "operation": { "kind": "parameter", "displayName": "Operation", "group": 
"producer", "label": "producer", "required": false, "type": "object", 
"javaType": 
"org.apache.camel.component.hashicorp.vault.HashicorpVaultOperation", "enum": [ 
"createSecret", "getSecret", "deleteSecret", "listSecrets" ], "deprecated": 
false, "autowired": false, "secret": false, "configurationClass": 
"org.apache.camel.component.hashicorp.vault.HashicorpVaultConfiguration", 
"configurationField": "configuration" [...]
     "port": { "kind": "parameter", "displayName": "Port", "group": "producer", 
"label": "", "required": false, "type": "string", "javaType": 
"java.lang.String", "deprecated": false, "autowired": false, "secret": false, 
"defaultValue": "8200", "configurationClass": 
"org.apache.camel.component.hashicorp.vault.HashicorpVaultConfiguration", 
"configurationField": "configuration", "description": "Hashicorp Vault instance 
port to be used" },
     "scheme": { "kind": "parameter", "displayName": "Scheme", "group": 
"producer", "label": "", "required": false, "type": "string", "javaType": 
"java.lang.String", "deprecated": false, "autowired": false, "secret": false, 
"defaultValue": "https", "configurationClass": 
"org.apache.camel.component.hashicorp.vault.HashicorpVaultConfiguration", 
"configurationField": "configuration", "description": "Hashicorp Vault instance 
scheme to be used" },
     "secretPath": { "kind": "parameter", "displayName": "Secret Path", 
"group": "producer", "label": "", "required": false, "type": "string", 
"javaType": "java.lang.String", "deprecated": false, "autowired": false, 
"secret": false, "configurationClass": 
"org.apache.camel.component.hashicorp.vault.HashicorpVaultConfiguration", 
"configurationField": "configuration", "description": "Hashicorp Vault instance 
secret Path to be used" },
diff --git 
a/components/camel-hashicorp-vault/src/main/java/org/apache/camel/component/hashicorp/vault/HashicorpVaultOperation.java
 
b/components/camel-hashicorp-vault/src/main/java/org/apache/camel/component/hashicorp/vault/HashicorpVaultOperation.java
index bc1ed613a84..9565c37e345 100644
--- 
a/components/camel-hashicorp-vault/src/main/java/org/apache/camel/component/hashicorp/vault/HashicorpVaultOperation.java
+++ 
b/components/camel-hashicorp-vault/src/main/java/org/apache/camel/component/hashicorp/vault/HashicorpVaultOperation.java
@@ -19,5 +19,6 @@ package org.apache.camel.component.hashicorp.vault;
 public enum HashicorpVaultOperation {
     createSecret,
     getSecret,
-    deleteSecret
+    deleteSecret,
+    listSecrets
 }
diff --git 
a/components/camel-hashicorp-vault/src/main/java/org/apache/camel/component/hashicorp/vault/HashicorpVaultProducer.java
 
b/components/camel-hashicorp-vault/src/main/java/org/apache/camel/component/hashicorp/vault/HashicorpVaultProducer.java
index 30a0355a4c1..9798a729fe3 100644
--- 
a/components/camel-hashicorp-vault/src/main/java/org/apache/camel/component/hashicorp/vault/HashicorpVaultProducer.java
+++ 
b/components/camel-hashicorp-vault/src/main/java/org/apache/camel/component/hashicorp/vault/HashicorpVaultProducer.java
@@ -27,6 +27,8 @@ import org.springframework.vault.core.VaultKeyValueOperations;
 import org.springframework.vault.core.VaultKeyValueOperationsSupport;
 import org.springframework.vault.support.VaultResponse;
 
+import java.util.List;
+
 public class HashicorpVaultProducer extends DefaultProducer {
 
     private static final Logger LOG = 
LoggerFactory.getLogger(HashicorpVaultProducer.class);
@@ -58,6 +60,9 @@ public class HashicorpVaultProducer extends DefaultProducer {
             case deleteSecret:
                 deleteSecret();
                 break;
+            case listSecrets:
+                listSecrets(exchange);
+                break;
             default:
                 throw new IllegalArgumentException("Unsupported operation");
         }
@@ -96,6 +101,11 @@ public class HashicorpVaultProducer extends DefaultProducer 
{
         keyValue.delete(getEndpoint().getConfiguration().getSecretPath());
     }
 
+    private void listSecrets(Exchange exchange) {
+        List<String> secretsList = 
getEndpoint().getVaultTemplate().list(getEndpoint().getConfiguration().getSecretsEngine()
 + "/" + "metadata" + "/");
+        exchange.getMessage().setBody(secretsList);
+    }
+
     @Override
     public HashicorpVaultEndpoint getEndpoint() {
         return (HashicorpVaultEndpoint) super.getEndpoint();

Reply via email to