You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pulsar.apache.org by pe...@apache.org on 2021/12/21 02:18:35 UTC
[pulsar] 03/16: pulsar admin exposes secret for source and sink (#13059)
This is an automated email from the ASF dual-hosted git repository.
penghui pushed a commit to branch branch-2.9
in repository https://gitbox.apache.org/repos/asf/pulsar.git
commit 76b424f35ee8ff390608b366e49e64dc79a82112
Author: Neng Lu <nl...@streamnative.io>
AuthorDate: Wed Dec 1 18:33:56 2021 -0800
pulsar admin exposes secret for source and sink (#13059)
### Motivation
Follow-up fix of #12950 for #12834
It turns out the Source and Sink doesn't inherit from Function cmd, so we need to add the api separately.
### Modifications
add the `--secrets` argument into `pulsar-admin [source|sink] create/update/localrun` command
(cherry picked from commit e888c2980f61428650779a8d23fe707bb61a31a1)
---
.../src/main/java/org/apache/pulsar/admin/cli/CmdSinks.java | 12 ++++++++++++
.../main/java/org/apache/pulsar/admin/cli/CmdSources.java | 13 +++++++++++++
2 files changed, 25 insertions(+)
diff --git a/pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/CmdSinks.java b/pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/CmdSinks.java
index 0035ff4..5d00627 100644
--- a/pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/CmdSinks.java
+++ b/pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/CmdSinks.java
@@ -39,6 +39,7 @@ import java.io.IOException;
import java.lang.reflect.Field;
import java.lang.reflect.Type;
import java.util.Arrays;
+import java.util.Collections;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
@@ -359,6 +360,8 @@ public class CmdSinks extends CmdBase {
protected Long negativeAckRedeliveryDelayMs;
@Parameter(names = "--custom-runtime-options", description = "A string that encodes options to customize the runtime, see docs for configured runtime for details")
protected String customRuntimeOptions;
+ @Parameter(names = "--secrets", description = "The map of secretName to an object that encapsulates how the secret is fetched by the underlying secrets provider")
+ protected String secretsString;
protected SinkConfig sinkConfig;
@@ -524,6 +527,15 @@ public class CmdSinks extends CmdBase {
sinkConfig.setCustomRuntimeOptions(customRuntimeOptions);
}
+ if (secretsString != null) {
+ Type type = new TypeToken<Map<String, Object>>() {}.getType();
+ Map<String, Object> secretsMap = new Gson().fromJson(secretsString, type);
+ if (secretsMap == null) {
+ secretsMap = Collections.emptyMap();
+ }
+ sinkConfig.setSecrets(secretsMap);
+ }
+
// check if configs are valid
validateSinkConfigs(sinkConfig);
}
diff --git a/pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/CmdSources.java b/pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/CmdSources.java
index f78feb0..1eedf65 100644
--- a/pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/CmdSources.java
+++ b/pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/CmdSources.java
@@ -38,6 +38,7 @@ import java.io.File;
import java.io.IOException;
import java.lang.reflect.Field;
import java.lang.reflect.Type;
+import java.util.Collections;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
@@ -339,6 +340,8 @@ public class CmdSources extends CmdBase {
protected String batchSourceConfigString;
@Parameter(names = "--custom-runtime-options", description = "A string that encodes options to customize the runtime, see docs for configured runtime for details")
protected String customRuntimeOptions;
+ @Parameter(names = "--secrets", description = "The map of secretName to an object that encapsulates how the secret is fetched by the underlying secrets provider")
+ protected String secretsString;
protected SourceConfig sourceConfig;
@@ -463,6 +466,16 @@ public class CmdSources extends CmdBase {
if (customRuntimeOptions != null) {
sourceConfig.setCustomRuntimeOptions(customRuntimeOptions);
}
+
+ if (secretsString != null) {
+ Type type = new TypeToken<Map<String, Object>>() {}.getType();
+ Map<String, Object> secretsMap = new Gson().fromJson(secretsString, type);
+ if (secretsMap == null) {
+ secretsMap = Collections.emptyMap();
+ }
+ sourceConfig.setSecrets(secretsMap);
+ }
+
// check if source configs are valid
validateSourceConfigs(sourceConfig);
}