Skip to content

Commit d9099c5

Browse files
authored
Simplify builders for components, remove unnecessary builders (#2624)
Signed-off-by: Bogdan Drutu <[email protected]>
1 parent 98a0672 commit d9099c5

File tree

8 files changed

+71
-88
lines changed

8 files changed

+71
-88
lines changed

service/builder/exporters_builder.go

Lines changed: 9 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -140,32 +140,28 @@ type dataTypeRequirements map[configmodels.DataType]dataTypeRequirement
140140
// Data type requirements for all exporters.
141141
type exportersRequiredDataTypes map[configmodels.Exporter]dataTypeRequirements
142142

143-
// ExportersBuilder builds exporters from config.
144-
type ExportersBuilder struct {
143+
// exportersBuilder builds exporters from config.
144+
type exportersBuilder struct {
145145
logger *zap.Logger
146146
appInfo component.ApplicationStartInfo
147147
config *configmodels.Config
148148
factories map[configmodels.Type]component.ExporterFactory
149149
}
150150

151-
// NewExportersBuilder creates a new ExportersBuilder. Call BuildExporters() on the returned value.
152-
func NewExportersBuilder(
151+
// BuildExporters builds Exporters from config.
152+
func BuildExporters(
153153
logger *zap.Logger,
154154
appInfo component.ApplicationStartInfo,
155155
config *configmodels.Config,
156156
factories map[configmodels.Type]component.ExporterFactory,
157-
) *ExportersBuilder {
158-
return &ExportersBuilder{logger.With(zap.String(kindLogKey, kindLogsExporter)), appInfo, config, factories}
159-
}
160-
161-
// BuildExporters exporters from config.
162-
func (eb *ExportersBuilder) Build() (Exporters, error) {
163-
exporters := make(Exporters)
157+
) (Exporters, error) {
158+
eb := &exportersBuilder{logger.With(zap.String(kindLogKey, kindLogsExporter)), appInfo, config, factories}
164159

165160
// We need to calculate required input data types for each exporter so that we know
166161
// which data type must be started for each exporter.
167162
exporterInputDataTypes := eb.calcExportersRequiredDataTypes()
168163

164+
exporters := make(Exporters)
169165
// BuildExporters exporters based on configuration and required input data types.
170166
for _, cfg := range eb.config.Exporters {
171167
componentLogger := eb.logger.With(zap.String(typeLogKey, string(cfg.Type())), zap.String(nameLogKey, cfg.Name()))
@@ -180,7 +176,7 @@ func (eb *ExportersBuilder) Build() (Exporters, error) {
180176
return exporters, nil
181177
}
182178

183-
func (eb *ExportersBuilder) calcExportersRequiredDataTypes() exportersRequiredDataTypes {
179+
func (eb *exportersBuilder) calcExportersRequiredDataTypes() exportersRequiredDataTypes {
184180

185181
// Go over all pipelines. The data type of the pipeline defines what data type
186182
// each exporter is expected to receive. Collect all required types for each
@@ -213,7 +209,7 @@ func (eb *ExportersBuilder) calcExportersRequiredDataTypes() exportersRequiredDa
213209
return result
214210
}
215211

216-
func (eb *ExportersBuilder) buildExporter(
212+
func (eb *exportersBuilder) buildExporter(
217213
ctx context.Context,
218214
logger *zap.Logger,
219215
appInfo component.ApplicationStartInfo,

service/builder/exporters_builder_test.go

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ func TestExportersBuilder_Build(t *testing.T) {
6161
},
6262
}
6363

64-
exporters, err := NewExportersBuilder(zap.NewNop(), component.DefaultApplicationStartInfo(), cfg, factories.Exporters).Build()
64+
exporters, err := BuildExporters(zap.NewNop(), component.DefaultApplicationStartInfo(), cfg, factories.Exporters)
6565

6666
assert.NoError(t, err)
6767
require.NotNil(t, exporters)
@@ -90,7 +90,7 @@ func TestExportersBuilder_Build(t *testing.T) {
9090
// This should result in creating an exporter that has none of consumption
9191
// functions set.
9292
delete(cfg.Service.Pipelines, "trace")
93-
exporters, err = NewExportersBuilder(zap.NewNop(), component.DefaultApplicationStartInfo(), cfg, factories.Exporters).Build()
93+
exporters, err = BuildExporters(zap.NewNop(), component.DefaultApplicationStartInfo(), cfg, factories.Exporters)
9494
assert.NotNil(t, exporters)
9595
assert.NoError(t, err)
9696

@@ -131,7 +131,7 @@ func TestExportersBuilder_BuildLogs(t *testing.T) {
131131
},
132132
}
133133

134-
exporters, err := NewExportersBuilder(zap.NewNop(), component.DefaultApplicationStartInfo(), cfg, factories.Exporters).Build()
134+
exporters, err := BuildExporters(zap.NewNop(), component.DefaultApplicationStartInfo(), cfg, factories.Exporters)
135135

136136
assert.NoError(t, err)
137137
require.NotNil(t, exporters)
@@ -156,7 +156,7 @@ func TestExportersBuilder_BuildLogs(t *testing.T) {
156156
// This should result in creating an exporter that has none of consumption
157157
// functions set.
158158
delete(cfg.Service.Pipelines, "logs")
159-
exporters, err = NewExportersBuilder(zap.NewNop(), component.DefaultApplicationStartInfo(), cfg, factories.Exporters).Build()
159+
exporters, err = BuildExporters(zap.NewNop(), component.DefaultApplicationStartInfo(), cfg, factories.Exporters)
160160
assert.NotNil(t, exporters)
161161
assert.Nil(t, err)
162162

@@ -260,7 +260,7 @@ func TestExportersBuilder_ErrorOnNilExporter(t *testing.T) {
260260
},
261261
}
262262

263-
exporters, err := NewExportersBuilder(zap.NewNop(), component.DefaultApplicationStartInfo(), cfg, fm).Build()
263+
exporters, err := BuildExporters(zap.NewNop(), component.DefaultApplicationStartInfo(), cfg, fm)
264264
assert.Error(t, err)
265265
assert.Zero(t, len(exporters))
266266
})

service/builder/extensions_builder.go

Lines changed: 7 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -110,28 +110,24 @@ func (exts Extensions) ToMap() map[configmodels.NamedEntity]component.Extension
110110
return result
111111
}
112112

113-
// ExportersBuilder builds exporters from config.
114-
type ExtensionsBuilder struct {
113+
// exportersBuilder builds exporters from config.
114+
type extensionsBuilder struct {
115115
logger *zap.Logger
116116
appInfo component.ApplicationStartInfo
117117
config *configmodels.Config
118118
factories map[configmodels.Type]component.ExtensionFactory
119119
}
120120

121-
// NewExportersBuilder creates a new ExportersBuilder. Call BuildExporters() on the returned value.
122-
func NewExtensionsBuilder(
121+
// BuildExtensions builds Extensions from config.
122+
func BuildExtensions(
123123
logger *zap.Logger,
124124
appInfo component.ApplicationStartInfo,
125125
config *configmodels.Config,
126126
factories map[configmodels.Type]component.ExtensionFactory,
127-
) *ExtensionsBuilder {
128-
return &ExtensionsBuilder{logger.With(zap.String(kindLogKey, kindLogExtension)), appInfo, config, factories}
129-
}
127+
) (Extensions, error) {
128+
eb := &extensionsBuilder{logger.With(zap.String(kindLogKey, kindLogExtension)), appInfo, config, factories}
130129

131-
// Build extensions from config.
132-
func (eb *ExtensionsBuilder) Build() (Extensions, error) {
133130
extensions := make(Extensions)
134-
135131
for _, extName := range eb.config.Service.Extensions {
136132
extCfg, exists := eb.config.Extensions[extName]
137133
if !exists {
@@ -150,7 +146,7 @@ func (eb *ExtensionsBuilder) Build() (Extensions, error) {
150146
return extensions, nil
151147
}
152148

153-
func (eb *ExtensionsBuilder) buildExtension(logger *zap.Logger, appInfo component.ApplicationStartInfo, cfg configmodels.Extension) (*builtExtension, error) {
149+
func (eb *extensionsBuilder) buildExtension(logger *zap.Logger, appInfo component.ApplicationStartInfo, cfg configmodels.Extension) (*builtExtension, error) {
154150
factory := eb.factories[cfg.Type()]
155151
if factory == nil {
156152
return nil, fmt.Errorf("extension factory for type %q is not configured", cfg.Type())

service/builder/pipelines_builder.go

Lines changed: 12 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -78,31 +78,27 @@ func (bps BuiltPipelines) ShutdownProcessors(ctx context.Context) error {
7878
return consumererror.CombineErrors(errs)
7979
}
8080

81-
// PipelinesBuilder builds pipelines from config.
82-
type PipelinesBuilder struct {
81+
// pipelinesBuilder builds Pipelines from config.
82+
type pipelinesBuilder struct {
8383
logger *zap.Logger
8484
appInfo component.ApplicationStartInfo
8585
config *configmodels.Config
8686
exporters Exporters
8787
factories map[configmodels.Type]component.ProcessorFactory
8888
}
8989

90-
// NewPipelinesBuilder creates a new PipelinesBuilder. Requires exporters to be already
91-
// built via ExportersBuilder. Call BuildProcessors() on the returned value.
92-
func NewPipelinesBuilder(
90+
// BuildPipelines builds pipeline processors from config. Requires exporters to be already
91+
// built via BuildExporters.
92+
func BuildPipelines(
9393
logger *zap.Logger,
9494
appInfo component.ApplicationStartInfo,
9595
config *configmodels.Config,
9696
exporters Exporters,
9797
factories map[configmodels.Type]component.ProcessorFactory,
98-
) *PipelinesBuilder {
99-
return &PipelinesBuilder{logger, appInfo, config, exporters, factories}
100-
}
98+
) (BuiltPipelines, error) {
99+
pb := &pipelinesBuilder{logger, appInfo, config, exporters, factories}
101100

102-
// BuildProcessors pipeline processors from config.
103-
func (pb *PipelinesBuilder) Build() (BuiltPipelines, error) {
104101
pipelineProcessors := make(BuiltPipelines)
105-
106102
for _, pipeline := range pb.config.Service.Pipelines {
107103
firstProcessor, err := pb.buildPipeline(context.Background(), pipeline)
108104
if err != nil {
@@ -117,7 +113,7 @@ func (pb *PipelinesBuilder) Build() (BuiltPipelines, error) {
117113
// Builds a pipeline of processors. Returns the first processor in the pipeline.
118114
// The last processor in the pipeline will be plugged to fan out the data into exporters
119115
// that are configured for this pipeline.
120-
func (pb *PipelinesBuilder) buildPipeline(ctx context.Context, pipelineCfg *configmodels.Pipeline) (*builtPipeline, error) {
116+
func (pb *pipelinesBuilder) buildPipeline(ctx context.Context, pipelineCfg *configmodels.Pipeline) (*builtPipeline, error) {
121117

122118
// BuildProcessors the pipeline backwards.
123119

@@ -219,7 +215,7 @@ func (pb *PipelinesBuilder) buildPipeline(ctx context.Context, pipelineCfg *conf
219215
}
220216

221217
// Converts the list of exporter names to a list of corresponding builtExporters.
222-
func (pb *PipelinesBuilder) getBuiltExportersByNames(exporterNames []string) []*builtExporter {
218+
func (pb *pipelinesBuilder) getBuiltExportersByNames(exporterNames []string) []*builtExporter {
223219
var result []*builtExporter
224220
for _, name := range exporterNames {
225221
exporter := pb.exporters[pb.config.Exporters[name]]
@@ -229,7 +225,7 @@ func (pb *PipelinesBuilder) getBuiltExportersByNames(exporterNames []string) []*
229225
return result
230226
}
231227

232-
func (pb *PipelinesBuilder) buildFanoutExportersTraceConsumer(exporterNames []string) consumer.TracesConsumer {
228+
func (pb *pipelinesBuilder) buildFanoutExportersTraceConsumer(exporterNames []string) consumer.TracesConsumer {
233229
builtExporters := pb.getBuiltExportersByNames(exporterNames)
234230

235231
var exporters []consumer.TracesConsumer
@@ -241,7 +237,7 @@ func (pb *PipelinesBuilder) buildFanoutExportersTraceConsumer(exporterNames []st
241237
return processor.NewTracesFanOutConnector(exporters)
242238
}
243239

244-
func (pb *PipelinesBuilder) buildFanoutExportersMetricsConsumer(exporterNames []string) consumer.MetricsConsumer {
240+
func (pb *pipelinesBuilder) buildFanoutExportersMetricsConsumer(exporterNames []string) consumer.MetricsConsumer {
245241
builtExporters := pb.getBuiltExportersByNames(exporterNames)
246242

247243
var exporters []consumer.MetricsConsumer
@@ -253,7 +249,7 @@ func (pb *PipelinesBuilder) buildFanoutExportersMetricsConsumer(exporterNames []
253249
return processor.NewMetricsFanOutConnector(exporters)
254250
}
255251

256-
func (pb *PipelinesBuilder) buildFanoutExportersLogConsumer(exporterNames []string) consumer.LogsConsumer {
252+
func (pb *pipelinesBuilder) buildFanoutExportersLogConsumer(exporterNames []string) consumer.LogsConsumer {
257253
builtExporters := pb.getBuiltExportersByNames(exporterNames)
258254

259255
exporters := make([]consumer.LogsConsumer, len(builtExporters))

service/builder/pipelines_builder_test.go

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -133,15 +133,15 @@ func TestPipelinesBuilder_BuildVarious(t *testing.T) {
133133
cfg := createExampleConfig(dataType)
134134

135135
// BuildProcessors the pipeline
136-
allExporters, err := NewExportersBuilder(zap.NewNop(), component.DefaultApplicationStartInfo(), cfg, factories.Exporters).Build()
136+
allExporters, err := BuildExporters(zap.NewNop(), component.DefaultApplicationStartInfo(), cfg, factories.Exporters)
137137
if test.shouldFail {
138138
assert.Error(t, err)
139139
return
140140
}
141141

142142
require.NoError(t, err)
143143
require.EqualValues(t, 1, len(allExporters))
144-
pipelineProcessors, err := NewPipelinesBuilder(zap.NewNop(), component.DefaultApplicationStartInfo(), cfg, allExporters, factories.Processors).Build()
144+
pipelineProcessors, err := BuildPipelines(zap.NewNop(), component.DefaultApplicationStartInfo(), cfg, allExporters, factories.Processors)
145145

146146
assert.NoError(t, err)
147147
require.NotNil(t, pipelineProcessors)
@@ -205,9 +205,9 @@ func testPipeline(t *testing.T, pipelineName string, exporterNames []string) {
205205
require.Nil(t, err)
206206

207207
// BuildProcessors the pipeline
208-
allExporters, err := NewExportersBuilder(zap.NewNop(), component.DefaultApplicationStartInfo(), cfg, factories.Exporters).Build()
208+
allExporters, err := BuildExporters(zap.NewNop(), component.DefaultApplicationStartInfo(), cfg, factories.Exporters)
209209
assert.NoError(t, err)
210-
pipelineProcessors, err := NewPipelinesBuilder(zap.NewNop(), component.DefaultApplicationStartInfo(), cfg, allExporters, factories.Processors).Build()
210+
pipelineProcessors, err := BuildPipelines(zap.NewNop(), component.DefaultApplicationStartInfo(), cfg, allExporters, factories.Processors)
211211

212212
assert.NoError(t, err)
213213
require.NotNil(t, pipelineProcessors)
@@ -266,7 +266,7 @@ func TestProcessorsBuilder_ErrorOnUnsupportedProcessor(t *testing.T) {
266266
cfg, err := configtest.LoadConfigFile(t, "testdata/bad_processor_factory.yaml", factories)
267267
require.Nil(t, err)
268268

269-
allExporters, err := NewExportersBuilder(zap.NewNop(), component.DefaultApplicationStartInfo(), cfg, factories.Exporters).Build()
269+
allExporters, err := BuildExporters(zap.NewNop(), component.DefaultApplicationStartInfo(), cfg, factories.Exporters)
270270
assert.NoError(t, err)
271271

272272
// First test only trace receivers by removing the metrics pipeline.
@@ -276,7 +276,7 @@ func TestProcessorsBuilder_ErrorOnUnsupportedProcessor(t *testing.T) {
276276
delete(cfg.Service.Pipelines, "logs")
277277
require.Equal(t, 1, len(cfg.Service.Pipelines))
278278

279-
pipelineProcessors, err := NewPipelinesBuilder(zap.NewNop(), component.DefaultApplicationStartInfo(), cfg, allExporters, factories.Processors).Build()
279+
pipelineProcessors, err := BuildPipelines(zap.NewNop(), component.DefaultApplicationStartInfo(), cfg, allExporters, factories.Processors)
280280
assert.Error(t, err)
281281
assert.Zero(t, len(pipelineProcessors))
282282

@@ -285,7 +285,7 @@ func TestProcessorsBuilder_ErrorOnUnsupportedProcessor(t *testing.T) {
285285
cfg.Service.Pipelines["metrics"] = metricsPipeline
286286
require.Equal(t, 1, len(cfg.Service.Pipelines))
287287

288-
pipelineProcessors, err = NewPipelinesBuilder(zap.NewNop(), component.DefaultApplicationStartInfo(), cfg, allExporters, factories.Processors).Build()
288+
pipelineProcessors, err = BuildPipelines(zap.NewNop(), component.DefaultApplicationStartInfo(), cfg, allExporters, factories.Processors)
289289
assert.Error(t, err)
290290
assert.Zero(t, len(pipelineProcessors))
291291

@@ -294,7 +294,7 @@ func TestProcessorsBuilder_ErrorOnUnsupportedProcessor(t *testing.T) {
294294
cfg.Service.Pipelines["logs"] = logsPipeline
295295
require.Equal(t, 1, len(cfg.Service.Pipelines))
296296

297-
pipelineProcessors, err = NewPipelinesBuilder(zap.NewNop(), component.DefaultApplicationStartInfo(), cfg, allExporters, factories.Processors).Build()
297+
pipelineProcessors, err = BuildPipelines(zap.NewNop(), component.DefaultApplicationStartInfo(), cfg, allExporters, factories.Processors)
298298
assert.Error(t, err)
299299
assert.Zero(t, len(pipelineProcessors))
300300
}

service/builder/receivers_builder.go

Lines changed: 9 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -77,31 +77,26 @@ func (rcvs Receivers) StartAll(ctx context.Context, host component.Host) error {
7777
return nil
7878
}
7979

80-
// ReceiversBuilder builds receivers from config.
81-
type ReceiversBuilder struct {
80+
// receiversBuilder builds receivers from config.
81+
type receiversBuilder struct {
8282
logger *zap.Logger
8383
appInfo component.ApplicationStartInfo
8484
config *configmodels.Config
8585
builtPipelines BuiltPipelines
8686
factories map[configmodels.Type]component.ReceiverFactory
8787
}
8888

89-
// NewReceiversBuilder creates a new ReceiversBuilder. Call BuildProcessors() on the returned value.
90-
func NewReceiversBuilder(
89+
// BuildReceivers builds Receivers from config.
90+
func BuildReceivers(
9191
logger *zap.Logger,
9292
appInfo component.ApplicationStartInfo,
9393
config *configmodels.Config,
9494
builtPipelines BuiltPipelines,
9595
factories map[configmodels.Type]component.ReceiverFactory,
96-
) *ReceiversBuilder {
97-
return &ReceiversBuilder{logger.With(zap.String(kindLogKey, kindLogsReceiver)), appInfo, config, builtPipelines, factories}
98-
}
96+
) (Receivers, error) {
97+
rb := &receiversBuilder{logger.With(zap.String(kindLogKey, kindLogsReceiver)), appInfo, config, builtPipelines, factories}
9998

100-
// BuildProcessors receivers from config.
101-
func (rb *ReceiversBuilder) Build() (Receivers, error) {
10299
receivers := make(Receivers)
103-
104-
// BuildProcessors receivers based on configuration.
105100
for _, cfg := range rb.config.Receivers {
106101
logger := rb.logger.With(zap.String(typeLogKey, string(cfg.Type())), zap.String(nameLogKey, cfg.Name()))
107102
rcv, err := rb.buildReceiver(context.Background(), logger, rb.appInfo, cfg)
@@ -130,7 +125,7 @@ func hasReceiver(pipeline *configmodels.Pipeline, receiverName string) bool {
130125

131126
type attachedPipelines map[configmodels.DataType][]*builtPipeline
132127

133-
func (rb *ReceiversBuilder) findPipelinesToAttach(config configmodels.Receiver) (attachedPipelines, error) {
128+
func (rb *receiversBuilder) findPipelinesToAttach(config configmodels.Receiver) (attachedPipelines, error) {
134129
// A receiver may be attached to multiple pipelines. Pipelines may consume different
135130
// data types. We need to compile the list of pipelines of each type that must be
136131
// attached to this receiver according to configuration.
@@ -163,7 +158,7 @@ func (rb *ReceiversBuilder) findPipelinesToAttach(config configmodels.Receiver)
163158
return pipelinesToAttach, nil
164159
}
165160

166-
func (rb *ReceiversBuilder) attachReceiverToPipelines(
161+
func (rb *receiversBuilder) attachReceiverToPipelines(
167162
ctx context.Context,
168163
logger *zap.Logger,
169164
appInfo component.ApplicationStartInfo,
@@ -237,7 +232,7 @@ func (rb *ReceiversBuilder) attachReceiverToPipelines(
237232
return nil
238233
}
239234

240-
func (rb *ReceiversBuilder) buildReceiver(ctx context.Context, logger *zap.Logger, appInfo component.ApplicationStartInfo, config configmodels.Receiver) (*builtReceiver, error) {
235+
func (rb *receiversBuilder) buildReceiver(ctx context.Context, logger *zap.Logger, appInfo component.ApplicationStartInfo, config configmodels.Receiver) (*builtReceiver, error) {
241236

242237
// First find pipelines that must be attached to this receiver.
243238
pipelinesToAttach, err := rb.findPipelinesToAttach(config)

0 commit comments

Comments
 (0)