@@ -11,6 +11,7 @@ import (
1111 "strings"
1212 "time"
1313
14+ "github.com/IBM/sarama"
1415 "github.com/raystack/meteor/models"
1516 v1beta2 "github.com/raystack/meteor/models/raystack/assets/v1beta2"
1617 "github.com/raystack/meteor/plugins"
@@ -110,21 +111,21 @@ func (e *Extractor) Init(ctx context.Context, config plugins.Config) error {
110111 }
111112
112113 consumerConfig := sarama .NewConfig ()
113-
114114 if e .config .Auth .TLS .Enabled {
115115 tlsConfig , err := e .createTLSConfig ()
116116 if err != nil {
117117 return fmt .Errorf ("create tls config: %w" , err )
118118 }
119119 consumerConfig .Net .TLS .Enable = true
120120 consumerConfig .Net .TLS .Config = tlsConfig
121+ }
121122
122- if e .config .Auth .SASL .Enabled {
123- consumerConfig .Net .SASL .Enable = true
124- if e .config .Auth .SASL .Mechanism == sarama .SASLTypeOAuth {
125- consumerConfig .Net .SASL .Mechanism = sarama .SASLTypeOAuth
126- consumerConfig .Net .SASL .TokenProvider = NewKubernetesTokenProvider ()
127- }
123+ if e .config .Auth .SASL .Enabled {
124+ consumerConfig .Net .SASL .Enable = true
125+ if e .config .Auth .SASL .Mechanism == sarama .SASLTypeOAuth {
126+ consumerConfig .Net .SASL .Mechanism = sarama .SASLTypeOAuth
127+ consumerConfig .Net .SASL .TokenProvider = NewKubernetesTokenProvider ()
128+ }
128129 }
129130
130131 consumer , err := sarama .NewConsumer ([]string {e .config .Broker }, consumerConfig )
@@ -133,6 +134,7 @@ func (e *Extractor) Init(ctx context.Context, config plugins.Config) error {
133134 return fmt .Errorf ("failed to create kafka consumer for brokers %s and config %+v. Error %s" , e .config .Broker ,
134135 consumerConfig , err .Error ())
135136 }
137+
136138 e .conn = consumer
137139 return nil
138140}
@@ -162,6 +164,7 @@ func (e *Extractor) Extract(ctx context.Context, emit plugins.Emit) (err error)
162164 ctx , time .Since (start ).Milliseconds (), metric .WithAttributes (attributes ... ),
163165 )
164166 }(time .Now ())
167+
165168 topics , err := e .conn .Topics ()
166169 if err != nil {
167170 return fmt .Errorf ("fetch topics: %w" , err )
@@ -200,11 +203,6 @@ func (e *Extractor) createTLSConfig() (*tls.Config, error) {
200203 }, nil
201204 }
202205
203- cert , err := tls .LoadX509KeyPair (authConfig .CertFile , authConfig .KeyFile )
204- if err != nil {
205- return nil , fmt .Errorf ("create cert: %w" , err )
206- }
207-
208206 var cert tls.Certificate
209207 var err error
210208 if authConfig .CertFile != "" && authConfig .KeyFile != "" {
@@ -214,6 +212,11 @@ func (e *Extractor) createTLSConfig() (*tls.Config, error) {
214212 }
215213 }
216214
215+ caCert , err := os .ReadFile (authConfig .CAFile )
216+ if err != nil {
217+ return nil , fmt .Errorf ("read ca cert file: %w" , err )
218+ }
219+
217220 caCertPool := x509 .NewCertPool ()
218221 caCertPool .AppendCertsFromPEM (caCert )
219222
@@ -231,7 +234,7 @@ func (e *Extractor) buildAsset(topicName string, numOfPartitions int) (*v1beta2.
231234 Profile : & v1beta2.TopicProfile {
232235 NumberOfPartitions : int64 (numOfPartitions ),
233236 },
234- Attributes : & structpb.Struct {},
237+ Attributes : & structpb.Struct {}, // ensure attributes don't get overwritten if present
235238 })
236239 if err != nil {
237240 e .logger .Warn ("error creating Any struct" , "error" , err )
0 commit comments