diff --git a/CHANGELOG.md b/CHANGELOG.md index 93e1164bae..1f5a6cbb72 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,14 +6,15 @@ - Remove deprecated settings from `obsreport`, `ProcessorSettings.Level` and `ExporterSettings.Level` (#5918) - Replace `processorhelper.New[Traces|Metrics|Logs]Exporter` with `processorhelper.New[Traces|Metrics|Logs]ProcessorWithCreateSettings` definition (#5915) - - Replace `exporterhelper.New[Traces|Metrics|Logs]Exporter` with `exporterhelper.New[Traces|Metrics|Logs]ExporterWithContext` definition (#5914) +- Replace ``component.NewExtensionFactory`` with `component.NewExtensionFactoryWithStabilityLevel` definition (#5917) ### 🚩 Deprecations 🚩 - Deprecate `processorhelper.New[Traces|Metrics|Logs]ProcessorWithCreateSettings` in favor of `processorhelper.New[Traces|Metrics|Logs]Exporter` (#5915) - Deprecates `LogRecord.Flags()` and `LogRecord.SetFlags()` in favor of `LogRecord.FlagsStruct()`. (#5866) - Deprecate `exporterhelper.New[Traces|Metrics|Logs]ExporterWithContext` in favor of `exporterhelper.New[Traces|Metrics|Logs]Exporter` (#5914) +- Deprecate `component.NewExtensionFactoryWithStabilityLevel` in favor of `component.NewExtensionFactory` (#5917) ### 💡 Enhancements 💡 - Add support to unmarshalls bytes into pmetric.Metrics with `jsoniter` in jsonUnmarshaler(#5433) diff --git a/component/component.go b/component/component.go index 31fd82caee..14b23c122d 100644 --- a/component/component.go +++ b/component/component.go @@ -164,15 +164,11 @@ type Factory interface { // Type gets the type of the component created by this factory. Type() config.Type - // Deprecated: [v0.58.0] replaced by the more specific versions in each Factory type. - StabilityLevel(config.DataType) StabilityLevel - unexportedFactoryFunc() } type baseFactory struct { - cfgType config.Type - stability map[config.DataType]StabilityLevel + cfgType config.Type } func (baseFactory) unexportedFactoryFunc() {} @@ -180,14 +176,3 @@ func (baseFactory) unexportedFactoryFunc() {} func (bf baseFactory) Type() config.Type { return bf.cfgType } - -func (bf baseFactory) StabilityLevel(dt config.DataType) StabilityLevel { - return bf.getStabilityLevel(dt) -} - -func (bf baseFactory) getStabilityLevel(dt config.DataType) StabilityLevel { - if val, ok := bf.stability[dt]; ok { - return val - } - return StabilityLevelUndefined -} diff --git a/component/componenttest/nop_extension.go b/component/componenttest/nop_extension.go index d0a8d388cf..52c4a1cc5f 100644 --- a/component/componenttest/nop_extension.go +++ b/component/componenttest/nop_extension.go @@ -35,7 +35,7 @@ type nopExtensionConfig struct { // NewNopExtensionFactory returns a component.ExtensionFactory that constructs nop extensions. func NewNopExtensionFactory() component.ExtensionFactory { - return component.NewExtensionFactoryWithStabilityLevel( + return component.NewExtensionFactory( "nop", func() config.Extension { return &nopExtensionConfig{ diff --git a/component/exporter.go b/component/exporter.go index c648b05af1..fbceda215e 100644 --- a/component/exporter.go +++ b/component/exporter.go @@ -153,26 +153,29 @@ type exporterFactory struct { baseFactory ExporterCreateDefaultConfigFunc CreateTracesExporterFunc + tracesStabilityLevel StabilityLevel CreateMetricsExporterFunc + metricsStabilityLevel StabilityLevel CreateLogsExporterFunc + logsStabilityLevel StabilityLevel } func (e exporterFactory) TracesExporterStability() StabilityLevel { - return e.getStabilityLevel(config.TracesDataType) + return e.tracesStabilityLevel } func (e exporterFactory) MetricsExporterStability() StabilityLevel { - return e.getStabilityLevel(config.MetricsDataType) + return e.metricsStabilityLevel } func (e exporterFactory) LogsExporterStability() StabilityLevel { - return e.getStabilityLevel(config.LogsDataType) + return e.logsStabilityLevel } // WithTracesExporter overrides the default "error not supported" implementation for CreateTracesExporter and the default "undefined" stability level. func WithTracesExporter(createTracesExporter CreateTracesExporterFunc, sl StabilityLevel) ExporterFactoryOption { return exporterFactoryOptionFunc(func(o *exporterFactory) { - o.stability[config.TracesDataType] = sl + o.tracesStabilityLevel = sl o.CreateTracesExporterFunc = createTracesExporter }) } @@ -180,7 +183,7 @@ func WithTracesExporter(createTracesExporter CreateTracesExporterFunc, sl Stabil // WithMetricsExporter overrides the default "error not supported" implementation for CreateMetricsExporter and the default "undefined" stability level. func WithMetricsExporter(createMetricsExporter CreateMetricsExporterFunc, sl StabilityLevel) ExporterFactoryOption { return exporterFactoryOptionFunc(func(o *exporterFactory) { - o.stability[config.MetricsDataType] = sl + o.metricsStabilityLevel = sl o.CreateMetricsExporterFunc = createMetricsExporter }) } @@ -188,7 +191,7 @@ func WithMetricsExporter(createMetricsExporter CreateMetricsExporterFunc, sl Sta // WithLogsExporter overrides the default "error not supported" implementation for CreateLogsExporter and the default "undefined" stability level. func WithLogsExporter(createLogsExporter CreateLogsExporterFunc, sl StabilityLevel) ExporterFactoryOption { return exporterFactoryOptionFunc(func(o *exporterFactory) { - o.stability[config.LogsDataType] = sl + o.logsStabilityLevel = sl o.CreateLogsExporterFunc = createLogsExporter }) } @@ -196,7 +199,7 @@ func WithLogsExporter(createLogsExporter CreateLogsExporterFunc, sl StabilityLev // NewExporterFactory returns a ExporterFactory. func NewExporterFactory(cfgType config.Type, createDefaultConfig ExporterCreateDefaultConfigFunc, options ...ExporterFactoryOption) ExporterFactory { f := &exporterFactory{ - baseFactory: baseFactory{cfgType: cfgType, stability: make(map[config.DataType]StabilityLevel)}, + baseFactory: baseFactory{cfgType: cfgType}, ExporterCreateDefaultConfigFunc: createDefaultConfig, } for _, opt := range options { diff --git a/component/extension.go b/component/extension.go index d485750b3a..1b7673977a 100644 --- a/component/extension.go +++ b/component/extension.go @@ -99,16 +99,17 @@ func (ef *extensionFactory) ExtensionStability() StabilityLevel { return ef.extensionStability } -// Deprecated: [v0.58.0] use NewExtensionFactoryWithStabilityLevel. -func NewExtensionFactory( +// Deprecated: [v0.58.0] use NewExtensionFactory. +func NewExtensionFactoryWithStabilityLevel( cfgType config.Type, createDefaultConfig ExtensionCreateDefaultConfigFunc, - createServiceExtension CreateExtensionFunc) ExtensionFactory { - return NewExtensionFactoryWithStabilityLevel(cfgType, createDefaultConfig, createServiceExtension, StabilityLevelUndefined) + createServiceExtension CreateExtensionFunc, + sl StabilityLevel) ExtensionFactory { + return NewExtensionFactory(cfgType, createDefaultConfig, createServiceExtension, sl) } -// NewExtensionFactoryWithStabilityLevel returns a new ExtensionFactory based on this configuration. -func NewExtensionFactoryWithStabilityLevel( +// NewExtensionFactory returns a new ExtensionFactory based on this configuration. +func NewExtensionFactory( cfgType config.Type, createDefaultConfig ExtensionCreateDefaultConfigFunc, createServiceExtension CreateExtensionFunc, diff --git a/component/extension_test.go b/component/extension_test.go index 6403c1ae96..da3b3e0454 100644 --- a/component/extension_test.go +++ b/component/extension_test.go @@ -33,7 +33,7 @@ func TestNewExtensionFactory(t *testing.T) { defaultCfg := config.NewExtensionSettings(config.NewComponentID(typeStr)) nopExtensionInstance := new(nopExtension) - factory := NewExtensionFactoryWithStabilityLevel( + factory := NewExtensionFactory( typeStr, func() config.Extension { return &defaultCfg }, func(ctx context.Context, settings ExtensionCreateSettings, extension config.Extension) (Extension, error) { diff --git a/component/factories_test.go b/component/factories_test.go index 61dfdfb5f0..45ca5f13e9 100644 --- a/component/factories_test.go +++ b/component/factories_test.go @@ -29,8 +29,8 @@ func TestMakeExtensionFactoryMap(t *testing.T) { out map[config.Type]ExtensionFactory } - p1 := NewExtensionFactoryWithStabilityLevel("p1", nil, nil, StabilityLevelAlpha) - p2 := NewExtensionFactoryWithStabilityLevel("p2", nil, nil, StabilityLevelAlpha) + p1 := NewExtensionFactory("p1", nil, nil, StabilityLevelAlpha) + p2 := NewExtensionFactory("p2", nil, nil, StabilityLevelAlpha) testCases := []testCase{ { name: "different names", @@ -42,7 +42,7 @@ func TestMakeExtensionFactoryMap(t *testing.T) { }, { name: "same name", - in: []ExtensionFactory{p1, p2, NewExtensionFactoryWithStabilityLevel("p1", nil, nil, StabilityLevelAlpha)}, + in: []ExtensionFactory{p1, p2, NewExtensionFactory("p1", nil, nil, StabilityLevelAlpha)}, }, } for i := range testCases { diff --git a/component/processor.go b/component/processor.go index 7f8234bea5..b7dbcf408d 100644 --- a/component/processor.go +++ b/component/processor.go @@ -168,26 +168,29 @@ type processorFactory struct { baseFactory ProcessorCreateDefaultConfigFunc CreateTracesProcessorFunc + tracesStabilityLevel StabilityLevel CreateMetricsProcessorFunc + metricsStabilityLevel StabilityLevel CreateLogsProcessorFunc + logsStabilityLevel StabilityLevel } func (p processorFactory) TracesProcessorStability() StabilityLevel { - return p.getStabilityLevel(config.TracesDataType) + return p.tracesStabilityLevel } func (p processorFactory) MetricsProcessorStability() StabilityLevel { - return p.getStabilityLevel(config.MetricsDataType) + return p.metricsStabilityLevel } func (p processorFactory) LogsProcessorStability() StabilityLevel { - return p.getStabilityLevel(config.LogsDataType) + return p.logsStabilityLevel } // WithTracesProcessor overrides the default "error not supported" implementation for CreateTracesProcessor and the default "undefined" stability level. func WithTracesProcessor(createTracesProcessor CreateTracesProcessorFunc, sl StabilityLevel) ProcessorFactoryOption { return processorFactoryOptionFunc(func(o *processorFactory) { - o.stability[config.TracesDataType] = sl + o.tracesStabilityLevel = sl o.CreateTracesProcessorFunc = createTracesProcessor }) } @@ -195,7 +198,7 @@ func WithTracesProcessor(createTracesProcessor CreateTracesProcessorFunc, sl Sta // WithMetricsProcessor overrides the default "error not supported" implementation for CreateMetricsProcessor and the default "undefined" stability level. func WithMetricsProcessor(createMetricsProcessor CreateMetricsProcessorFunc, sl StabilityLevel) ProcessorFactoryOption { return processorFactoryOptionFunc(func(o *processorFactory) { - o.stability[config.MetricsDataType] = sl + o.metricsStabilityLevel = sl o.CreateMetricsProcessorFunc = createMetricsProcessor }) } @@ -203,7 +206,7 @@ func WithMetricsProcessor(createMetricsProcessor CreateMetricsProcessorFunc, sl // WithLogsProcessor overrides the default "error not supported" implementation for CreateLogsProcessor and the default "undefined" stability level. func WithLogsProcessor(createLogsProcessor CreateLogsProcessorFunc, sl StabilityLevel) ProcessorFactoryOption { return processorFactoryOptionFunc(func(o *processorFactory) { - o.stability[config.LogsDataType] = sl + o.logsStabilityLevel = sl o.CreateLogsProcessorFunc = createLogsProcessor }) } @@ -211,7 +214,7 @@ func WithLogsProcessor(createLogsProcessor CreateLogsProcessorFunc, sl Stability // NewProcessorFactory returns a ProcessorFactory. func NewProcessorFactory(cfgType config.Type, createDefaultConfig ProcessorCreateDefaultConfigFunc, options ...ProcessorFactoryOption) ProcessorFactory { f := &processorFactory{ - baseFactory: baseFactory{cfgType: cfgType, stability: make(map[config.DataType]StabilityLevel)}, + baseFactory: baseFactory{cfgType: cfgType}, ProcessorCreateDefaultConfigFunc: createDefaultConfig, } for _, opt := range options { diff --git a/component/receiver.go b/component/receiver.go index 7273a734eb..116921c711 100644 --- a/component/receiver.go +++ b/component/receiver.go @@ -213,26 +213,29 @@ type receiverFactory struct { baseFactory ReceiverCreateDefaultConfigFunc CreateTracesReceiverFunc + tracesStabilityLevel StabilityLevel CreateMetricsReceiverFunc + metricsStabilityLevel StabilityLevel CreateLogsReceiverFunc + logsStabilityLevel StabilityLevel } func (r receiverFactory) TracesReceiverStability() StabilityLevel { - return r.getStabilityLevel(config.TracesDataType) + return r.tracesStabilityLevel } func (r receiverFactory) MetricsReceiverStability() StabilityLevel { - return r.getStabilityLevel(config.MetricsDataType) + return r.metricsStabilityLevel } func (r receiverFactory) LogsReceiverStability() StabilityLevel { - return r.getStabilityLevel(config.LogsDataType) + return r.logsStabilityLevel } // WithTracesReceiver overrides the default "error not supported" implementation for CreateTracesReceiver and the default "undefined" stability level. func WithTracesReceiver(createTracesReceiver CreateTracesReceiverFunc, sl StabilityLevel) ReceiverFactoryOption { return receiverFactoryOptionFunc(func(o *receiverFactory) { - o.stability[config.TracesDataType] = sl + o.tracesStabilityLevel = sl o.CreateTracesReceiverFunc = createTracesReceiver }) } @@ -240,7 +243,7 @@ func WithTracesReceiver(createTracesReceiver CreateTracesReceiverFunc, sl Stabil // WithMetricsReceiver overrides the default "error not supported" implementation for CreateMetricsReceiver and the default "undefined" stability level. func WithMetricsReceiver(createMetricsReceiver CreateMetricsReceiverFunc, sl StabilityLevel) ReceiverFactoryOption { return receiverFactoryOptionFunc(func(o *receiverFactory) { - o.stability[config.MetricsDataType] = sl + o.metricsStabilityLevel = sl o.CreateMetricsReceiverFunc = createMetricsReceiver }) } @@ -248,7 +251,7 @@ func WithMetricsReceiver(createMetricsReceiver CreateMetricsReceiverFunc, sl Sta // WithLogsReceiver overrides the default "error not supported" implementation for CreateLogsReceiver and the default "undefined" stability level. func WithLogsReceiver(createLogsReceiver CreateLogsReceiverFunc, sl StabilityLevel) ReceiverFactoryOption { return receiverFactoryOptionFunc(func(o *receiverFactory) { - o.stability[config.LogsDataType] = sl + o.logsStabilityLevel = sl o.CreateLogsReceiverFunc = createLogsReceiver }) } @@ -256,7 +259,7 @@ func WithLogsReceiver(createLogsReceiver CreateLogsReceiverFunc, sl StabilityLev // NewReceiverFactory returns a ReceiverFactory. func NewReceiverFactory(cfgType config.Type, createDefaultConfig ReceiverCreateDefaultConfigFunc, options ...ReceiverFactoryOption) ReceiverFactory { f := &receiverFactory{ - baseFactory: baseFactory{cfgType: cfgType, stability: make(map[config.DataType]StabilityLevel)}, + baseFactory: baseFactory{cfgType: cfgType}, ReceiverCreateDefaultConfigFunc: createDefaultConfig, } for _, opt := range options { diff --git a/extension/ballastextension/factory.go b/extension/ballastextension/factory.go index 112e7df32c..e19dbee50f 100644 --- a/extension/ballastextension/factory.go +++ b/extension/ballastextension/factory.go @@ -32,7 +32,7 @@ var memHandler = iruntime.TotalMemory // NewFactory creates a factory for FluentBit extension. func NewFactory() component.ExtensionFactory { - return component.NewExtensionFactoryWithStabilityLevel(typeStr, createDefaultConfig, createExtension, component.StabilityLevelBeta) + return component.NewExtensionFactory(typeStr, createDefaultConfig, createExtension, component.StabilityLevelBeta) } func createDefaultConfig() config.Extension { diff --git a/extension/zpagesextension/factory.go b/extension/zpagesextension/factory.go index 07825e5e4d..00119108ea 100644 --- a/extension/zpagesextension/factory.go +++ b/extension/zpagesextension/factory.go @@ -31,7 +31,7 @@ const ( // NewFactory creates a factory for Z-Pages extension. func NewFactory() component.ExtensionFactory { - return component.NewExtensionFactoryWithStabilityLevel(typeStr, createDefaultConfig, createExtension, component.StabilityLevelBeta) + return component.NewExtensionFactory(typeStr, createDefaultConfig, createExtension, component.StabilityLevelBeta) } func createDefaultConfig() config.Extension { diff --git a/service/error-output-logs b/service/error-output-logs new file mode 100644 index 0000000000..e69de29bb2 diff --git a/service/extensions/extensions_test.go b/service/extensions/extensions_test.go index d42abd74dc..6c65f2f645 100644 --- a/service/extensions/extensions_test.go +++ b/service/extensions/extensions_test.go @@ -106,7 +106,7 @@ func TestBuildExtensions(t *testing.T) { } func newBadExtensionFactory() component.ExtensionFactory { - return component.NewExtensionFactoryWithStabilityLevel( + return component.NewExtensionFactory( "bf", func() config.Extension { return &struct { @@ -123,7 +123,7 @@ func newBadExtensionFactory() component.ExtensionFactory { } func newCreateErrorExtensionFactory() component.ExtensionFactory { - return component.NewExtensionFactoryWithStabilityLevel( + return component.NewExtensionFactory( "err", func() config.Extension { return &struct {