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
The following commit(s) were added to refs/heads/main by this push:
new eccc5028e98 CAMEL-21905 - Camel-IBM-Secrets-Manager: Implement secret
refresh by using IBM Event Streams as destination of notifications - Add poll
timeout parameter (#17635)
eccc5028e98 is described below
commit eccc5028e9894e6690356542e6332497966841e0
Author: Andrea Cosentino <[email protected]>
AuthorDate: Tue Apr 1 12:08:20 2025 +0200
CAMEL-21905 - Camel-IBM-Secrets-Manager: Implement secret refresh by using
IBM Event Streams as destination of notifications - Add poll timeout parameter
(#17635)
Signed-off-by: Andrea Cosentino <[email protected]>
---
.../catalog/main/camel-main-configuration-metadata.json | 1 +
.../manager/vault/IBMEventStreamReloadTriggerTask.java | 14 ++++++++++----
.../camel/vault/IBMSecretsManagerVaultConfiguration.java | 13 +++++++++++++
.../IBMSecretsManagerVaultConfigurationConfigurer.java | 6 ++++++
...cretsManagerVaultConfigurationPropertiesConfigurer.java | 7 +++++++
.../META-INF/camel-main-configuration-metadata.json | 1 +
core/camel-main/src/main/docs/main.adoc | 3 ++-
7 files changed, 40 insertions(+), 5 deletions(-)
diff --git
a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/main/camel-main-configuration-metadata.json
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/main/camel-main-configuration-metadata.json
index a7b979a3db1..8db967e7b0c 100644
---
a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/main/camel-main-configuration-metadata.json
+++
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/main/camel-main-configuration-metadata.json
@@ -393,6 +393,7 @@
{ "name": "camel.vault.hashicorp.scheme", "description": "Scheme to access
hashicorp vault", "sourceType":
"org.apache.camel.vault.HashicorpVaultConfiguration", "type": "string",
"javaType": "java.lang.String" },
{ "name": "camel.vault.hashicorp.token", "description": "Token to access
hashicorp vault", "sourceType":
"org.apache.camel.vault.HashicorpVaultConfiguration", "type": "string",
"javaType": "java.lang.String" },
{ "name": "camel.vault.ibm.eventStreamBootstrapServers", "description":
"Specify the Bootstrap servers for consuming notification on IBM Event Stream.
Multiple servers can be separated by comma.", "sourceType":
"org.apache.camel.vault.IBMSecretsManagerVaultConfiguration", "type": "string",
"javaType": "java.lang.String" },
+ { "name": "camel.vault.ibm.eventStreamConsumerPollTimeout", "description":
"Specify the Consumer Poll Timeout while consuming from IBM Event Stream
Topic", "sourceType":
"org.apache.camel.vault.IBMSecretsManagerVaultConfiguration", "type":
"integer", "javaType": "long", "defaultValue": 3000 },
{ "name": "camel.vault.ibm.eventStreamGroupId", "description": "Specify
the Consumer Group ID to access IBM Event Stream", "sourceType":
"org.apache.camel.vault.IBMSecretsManagerVaultConfiguration", "type": "string",
"javaType": "java.lang.String" },
{ "name": "camel.vault.ibm.eventStreamPassword", "description": "Specify
the password to access IBM Event Stream", "sourceType":
"org.apache.camel.vault.IBMSecretsManagerVaultConfiguration", "type": "string",
"javaType": "java.lang.String" },
{ "name": "camel.vault.ibm.eventStreamTopic", "description": "Specify the
topic name for consuming notification on IBM Event Stream", "sourceType":
"org.apache.camel.vault.IBMSecretsManagerVaultConfiguration", "type": "string",
"javaType": "java.lang.String" },
diff --git
a/components/camel-ibm-secrets-manager/src/main/java/org/apache/camel/component/ibm/secrets/manager/vault/IBMEventStreamReloadTriggerTask.java
b/components/camel-ibm-secrets-manager/src/main/java/org/apache/camel/component/ibm/secrets/manager/vault/IBMEventStreamReloadTriggerTask.java
index 21b010c2626..a5ae92e6e3e 100644
---
a/components/camel-ibm-secrets-manager/src/main/java/org/apache/camel/component/ibm/secrets/manager/vault/IBMEventStreamReloadTriggerTask.java
+++
b/components/camel-ibm-secrets-manager/src/main/java/org/apache/camel/component/ibm/secrets/manager/vault/IBMEventStreamReloadTriggerTask.java
@@ -29,7 +29,6 @@ import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.node.ArrayNode;
-import com.ibm.cloud.secrets_manager_sdk.secrets_manager.v2.SecretsManager;
import org.apache.camel.CamelContext;
import org.apache.camel.CamelContextAware;
import org.apache.camel.RuntimeCamelException;
@@ -65,11 +64,11 @@ public class IBMEventStreamReloadTriggerTask extends
ServiceSupport implements C
private static final String CAMEL_VAULT_IBM_EVENTSTREAM_PASSWORD_ENV =
"CAMEL_VAULT_IBM_EVENTSTREAM_PASSWORD";
private static final String
CAMEL_VAULT_IBM_EVENTSTREAM_CONSUMER_GROUPID_ENV
= "CAMEL_VAULT_IBM_EVENTSTREAM_CONSUMER_GROUP_ID";
+ private static final String
CAMEL_VAULT_IBM_EVENTSTREAM_CONSUMER_POLL_TIMEOUT_ENV
+ = "CAMEL_VAULT_IBM_EVENTSTREAM_CONSUMER_POLL_TIMEOUT";
private CamelContext camelContext;
- private SecretsManager client;
- private String secretGroup;
private boolean reloadEnabled = true;
private String secrets;
private IBMSecretsManagerPropertiesFunction propertiesFunction;
@@ -79,6 +78,7 @@ public class IBMEventStreamReloadTriggerTask extends
ServiceSupport implements C
private final Map<String, Instant> updates = new HashMap<>();
KafkaConsumer<String, String> kafkaConsumer;
private static final String IBM_SECRETS_MANAGER_SECRET_ROTATED_EVENT =
"secret_rotated";
+ protected long pollTimeout;
private static final Logger LOG =
LoggerFactory.getLogger(IBMEventStreamReloadTriggerTask.class);
@@ -104,6 +104,12 @@ public class IBMEventStreamReloadTriggerTask extends
ServiceSupport implements C
String topic = System.getenv(CAMEL_VAULT_IBM_EVENTSTREAM_TOPIC_ENV);
String username =
System.getenv(CAMEL_VAULT_IBM_EVENTSTREAM_USERNAME_ENV);
String password =
System.getenv(CAMEL_VAULT_IBM_EVENTSTREAM_PASSWORD_ENV);
+ if
(ObjectHelper.isNotEmpty(System.getenv(CAMEL_VAULT_IBM_EVENTSTREAM_CONSUMER_POLL_TIMEOUT_ENV)))
{
+ pollTimeout =
Long.parseLong(System.getenv(CAMEL_VAULT_IBM_EVENTSTREAM_CONSUMER_POLL_TIMEOUT_ENV));
+ } else {
+ pollTimeout =
getCamelContext().getVaultConfiguration().getIBMSecretsManagerVaultConfiguration()
+ .getEventStreamConsumerPollTimeout();
+ }
if (ObjectHelper.isEmpty(bootstrapServers) &&
ObjectHelper.isEmpty(groupId) && ObjectHelper.isEmpty(topic)
&& ObjectHelper.isEmpty(password)) {
@@ -156,7 +162,7 @@ public class IBMEventStreamReloadTriggerTask extends
ServiceSupport implements C
ObjectMapper mapper = new ObjectMapper();
while (true) {
- ConsumerRecords<String, String> records =
kafkaConsumer.poll(Duration.ofMillis(100));
+ ConsumerRecords<String, String> records =
kafkaConsumer.poll(Duration.ofMillis(pollTimeout));
for (ConsumerRecord<String, String> record : records) {
JsonNode recordJson;
diff --git
a/core/camel-api/src/main/java/org/apache/camel/vault/IBMSecretsManagerVaultConfiguration.java
b/core/camel-api/src/main/java/org/apache/camel/vault/IBMSecretsManagerVaultConfiguration.java
index e1ef7fb199b..0a8cdcc30af 100644
---
a/core/camel-api/src/main/java/org/apache/camel/vault/IBMSecretsManagerVaultConfiguration.java
+++
b/core/camel-api/src/main/java/org/apache/camel/vault/IBMSecretsManagerVaultConfiguration.java
@@ -41,6 +41,8 @@ public class IBMSecretsManagerVaultConfiguration extends
VaultConfiguration {
private String eventStreamPassword;
@Metadata
private String eventStreamGroupId;
+ @Metadata(defaultValue = "3000")
+ private long eventStreamConsumerPollTimeout = 3000;
public String getToken() {
return token;
@@ -141,4 +143,15 @@ public class IBMSecretsManagerVaultConfiguration extends
VaultConfiguration {
public void setEventStreamGroupId(String eventStreamGroupId) {
this.eventStreamGroupId = eventStreamGroupId;
}
+
+ public long getEventStreamConsumerPollTimeout() {
+ return eventStreamConsumerPollTimeout;
+ }
+
+ /**
+ * Specify the Consumer Poll Timeout while consuming from IBM Event Stream
Topic
+ */
+ public void setEventStreamConsumerPollTimeout(long
eventStreamConsumerPollTimeout) {
+ this.eventStreamConsumerPollTimeout = eventStreamConsumerPollTimeout;
+ }
}
diff --git
a/core/camel-main/src/generated/java/org/apache/camel/main/IBMSecretsManagerVaultConfigurationConfigurer.java
b/core/camel-main/src/generated/java/org/apache/camel/main/IBMSecretsManagerVaultConfigurationConfigurer.java
index 352ccf43d03..6cb28ea5990 100644
---
a/core/camel-main/src/generated/java/org/apache/camel/main/IBMSecretsManagerVaultConfigurationConfigurer.java
+++
b/core/camel-main/src/generated/java/org/apache/camel/main/IBMSecretsManagerVaultConfigurationConfigurer.java
@@ -29,6 +29,8 @@ public class IBMSecretsManagerVaultConfigurationConfigurer
extends org.apache.ca
case "azureVaultConfiguration":
target.setAzureVaultConfiguration(property(camelContext,
org.apache.camel.vault.AzureVaultConfiguration.class, value)); return true;
case "eventstreambootstrapservers":
case "eventStreamBootstrapServers":
target.setEventStreamBootstrapServers(property(camelContext,
java.lang.String.class, value)); return true;
+ case "eventstreamconsumerpolltimeout":
+ case "eventStreamConsumerPollTimeout":
target.setEventStreamConsumerPollTimeout(property(camelContext, long.class,
value)); return true;
case "eventstreamgroupid":
case "eventStreamGroupId":
target.setEventStreamGroupId(property(camelContext, java.lang.String.class,
value)); return true;
case "eventstreampassword":
@@ -66,6 +68,8 @@ public class IBMSecretsManagerVaultConfigurationConfigurer
extends org.apache.ca
case "azureVaultConfiguration": return
org.apache.camel.vault.AzureVaultConfiguration.class;
case "eventstreambootstrapservers":
case "eventStreamBootstrapServers": return java.lang.String.class;
+ case "eventstreamconsumerpolltimeout":
+ case "eventStreamConsumerPollTimeout": return long.class;
case "eventstreamgroupid":
case "eventStreamGroupId": return java.lang.String.class;
case "eventstreampassword":
@@ -104,6 +108,8 @@ public class IBMSecretsManagerVaultConfigurationConfigurer
extends org.apache.ca
case "azureVaultConfiguration": return
target.getAzureVaultConfiguration();
case "eventstreambootstrapservers":
case "eventStreamBootstrapServers": return
target.getEventStreamBootstrapServers();
+ case "eventstreamconsumerpolltimeout":
+ case "eventStreamConsumerPollTimeout": return
target.getEventStreamConsumerPollTimeout();
case "eventstreamgroupid":
case "eventStreamGroupId": return target.getEventStreamGroupId();
case "eventstreampassword":
diff --git
a/core/camel-main/src/generated/java/org/apache/camel/main/IBMSecretsManagerVaultConfigurationPropertiesConfigurer.java
b/core/camel-main/src/generated/java/org/apache/camel/main/IBMSecretsManagerVaultConfigurationPropertiesConfigurer.java
index 232bfd39def..a028422bcba 100644
---
a/core/camel-main/src/generated/java/org/apache/camel/main/IBMSecretsManagerVaultConfigurationPropertiesConfigurer.java
+++
b/core/camel-main/src/generated/java/org/apache/camel/main/IBMSecretsManagerVaultConfigurationPropertiesConfigurer.java
@@ -25,6 +25,7 @@ public class
IBMSecretsManagerVaultConfigurationPropertiesConfigurer extends org
map.put("AwsVaultConfiguration",
org.apache.camel.vault.AwsVaultConfiguration.class);
map.put("AzureVaultConfiguration",
org.apache.camel.vault.AzureVaultConfiguration.class);
map.put("EventStreamBootstrapServers", java.lang.String.class);
+ map.put("EventStreamConsumerPollTimeout", long.class);
map.put("EventStreamGroupId", java.lang.String.class);
map.put("EventStreamPassword", java.lang.String.class);
map.put("EventStreamTopic", java.lang.String.class);
@@ -51,6 +52,8 @@ public class
IBMSecretsManagerVaultConfigurationPropertiesConfigurer extends org
case "azureVaultConfiguration":
target.setAzureVaultConfiguration(property(camelContext,
org.apache.camel.vault.AzureVaultConfiguration.class, value)); return true;
case "eventstreambootstrapservers":
case "eventStreamBootstrapServers":
target.setEventStreamBootstrapServers(property(camelContext,
java.lang.String.class, value)); return true;
+ case "eventstreamconsumerpolltimeout":
+ case "eventStreamConsumerPollTimeout":
target.setEventStreamConsumerPollTimeout(property(camelContext, long.class,
value)); return true;
case "eventstreamgroupid":
case "eventStreamGroupId":
target.setEventStreamGroupId(property(camelContext, java.lang.String.class,
value)); return true;
case "eventstreampassword":
@@ -93,6 +96,8 @@ public class
IBMSecretsManagerVaultConfigurationPropertiesConfigurer extends org
case "azureVaultConfiguration": return
org.apache.camel.vault.AzureVaultConfiguration.class;
case "eventstreambootstrapservers":
case "eventStreamBootstrapServers": return java.lang.String.class;
+ case "eventstreamconsumerpolltimeout":
+ case "eventStreamConsumerPollTimeout": return long.class;
case "eventstreamgroupid":
case "eventStreamGroupId": return java.lang.String.class;
case "eventstreampassword":
@@ -131,6 +136,8 @@ public class
IBMSecretsManagerVaultConfigurationPropertiesConfigurer extends org
case "azureVaultConfiguration": return
target.getAzureVaultConfiguration();
case "eventstreambootstrapservers":
case "eventStreamBootstrapServers": return
target.getEventStreamBootstrapServers();
+ case "eventstreamconsumerpolltimeout":
+ case "eventStreamConsumerPollTimeout": return
target.getEventStreamConsumerPollTimeout();
case "eventstreamgroupid":
case "eventStreamGroupId": return target.getEventStreamGroupId();
case "eventstreampassword":
diff --git
a/core/camel-main/src/generated/resources/META-INF/camel-main-configuration-metadata.json
b/core/camel-main/src/generated/resources/META-INF/camel-main-configuration-metadata.json
index a7b979a3db1..8db967e7b0c 100644
---
a/core/camel-main/src/generated/resources/META-INF/camel-main-configuration-metadata.json
+++
b/core/camel-main/src/generated/resources/META-INF/camel-main-configuration-metadata.json
@@ -393,6 +393,7 @@
{ "name": "camel.vault.hashicorp.scheme", "description": "Scheme to access
hashicorp vault", "sourceType":
"org.apache.camel.vault.HashicorpVaultConfiguration", "type": "string",
"javaType": "java.lang.String" },
{ "name": "camel.vault.hashicorp.token", "description": "Token to access
hashicorp vault", "sourceType":
"org.apache.camel.vault.HashicorpVaultConfiguration", "type": "string",
"javaType": "java.lang.String" },
{ "name": "camel.vault.ibm.eventStreamBootstrapServers", "description":
"Specify the Bootstrap servers for consuming notification on IBM Event Stream.
Multiple servers can be separated by comma.", "sourceType":
"org.apache.camel.vault.IBMSecretsManagerVaultConfiguration", "type": "string",
"javaType": "java.lang.String" },
+ { "name": "camel.vault.ibm.eventStreamConsumerPollTimeout", "description":
"Specify the Consumer Poll Timeout while consuming from IBM Event Stream
Topic", "sourceType":
"org.apache.camel.vault.IBMSecretsManagerVaultConfiguration", "type":
"integer", "javaType": "long", "defaultValue": 3000 },
{ "name": "camel.vault.ibm.eventStreamGroupId", "description": "Specify
the Consumer Group ID to access IBM Event Stream", "sourceType":
"org.apache.camel.vault.IBMSecretsManagerVaultConfiguration", "type": "string",
"javaType": "java.lang.String" },
{ "name": "camel.vault.ibm.eventStreamPassword", "description": "Specify
the password to access IBM Event Stream", "sourceType":
"org.apache.camel.vault.IBMSecretsManagerVaultConfiguration", "type": "string",
"javaType": "java.lang.String" },
{ "name": "camel.vault.ibm.eventStreamTopic", "description": "Specify the
topic name for consuming notification on IBM Event Stream", "sourceType":
"org.apache.camel.vault.IBMSecretsManagerVaultConfiguration", "type": "string",
"javaType": "java.lang.String" },
diff --git a/core/camel-main/src/main/docs/main.adoc
b/core/camel-main/src/main/docs/main.adoc
index 44817f23212..e2f68315638 100644
--- a/core/camel-main/src/main/docs/main.adoc
+++ b/core/camel-main/src/main/docs/main.adoc
@@ -469,12 +469,13 @@ The camel.vault.hashicorp supports 6 options, which are
listed below.
=== Camel IBM Secrets Manager Vault configurations
-The camel.vault.ibm supports 9 options, which are listed below.
+The camel.vault.ibm supports 10 options, which are listed below.
[width="100%",cols="2,5,^1,2",options="header"]
|===
| Name | Description | Default | Type
| *camel.vault.ibm.eventStream{zwsp}BootstrapServers* | Specify the Bootstrap
servers for consuming notification on IBM Event Stream. Multiple servers can be
separated by comma. | | String
+| *camel.vault.ibm.eventStream{zwsp}ConsumerPollTimeout* | Specify the
Consumer Poll Timeout while consuming from IBM Event Stream Topic | 3000 | long
| *camel.vault.ibm.eventStream{zwsp}GroupId* | Specify the Consumer Group ID
to access IBM Event Stream | | String
| *camel.vault.ibm.eventStream{zwsp}Password* | Specify the password to access
IBM Event Stream | | String
| *camel.vault.ibm.eventStream{zwsp}Topic* | Specify the topic name for
consuming notification on IBM Event Stream | | String