@@ -14,20 +14,21 @@ import (
14
14
)
15
15
16
16
type sharedOptions struct {
17
- brokerAddr string
18
- clusterConfig string
19
- expandEnv bool
20
- saslMechanism string
21
- saslPassword string
22
- saslUsername string
23
- tlsCACert string
24
- tlsCert string
25
- tlsEnabled bool
26
- tlsKey string
27
- tlsSkipVerify bool
28
- tlsServerName string
29
- zkAddr string
30
- zkPrefix string
17
+ brokerAddr string
18
+ clusterConfig string
19
+ expandEnv bool
20
+ saslMechanism string
21
+ saslPassword string
22
+ saslUsername string
23
+ saslSecretsManagerArn string
24
+ tlsCACert string
25
+ tlsCert string
26
+ tlsEnabled bool
27
+ tlsKey string
28
+ tlsSkipVerify bool
29
+ tlsServerName string
30
+ zkAddr string
31
+ zkPrefix string
31
32
}
32
33
33
34
func (s sharedOptions ) validate () error {
@@ -76,7 +77,7 @@ func (s sharedOptions) validate() error {
76
77
}
77
78
78
79
useTLS := s .tlsEnabled || s .tlsCACert != "" || s .tlsCert != "" || s .tlsKey != ""
79
- useSASL := s .saslMechanism != "" || s .saslPassword != "" || s .saslUsername != ""
80
+ useSASL := s .saslMechanism != "" || s .saslPassword != "" || s .saslUsername != "" || s . saslSecretsManagerArn != ""
80
81
81
82
if useTLS && s .zkAddr != "" {
82
83
log .Warn ("TLS flags are ignored accessing cluster via zookeeper" )
@@ -95,6 +96,10 @@ func (s sharedOptions) validate() error {
95
96
(s .saslUsername != "" || s .saslPassword != "" ) {
96
97
log .Warn ("Username and password are ignored if using SASL AWS-MSK-IAM" )
97
98
}
99
+
100
+ if s .saslUsername != "" || s .saslPassword != "" && s .saslSecretsManagerArn != "" {
101
+ err = multierror .Append (err , errors .New ("Cannot set both sasl-username or sasl-password and sasl-secrets-manager-arn" ))
102
+ }
98
103
}
99
104
100
105
return err
@@ -113,9 +118,12 @@ func (s sharedOptions) getAdminClient(
113
118
return clusterConfig .NewAdminClient (
114
119
ctx ,
115
120
sess ,
116
- readOnly ,
117
- s .saslUsername ,
118
- s .saslPassword ,
121
+ config.AdminClientOpts {
122
+ ReadOnly : readOnly ,
123
+ UsernameOverride : s .saslUsername ,
124
+ PasswordOverride : s .saslPassword ,
125
+ SecretsManagerArnOverride : s .saslSecretsManagerArn ,
126
+ },
119
127
)
120
128
} else if s .brokerAddr != "" {
121
129
tlsEnabled := (s .tlsEnabled ||
@@ -150,10 +158,11 @@ func (s sharedOptions) getAdminClient(
150
158
SkipVerify : s .tlsSkipVerify ,
151
159
},
152
160
SASL : admin.SASLConfig {
153
- Enabled : saslEnabled ,
154
- Mechanism : saslMechanism ,
155
- Password : s .saslPassword ,
156
- Username : s .saslUsername ,
161
+ Enabled : saslEnabled ,
162
+ Mechanism : saslMechanism ,
163
+ Password : s .saslPassword ,
164
+ Username : s .saslUsername ,
165
+ SecretsManagerArn : s .saslSecretsManagerArn ,
157
166
},
158
167
},
159
168
ReadOnly : readOnly ,
@@ -211,6 +220,12 @@ func addSharedFlags(cmd *cobra.Command, options *sharedOptions) {
211
220
os .Getenv ("TOPICCTL_SASL_USERNAME" ),
212
221
"SASL username if using SASL; will override value set in cluster config" ,
213
222
)
223
+ cmd .PersistentFlags ().StringVar (
224
+ & options .saslSecretsManagerArn ,
225
+ "sasl-secrets-manager-arn" ,
226
+ os .Getenv ("TOPICCTL_SASL_SECRETS_MANAGER_ARN" ),
227
+ "Secrets Manager ARN to use for credentials if using SASL; will override value set in cluster config" ,
228
+ )
214
229
cmd .PersistentFlags ().StringVar (
215
230
& options .tlsCACert ,
216
231
"tls-ca-cert" ,
0 commit comments