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 {

Reply via email to