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 <claus.ib...@gmail.com> 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 {