@@ -26,75 +26,41 @@ import (
2626 "github.com/census-instrumentation/opencensus-service/cmd/occollector/app/builder"
2727 "github.com/census-instrumentation/opencensus-service/cmd/occollector/app/sender"
2828 "github.com/census-instrumentation/opencensus-service/exporter"
29- "github.com/census-instrumentation/opencensus-service/exporter/exporterparser"
3029 "github.com/census-instrumentation/opencensus-service/internal/collector/processor"
30+ "github.com/census-instrumentation/opencensus-service/internal/config"
3131)
3232
33- func createExporters (v * viper.Viper , logger * zap.Logger ) (doneFns []func (), traceExporters []exporter.TraceExporter , metricsExporters []exporter.MetricsExporter ) {
33+ func createExporters (v * viper.Viper , logger * zap.Logger ) ([]func (), []exporter.TraceExporter , []exporter.MetricsExporter ) {
3434 // TODO: (@pjanotti) this is slightly modified from agent but in the end duplication, need to consolidate style and visibility.
35- parseFns := []struct {
36- name string
37- fn func ([]byte ) ([]exporter.TraceExporter , []exporter.MetricsExporter , []func () error , error )
38- }{
39- {name : "datadog" , fn : exporterparser .DatadogTraceExportersFromYAML },
40- {name : "stackdriver" , fn : exporterparser .StackdriverTraceExportersFromYAML },
41- {name : "zipkin" , fn : exporterparser .ZipkinExportersFromYAML },
42- {name : "jaeger" , fn : exporterparser .JaegerExportersFromYAML },
43- {name : "kafka" , fn : exporterparser .KafkaExportersFromYAML },
44- }
4535
46- config := builder .GetConfigFile (v )
47- if config == "" {
36+ cfg := builder .GetConfigFile (v )
37+ if cfg == "" {
4838 logger .Info ("No config file, exporters can be only configured via the file." )
49- return
39+ return nil , nil , nil
5040 }
5141
52- cfgBlob , err := ioutil .ReadFile (config )
42+ cfgBlob , err := ioutil .ReadFile (cfg )
5343 if err != nil {
5444 logger .Fatal ("Cannot read config file for exporters" , zap .Error (err ))
5545 }
5646
57- for _ , cfg := range parseFns {
58- tes , mes , tesDoneFns , err := cfg .fn (cfgBlob )
59- if err != nil {
60- logger .Fatal ("Failed to create config for exporter" , zap .String ("exporter" , cfg .name ), zap .Error (err ))
61- }
62-
63- var anyTraceExporterEnabled , anyMetricsExporterEnabled bool
47+ traceExporters , metricsExporters , doneFns , err := config .ExportersFromYAMLConfig (logger , cfgBlob )
48+ if err != nil {
49+ logger .Fatal ("Failed to create config for exporters" , zap .Error (err ))
50+ }
6451
65- for _ , te := range tes {
66- if te != nil {
67- traceExporters = append (traceExporters , te )
68- anyTraceExporterEnabled = true
52+ wrappedDoneFns := make ([]func (), 0 , len (doneFns ))
53+ for _ , doneFn := range doneFns {
54+ wrapperFn := func () {
55+ if err := doneFn (); err != nil {
56+ logger .Warn ("Error when closing exporters" , zap .Error (err ))
6957 }
7058 }
71- for _ , me := range mes {
72- if me != nil {
73- metricsExporters = append (metricsExporters , me )
74- anyMetricsExporterEnabled = true
75- }
76- }
77- for _ , tesDoneFn := range tesDoneFns {
78- if tesDoneFn != nil {
79- wrapperFn := func () {
80- if err := tesDoneFn (); err != nil {
81- logger .Warn ("Error when closing exporter" , zap .String ("exporter" , cfg .name ), zap .Error (err ))
82- }
83- }
84- doneFns = append (doneFns , wrapperFn )
85- }
86- }
87-
88- if anyTraceExporterEnabled {
89- logger .Info ("Trace Exporter enabled" , zap .String ("exporter" , cfg .name ))
90- }
91- if anyMetricsExporterEnabled {
92- logger .Info ("Metrices Exporter enabled" , zap .String ("exporter" , cfg .name ))
93- }
9459
60+ wrappedDoneFns = append (wrappedDoneFns , wrapperFn )
9561 }
9662
97- return doneFns , traceExporters , metricsExporters
63+ return wrappedDoneFns , traceExporters , metricsExporters
9864}
9965
10066func buildQueuedSpanProcessor (logger * zap.Logger , opts * builder.QueuedSpanProcessorCfg ) (processor.SpanProcessor , error ) {
0 commit comments