From c4f817d9f008dd4ab04b4943f86a1d89eed5fe47 Mon Sep 17 00:00:00 2001 From: Jade Guiton Date: Fri, 31 Jan 2025 14:21:14 +0100 Subject: [PATCH 01/12] Deprecate type-specific MakeFactoryMap and add generic version in otelcol --- cmd/builder/internal/builder/main_test.go | 1 + .../builder/templates/components.go.tmpl | 10 +-- cmd/otelcorecol/components.go | 10 +-- cmd/otelcorecol/go.mod | 4 +- connector/connector.go | 2 + exporter/exporter.go | 2 + extension/extension.go | 2 + internal/e2e/go.mod | 4 ++ internal/e2e/go.sum | 10 ++- otelcol/factories.go | 15 +++++ otelcol/factories_test.go | 61 +++++++++++++++++-- otelcol/go.mod | 3 + otelcol/otelcoltest/go.mod | 12 ++-- otelcol/otelcoltest/nop_factories.go | 15 ++--- processor/processor.go | 2 + receiver/receiver.go | 2 + scraper/factory.go | 2 + service/go.mod | 9 +++ service/go.sum | 12 +++- service/internal/builders/builders.go | 2 +- service/internal/builders/connector.go | 4 +- service/internal/builders/exporter.go | 4 +- service/internal/builders/extension.go | 4 +- service/internal/builders/processor.go | 4 +- service/internal/builders/receiver.go | 4 +- .../connector_test.go | 20 +++--- .../exporter_test.go | 20 +++--- .../extension_test.go | 16 ++--- .../processor_test.go | 20 +++--- .../receiver_test.go | 20 +++--- 30 files changed, 207 insertions(+), 89 deletions(-) rename service/internal/{builders => builderstest}/connector_test.go (97%) rename service/internal/{builders => builderstest}/exporter_test.go (90%) rename service/internal/{builders => builderstest}/extension_test.go (82%) rename service/internal/{builders => builderstest}/processor_test.go (92%) rename service/internal/{builders => builderstest}/receiver_test.go (92%) diff --git a/cmd/builder/internal/builder/main_test.go b/cmd/builder/internal/builder/main_test.go index 41c06fea3bb..d8210e8563e 100644 --- a/cmd/builder/internal/builder/main_test.go +++ b/cmd/builder/internal/builder/main_test.go @@ -101,6 +101,7 @@ var replaceModules = []string{ "/receiver/otlpreceiver", "/receiver/receivertest", "/receiver/xreceiver", + "/scraper", "/semconv", "/service", } diff --git a/cmd/builder/internal/builder/templates/components.go.tmpl b/cmd/builder/internal/builder/templates/components.go.tmpl index 96d44297cc9..b8bdc46d8f9 100644 --- a/cmd/builder/internal/builder/templates/components.go.tmpl +++ b/cmd/builder/internal/builder/templates/components.go.tmpl @@ -31,7 +31,7 @@ func components() (otelcol.Factories, error) { var err error factories := otelcol.Factories{} - factories.Extensions, err = extension.MakeFactoryMap( + factories.Extensions, err = otelcol.MakeFactoryMap[extension.Factory]( {{- range .Extensions}} {{.Name}}.NewFactory(), {{- end}} @@ -44,7 +44,7 @@ func components() (otelcol.Factories, error) { factories.ExtensionModules[{{.Name}}.NewFactory().Type()] = "{{.GoMod}}" {{- end}} - factories.Receivers, err = receiver.MakeFactoryMap( + factories.Receivers, err = otelcol.MakeFactoryMap[receiver.Factory]( {{- range .Receivers}} {{.Name}}.NewFactory(), {{- end}} @@ -57,7 +57,7 @@ func components() (otelcol.Factories, error) { factories.ReceiverModules[{{.Name}}.NewFactory().Type()] = "{{.GoMod}}" {{- end}} - factories.Exporters, err = exporter.MakeFactoryMap( + factories.Exporters, err = otelcol.MakeFactoryMap[exporter.Factory]( {{- range .Exporters}} {{.Name}}.NewFactory(), {{- end}} @@ -70,7 +70,7 @@ func components() (otelcol.Factories, error) { factories.ExporterModules[{{.Name}}.NewFactory().Type()] = "{{.GoMod}}" {{- end}} - factories.Processors, err = processor.MakeFactoryMap( + factories.Processors, err = otelcol.MakeFactoryMap[processor.Factory]( {{- range .Processors}} {{.Name}}.NewFactory(), {{- end}} @@ -83,7 +83,7 @@ func components() (otelcol.Factories, error) { factories.ProcessorModules[{{.Name}}.NewFactory().Type()] = "{{.GoMod}}" {{- end}} - factories.Connectors, err = connector.MakeFactoryMap( + factories.Connectors, err = otelcol.MakeFactoryMap[connector.Factory]( {{- range .Connectors}} {{.Name}}.NewFactory(), {{- end}} diff --git a/cmd/otelcorecol/components.go b/cmd/otelcorecol/components.go index d98608a3366..77e5ab5db3a 100644 --- a/cmd/otelcorecol/components.go +++ b/cmd/otelcorecol/components.go @@ -27,7 +27,7 @@ func components() (otelcol.Factories, error) { var err error factories := otelcol.Factories{} - factories.Extensions, err = extension.MakeFactoryMap( + factories.Extensions, err = otelcol.MakeFactoryMap[extension.Factory]( memorylimiterextension.NewFactory(), zpagesextension.NewFactory(), ) @@ -38,7 +38,7 @@ func components() (otelcol.Factories, error) { factories.ExtensionModules[memorylimiterextension.NewFactory().Type()] = "go.opentelemetry.io/collector/extension/memorylimiterextension v0.118.0" factories.ExtensionModules[zpagesextension.NewFactory().Type()] = "go.opentelemetry.io/collector/extension/zpagesextension v0.118.0" - factories.Receivers, err = receiver.MakeFactoryMap( + factories.Receivers, err = otelcol.MakeFactoryMap[receiver.Factory]( nopreceiver.NewFactory(), otlpreceiver.NewFactory(), ) @@ -49,7 +49,7 @@ func components() (otelcol.Factories, error) { factories.ReceiverModules[nopreceiver.NewFactory().Type()] = "go.opentelemetry.io/collector/receiver/nopreceiver v0.118.0" factories.ReceiverModules[otlpreceiver.NewFactory().Type()] = "go.opentelemetry.io/collector/receiver/otlpreceiver v0.118.0" - factories.Exporters, err = exporter.MakeFactoryMap( + factories.Exporters, err = otelcol.MakeFactoryMap[exporter.Factory]( debugexporter.NewFactory(), nopexporter.NewFactory(), otlpexporter.NewFactory(), @@ -64,7 +64,7 @@ func components() (otelcol.Factories, error) { factories.ExporterModules[otlpexporter.NewFactory().Type()] = "go.opentelemetry.io/collector/exporter/otlpexporter v0.118.0" factories.ExporterModules[otlphttpexporter.NewFactory().Type()] = "go.opentelemetry.io/collector/exporter/otlphttpexporter v0.118.0" - factories.Processors, err = processor.MakeFactoryMap( + factories.Processors, err = otelcol.MakeFactoryMap[processor.Factory]( batchprocessor.NewFactory(), memorylimiterprocessor.NewFactory(), ) @@ -75,7 +75,7 @@ func components() (otelcol.Factories, error) { factories.ProcessorModules[batchprocessor.NewFactory().Type()] = "go.opentelemetry.io/collector/processor/batchprocessor v0.118.0" factories.ProcessorModules[memorylimiterprocessor.NewFactory().Type()] = "go.opentelemetry.io/collector/processor/memorylimiterprocessor v0.118.0" - factories.Connectors, err = connector.MakeFactoryMap( + factories.Connectors, err = otelcol.MakeFactoryMap[connector.Factory]( forwardconnector.NewFactory(), ) if err != nil { diff --git a/cmd/otelcorecol/go.mod b/cmd/otelcorecol/go.mod index a2aaba73099..32878db49e2 100644 --- a/cmd/otelcorecol/go.mod +++ b/cmd/otelcorecol/go.mod @@ -4,7 +4,7 @@ module go.opentelemetry.io/collector/cmd/otelcorecol go 1.22.0 -toolchain go1.22.11 +toolchain go1.22.9 require ( go.opentelemetry.io/collector/component v0.118.0 @@ -293,3 +293,5 @@ replace go.opentelemetry.io/collector/receiver/xreceiver => ../../receiver/xrece replace go.opentelemetry.io/collector/semconv => ../../semconv replace go.opentelemetry.io/collector/service => ../../service + +replace go.opentelemetry.io/collector/scraper => ../../scraper diff --git a/connector/connector.go b/connector/connector.go index 2ae78f26a6b..0d43596bbc2 100644 --- a/connector/connector.go +++ b/connector/connector.go @@ -388,6 +388,8 @@ func NewFactory(cfgType component.Type, createDefaultConfig component.CreateDefa // MakeFactoryMap takes a list of connector factories and returns a map with factory type as keys. // It returns a non-nil error when there are factories with duplicate type. +// +// Deprecated: Use otelcol.MakeFactoryMap[connector.Factory] instead func MakeFactoryMap(factories ...Factory) (map[component.Type]Factory, error) { fMap := map[component.Type]Factory{} for _, f := range factories { diff --git a/exporter/exporter.go b/exporter/exporter.go index 0e54bfb1b3c..9e0916dc824 100644 --- a/exporter/exporter.go +++ b/exporter/exporter.go @@ -190,6 +190,8 @@ func NewFactory(cfgType component.Type, createDefaultConfig component.CreateDefa // MakeFactoryMap takes a list of factories and returns a map with Factory type as keys. // It returns a non-nil error when there are factories with duplicate type. +// +// Deprecated: Use otelcol.MakeFactoryMap[exporter.Factory] instead func MakeFactoryMap(factories ...Factory) (map[component.Type]Factory, error) { fMap := map[component.Type]Factory{} for _, f := range factories { diff --git a/extension/extension.go b/extension/extension.go index 41c5a76000f..428b672ee4a 100644 --- a/extension/extension.go +++ b/extension/extension.go @@ -94,6 +94,8 @@ func NewFactory( // MakeFactoryMap takes a list of factories and returns a map with Factory type as keys. // It returns a non-nil error when there are factories with duplicate type. +// +// Deprecated: Use otelcol.MakeFactoryMap[extension.Factory] instead func MakeFactoryMap(factories ...Factory) (map[component.Type]Factory, error) { fMap := map[component.Type]Factory{} for _, f := range factories { diff --git a/internal/e2e/go.mod b/internal/e2e/go.mod index b7120b059c8..2729f7c443c 100644 --- a/internal/e2e/go.mod +++ b/internal/e2e/go.mod @@ -242,3 +242,7 @@ replace go.opentelemetry.io/collector/extension/extensiontest => ../../extension replace go.opentelemetry.io/collector/extension/auth/authtest => ../../extension/auth/authtest replace go.opentelemetry.io/collector/extension/xextension => ../../extension/xextension + +replace go.opentelemetry.io/collector/otelcol => ../../otelcol + +replace go.opentelemetry.io/collector/scraper => ../../scraper diff --git a/internal/e2e/go.sum b/internal/e2e/go.sum index d3bfe583c97..d31f23bb806 100644 --- a/internal/e2e/go.sum +++ b/internal/e2e/go.sum @@ -38,6 +38,8 @@ github.com/grpc-ecosystem/grpc-gateway/v2 v2.25.1 h1:VNqngBF40hVlDloBruUehVYC3Ar github.com/grpc-ecosystem/grpc-gateway/v2 v2.25.1/go.mod h1:RBRO7fro65R6tjKzYgLAFo0t1QEXY1Dp+i/bvpRiqiQ= github.com/hashicorp/go-version v1.7.0 h1:5tqGy27NaOTB8yJKUZELlFAS/LTKJkrmONwQKeRZfjY= github.com/hashicorp/go-version v1.7.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= +github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= +github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= @@ -91,6 +93,10 @@ github.com/rs/cors v1.11.1 h1:eU3gRzXLRK57F5rKMGMZURNdIG4EoAmX8k94r9wXWHA= github.com/rs/cors v1.11.1/go.mod h1:XyqrcTp5zjWr1wsJ8PIRZssZ8b/WMcMf71DJnit4EMU= github.com/shirou/gopsutil/v4 v4.24.12 h1:qvePBOk20e0IKA1QXrIIU+jmk+zEiYVVx06WjBRlZo4= github.com/shirou/gopsutil/v4 v4.24.12/go.mod h1:DCtMPAad2XceTeIAbGyVfycbYQNBGk2P8cvDi7/VN9o= +github.com/spf13/cobra v1.8.1 h1:e5/vxKd/rZsfSJMUX1agtjeTDf+qv1/JdBF8gg5k9ZM= +github.com/spf13/cobra v1.8.1/go.mod h1:wHxEcudfqmLYa8iTfL+OuZPbBZkmvliBWKIezN3kD9Y= +github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= +github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA= @@ -164,8 +170,8 @@ go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/exp v0.0.0-20231110203233-9a3e6036ecaa h1:FRnLl4eNAQl8hwxVVC17teOw8kdjVDVAiFMtgUdTSRQ= -golang.org/x/exp v0.0.0-20231110203233-9a3e6036ecaa/go.mod h1:zk2irFbV9DP96SEBUUAy67IdHUaZuSnrz1n472HUCLE= +golang.org/x/exp v0.0.0-20240506185415-9bf2ced13842 h1:vr/HnozRka3pE4EsMEg1lgkXJkTFJCVUX+S/ZT6wYzM= +golang.org/x/exp v0.0.0-20240506185415-9bf2ced13842/go.mod h1:XtvwrStGgqGPLc4cjQfWqZHG1YFdYs6swckp8vpsjnc= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= diff --git a/otelcol/factories.go b/otelcol/factories.go index 7528fa00666..c080dbde584 100644 --- a/otelcol/factories.go +++ b/otelcol/factories.go @@ -4,6 +4,8 @@ package otelcol // import "go.opentelemetry.io/collector/otelcol" import ( + "fmt" + "go.opentelemetry.io/collector/component" "go.opentelemetry.io/collector/connector" "go.opentelemetry.io/collector/exporter" @@ -45,3 +47,16 @@ type Factories struct { // ConnectorModules maps connector types to their respective go modules. ConnectorModules map[component.Type]string } + +// MakeFactoryMap takes a list of factories and returns a map with Factory type as keys. +// It returns a non-nil error when there are factories with duplicate type. +func MakeFactoryMap[T component.Factory](factories ...T) (map[component.Type]T, error) { + fMap := map[component.Type]T{} + for _, f := range factories { + if _, ok := fMap[f.Type()]; ok { + return fMap, fmt.Errorf("duplicate component factory %q", f.Type()) + } + fMap[f.Type()] = f + } + return fMap, nil +} diff --git a/otelcol/factories_test.go b/otelcol/factories_test.go index ccf28ff242c..acaa531c768 100644 --- a/otelcol/factories_test.go +++ b/otelcol/factories_test.go @@ -4,6 +4,10 @@ package otelcol import ( + "testing" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" "go.opentelemetry.io/collector/component" "go.opentelemetry.io/collector/connector" "go.opentelemetry.io/collector/connector/connectortest" @@ -15,13 +19,14 @@ import ( "go.opentelemetry.io/collector/processor/processortest" "go.opentelemetry.io/collector/receiver" "go.opentelemetry.io/collector/receiver/receivertest" + "go.opentelemetry.io/collector/scraper" ) func nopFactories() (Factories, error) { var factories Factories var err error - if factories.Connectors, err = connector.MakeFactoryMap(connectortest.NewNopFactory()); err != nil { + if factories.Connectors, err = MakeFactoryMap(connectortest.NewNopFactory()); err != nil { return Factories{}, err } factories.ConnectorModules = make(map[component.Type]string, len(factories.Connectors)) @@ -29,7 +34,7 @@ func nopFactories() (Factories, error) { factories.ConnectorModules[con.Type()] = "go.opentelemetry.io/collector/connector/connectortest v1.2.3" } - if factories.Extensions, err = extension.MakeFactoryMap(extensiontest.NewNopFactory()); err != nil { + if factories.Extensions, err = MakeFactoryMap(extensiontest.NewNopFactory()); err != nil { return Factories{}, err } factories.ExtensionModules = make(map[component.Type]string, len(factories.Extensions)) @@ -37,7 +42,7 @@ func nopFactories() (Factories, error) { factories.ExtensionModules[ext.Type()] = "go.opentelemetry.io/collector/extension/extensiontest v1.2.3" } - if factories.Receivers, err = receiver.MakeFactoryMap(receivertest.NewNopFactory()); err != nil { + if factories.Receivers, err = MakeFactoryMap(receivertest.NewNopFactory()); err != nil { return Factories{}, err } factories.ReceiverModules = make(map[component.Type]string, len(factories.Receivers)) @@ -45,7 +50,7 @@ func nopFactories() (Factories, error) { factories.ReceiverModules[rec.Type()] = "go.opentelemetry.io/collector/receiver/receivertest v1.2.3" } - if factories.Exporters, err = exporter.MakeFactoryMap(exportertest.NewNopFactory()); err != nil { + if factories.Exporters, err = MakeFactoryMap(exportertest.NewNopFactory()); err != nil { return Factories{}, err } factories.ExporterModules = make(map[component.Type]string, len(factories.Exporters)) @@ -53,7 +58,7 @@ func nopFactories() (Factories, error) { factories.ExporterModules[exp.Type()] = "go.opentelemetry.io/collector/exporter/exportertest v1.2.3" } - if factories.Processors, err = processor.MakeFactoryMap(processortest.NewNopFactory()); err != nil { + if factories.Processors, err = MakeFactoryMap(processortest.NewNopFactory()); err != nil { return Factories{}, err } factories.ProcessorModules = make(map[component.Type]string, len(factories.Processors)) @@ -63,3 +68,49 @@ func nopFactories() (Factories, error) { return factories, err } + +func TestMakeFactoryMap(t *testing.T) { + type testCase struct { + name string + in []component.Factory + out map[component.Type]component.Factory + } + + fRec := receiver.NewFactory(component.MustNewType("rec"), nil) + fRec2 := receiver.NewFactory(component.MustNewType("rec"), nil) + fScr := scraper.NewFactory(component.MustNewType("scr"), nil) + fPro := processor.NewFactory(component.MustNewType("pro"), nil) + fCon := connector.NewFactory(component.MustNewType("con"), nil) + fExp := exporter.NewFactory(component.MustNewType("exp"), nil) + fExt := extension.NewFactory(component.MustNewType("ext"), nil, nil, component.StabilityLevelUndefined) + testCases := []testCase{ + { + name: "different names", + in: []component.Factory{fRec, fScr, fPro, fCon, fExp, fExt}, + out: map[component.Type]component.Factory{ + fRec.Type(): fRec, + fScr.Type(): fScr, + fPro.Type(): fPro, + fCon.Type(): fCon, + fExp.Type(): fExp, + fExt.Type(): fExt, + }, + }, + { + name: "same name", + in: []component.Factory{fRec, fScr, fPro, fCon, fExp, fExt, fRec2}, + }, + } + + for _, tt := range testCases { + t.Run(tt.name, func(t *testing.T) { + out, err := MakeFactoryMap(tt.in...) + if tt.out == nil { + assert.Error(t, err) + return + } + require.NoError(t, err) + assert.Equal(t, tt.out, out) + }) + } +} diff --git a/otelcol/go.mod b/otelcol/go.mod index 699eed63d9f..98d205ffeb3 100644 --- a/otelcol/go.mod +++ b/otelcol/go.mod @@ -21,6 +21,7 @@ require ( go.opentelemetry.io/collector/processor/processortest v0.118.0 go.opentelemetry.io/collector/receiver v0.118.0 go.opentelemetry.io/collector/receiver/receivertest v0.118.0 + go.opentelemetry.io/collector/scraper v0.118.0 go.opentelemetry.io/collector/service v0.118.0 go.opentelemetry.io/contrib/config v0.14.0 go.uber.org/goleak v1.3.0 @@ -204,3 +205,5 @@ replace go.opentelemetry.io/collector/extension/extensiontest => ../extension/ex replace go.opentelemetry.io/collector/extension/auth/authtest => ../extension/auth/authtest replace go.opentelemetry.io/collector/extension/xextension => ../extension/xextension + +replace go.opentelemetry.io/collector/scraper => ../scraper diff --git a/otelcol/otelcoltest/go.mod b/otelcol/otelcoltest/go.mod index 3e6d08f8ea7..b2f859ef8ef 100644 --- a/otelcol/otelcoltest/go.mod +++ b/otelcol/otelcoltest/go.mod @@ -10,17 +10,12 @@ require ( go.opentelemetry.io/collector/confmap/provider/fileprovider v1.24.0 go.opentelemetry.io/collector/confmap/provider/httpprovider v1.24.0 go.opentelemetry.io/collector/confmap/provider/yamlprovider v1.24.0 - go.opentelemetry.io/collector/connector v0.118.0 go.opentelemetry.io/collector/connector/connectortest v0.118.0 - go.opentelemetry.io/collector/exporter v0.118.0 go.opentelemetry.io/collector/exporter/exportertest v0.118.0 - go.opentelemetry.io/collector/extension v0.118.0 go.opentelemetry.io/collector/extension/extensiontest v0.118.0 go.opentelemetry.io/collector/otelcol v0.118.0 go.opentelemetry.io/collector/pipeline v0.118.0 - go.opentelemetry.io/collector/processor v0.118.0 go.opentelemetry.io/collector/processor/processortest v0.118.0 - go.opentelemetry.io/collector/receiver v0.118.0 go.opentelemetry.io/collector/receiver/receivertest v0.118.0 go.opentelemetry.io/collector/service v0.118.0 go.uber.org/goleak v1.3.0 @@ -68,12 +63,15 @@ require ( go.opentelemetry.io/collector/component/componentstatus v0.118.0 // indirect go.opentelemetry.io/collector/component/componenttest v0.118.0 // indirect go.opentelemetry.io/collector/config/configtelemetry v0.118.0 // indirect + go.opentelemetry.io/collector/connector v0.118.0 // indirect go.opentelemetry.io/collector/connector/xconnector v0.118.0 // indirect go.opentelemetry.io/collector/consumer v1.24.0 // indirect go.opentelemetry.io/collector/consumer/consumererror v0.118.0 // indirect go.opentelemetry.io/collector/consumer/consumertest v0.118.0 // indirect go.opentelemetry.io/collector/consumer/xconsumer v0.118.0 // indirect + go.opentelemetry.io/collector/exporter v0.118.0 // indirect go.opentelemetry.io/collector/exporter/xexporter v0.118.0 // indirect + go.opentelemetry.io/collector/extension v0.118.0 // indirect go.opentelemetry.io/collector/extension/extensioncapabilities v0.118.0 // indirect go.opentelemetry.io/collector/featuregate v1.24.0 // indirect go.opentelemetry.io/collector/internal/fanoutconsumer v0.118.0 // indirect @@ -81,7 +79,9 @@ require ( go.opentelemetry.io/collector/pdata/pprofile v0.118.0 // indirect go.opentelemetry.io/collector/pdata/testdata v0.118.0 // indirect go.opentelemetry.io/collector/pipeline/xpipeline v0.118.0 // indirect + go.opentelemetry.io/collector/processor v0.118.0 // indirect go.opentelemetry.io/collector/processor/xprocessor v0.118.0 // indirect + go.opentelemetry.io/collector/receiver v0.118.0 // indirect go.opentelemetry.io/collector/receiver/xreceiver v0.118.0 // indirect go.opentelemetry.io/collector/semconv v0.118.0 // indirect go.opentelemetry.io/contrib/bridges/otelzap v0.9.0 // indirect @@ -219,3 +219,5 @@ replace go.opentelemetry.io/collector/confmap => ../../confmap replace go.opentelemetry.io/collector/processor/processortest => ../../processor/processortest replace go.opentelemetry.io/collector/pdata/testdata => ../../pdata/testdata + +replace go.opentelemetry.io/collector/scraper => ../../scraper diff --git a/otelcol/otelcoltest/nop_factories.go b/otelcol/otelcoltest/nop_factories.go index 930db9fc89e..7dec1ec223c 100644 --- a/otelcol/otelcoltest/nop_factories.go +++ b/otelcol/otelcoltest/nop_factories.go @@ -4,16 +4,11 @@ package otelcoltest // import "go.opentelemetry.io/collector/otelcol/otelcoltest" import ( - "go.opentelemetry.io/collector/connector" "go.opentelemetry.io/collector/connector/connectortest" - "go.opentelemetry.io/collector/exporter" "go.opentelemetry.io/collector/exporter/exportertest" - "go.opentelemetry.io/collector/extension" "go.opentelemetry.io/collector/extension/extensiontest" "go.opentelemetry.io/collector/otelcol" - "go.opentelemetry.io/collector/processor" "go.opentelemetry.io/collector/processor/processortest" - "go.opentelemetry.io/collector/receiver" "go.opentelemetry.io/collector/receiver/receivertest" ) @@ -22,23 +17,23 @@ func NopFactories() (otelcol.Factories, error) { var factories otelcol.Factories var err error - if factories.Extensions, err = extension.MakeFactoryMap(extensiontest.NewNopFactory()); err != nil { + if factories.Extensions, err = otelcol.MakeFactoryMap(extensiontest.NewNopFactory()); err != nil { return otelcol.Factories{}, err } - if factories.Receivers, err = receiver.MakeFactoryMap(receivertest.NewNopFactory()); err != nil { + if factories.Receivers, err = otelcol.MakeFactoryMap(receivertest.NewNopFactory()); err != nil { return otelcol.Factories{}, err } - if factories.Exporters, err = exporter.MakeFactoryMap(exportertest.NewNopFactory()); err != nil { + if factories.Exporters, err = otelcol.MakeFactoryMap(exportertest.NewNopFactory()); err != nil { return otelcol.Factories{}, err } - if factories.Processors, err = processor.MakeFactoryMap(processortest.NewNopFactory()); err != nil { + if factories.Processors, err = otelcol.MakeFactoryMap(processortest.NewNopFactory()); err != nil { return otelcol.Factories{}, err } - if factories.Connectors, err = connector.MakeFactoryMap(connectortest.NewNopFactory()); err != nil { + if factories.Connectors, err = otelcol.MakeFactoryMap(connectortest.NewNopFactory()); err != nil { return otelcol.Factories{}, err } diff --git a/processor/processor.go b/processor/processor.go index 8ecd4d497c6..9171ee88ecb 100644 --- a/processor/processor.go +++ b/processor/processor.go @@ -193,6 +193,8 @@ func NewFactory(cfgType component.Type, createDefaultConfig component.CreateDefa // MakeFactoryMap takes a list of factories and returns a map with Factory type as keys. // It returns a non-nil error when there are factories with duplicate type. +// +// Deprecated: Use otelcol.MakeFactoryMap[processor.Factory] instead func MakeFactoryMap(factories ...Factory) (map[component.Type]Factory, error) { fMap := map[component.Type]Factory{} for _, f := range factories { diff --git a/receiver/receiver.go b/receiver/receiver.go index dd7242d5f77..138fd6b3ec8 100644 --- a/receiver/receiver.go +++ b/receiver/receiver.go @@ -200,6 +200,8 @@ func NewFactory(cfgType component.Type, createDefaultConfig component.CreateDefa // MakeFactoryMap takes a list of receiver factories and returns a map with factory type as keys. // It returns a non-nil error when there are factories with duplicate type. +// +// Deprecated: Use otelcol.MakeFactoryMap[receiver.Factory] instead func MakeFactoryMap(factories ...Factory) (map[component.Type]Factory, error) { fMap := map[component.Type]Factory{} for _, f := range factories { diff --git a/scraper/factory.go b/scraper/factory.go index e801074d0ae..4b7b3b84efc 100644 --- a/scraper/factory.go +++ b/scraper/factory.go @@ -138,6 +138,8 @@ func NewFactory(cfgType component.Type, createDefaultConfig component.CreateDefa // MakeFactoryMap takes a list of receiver factories and returns a map with factory type as keys. // It returns a non-nil error when there are factories with duplicate type. +// +// Deprecated: Use otelcol.MakeFactoryMap[extension.Factory] instead func MakeFactoryMap(factories ...Factory) (map[component.Type]Factory, error) { fMap := map[component.Type]Factory{} for _, f := range factories { diff --git a/service/go.mod b/service/go.mod index a35f4e6d3ee..bf37e495b28 100644 --- a/service/go.mod +++ b/service/go.mod @@ -30,6 +30,7 @@ require ( go.opentelemetry.io/collector/extension/zpagesextension v0.118.0 go.opentelemetry.io/collector/featuregate v1.24.0 go.opentelemetry.io/collector/internal/fanoutconsumer v0.118.0 + go.opentelemetry.io/collector/otelcol v0.118.0 go.opentelemetry.io/collector/pdata v1.24.0 go.opentelemetry.io/collector/pdata/pprofile v0.118.0 go.opentelemetry.io/collector/pdata/testdata v0.118.0 @@ -73,6 +74,7 @@ require ( github.com/golang/snappy v0.0.4 // indirect github.com/grpc-ecosystem/grpc-gateway/v2 v2.25.1 // indirect github.com/hashicorp/go-version v1.7.0 // indirect + github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/json-iterator/go v1.1.12 // indirect github.com/klauspost/compress v1.17.11 // indirect github.com/knadh/koanf/maps v0.1.1 // indirect @@ -90,6 +92,8 @@ require ( github.com/prometheus/client_golang v1.20.5 // indirect github.com/prometheus/procfs v0.15.1 // indirect github.com/rs/cors v1.11.1 // indirect + github.com/spf13/cobra v1.8.1 // indirect + github.com/spf13/pflag v1.0.5 // indirect github.com/tklauser/go-sysconf v0.3.12 // indirect github.com/tklauser/numcpus v0.6.1 // indirect github.com/yusufpapurcu/wmi v1.2.4 // indirect @@ -116,6 +120,7 @@ require ( go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.34.0 // indirect go.opentelemetry.io/otel/sdk/log v0.10.0 // indirect go.opentelemetry.io/proto/otlp v1.5.0 // indirect + golang.org/x/exp v0.0.0-20240506185415-9bf2ced13842 // indirect golang.org/x/net v0.34.0 // indirect golang.org/x/sys v0.29.0 // indirect golang.org/x/text v0.21.0 // indirect @@ -213,3 +218,7 @@ replace go.opentelemetry.io/collector/extension/extensiontest => ../extension/ex replace go.opentelemetry.io/collector/extension/auth/authtest => ../extension/auth/authtest replace go.opentelemetry.io/collector/extension/xextension => ../extension/xextension + +replace go.opentelemetry.io/collector/otelcol => ../otelcol + +replace go.opentelemetry.io/collector/scraper => ../scraper diff --git a/service/go.sum b/service/go.sum index 85c80f75f53..696da84f942 100644 --- a/service/go.sum +++ b/service/go.sum @@ -4,6 +4,7 @@ github.com/cenkalti/backoff/v4 v4.3.0 h1:MyRJ/UdXutAwSAT+s3wNd7MfTIcy71VQueUuFK3 github.com/cenkalti/backoff/v4 v4.3.0/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE= github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs= github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= +github.com/cpuguy83/go-md2man/v2 v2.0.4/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= @@ -38,6 +39,8 @@ github.com/grpc-ecosystem/grpc-gateway/v2 v2.25.1 h1:VNqngBF40hVlDloBruUehVYC3Ar github.com/grpc-ecosystem/grpc-gateway/v2 v2.25.1/go.mod h1:RBRO7fro65R6tjKzYgLAFo0t1QEXY1Dp+i/bvpRiqiQ= github.com/hashicorp/go-version v1.7.0 h1:5tqGy27NaOTB8yJKUZELlFAS/LTKJkrmONwQKeRZfjY= github.com/hashicorp/go-version v1.7.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= +github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= +github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= @@ -87,8 +90,13 @@ github.com/rogpeppe/go-internal v1.13.1 h1:KvO1DLK/DRN07sQ1LQKScxyZJuNnedQ5/wKSR github.com/rogpeppe/go-internal v1.13.1/go.mod h1:uMEvuHeurkdAXX61udpOXGD/AzZDWNMNyH2VO9fmH0o= github.com/rs/cors v1.11.1 h1:eU3gRzXLRK57F5rKMGMZURNdIG4EoAmX8k94r9wXWHA= github.com/rs/cors v1.11.1/go.mod h1:XyqrcTp5zjWr1wsJ8PIRZssZ8b/WMcMf71DJnit4EMU= +github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/shirou/gopsutil/v4 v4.24.12 h1:qvePBOk20e0IKA1QXrIIU+jmk+zEiYVVx06WjBRlZo4= github.com/shirou/gopsutil/v4 v4.24.12/go.mod h1:DCtMPAad2XceTeIAbGyVfycbYQNBGk2P8cvDi7/VN9o= +github.com/spf13/cobra v1.8.1 h1:e5/vxKd/rZsfSJMUX1agtjeTDf+qv1/JdBF8gg5k9ZM= +github.com/spf13/cobra v1.8.1/go.mod h1:wHxEcudfqmLYa8iTfL+OuZPbBZkmvliBWKIezN3kD9Y= +github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= +github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA= @@ -160,8 +168,8 @@ go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/exp v0.0.0-20231110203233-9a3e6036ecaa h1:FRnLl4eNAQl8hwxVVC17teOw8kdjVDVAiFMtgUdTSRQ= -golang.org/x/exp v0.0.0-20231110203233-9a3e6036ecaa/go.mod h1:zk2irFbV9DP96SEBUUAy67IdHUaZuSnrz1n472HUCLE= +golang.org/x/exp v0.0.0-20240506185415-9bf2ced13842 h1:vr/HnozRka3pE4EsMEg1lgkXJkTFJCVUX+S/ZT6wYzM= +golang.org/x/exp v0.0.0-20240506185415-9bf2ced13842/go.mod h1:XtvwrStGgqGPLc4cjQfWqZHG1YFdYs6swckp8vpsjnc= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= diff --git a/service/internal/builders/builders.go b/service/internal/builders/builders.go index bf5844bd932..4e332b3012a 100644 --- a/service/internal/builders/builders.go +++ b/service/internal/builders/builders.go @@ -13,7 +13,7 @@ import ( var ( errNilNextConsumer = errors.New("nil next Consumer") - nopType = component.MustNewType("nop") + NopType = component.MustNewType("nop") ) // logStabilityLevel logs the stability level of a component. The log level is set to info for diff --git a/service/internal/builders/connector.go b/service/internal/builders/connector.go index b157d2dd64a..dffc3bb0f65 100644 --- a/service/internal/builders/connector.go +++ b/service/internal/builders/connector.go @@ -386,13 +386,13 @@ func NewNopConnectorConfigsAndFactories() (map[component.ID]component.Config, ma // Use a different ID than receivertest and exportertest to avoid ambiguous // configuration scenarios. Ambiguous IDs are detected in the 'otelcol' package, // but lower level packages such as 'service' assume that IDs are disambiguated. - connID := component.NewIDWithName(nopType, "conn") + connID := component.NewIDWithName(NopType, "conn") configs := map[component.ID]component.Config{ connID: nopFactory.CreateDefaultConfig(), } factories := map[component.Type]connector.Factory{ - nopType: nopFactory, + NopType: nopFactory, } return configs, factories diff --git a/service/internal/builders/exporter.go b/service/internal/builders/exporter.go index 6570828b76f..bb2367d22b7 100644 --- a/service/internal/builders/exporter.go +++ b/service/internal/builders/exporter.go @@ -102,10 +102,10 @@ func (b *ExporterBuilder) Factory(componentType component.Type) component.Factor func NewNopExporterConfigsAndFactories() (map[component.ID]component.Config, map[component.Type]exporter.Factory) { nopFactory := exportertest.NewNopFactory() configs := map[component.ID]component.Config{ - component.NewID(nopType): nopFactory.CreateDefaultConfig(), + component.NewID(NopType): nopFactory.CreateDefaultConfig(), } factories := map[component.Type]exporter.Factory{ - nopType: nopFactory, + NopType: nopFactory, } return configs, factories diff --git a/service/internal/builders/extension.go b/service/internal/builders/extension.go index 6ac32fe5698..35c2bead4aa 100644 --- a/service/internal/builders/extension.go +++ b/service/internal/builders/extension.go @@ -60,10 +60,10 @@ func (b *ExtensionBuilder) Factory(componentType component.Type) component.Facto func NewNopExtensionConfigsAndFactories() (map[component.ID]component.Config, map[component.Type]extension.Factory) { nopFactory := extensiontest.NewNopFactory() configs := map[component.ID]component.Config{ - component.NewID(nopType): nopFactory.CreateDefaultConfig(), + component.NewID(NopType): nopFactory.CreateDefaultConfig(), } factories := map[component.Type]extension.Factory{ - nopType: nopFactory, + NopType: nopFactory, } return configs, factories } diff --git a/service/internal/builders/processor.go b/service/internal/builders/processor.go index c0df0f3b575..8e19bed3ea9 100644 --- a/service/internal/builders/processor.go +++ b/service/internal/builders/processor.go @@ -116,10 +116,10 @@ func (b *ProcessorBuilder) Factory(componentType component.Type) component.Facto func NewNopProcessorConfigsAndFactories() (map[component.ID]component.Config, map[component.Type]processor.Factory) { nopFactory := processortest.NewNopFactory() configs := map[component.ID]component.Config{ - component.NewID(nopType): nopFactory.CreateDefaultConfig(), + component.NewID(NopType): nopFactory.CreateDefaultConfig(), } factories := map[component.Type]processor.Factory{ - nopType: nopFactory, + NopType: nopFactory, } return configs, factories diff --git a/service/internal/builders/receiver.go b/service/internal/builders/receiver.go index 007d9be2187..2568392622b 100644 --- a/service/internal/builders/receiver.go +++ b/service/internal/builders/receiver.go @@ -118,10 +118,10 @@ func (b *ReceiverBuilder) Factory(componentType component.Type) component.Factor func NewNopReceiverConfigsAndFactories() (map[component.ID]component.Config, map[component.Type]receiver.Factory) { nopFactory := receivertest.NewNopFactory() configs := map[component.ID]component.Config{ - component.NewID(nopType): nopFactory.CreateDefaultConfig(), + component.NewID(NopType): nopFactory.CreateDefaultConfig(), } factories := map[component.Type]receiver.Factory{ - nopType: nopFactory, + NopType: nopFactory, } return configs, factories diff --git a/service/internal/builders/connector_test.go b/service/internal/builderstest/connector_test.go similarity index 97% rename from service/internal/builders/connector_test.go rename to service/internal/builderstest/connector_test.go index a1d60dbf816..dfb14b3e6c3 100644 --- a/service/internal/builders/connector_test.go +++ b/service/internal/builderstest/connector_test.go @@ -19,13 +19,15 @@ import ( "go.opentelemetry.io/collector/consumer" "go.opentelemetry.io/collector/consumer/consumertest" "go.opentelemetry.io/collector/consumer/xconsumer" + "go.opentelemetry.io/collector/otelcol" "go.opentelemetry.io/collector/pipeline" "go.opentelemetry.io/collector/pipeline/xpipeline" + "go.opentelemetry.io/collector/service/internal/builders" ) func TestConnectorBuilder(t *testing.T) { defaultCfg := struct{}{} - factories, err := connector.MakeFactoryMap([]connector.Factory{ + factories, err := otelcol.MakeFactoryMap([]connector.Factory{ connector.NewFactory(component.MustNewType("err"), nil), xconnector.NewFactory( component.MustNewType("all"), @@ -119,7 +121,7 @@ func TestConnectorBuilder(t *testing.T) { for _, tt := range testCases { t.Run(tt.name, func(t *testing.T) { cfgs := map[component.ID]component.Config{tt.id: defaultCfg} - b := NewConnector(cfgs, factories) + b := builders.NewConnector(cfgs, factories) t2t, err := b.CreateTracesToTraces(context.Background(), createConnectorSettings(tt.id), tt.nextTraces) if expectedErr := tt.err(pipeline.SignalTraces, pipeline.SignalTraces); expectedErr != "" { @@ -262,7 +264,7 @@ func TestConnectorBuilder(t *testing.T) { func TestConnectorBuilderMissingConfig(t *testing.T) { defaultCfg := struct{}{} - factories, err := connector.MakeFactoryMap([]connector.Factory{ + factories, err := otelcol.MakeFactoryMap([]connector.Factory{ xconnector.NewFactory( component.MustNewType("all"), func() component.Config { return &defaultCfg }, @@ -287,7 +289,7 @@ func TestConnectorBuilderMissingConfig(t *testing.T) { require.NoError(t, err) - bErr := NewConnector(map[component.ID]component.Config{}, factories) + bErr := builders.NewConnector(map[component.ID]component.Config{}, factories) missingID := component.MustNewIDWithName("all", "missing") t2t, err := bErr.CreateTracesToTraces(context.Background(), createConnectorSettings(missingID), consumertest.NewNop()) @@ -356,11 +358,11 @@ func TestConnectorBuilderMissingConfig(t *testing.T) { } func TestConnectorBuilderGetters(t *testing.T) { - factories, err := connector.MakeFactoryMap([]connector.Factory{connector.NewFactory(component.MustNewType("foo"), nil)}...) + factories, err := otelcol.MakeFactoryMap([]connector.Factory{connector.NewFactory(component.MustNewType("foo"), nil)}...) require.NoError(t, err) cfgs := map[component.ID]component.Config{component.MustNewID("foo"): struct{}{}} - b := NewConnector(cfgs, factories) + b := builders.NewConnector(cfgs, factories) assert.True(t, b.IsConfigured(component.MustNewID("foo"))) assert.False(t, b.IsConfigured(component.MustNewID("bar"))) @@ -370,14 +372,14 @@ func TestConnectorBuilderGetters(t *testing.T) { } func TestNewNopConnectorConfigsAndFactories(t *testing.T) { - configs, factories := NewNopConnectorConfigsAndFactories() - builder := NewConnector(configs, factories) + configs, factories := builders.NewNopConnectorConfigsAndFactories() + builder := builders.NewConnector(configs, factories) require.NotNil(t, builder) factory := connectortest.NewNopFactory() cfg := factory.CreateDefaultConfig() set := connectortest.NewNopSettings() - set.ID = component.NewIDWithName(nopType, "conn") + set.ID = component.NewIDWithName(builders.NopType, "conn") tracesToTraces, err := factory.CreateTracesToTraces(context.Background(), set, cfg, consumertest.NewNop()) require.NoError(t, err) diff --git a/service/internal/builders/exporter_test.go b/service/internal/builderstest/exporter_test.go similarity index 90% rename from service/internal/builders/exporter_test.go rename to service/internal/builderstest/exporter_test.go index d6435753fb6..4a632030b6f 100644 --- a/service/internal/builders/exporter_test.go +++ b/service/internal/builderstest/exporter_test.go @@ -16,11 +16,13 @@ import ( "go.opentelemetry.io/collector/exporter" "go.opentelemetry.io/collector/exporter/exportertest" "go.opentelemetry.io/collector/exporter/xexporter" + "go.opentelemetry.io/collector/otelcol" + "go.opentelemetry.io/collector/service/internal/builders" ) func TestExporterBuilder(t *testing.T) { defaultCfg := struct{}{} - factories, err := exporter.MakeFactoryMap([]exporter.Factory{ + factories, err := otelcol.MakeFactoryMap([]exporter.Factory{ exporter.NewFactory(component.MustNewType("err"), nil), xexporter.NewFactory( component.MustNewType("all"), @@ -61,7 +63,7 @@ func TestExporterBuilder(t *testing.T) { for _, tt := range testCases { t.Run(tt.name, func(t *testing.T) { cfgs := map[component.ID]component.Config{tt.id: defaultCfg} - b := NewExporter(cfgs, factories) + b := builders.NewExporter(cfgs, factories) te, err := b.CreateTraces(context.Background(), createExporterSettings(tt.id)) if tt.err != "" { @@ -104,7 +106,7 @@ func TestExporterBuilder(t *testing.T) { func TestExporterBuilderMissingConfig(t *testing.T) { defaultCfg := struct{}{} - factories, err := exporter.MakeFactoryMap([]exporter.Factory{ + factories, err := otelcol.MakeFactoryMap([]exporter.Factory{ xexporter.NewFactory( component.MustNewType("all"), func() component.Config { return &defaultCfg }, @@ -117,7 +119,7 @@ func TestExporterBuilderMissingConfig(t *testing.T) { require.NoError(t, err) - bErr := NewExporter(map[component.ID]component.Config{}, factories) + bErr := builders.NewExporter(map[component.ID]component.Config{}, factories) missingID := component.MustNewIDWithName("all", "missing") te, err := bErr.CreateTraces(context.Background(), createExporterSettings(missingID)) @@ -138,25 +140,25 @@ func TestExporterBuilderMissingConfig(t *testing.T) { } func TestExporterBuilderFactory(t *testing.T) { - factories, err := exporter.MakeFactoryMap([]exporter.Factory{exporter.NewFactory(component.MustNewType("foo"), nil)}...) + factories, err := otelcol.MakeFactoryMap([]exporter.Factory{exporter.NewFactory(component.MustNewType("foo"), nil)}...) require.NoError(t, err) cfgs := map[component.ID]component.Config{component.MustNewID("foo"): struct{}{}} - b := NewExporter(cfgs, factories) + b := builders.NewExporter(cfgs, factories) assert.NotNil(t, b.Factory(component.MustNewID("foo").Type())) assert.Nil(t, b.Factory(component.MustNewID("bar").Type())) } func TestNewNopExporterConfigsAndFactories(t *testing.T) { - configs, factories := NewNopExporterConfigsAndFactories() - builder := NewExporter(configs, factories) + configs, factories := builders.NewNopExporterConfigsAndFactories() + builder := builders.NewExporter(configs, factories) require.NotNil(t, builder) factory := exportertest.NewNopFactory() cfg := factory.CreateDefaultConfig() set := exportertest.NewNopSettings() - set.ID = component.NewID(nopType) + set.ID = component.NewID(builders.NopType) traces, err := factory.CreateTraces(context.Background(), set, cfg) require.NoError(t, err) diff --git a/service/internal/builders/extension_test.go b/service/internal/builderstest/extension_test.go similarity index 82% rename from service/internal/builders/extension_test.go rename to service/internal/builderstest/extension_test.go index 527a078a71d..a941741ebfe 100644 --- a/service/internal/builders/extension_test.go +++ b/service/internal/builderstest/extension_test.go @@ -14,6 +14,8 @@ import ( "go.opentelemetry.io/collector/component/componenttest" "go.opentelemetry.io/collector/extension" "go.opentelemetry.io/collector/extension/extensiontest" + "go.opentelemetry.io/collector/otelcol" + "go.opentelemetry.io/collector/service/internal/builders" ) func TestExtensionBuilder(t *testing.T) { @@ -22,7 +24,7 @@ func TestExtensionBuilder(t *testing.T) { testID := component.NewID(testType) unknownID := component.MustNewID("unknown") - factories, err := extension.MakeFactoryMap([]extension.Factory{ + factories, err := otelcol.MakeFactoryMap([]extension.Factory{ extension.NewFactory( testType, func() component.Config { return &defaultCfg }, @@ -34,7 +36,7 @@ func TestExtensionBuilder(t *testing.T) { require.NoError(t, err) cfgs := map[component.ID]component.Config{testID: defaultCfg, unknownID: defaultCfg} - b := NewExtension(cfgs, factories) + b := builders.NewExtension(cfgs, factories) e, err := b.Create(context.Background(), createExtensionSettings(testID)) require.NoError(t, err) @@ -55,25 +57,25 @@ func TestExtensionBuilder(t *testing.T) { } func TestExtensionBuilderFactory(t *testing.T) { - factories, err := extension.MakeFactoryMap([]extension.Factory{extension.NewFactory(component.MustNewType("foo"), nil, nil, component.StabilityLevelDevelopment)}...) + factories, err := otelcol.MakeFactoryMap([]extension.Factory{extension.NewFactory(component.MustNewType("foo"), nil, nil, component.StabilityLevelDevelopment)}...) require.NoError(t, err) cfgs := map[component.ID]component.Config{component.MustNewID("foo"): struct{}{}} - b := NewExtension(cfgs, factories) + b := builders.NewExtension(cfgs, factories) assert.NotNil(t, b.Factory(component.MustNewID("foo").Type())) assert.Nil(t, b.Factory(component.MustNewID("bar").Type())) } func TestNewNopExtensionConfigsAndFactories(t *testing.T) { - configs, factories := NewNopExtensionConfigsAndFactories() - builder := NewExtension(configs, factories) + configs, factories := builders.NewNopExtensionConfigsAndFactories() + builder := builders.NewExtension(configs, factories) require.NotNil(t, builder) factory := extensiontest.NewNopFactory() cfg := factory.CreateDefaultConfig() set := extensiontest.NewNopSettings() - set.ID = component.NewID(nopType) + set.ID = component.NewID(builders.NopType) ext, err := factory.Create(context.Background(), set, cfg) require.NoError(t, err) diff --git a/service/internal/builders/processor_test.go b/service/internal/builderstest/processor_test.go similarity index 92% rename from service/internal/builders/processor_test.go rename to service/internal/builderstest/processor_test.go index 6bd12114629..1a4b3b7ca99 100644 --- a/service/internal/builders/processor_test.go +++ b/service/internal/builderstest/processor_test.go @@ -15,14 +15,16 @@ import ( "go.opentelemetry.io/collector/consumer" "go.opentelemetry.io/collector/consumer/consumertest" "go.opentelemetry.io/collector/consumer/xconsumer" + "go.opentelemetry.io/collector/otelcol" "go.opentelemetry.io/collector/processor" "go.opentelemetry.io/collector/processor/processortest" "go.opentelemetry.io/collector/processor/xprocessor" + "go.opentelemetry.io/collector/service/internal/builders" ) func TestProcessorBuilder(t *testing.T) { defaultCfg := struct{}{} - factories, err := processor.MakeFactoryMap([]processor.Factory{ + factories, err := otelcol.MakeFactoryMap([]processor.Factory{ processor.NewFactory(component.MustNewType("err"), nil), xprocessor.NewFactory( component.MustNewType("all"), @@ -92,7 +94,7 @@ func TestProcessorBuilder(t *testing.T) { for _, tt := range testCases { t.Run(tt.name, func(t *testing.T) { cfgs := map[component.ID]component.Config{tt.id: defaultCfg} - b := NewProcessor(cfgs, factories) + b := builders.NewProcessor(cfgs, factories) te, err := b.CreateTraces(context.Background(), createProcessorSettings(tt.id), tt.nextTraces) if tt.err != "" { @@ -135,7 +137,7 @@ func TestProcessorBuilder(t *testing.T) { func TestProcessorBuilderMissingConfig(t *testing.T) { defaultCfg := struct{}{} - factories, err := processor.MakeFactoryMap([]processor.Factory{ + factories, err := otelcol.MakeFactoryMap([]processor.Factory{ xprocessor.NewFactory( component.MustNewType("all"), func() component.Config { return &defaultCfg }, @@ -148,7 +150,7 @@ func TestProcessorBuilderMissingConfig(t *testing.T) { require.NoError(t, err) - bErr := NewProcessor(map[component.ID]component.Config{}, factories) + bErr := builders.NewProcessor(map[component.ID]component.Config{}, factories) missingID := component.MustNewIDWithName("all", "missing") te, err := bErr.CreateTraces(context.Background(), createProcessorSettings(missingID), consumertest.NewNop()) @@ -169,25 +171,25 @@ func TestProcessorBuilderMissingConfig(t *testing.T) { } func TestProcessorBuilderFactory(t *testing.T) { - factories, err := processor.MakeFactoryMap([]processor.Factory{processor.NewFactory(component.MustNewType("foo"), nil)}...) + factories, err := otelcol.MakeFactoryMap([]processor.Factory{processor.NewFactory(component.MustNewType("foo"), nil)}...) require.NoError(t, err) cfgs := map[component.ID]component.Config{component.MustNewID("foo"): struct{}{}} - b := NewProcessor(cfgs, factories) + b := builders.NewProcessor(cfgs, factories) assert.NotNil(t, b.Factory(component.MustNewID("foo").Type())) assert.Nil(t, b.Factory(component.MustNewID("bar").Type())) } func TestNewNopProcessorBuilder(t *testing.T) { - configs, factories := NewNopProcessorConfigsAndFactories() - builder := NewProcessor(configs, factories) + configs, factories := builders.NewNopProcessorConfigsAndFactories() + builder := builders.NewProcessor(configs, factories) require.NotNil(t, builder) factory := processortest.NewNopFactory() cfg := factory.CreateDefaultConfig() set := processortest.NewNopSettings() - set.ID = component.NewID(nopType) + set.ID = component.NewID(builders.NopType) traces, err := factory.CreateTraces(context.Background(), set, cfg, consumertest.NewNop()) require.NoError(t, err) diff --git a/service/internal/builders/receiver_test.go b/service/internal/builderstest/receiver_test.go similarity index 92% rename from service/internal/builders/receiver_test.go rename to service/internal/builderstest/receiver_test.go index 0d1239f98d8..bd3b3db7a18 100644 --- a/service/internal/builders/receiver_test.go +++ b/service/internal/builderstest/receiver_test.go @@ -15,14 +15,16 @@ import ( "go.opentelemetry.io/collector/consumer" "go.opentelemetry.io/collector/consumer/consumertest" "go.opentelemetry.io/collector/consumer/xconsumer" + "go.opentelemetry.io/collector/otelcol" "go.opentelemetry.io/collector/receiver" "go.opentelemetry.io/collector/receiver/receivertest" "go.opentelemetry.io/collector/receiver/xreceiver" + "go.opentelemetry.io/collector/service/internal/builders" ) func TestReceiverBuilder(t *testing.T) { defaultCfg := struct{}{} - factories, err := receiver.MakeFactoryMap([]receiver.Factory{ + factories, err := otelcol.MakeFactoryMap([]receiver.Factory{ receiver.NewFactory(component.MustNewType("err"), nil), xreceiver.NewFactory( component.MustNewType("all"), @@ -92,7 +94,7 @@ func TestReceiverBuilder(t *testing.T) { for _, tt := range testCases { t.Run(tt.name, func(t *testing.T) { cfgs := map[component.ID]component.Config{tt.id: defaultCfg} - b := NewReceiver(cfgs, factories) + b := builders.NewReceiver(cfgs, factories) te, err := b.CreateTraces(context.Background(), settings(tt.id), tt.nextTraces) if tt.err != "" { @@ -135,7 +137,7 @@ func TestReceiverBuilder(t *testing.T) { func TestReceiverBuilderMissingConfig(t *testing.T) { defaultCfg := struct{}{} - factories, err := receiver.MakeFactoryMap([]receiver.Factory{ + factories, err := otelcol.MakeFactoryMap([]receiver.Factory{ xreceiver.NewFactory( component.MustNewType("all"), func() component.Config { return &defaultCfg }, @@ -148,7 +150,7 @@ func TestReceiverBuilderMissingConfig(t *testing.T) { require.NoError(t, err) - bErr := NewReceiver(map[component.ID]component.Config{}, factories) + bErr := builders.NewReceiver(map[component.ID]component.Config{}, factories) missingID := component.MustNewIDWithName("all", "missing") te, err := bErr.CreateTraces(context.Background(), settings(missingID), consumertest.NewNop()) @@ -169,25 +171,25 @@ func TestReceiverBuilderMissingConfig(t *testing.T) { } func TestReceiverBuilderFactory(t *testing.T) { - factories, err := receiver.MakeFactoryMap([]receiver.Factory{receiver.NewFactory(component.MustNewType("foo"), nil)}...) + factories, err := otelcol.MakeFactoryMap([]receiver.Factory{receiver.NewFactory(component.MustNewType("foo"), nil)}...) require.NoError(t, err) cfgs := map[component.ID]component.Config{component.MustNewID("foo"): struct{}{}} - b := NewReceiver(cfgs, factories) + b := builders.NewReceiver(cfgs, factories) assert.NotNil(t, b.Factory(component.MustNewID("foo").Type())) assert.Nil(t, b.Factory(component.MustNewID("bar").Type())) } func TestNewNopReceiverConfigsAndFactories(t *testing.T) { - configs, factories := NewNopReceiverConfigsAndFactories() - builder := NewReceiver(configs, factories) + configs, factories := builders.NewNopReceiverConfigsAndFactories() + builder := builders.NewReceiver(configs, factories) require.NotNil(t, builder) factory := receivertest.NewNopFactory() cfg := factory.CreateDefaultConfig() set := receivertest.NewNopSettings() - set.ID = component.NewID(nopType) + set.ID = component.NewID(builders.NopType) traces, err := factory.CreateTraces(context.Background(), set, cfg, consumertest.NewNop()) require.NoError(t, err) From a90c556756907947abca7f9e264cc7f034a9a230 Mon Sep 17 00:00:00 2001 From: Jade Guiton Date: Fri, 31 Jan 2025 14:49:35 +0100 Subject: [PATCH 02/12] Tidy modules, fix linting, and remove dead code to satisfy codecov --- internal/e2e/go.sum | 6 ------ otelcol/factories_test.go | 1 + otelcol/otelcoltest/nop_factories.go | 28 +++++++--------------------- 3 files changed, 8 insertions(+), 27 deletions(-) diff --git a/internal/e2e/go.sum b/internal/e2e/go.sum index d31f23bb806..c159538fbc9 100644 --- a/internal/e2e/go.sum +++ b/internal/e2e/go.sum @@ -38,8 +38,6 @@ github.com/grpc-ecosystem/grpc-gateway/v2 v2.25.1 h1:VNqngBF40hVlDloBruUehVYC3Ar github.com/grpc-ecosystem/grpc-gateway/v2 v2.25.1/go.mod h1:RBRO7fro65R6tjKzYgLAFo0t1QEXY1Dp+i/bvpRiqiQ= github.com/hashicorp/go-version v1.7.0 h1:5tqGy27NaOTB8yJKUZELlFAS/LTKJkrmONwQKeRZfjY= github.com/hashicorp/go-version v1.7.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= -github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= -github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= @@ -93,10 +91,6 @@ github.com/rs/cors v1.11.1 h1:eU3gRzXLRK57F5rKMGMZURNdIG4EoAmX8k94r9wXWHA= github.com/rs/cors v1.11.1/go.mod h1:XyqrcTp5zjWr1wsJ8PIRZssZ8b/WMcMf71DJnit4EMU= github.com/shirou/gopsutil/v4 v4.24.12 h1:qvePBOk20e0IKA1QXrIIU+jmk+zEiYVVx06WjBRlZo4= github.com/shirou/gopsutil/v4 v4.24.12/go.mod h1:DCtMPAad2XceTeIAbGyVfycbYQNBGk2P8cvDi7/VN9o= -github.com/spf13/cobra v1.8.1 h1:e5/vxKd/rZsfSJMUX1agtjeTDf+qv1/JdBF8gg5k9ZM= -github.com/spf13/cobra v1.8.1/go.mod h1:wHxEcudfqmLYa8iTfL+OuZPbBZkmvliBWKIezN3kD9Y= -github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= -github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA= diff --git a/otelcol/factories_test.go b/otelcol/factories_test.go index acaa531c768..596485cd4ab 100644 --- a/otelcol/factories_test.go +++ b/otelcol/factories_test.go @@ -8,6 +8,7 @@ import ( "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" + "go.opentelemetry.io/collector/component" "go.opentelemetry.io/collector/connector" "go.opentelemetry.io/collector/connector/connectortest" diff --git a/otelcol/otelcoltest/nop_factories.go b/otelcol/otelcoltest/nop_factories.go index 7dec1ec223c..326430f8ecb 100644 --- a/otelcol/otelcoltest/nop_factories.go +++ b/otelcol/otelcoltest/nop_factories.go @@ -15,27 +15,13 @@ import ( // NopFactories returns a otelcol.Factories with all nop factories. func NopFactories() (otelcol.Factories, error) { var factories otelcol.Factories - var err error - if factories.Extensions, err = otelcol.MakeFactoryMap(extensiontest.NewNopFactory()); err != nil { - return otelcol.Factories{}, err - } + // MakeFactoryMap can never return an error with a single Factory + factories.Extensions, _ = otelcol.MakeFactoryMap(extensiontest.NewNopFactory()) + factories.Receivers, _ = otelcol.MakeFactoryMap(receivertest.NewNopFactory()) + factories.Exporters, _ = otelcol.MakeFactoryMap(exportertest.NewNopFactory()) + factories.Processors, _ = otelcol.MakeFactoryMap(processortest.NewNopFactory()) + factories.Connectors, _ = otelcol.MakeFactoryMap(connectortest.NewNopFactory()) - if factories.Receivers, err = otelcol.MakeFactoryMap(receivertest.NewNopFactory()); err != nil { - return otelcol.Factories{}, err - } - - if factories.Exporters, err = otelcol.MakeFactoryMap(exportertest.NewNopFactory()); err != nil { - return otelcol.Factories{}, err - } - - if factories.Processors, err = otelcol.MakeFactoryMap(processortest.NewNopFactory()); err != nil { - return otelcol.Factories{}, err - } - - if factories.Connectors, err = otelcol.MakeFactoryMap(connectortest.NewNopFactory()); err != nil { - return otelcol.Factories{}, err - } - - return factories, err + return factories, nil } From 8d4a602c7af604c5b54078f93176890b2e358ef1 Mon Sep 17 00:00:00 2001 From: Jade Guiton Date: Fri, 31 Jan 2025 15:14:32 +0100 Subject: [PATCH 03/12] Add version numbers to deprecation notices --- connector/connector.go | 2 +- exporter/exporter.go | 2 +- extension/extension.go | 2 +- processor/processor.go | 2 +- receiver/receiver.go | 2 +- scraper/factory.go | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/connector/connector.go b/connector/connector.go index 0d43596bbc2..6a76859dc2d 100644 --- a/connector/connector.go +++ b/connector/connector.go @@ -389,7 +389,7 @@ func NewFactory(cfgType component.Type, createDefaultConfig component.CreateDefa // MakeFactoryMap takes a list of connector factories and returns a map with factory type as keys. // It returns a non-nil error when there are factories with duplicate type. // -// Deprecated: Use otelcol.MakeFactoryMap[connector.Factory] instead +// Deprecated: [v0.119.0] Use otelcol.MakeFactoryMap[connector.Factory] instead func MakeFactoryMap(factories ...Factory) (map[component.Type]Factory, error) { fMap := map[component.Type]Factory{} for _, f := range factories { diff --git a/exporter/exporter.go b/exporter/exporter.go index 9e0916dc824..fa441c33616 100644 --- a/exporter/exporter.go +++ b/exporter/exporter.go @@ -191,7 +191,7 @@ func NewFactory(cfgType component.Type, createDefaultConfig component.CreateDefa // MakeFactoryMap takes a list of factories and returns a map with Factory type as keys. // It returns a non-nil error when there are factories with duplicate type. // -// Deprecated: Use otelcol.MakeFactoryMap[exporter.Factory] instead +// Deprecated: [v0.119.0] Use otelcol.MakeFactoryMap[exporter.Factory] instead func MakeFactoryMap(factories ...Factory) (map[component.Type]Factory, error) { fMap := map[component.Type]Factory{} for _, f := range factories { diff --git a/extension/extension.go b/extension/extension.go index 428b672ee4a..dee5203f52f 100644 --- a/extension/extension.go +++ b/extension/extension.go @@ -95,7 +95,7 @@ func NewFactory( // MakeFactoryMap takes a list of factories and returns a map with Factory type as keys. // It returns a non-nil error when there are factories with duplicate type. // -// Deprecated: Use otelcol.MakeFactoryMap[extension.Factory] instead +// Deprecated: [v0.119.0] Use otelcol.MakeFactoryMap[extension.Factory] instead func MakeFactoryMap(factories ...Factory) (map[component.Type]Factory, error) { fMap := map[component.Type]Factory{} for _, f := range factories { diff --git a/processor/processor.go b/processor/processor.go index 9171ee88ecb..73efadca27c 100644 --- a/processor/processor.go +++ b/processor/processor.go @@ -194,7 +194,7 @@ func NewFactory(cfgType component.Type, createDefaultConfig component.CreateDefa // MakeFactoryMap takes a list of factories and returns a map with Factory type as keys. // It returns a non-nil error when there are factories with duplicate type. // -// Deprecated: Use otelcol.MakeFactoryMap[processor.Factory] instead +// Deprecated: [v0.119.0] Use otelcol.MakeFactoryMap[processor.Factory] instead func MakeFactoryMap(factories ...Factory) (map[component.Type]Factory, error) { fMap := map[component.Type]Factory{} for _, f := range factories { diff --git a/receiver/receiver.go b/receiver/receiver.go index 138fd6b3ec8..5e30a3c48de 100644 --- a/receiver/receiver.go +++ b/receiver/receiver.go @@ -201,7 +201,7 @@ func NewFactory(cfgType component.Type, createDefaultConfig component.CreateDefa // MakeFactoryMap takes a list of receiver factories and returns a map with factory type as keys. // It returns a non-nil error when there are factories with duplicate type. // -// Deprecated: Use otelcol.MakeFactoryMap[receiver.Factory] instead +// Deprecated: [v0.119.0] Use otelcol.MakeFactoryMap[receiver.Factory] instead func MakeFactoryMap(factories ...Factory) (map[component.Type]Factory, error) { fMap := map[component.Type]Factory{} for _, f := range factories { diff --git a/scraper/factory.go b/scraper/factory.go index 4b7b3b84efc..889fc2147eb 100644 --- a/scraper/factory.go +++ b/scraper/factory.go @@ -139,7 +139,7 @@ func NewFactory(cfgType component.Type, createDefaultConfig component.CreateDefa // MakeFactoryMap takes a list of receiver factories and returns a map with factory type as keys. // It returns a non-nil error when there are factories with duplicate type. // -// Deprecated: Use otelcol.MakeFactoryMap[extension.Factory] instead +// Deprecated: [v0.119.0] Use otelcol.MakeFactoryMap[scraper.Factory] instead func MakeFactoryMap(factories ...Factory) (map[component.Type]Factory, error) { fMap := map[component.Type]Factory{} for _, f := range factories { From 1f020761669040cd5451323f634eae62fcd53b65 Mon Sep 17 00:00:00 2001 From: Jade Guiton Date: Fri, 31 Jan 2025 16:58:42 +0100 Subject: [PATCH 04/12] make genotelcorecol --- cmd/otelcorecol/go.mod | 2 -- cmd/otelcorecol/go.sum | 2 ++ 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/cmd/otelcorecol/go.mod b/cmd/otelcorecol/go.mod index 32878db49e2..9514941083e 100644 --- a/cmd/otelcorecol/go.mod +++ b/cmd/otelcorecol/go.mod @@ -293,5 +293,3 @@ replace go.opentelemetry.io/collector/receiver/xreceiver => ../../receiver/xrece replace go.opentelemetry.io/collector/semconv => ../../semconv replace go.opentelemetry.io/collector/service => ../../service - -replace go.opentelemetry.io/collector/scraper => ../../scraper diff --git a/cmd/otelcorecol/go.sum b/cmd/otelcorecol/go.sum index c8c8a463b62..6c1fac90226 100644 --- a/cmd/otelcorecol/go.sum +++ b/cmd/otelcorecol/go.sum @@ -113,6 +113,8 @@ github.com/yusufpapurcu/wmi v1.2.4 h1:zFUKzehAFReQwLys1b/iSMl+JQGSCSjtVqQn9bBrPo github.com/yusufpapurcu/wmi v1.2.4/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0= go.opentelemetry.io/auto/sdk v1.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJySYA= go.opentelemetry.io/auto/sdk v1.1.0/go.mod h1:3wSPjt5PWp2RhlCcmmOial7AvC4DQqZb7a7wCow3W8A= +go.opentelemetry.io/collector/scraper v0.118.0 h1:944QgQVZ7PM0L9WIwgRPY0LbbHX5qsk2x4uxDO1IOAQ= +go.opentelemetry.io/collector/scraper v0.118.0/go.mod h1:wIa4bIqiU9bkeg3v5QQybwz1+K5DjrP1Afc13Kt22Cw= go.opentelemetry.io/contrib/bridges/otelzap v0.9.0 h1:f+xpAfhQTjR8beiSMe1bnT/25PkeyWmOcI+SjXWguNw= go.opentelemetry.io/contrib/bridges/otelzap v0.9.0/go.mod h1:T1Z1jyS5FttgQoF6UcGhnM+gF9wU32B4lHO69nXw4FE= go.opentelemetry.io/contrib/config v0.14.0 h1:QAG8uHNp5ZiCkpT7XggSmg5AyW1sA0LgypMoXgBB1+4= From 6d5d94600f6c4e61000bcbe9baa464bae990bbf0 Mon Sep 17 00:00:00 2001 From: Jade Guiton Date: Fri, 31 Jan 2025 17:00:05 +0100 Subject: [PATCH 05/12] Add changelog --- .chloggen/generic-makefactorymap.yaml | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 .chloggen/generic-makefactorymap.yaml diff --git a/.chloggen/generic-makefactorymap.yaml b/.chloggen/generic-makefactorymap.yaml new file mode 100644 index 00000000000..9c9575a6299 --- /dev/null +++ b/.chloggen/generic-makefactorymap.yaml @@ -0,0 +1,25 @@ +# Use this changelog template to create an entry for release notes. + +# One of 'breaking', 'deprecation', 'new_component', 'enhancement', 'bug_fix' +change_type: 'deprecation' + +# The name of the component, or a single word describing the area of concern, (e.g. otlpreceiver) +component: receiver, scraper, processor, exporter, extension + +# A brief description of the change. Surround your text with quotes ("") if it needs to start with a backtick (`). +note: Deprecate existing MakeFactoryMap functions in favor of generic implementation + +# One or more tracking issues or pull requests related to the change +issues: [12222] + +# (Optional) One or more lines of additional information to render under the primary note. +# These lines will be padded with 2 spaces and then inserted directly into the document. +# Use pipe (|) for multiline entries. +subtext: + +# Optional: The change log or logs in which this entry should be included. +# e.g. '[user]' or '[user, api]' +# Include 'user' if the change is relevant to end users. +# Include 'api' if there is a change to a library API. +# Default: '[user]' +change_logs: [api] From 014e5fc30aa713a9a7da25535d8a5856e554a892 Mon Sep 17 00:00:00 2001 From: Jade Guiton Date: Fri, 31 Jan 2025 17:45:22 +0100 Subject: [PATCH 06/12] Revert change to `toolchain` directive --- cmd/otelcorecol/go.mod | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmd/otelcorecol/go.mod b/cmd/otelcorecol/go.mod index 9514941083e..a2aaba73099 100644 --- a/cmd/otelcorecol/go.mod +++ b/cmd/otelcorecol/go.mod @@ -4,7 +4,7 @@ module go.opentelemetry.io/collector/cmd/otelcorecol go 1.22.0 -toolchain go1.22.9 +toolchain go1.22.11 require ( go.opentelemetry.io/collector/component v0.118.0 From 5766e39e2f1a7b3432cf1693517c1358c86381e4 Mon Sep 17 00:00:00 2001 From: Jade Guiton Date: Fri, 31 Jan 2025 17:49:44 +0100 Subject: [PATCH 07/12] make crosslink --- cmd/otelcorecol/go.mod | 2 ++ 1 file changed, 2 insertions(+) diff --git a/cmd/otelcorecol/go.mod b/cmd/otelcorecol/go.mod index a2aaba73099..27afed963f6 100644 --- a/cmd/otelcorecol/go.mod +++ b/cmd/otelcorecol/go.mod @@ -293,3 +293,5 @@ replace go.opentelemetry.io/collector/receiver/xreceiver => ../../receiver/xrece replace go.opentelemetry.io/collector/semconv => ../../semconv replace go.opentelemetry.io/collector/service => ../../service + +replace go.opentelemetry.io/collector/scraper => ../../scraper From fc69871b2c35e447bb0f7d4f4652ea5d83d64f9b Mon Sep 17 00:00:00 2001 From: Jade Guiton Date: Fri, 31 Jan 2025 17:53:20 +0100 Subject: [PATCH 08/12] make gotidy --- cmd/otelcorecol/go.sum | 2 -- 1 file changed, 2 deletions(-) diff --git a/cmd/otelcorecol/go.sum b/cmd/otelcorecol/go.sum index 6c1fac90226..c8c8a463b62 100644 --- a/cmd/otelcorecol/go.sum +++ b/cmd/otelcorecol/go.sum @@ -113,8 +113,6 @@ github.com/yusufpapurcu/wmi v1.2.4 h1:zFUKzehAFReQwLys1b/iSMl+JQGSCSjtVqQn9bBrPo github.com/yusufpapurcu/wmi v1.2.4/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0= go.opentelemetry.io/auto/sdk v1.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJySYA= go.opentelemetry.io/auto/sdk v1.1.0/go.mod h1:3wSPjt5PWp2RhlCcmmOial7AvC4DQqZb7a7wCow3W8A= -go.opentelemetry.io/collector/scraper v0.118.0 h1:944QgQVZ7PM0L9WIwgRPY0LbbHX5qsk2x4uxDO1IOAQ= -go.opentelemetry.io/collector/scraper v0.118.0/go.mod h1:wIa4bIqiU9bkeg3v5QQybwz1+K5DjrP1Afc13Kt22Cw= go.opentelemetry.io/contrib/bridges/otelzap v0.9.0 h1:f+xpAfhQTjR8beiSMe1bnT/25PkeyWmOcI+SjXWguNw= go.opentelemetry.io/contrib/bridges/otelzap v0.9.0/go.mod h1:T1Z1jyS5FttgQoF6UcGhnM+gF9wU32B4lHO69nXw4FE= go.opentelemetry.io/contrib/config v0.14.0 h1:QAG8uHNp5ZiCkpT7XggSmg5AyW1sA0LgypMoXgBB1+4= From 75da4731a4e17896586e80a970fd226bc698ad57 Mon Sep 17 00:00:00 2001 From: Jade Guiton Date: Fri, 31 Jan 2025 17:58:24 +0100 Subject: [PATCH 09/12] make genotelcorecol (bruh) --- cmd/otelcorecol/go.mod | 2 -- cmd/otelcorecol/go.sum | 2 ++ 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/cmd/otelcorecol/go.mod b/cmd/otelcorecol/go.mod index 27afed963f6..a2aaba73099 100644 --- a/cmd/otelcorecol/go.mod +++ b/cmd/otelcorecol/go.mod @@ -293,5 +293,3 @@ replace go.opentelemetry.io/collector/receiver/xreceiver => ../../receiver/xrece replace go.opentelemetry.io/collector/semconv => ../../semconv replace go.opentelemetry.io/collector/service => ../../service - -replace go.opentelemetry.io/collector/scraper => ../../scraper diff --git a/cmd/otelcorecol/go.sum b/cmd/otelcorecol/go.sum index c8c8a463b62..6c1fac90226 100644 --- a/cmd/otelcorecol/go.sum +++ b/cmd/otelcorecol/go.sum @@ -113,6 +113,8 @@ github.com/yusufpapurcu/wmi v1.2.4 h1:zFUKzehAFReQwLys1b/iSMl+JQGSCSjtVqQn9bBrPo github.com/yusufpapurcu/wmi v1.2.4/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0= go.opentelemetry.io/auto/sdk v1.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJySYA= go.opentelemetry.io/auto/sdk v1.1.0/go.mod h1:3wSPjt5PWp2RhlCcmmOial7AvC4DQqZb7a7wCow3W8A= +go.opentelemetry.io/collector/scraper v0.118.0 h1:944QgQVZ7PM0L9WIwgRPY0LbbHX5qsk2x4uxDO1IOAQ= +go.opentelemetry.io/collector/scraper v0.118.0/go.mod h1:wIa4bIqiU9bkeg3v5QQybwz1+K5DjrP1Afc13Kt22Cw= go.opentelemetry.io/contrib/bridges/otelzap v0.9.0 h1:f+xpAfhQTjR8beiSMe1bnT/25PkeyWmOcI+SjXWguNw= go.opentelemetry.io/contrib/bridges/otelzap v0.9.0/go.mod h1:T1Z1jyS5FttgQoF6UcGhnM+gF9wU32B4lHO69nXw4FE= go.opentelemetry.io/contrib/config v0.14.0 h1:QAG8uHNp5ZiCkpT7XggSmg5AyW1sA0LgypMoXgBB1+4= From 7020de923858e02bd749793101a24a3070e6a261 Mon Sep 17 00:00:00 2001 From: Jade Guiton Date: Mon, 3 Feb 2025 11:49:51 +0100 Subject: [PATCH 10/12] Remove scraper-related test --- cmd/otelcorecol/go.sum | 2 -- internal/e2e/go.mod | 2 -- otelcol/factories_test.go | 7 ++----- otelcol/go.mod | 3 --- otelcol/otelcoltest/go.mod | 2 -- service/go.mod | 2 -- 6 files changed, 2 insertions(+), 16 deletions(-) diff --git a/cmd/otelcorecol/go.sum b/cmd/otelcorecol/go.sum index 6c1fac90226..c8c8a463b62 100644 --- a/cmd/otelcorecol/go.sum +++ b/cmd/otelcorecol/go.sum @@ -113,8 +113,6 @@ github.com/yusufpapurcu/wmi v1.2.4 h1:zFUKzehAFReQwLys1b/iSMl+JQGSCSjtVqQn9bBrPo github.com/yusufpapurcu/wmi v1.2.4/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0= go.opentelemetry.io/auto/sdk v1.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJySYA= go.opentelemetry.io/auto/sdk v1.1.0/go.mod h1:3wSPjt5PWp2RhlCcmmOial7AvC4DQqZb7a7wCow3W8A= -go.opentelemetry.io/collector/scraper v0.118.0 h1:944QgQVZ7PM0L9WIwgRPY0LbbHX5qsk2x4uxDO1IOAQ= -go.opentelemetry.io/collector/scraper v0.118.0/go.mod h1:wIa4bIqiU9bkeg3v5QQybwz1+K5DjrP1Afc13Kt22Cw= go.opentelemetry.io/contrib/bridges/otelzap v0.9.0 h1:f+xpAfhQTjR8beiSMe1bnT/25PkeyWmOcI+SjXWguNw= go.opentelemetry.io/contrib/bridges/otelzap v0.9.0/go.mod h1:T1Z1jyS5FttgQoF6UcGhnM+gF9wU32B4lHO69nXw4FE= go.opentelemetry.io/contrib/config v0.14.0 h1:QAG8uHNp5ZiCkpT7XggSmg5AyW1sA0LgypMoXgBB1+4= diff --git a/internal/e2e/go.mod b/internal/e2e/go.mod index 2729f7c443c..827c45a84ab 100644 --- a/internal/e2e/go.mod +++ b/internal/e2e/go.mod @@ -244,5 +244,3 @@ replace go.opentelemetry.io/collector/extension/auth/authtest => ../../extension replace go.opentelemetry.io/collector/extension/xextension => ../../extension/xextension replace go.opentelemetry.io/collector/otelcol => ../../otelcol - -replace go.opentelemetry.io/collector/scraper => ../../scraper diff --git a/otelcol/factories_test.go b/otelcol/factories_test.go index 596485cd4ab..808a4e8e9d1 100644 --- a/otelcol/factories_test.go +++ b/otelcol/factories_test.go @@ -20,7 +20,6 @@ import ( "go.opentelemetry.io/collector/processor/processortest" "go.opentelemetry.io/collector/receiver" "go.opentelemetry.io/collector/receiver/receivertest" - "go.opentelemetry.io/collector/scraper" ) func nopFactories() (Factories, error) { @@ -79,7 +78,6 @@ func TestMakeFactoryMap(t *testing.T) { fRec := receiver.NewFactory(component.MustNewType("rec"), nil) fRec2 := receiver.NewFactory(component.MustNewType("rec"), nil) - fScr := scraper.NewFactory(component.MustNewType("scr"), nil) fPro := processor.NewFactory(component.MustNewType("pro"), nil) fCon := connector.NewFactory(component.MustNewType("con"), nil) fExp := exporter.NewFactory(component.MustNewType("exp"), nil) @@ -87,10 +85,9 @@ func TestMakeFactoryMap(t *testing.T) { testCases := []testCase{ { name: "different names", - in: []component.Factory{fRec, fScr, fPro, fCon, fExp, fExt}, + in: []component.Factory{fRec, fPro, fCon, fExp, fExt}, out: map[component.Type]component.Factory{ fRec.Type(): fRec, - fScr.Type(): fScr, fPro.Type(): fPro, fCon.Type(): fCon, fExp.Type(): fExp, @@ -99,7 +96,7 @@ func TestMakeFactoryMap(t *testing.T) { }, { name: "same name", - in: []component.Factory{fRec, fScr, fPro, fCon, fExp, fExt, fRec2}, + in: []component.Factory{fRec, fPro, fCon, fExp, fExt, fRec2}, }, } diff --git a/otelcol/go.mod b/otelcol/go.mod index 98d205ffeb3..699eed63d9f 100644 --- a/otelcol/go.mod +++ b/otelcol/go.mod @@ -21,7 +21,6 @@ require ( go.opentelemetry.io/collector/processor/processortest v0.118.0 go.opentelemetry.io/collector/receiver v0.118.0 go.opentelemetry.io/collector/receiver/receivertest v0.118.0 - go.opentelemetry.io/collector/scraper v0.118.0 go.opentelemetry.io/collector/service v0.118.0 go.opentelemetry.io/contrib/config v0.14.0 go.uber.org/goleak v1.3.0 @@ -205,5 +204,3 @@ replace go.opentelemetry.io/collector/extension/extensiontest => ../extension/ex replace go.opentelemetry.io/collector/extension/auth/authtest => ../extension/auth/authtest replace go.opentelemetry.io/collector/extension/xextension => ../extension/xextension - -replace go.opentelemetry.io/collector/scraper => ../scraper diff --git a/otelcol/otelcoltest/go.mod b/otelcol/otelcoltest/go.mod index b2f859ef8ef..d440b820d09 100644 --- a/otelcol/otelcoltest/go.mod +++ b/otelcol/otelcoltest/go.mod @@ -219,5 +219,3 @@ replace go.opentelemetry.io/collector/confmap => ../../confmap replace go.opentelemetry.io/collector/processor/processortest => ../../processor/processortest replace go.opentelemetry.io/collector/pdata/testdata => ../../pdata/testdata - -replace go.opentelemetry.io/collector/scraper => ../../scraper diff --git a/service/go.mod b/service/go.mod index bf37e495b28..3f520a6a830 100644 --- a/service/go.mod +++ b/service/go.mod @@ -220,5 +220,3 @@ replace go.opentelemetry.io/collector/extension/auth/authtest => ../extension/au replace go.opentelemetry.io/collector/extension/xextension => ../extension/xextension replace go.opentelemetry.io/collector/otelcol => ../otelcol - -replace go.opentelemetry.io/collector/scraper => ../scraper From 9f923f5689fe7ae5319630798aa6ff8850fa1ea3 Mon Sep 17 00:00:00 2001 From: Jade Guiton Date: Mon, 3 Feb 2025 11:58:15 +0100 Subject: [PATCH 11/12] Remove scraper from builder/main_test --- cmd/builder/internal/builder/main_test.go | 1 - 1 file changed, 1 deletion(-) diff --git a/cmd/builder/internal/builder/main_test.go b/cmd/builder/internal/builder/main_test.go index d8210e8563e..41c06fea3bb 100644 --- a/cmd/builder/internal/builder/main_test.go +++ b/cmd/builder/internal/builder/main_test.go @@ -101,7 +101,6 @@ var replaceModules = []string{ "/receiver/otlpreceiver", "/receiver/receivertest", "/receiver/xreceiver", - "/scraper", "/semconv", "/service", } From 5846ae2c5a51b854d165db5cf07cbfa5904cc6a1 Mon Sep 17 00:00:00 2001 From: Jade Guiton Date: Tue, 11 Feb 2025 11:23:07 +0100 Subject: [PATCH 12/12] Update deprecation notice versions Co-authored-by: Alex Boten <223565+codeboten@users.noreply.github.com> --- connector/connector.go | 2 +- exporter/exporter.go | 2 +- extension/extension.go | 2 +- processor/processor.go | 2 +- receiver/receiver.go | 2 +- scraper/factory.go | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/connector/connector.go b/connector/connector.go index 6a76859dc2d..285b658b527 100644 --- a/connector/connector.go +++ b/connector/connector.go @@ -389,7 +389,7 @@ func NewFactory(cfgType component.Type, createDefaultConfig component.CreateDefa // MakeFactoryMap takes a list of connector factories and returns a map with factory type as keys. // It returns a non-nil error when there are factories with duplicate type. // -// Deprecated: [v0.119.0] Use otelcol.MakeFactoryMap[connector.Factory] instead +// Deprecated: [v0.120.0] Use otelcol.MakeFactoryMap[connector.Factory] instead func MakeFactoryMap(factories ...Factory) (map[component.Type]Factory, error) { fMap := map[component.Type]Factory{} for _, f := range factories { diff --git a/exporter/exporter.go b/exporter/exporter.go index fa441c33616..fa80754a5f3 100644 --- a/exporter/exporter.go +++ b/exporter/exporter.go @@ -191,7 +191,7 @@ func NewFactory(cfgType component.Type, createDefaultConfig component.CreateDefa // MakeFactoryMap takes a list of factories and returns a map with Factory type as keys. // It returns a non-nil error when there are factories with duplicate type. // -// Deprecated: [v0.119.0] Use otelcol.MakeFactoryMap[exporter.Factory] instead +// Deprecated: [v0.120.0] Use otelcol.MakeFactoryMap[exporter.Factory] instead func MakeFactoryMap(factories ...Factory) (map[component.Type]Factory, error) { fMap := map[component.Type]Factory{} for _, f := range factories { diff --git a/extension/extension.go b/extension/extension.go index 5e912f8ec67..ec72ba145fa 100644 --- a/extension/extension.go +++ b/extension/extension.go @@ -83,7 +83,7 @@ func NewFactory( // MakeFactoryMap takes a list of factories and returns a map with Factory type as keys. // It returns a non-nil error when there are factories with duplicate type. // -// Deprecated: [v0.119.0] Use otelcol.MakeFactoryMap[extension.Factory] instead +// Deprecated: [v0.120.0] Use otelcol.MakeFactoryMap[extension.Factory] instead func MakeFactoryMap(factories ...Factory) (map[component.Type]Factory, error) { fMap := map[component.Type]Factory{} for _, f := range factories { diff --git a/processor/processor.go b/processor/processor.go index 73efadca27c..b7a7d60e7e3 100644 --- a/processor/processor.go +++ b/processor/processor.go @@ -194,7 +194,7 @@ func NewFactory(cfgType component.Type, createDefaultConfig component.CreateDefa // MakeFactoryMap takes a list of factories and returns a map with Factory type as keys. // It returns a non-nil error when there are factories with duplicate type. // -// Deprecated: [v0.119.0] Use otelcol.MakeFactoryMap[processor.Factory] instead +// Deprecated: [v0.120.0] Use otelcol.MakeFactoryMap[processor.Factory] instead func MakeFactoryMap(factories ...Factory) (map[component.Type]Factory, error) { fMap := map[component.Type]Factory{} for _, f := range factories { diff --git a/receiver/receiver.go b/receiver/receiver.go index 5e30a3c48de..b33a96c5bf0 100644 --- a/receiver/receiver.go +++ b/receiver/receiver.go @@ -201,7 +201,7 @@ func NewFactory(cfgType component.Type, createDefaultConfig component.CreateDefa // MakeFactoryMap takes a list of receiver factories and returns a map with factory type as keys. // It returns a non-nil error when there are factories with duplicate type. // -// Deprecated: [v0.119.0] Use otelcol.MakeFactoryMap[receiver.Factory] instead +// Deprecated: [v0.120.0] Use otelcol.MakeFactoryMap[receiver.Factory] instead func MakeFactoryMap(factories ...Factory) (map[component.Type]Factory, error) { fMap := map[component.Type]Factory{} for _, f := range factories { diff --git a/scraper/factory.go b/scraper/factory.go index 889fc2147eb..e296559dc4b 100644 --- a/scraper/factory.go +++ b/scraper/factory.go @@ -139,7 +139,7 @@ func NewFactory(cfgType component.Type, createDefaultConfig component.CreateDefa // MakeFactoryMap takes a list of receiver factories and returns a map with factory type as keys. // It returns a non-nil error when there are factories with duplicate type. // -// Deprecated: [v0.119.0] Use otelcol.MakeFactoryMap[scraper.Factory] instead +// Deprecated: [v0.120.0] Use otelcol.MakeFactoryMap[scraper.Factory] instead func MakeFactoryMap(factories ...Factory) (map[component.Type]Factory, error) { fMap := map[component.Type]Factory{} for _, f := range factories {