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 20fedc05b56 camel-aws - Add dev console for AWS secrets
20fedc05b56 is described below
commit 20fedc05b565ecbc3571aee6d3edc07b3cff5e19
Author: Claus Ibsen <[email protected]>
AuthorDate: Wed Sep 7 20:35:07 2022 +0200
camel-aws - Add dev console for AWS secrets
---
.../aws/secretsmanager/SecretsDevConsole.java | 29 ++++++++++++++++++++--
.../vault/CloudTrailReloadTriggerTask.java | 9 +++++++
2 files changed, 36 insertions(+), 2 deletions(-)
diff --git
a/components/camel-aws/camel-aws-secrets-manager/src/main/java/org/apache/camel/component/aws/secretsmanager/SecretsDevConsole.java
b/components/camel-aws/camel-aws-secrets-manager/src/main/java/org/apache/camel/component/aws/secretsmanager/SecretsDevConsole.java
index b7f106656bd..ba5171db120 100644
---
a/components/camel-aws/camel-aws-secrets-manager/src/main/java/org/apache/camel/component/aws/secretsmanager/SecretsDevConsole.java
+++
b/components/camel-aws/camel-aws-secrets-manager/src/main/java/org/apache/camel/component/aws/secretsmanager/SecretsDevConsole.java
@@ -16,12 +16,16 @@
*/
package org.apache.camel.component.aws.secretsmanager;
+import java.time.Instant;
import java.util.Map;
+import org.apache.camel.ExtendedCamelContext;
import
org.apache.camel.component.aws.secretsmanager.vault.CloudTrailReloadTriggerTask;
import org.apache.camel.impl.console.AbstractDevConsole;
+import org.apache.camel.spi.PeriodTaskScheduler;
import org.apache.camel.spi.PropertiesFunction;
import org.apache.camel.spi.annotations.DevConsole;
+import org.apache.camel.util.TimeUtils;
import org.apache.camel.util.json.JsonArray;
import org.apache.camel.util.json.JsonObject;
import org.apache.camel.vault.AwsVaultConfiguration;
@@ -44,6 +48,11 @@ public class SecretsDevConsole extends AbstractDevConsole {
if (pf instanceof SecretsManagerPropertiesFunction) {
propertiesFunction = (SecretsManagerPropertiesFunction) pf;
}
+ AwsVaultConfiguration aws =
getCamelContext().getVaultConfiguration().getAwsVaultConfiguration();
+ if (aws != null && aws.isRefreshEnabled()) {
+ PeriodTaskScheduler scheduler =
getCamelContext().adapt(ExtendedCamelContext.class).getPeriodTaskScheduler();
+ secretsRefreshTask =
scheduler.getTaskByType(CloudTrailReloadTriggerTask.class);
+ }
}
@Override
@@ -63,9 +72,20 @@ public class SecretsDevConsole extends AbstractDevConsole {
sb.append(String.format("\n Refresh Enabled: %s",
aws.isRefreshEnabled()));
sb.append(String.format("\n Refresh Period: %s",
aws.getRefreshPeriod()));
}
+ if (secretsRefreshTask != null) {
+ Instant last = secretsRefreshTask.getLastCheckTime();
+ String s = last != null ?
TimeUtils.printSince(last.toEpochMilli()) : "none";
+ sb.append(String.format("\n Last Check: %s", s));
+ }
sb.append("\n\nSecrets in use:");
for (String sec : propertiesFunction.getSecrets()) {
- sb.append(String.format("\n %s", sec)); // TODO: update time
+ Instant last = secretsRefreshTask != null ?
secretsRefreshTask.getUpdates().get(sec) : null;
+ String age = last != null ?
TimeUtils.printSince(last.toEpochMilli()) : null;
+ if (age != null) {
+ sb.append(String.format("\n %s", sec));
+ } else {
+ sb.append(String.format("\n %s (age: %s)", sec, age));
+ }
}
}
@@ -92,7 +112,12 @@ public class SecretsDevConsole extends AbstractDevConsole {
for (String sec : propertiesFunction.getSecrets()) {
JsonObject jo = new JsonObject();
jo.put("name", sec);
- // TODO: update time
+ Instant last = secretsRefreshTask != null ?
secretsRefreshTask.getUpdates().get(sec) : null;
+ if (last != null) {
+ long timestamp = last.toEpochMilli();
+ jo.put("timestamp", timestamp);
+ jo.put("age", TimeUtils.printSince(timestamp));
+ }
arr.add(jo);
}
}
diff --git
a/components/camel-aws/camel-aws-secrets-manager/src/main/java/org/apache/camel/component/aws/secretsmanager/vault/CloudTrailReloadTriggerTask.java
b/components/camel-aws/camel-aws-secrets-manager/src/main/java/org/apache/camel/component/aws/secretsmanager/vault/CloudTrailReloadTriggerTask.java
index 10edb759a9f..f72fdc9daf0 100644
---
a/components/camel-aws/camel-aws-secrets-manager/src/main/java/org/apache/camel/component/aws/secretsmanager/vault/CloudTrailReloadTriggerTask.java
+++
b/components/camel-aws/camel-aws-secrets-manager/src/main/java/org/apache/camel/component/aws/secretsmanager/vault/CloudTrailReloadTriggerTask.java
@@ -67,6 +67,7 @@ public class CloudTrailReloadTriggerTask extends
ServiceSupport implements Camel
private CloudTrailClient cloudTrailClient;
private SecretsManagerPropertiesFunction propertiesFunction;
private volatile Instant lastTime;
+ private volatile Instant lastCheckTime;
private final Map<String, Instant> updates = new HashMap<>();
public CloudTrailReloadTriggerTask() {
@@ -100,6 +101,13 @@ public class CloudTrailReloadTriggerTask extends
ServiceSupport implements Camel
return Collections.unmodifiableMap(updates);
}
+ /**
+ * Last time this task checked AWS for updated secrets.
+ */
+ public Instant getLastCheckTime() {
+ return lastCheckTime;
+ }
+
@Override
protected void doStart() throws Exception {
super.doStart();
@@ -149,6 +157,7 @@ public class CloudTrailReloadTriggerTask extends
ServiceSupport implements Camel
@Override
public void run() {
+ lastCheckTime = Instant.now();
boolean triggerReloading = false;
try {