You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by ac...@apache.org on 2022/09/20 18:02:42 UTC
[camel] branch main updated (23b770fe644 -> 47fdae5c435)
This is an automated email from the ASF dual-hosted git repository.
acosentino pushed a change to branch main
in repository https://gitbox.apache.org/repos/asf/camel.git
from 23b770fe644 [CAMEL-18530] Camel box cannot authorize
new 50a00dd5deb CAMEL-18504 - camel-google-secret-manager - Add dev console for secrets
new 7af119d2ffe CAMEL-18504 - camel-google-secret-manager - Add dev console for secrets
new eae7a5e4fcd CAMEL-18504 - camel-google-secret-manager - Add dev console for secrets
new 47fdae5c435 CAMEL-18504 - camel-google-secret-manager - Add dev console for secrets
The 4 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails. The revisions
listed as "add" were already present in the repository and have only
been added to this reference.
Summary of changes:
.../camel-google-secret-manager/pom.xml | 5 +-
.../gcp-secrets} | 2 +-
.../manager/GoogleSecretManagerDevConsole.java} | 64 +++++++++++-----------
.../GoogleSecretManagerPropertiesFunction.java | 12 +++-
.../manager/vault/PubsubReloadTriggerTask.java | 19 +++++++
5 files changed, 65 insertions(+), 37 deletions(-)
copy components/camel-google/camel-google-secret-manager/src/generated/resources/META-INF/services/org/apache/camel/{component/google-secret-manager => dev-console/gcp-secrets} (85%)
copy components/{camel-aws/camel-aws-secrets-manager/src/main/java/org/apache/camel/component/aws/secretsmanager/SecretsDevConsole.java => camel-google/camel-google-secret-manager/src/main/java/org/apache/camel/component/google/secret/manager/GoogleSecretManagerDevConsole.java} (70%)
[camel] 02/04: CAMEL-18504 - camel-google-secret-manager - Add dev console for secrets
Posted by ac...@apache.org.
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 7af119d2ffe72ee281f59578d4e42ef98e011f2f
Author: Andrea Cosentino <an...@gmail.com>
AuthorDate: Tue Sep 20 18:35:38 2022 +0200
CAMEL-18504 - camel-google-secret-manager - Add dev console for secrets
Signed-off-by: Andrea Cosentino <an...@gmail.com>
---
components/camel-google/camel-google-secret-manager/pom.xml | 5 ++++-
.../manager/GoogleSecretManagerPropertiesFunction.java | 12 ++++++++++--
2 files changed, 14 insertions(+), 3 deletions(-)
diff --git a/components/camel-google/camel-google-secret-manager/pom.xml b/components/camel-google/camel-google-secret-manager/pom.xml
index ea378bec96b..d43d6946bdf 100644
--- a/components/camel-google/camel-google-secret-manager/pom.xml
+++ b/components/camel-google/camel-google-secret-manager/pom.xml
@@ -68,7 +68,10 @@
<groupId>org.apache.camel</groupId>
<artifactId>camel-support</artifactId>
</dependency>
-
+ <dependency>
+ <groupId>org.apache.camel</groupId>
+ <artifactId>camel-console</artifactId>
+ </dependency>
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
diff --git a/components/camel-google/camel-google-secret-manager/src/main/java/org/apache/camel/component/google/secret/manager/GoogleSecretManagerPropertiesFunction.java b/components/camel-google/camel-google-secret-manager/src/main/java/org/apache/camel/component/google/secret/manager/GoogleSecretManagerPropertiesFunction.java
index dcb9ca73b36..a51a2c44218 100644
--- a/components/camel-google/camel-google-secret-manager/src/main/java/org/apache/camel/component/google/secret/manager/GoogleSecretManagerPropertiesFunction.java
+++ b/components/camel-google/camel-google-secret-manager/src/main/java/org/apache/camel/component/google/secret/manager/GoogleSecretManagerPropertiesFunction.java
@@ -82,12 +82,13 @@ public class GoogleSecretManagerPropertiesFunction extends ServiceSupport implem
private SecretManagerServiceClient client;
private String projectId;
private final Set<String> secrets = new HashSet<>();
-
+ boolean useDefaultInstance;
+
@Override
protected void doStart() throws Exception {
super.doStart();
String serviceAccountKey = System.getenv(CAMEL_VAULT_GCP_SERVICE_ACCOUNT_KEY);
- boolean useDefaultInstance = Boolean.parseBoolean(System.getenv(CAMEL_VAULT_GCP_USE_DEFAULT_INSTANCE));
+ useDefaultInstance = Boolean.parseBoolean(System.getenv(CAMEL_VAULT_GCP_USE_DEFAULT_INSTANCE));
projectId = System.getenv(CAMEL_VAULT_GCP_PROJECT_ID);
if (ObjectHelper.isEmpty(serviceAccountKey) && ObjectHelper.isEmpty(projectId)) {
GcpVaultConfiguration gcpVaultConfiguration = getCamelContext().getVaultConfiguration().gcp();
@@ -231,4 +232,11 @@ public class GoogleSecretManagerPropertiesFunction extends ServiceSupport implem
public Set<String> getSecrets() {
return secrets;
}
+
+ /**
+ * Whether login is using default instance or service account key file
+ */
+ public boolean isUseDefaultInstance() {
+ return useDefaultInstance;
+ }
}
[camel] 01/04: CAMEL-18504 - camel-google-secret-manager - Add dev console for secrets
Posted by ac...@apache.org.
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 50a00dd5deb3b4a8d992b496240e0ea73b406cb5
Author: Andrea Cosentino <an...@gmail.com>
AuthorDate: Tue Sep 20 15:35:30 2022 +0200
CAMEL-18504 - camel-google-secret-manager - Add dev console for secrets
Signed-off-by: Andrea Cosentino <an...@gmail.com>
---
.../secret/manager/vault/PubsubReloadTriggerTask.java | 19 +++++++++++++++++++
1 file changed, 19 insertions(+)
diff --git a/components/camel-google/camel-google-secret-manager/src/main/java/org/apache/camel/component/google/secret/manager/vault/PubsubReloadTriggerTask.java b/components/camel-google/camel-google-secret-manager/src/main/java/org/apache/camel/component/google/secret/manager/vault/PubsubReloadTriggerTask.java
index d7acff94812..2bc8e3396bc 100644
--- a/components/camel-google/camel-google-secret-manager/src/main/java/org/apache/camel/component/google/secret/manager/vault/PubsubReloadTriggerTask.java
+++ b/components/camel-google/camel-google-secret-manager/src/main/java/org/apache/camel/component/google/secret/manager/vault/PubsubReloadTriggerTask.java
@@ -67,6 +67,8 @@ public class PubsubReloadTriggerTask extends ServiceSupport implements CamelCont
private String secrets;
private Subscriber subscriber;
private GoogleSecretManagerPropertiesFunction propertiesFunction;
+ private volatile Instant lastCheckTime;
+ private volatile Instant lastReloadTime;
private final Map<String, Instant> updates = new HashMap<>();
public PubsubReloadTriggerTask() {
@@ -99,6 +101,20 @@ public class PubsubReloadTriggerTask extends ServiceSupport implements CamelCont
public Map<String, Instant> getUpdates() {
return Collections.unmodifiableMap(updates);
}
+
+ /**
+ * Last time this task checked GCP for updated secrets.
+ */
+ public Instant getLastCheckTime() {
+ return lastCheckTime;
+ }
+
+ /**
+ * Last time GCP secrets update triggered reload.
+ */
+ public Instant getLastReloadTime() {
+ return lastReloadTime;
+ }
@Override
protected void doStart() throws Exception {
@@ -169,6 +185,8 @@ public class PubsubReloadTriggerTask extends ServiceSupport implements CamelCont
@Override
public void run() {
+ lastCheckTime = Instant.now();
+
subscriber.startAsync().awaitRunning();
}
@@ -220,6 +238,7 @@ public class PubsubReloadTriggerTask extends ServiceSupport implements CamelCont
ContextReloadStrategy reload = camelContext.hasService(ContextReloadStrategy.class);
if (reload != null) {
// trigger reload
+ lastReloadTime = Instant.now();
reload.onReload(this);
}
}
[camel] 03/04: CAMEL-18504 - camel-google-secret-manager - Add dev console for secrets
Posted by ac...@apache.org.
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 eae7a5e4fcd6aebf002d8f6f31e325de9ccb4a8d
Author: Andrea Cosentino <an...@gmail.com>
AuthorDate: Tue Sep 20 18:35:57 2022 +0200
CAMEL-18504 - camel-google-secret-manager - Add dev console for secrets
Signed-off-by: Andrea Cosentino <an...@gmail.com>
---
.../manager/GoogleSecretManagerDevConsole.java | 154 +++++++++++++++++++++
1 file changed, 154 insertions(+)
diff --git a/components/camel-google/camel-google-secret-manager/src/main/java/org/apache/camel/component/google/secret/manager/GoogleSecretManagerDevConsole.java b/components/camel-google/camel-google-secret-manager/src/main/java/org/apache/camel/component/google/secret/manager/GoogleSecretManagerDevConsole.java
new file mode 100644
index 00000000000..84ded6b12c6
--- /dev/null
+++ b/components/camel-google/camel-google-secret-manager/src/main/java/org/apache/camel/component/google/secret/manager/GoogleSecretManagerDevConsole.java
@@ -0,0 +1,154 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.component.google.secret.manager;
+
+import java.time.Instant;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.camel.ExtendedCamelContext;
+import org.apache.camel.component.google.secret.manager.vault.PubsubReloadTriggerTask;
+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.GcpVaultConfiguration;
+
+@DevConsole("gcp-secrets")
+public class GoogleSecretManagerDevConsole extends AbstractDevConsole {
+
+ private GoogleSecretManagerPropertiesFunction propertiesFunction;
+ private PubsubReloadTriggerTask secretsRefreshTask;
+
+ public GoogleSecretManagerDevConsole() {
+ super("camel", "gcp-secrets", "GCP Secrets", "GCP Secret Manager");
+ }
+
+ @Override
+ protected void doStart() throws Exception {
+ super.doStart();
+
+ if (getCamelContext().getPropertiesComponent().hasPropertiesFunction("gcp")) {
+ PropertiesFunction pf = getCamelContext().getPropertiesComponent().getPropertiesFunction("gcp");
+ if (pf instanceof GoogleSecretManagerPropertiesFunction) {
+ propertiesFunction = (GoogleSecretManagerPropertiesFunction) pf;
+ }
+ }
+ GcpVaultConfiguration gcp = getCamelContext().getVaultConfiguration().getGcpVaultConfiguration();
+ if (gcp != null && gcp.isRefreshEnabled()) {
+ PeriodTaskScheduler scheduler = getCamelContext().adapt(ExtendedCamelContext.class).getPeriodTaskScheduler();
+ secretsRefreshTask = scheduler.getTaskByType(PubsubReloadTriggerTask.class);
+ }
+ }
+
+ @Override
+ protected String doCallText(Map<String, Object> options) {
+ StringBuilder sb = new StringBuilder();
+
+ if (propertiesFunction != null) {
+ sb.append("GCP Secret Manager:");
+ if (propertiesFunction.isUseDefaultInstance()) {
+ sb.append("\n Login: Default Instance");
+ } else {
+ sb.append("\n Login: Service Account Key File");
+ }
+ GcpVaultConfiguration gcp = getCamelContext().getVaultConfiguration().getGcpVaultConfiguration();
+ if (gcp != null) {
+ sb.append(String.format("\n Refresh Enabled: %s", gcp.isRefreshEnabled()));
+ sb.append(String.format("\n Refresh Period: %s", gcp.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));
+ last = secretsRefreshTask.getLastReloadTime();
+ s = last != null ? TimeUtils.printSince(last.toEpochMilli()) : "none";
+ sb.append(String.format("\n Last Reload: %s", s));
+ }
+ sb.append("\n\nSecrets in use:");
+
+ List<String> sorted = new ArrayList<>(propertiesFunction.getSecrets());
+ Collections.sort(sorted);
+
+ for (String sec : sorted) {
+ 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 (age: %s)", sec, age));
+ } else {
+ sb.append(String.format("\n %s", sec));
+ }
+ }
+ }
+
+ return sb.toString();
+ }
+
+ @Override
+ protected JsonObject doCallJson(Map<String, Object> options) {
+ JsonObject root = new JsonObject();
+ if (propertiesFunction != null) {
+ if (propertiesFunction.isUseDefaultInstance()) {
+ root.put("login", "Default Instance");
+ } else {
+ root.put("login", "Service Account Key File");
+ }
+ GcpVaultConfiguration gcp = getCamelContext().getVaultConfiguration().getGcpVaultConfiguration();
+ if (gcp != null) {
+ root.put("refreshEnabled", gcp.isRefreshEnabled());
+ root.put("refreshPeriod", gcp.getRefreshPeriod());
+ }
+ if (secretsRefreshTask != null) {
+ Instant last = secretsRefreshTask.getLastCheckTime();
+ if (last != null) {
+ long timestamp = last.toEpochMilli();
+ root.put("lastCheckTimestamp", timestamp);
+ root.put("lastCheckAge", TimeUtils.printSince(timestamp));
+ }
+ last = secretsRefreshTask.getLastReloadTime();
+ if (last != null) {
+ long timestamp = last.toEpochMilli();
+ root.put("lastReloadTimestamp", timestamp);
+ root.put("lastReloadAge", TimeUtils.printSince(timestamp));
+ }
+ }
+ JsonArray arr = new JsonArray();
+ root.put("secrets", arr);
+
+ List<String> sorted = new ArrayList<>(propertiesFunction.getSecrets());
+ Collections.sort(sorted);
+
+ for (String sec : sorted) {
+ JsonObject jo = new JsonObject();
+ jo.put("name", sec);
+ 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);
+ }
+ }
+ return root;
+ }
+}
[camel] 04/04: CAMEL-18504 - camel-google-secret-manager - Add dev console for secrets
Posted by ac...@apache.org.
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 47fdae5c4358c071b1f76dd5a6486430128dbb12
Author: Andrea Cosentino <an...@gmail.com>
AuthorDate: Tue Sep 20 20:01:57 2022 +0200
CAMEL-18504 - camel-google-secret-manager - Add dev console for secrets
Signed-off-by: Andrea Cosentino <an...@gmail.com>
---
.../META-INF/services/org/apache/camel/dev-console/gcp-secrets | 2 ++
1 file changed, 2 insertions(+)
diff --git a/components/camel-google/camel-google-secret-manager/src/generated/resources/META-INF/services/org/apache/camel/dev-console/gcp-secrets b/components/camel-google/camel-google-secret-manager/src/generated/resources/META-INF/services/org/apache/camel/dev-console/gcp-secrets
new file mode 100644
index 00000000000..abaa04e47b0
--- /dev/null
+++ b/components/camel-google/camel-google-secret-manager/src/generated/resources/META-INF/services/org/apache/camel/dev-console/gcp-secrets
@@ -0,0 +1,2 @@
+# Generated by camel build tools - do NOT edit this file!
+class=org.apache.camel.component.google.secret.manager.GoogleSecretManagerDevConsole