diff --git a/extension/extension.go b/extension/extension.go index 41c5a76000f1..2d4e507f0306 100644 --- a/extension/extension.go +++ b/extension/extension.go @@ -17,15 +17,6 @@ type Extension interface { component.Component } -// ModuleInfo describes the go module for each component. -type ModuleInfo struct { - Receiver map[component.Type]string - Processor map[component.Type]string - Exporter map[component.Type]string - Extension map[component.Type]string - Connector map[component.Type]string -} - // Settings is passed to Factory.Create(...) function. type Settings struct { // ID returns the ID of the component that will be created. @@ -35,9 +26,6 @@ type Settings struct { // BuildInfo can be used by components for informational purposes BuildInfo component.BuildInfo - - // ModuleInfo describes the go module for each component. - ModuleInfo ModuleInfo } // CreateFunc is the equivalent of Factory.Create(...) function. diff --git a/otelcol/collector.go b/otelcol/collector.go index 1c46be618198..2bd95b0ce441 100644 --- a/otelcol/collector.go +++ b/otelcol/collector.go @@ -22,7 +22,6 @@ import ( "go.opentelemetry.io/collector/component" "go.opentelemetry.io/collector/confmap" "go.opentelemetry.io/collector/confmap/xconfmap" - "go.opentelemetry.io/collector/extension" "go.opentelemetry.io/collector/otelcol/internal/grpclog" "go.opentelemetry.io/collector/service" ) @@ -199,7 +198,7 @@ func (col *Collector) setupConfigurationComponents(ctx context.Context) error { ExtensionsConfigs: cfg.Extensions, ExtensionsFactories: factories.Extensions, - ModuleInfo: extension.ModuleInfo{ + ModuleInfo: service.ModuleInfo{ Receiver: factories.ReceiverModules, Processor: factories.ProcessorModules, Exporter: factories.ExporterModules, diff --git a/service/extensions/extensions.go b/service/extensions/extensions.go index fcefcb33f201..603f1077a41a 100644 --- a/service/extensions/extensions.go +++ b/service/extensions/extensions.go @@ -170,9 +170,8 @@ func (bes *Extensions) HandleZPages(w http.ResponseWriter, r *http.Request) { // Settings holds configuration for building Extensions. type Settings struct { - Telemetry component.TelemetrySettings - BuildInfo component.BuildInfo - ModuleInfo extension.ModuleInfo + Telemetry component.TelemetrySettings + BuildInfo component.BuildInfo // Extensions builder for extensions. Extensions builders.Extension @@ -214,7 +213,6 @@ func New(ctx context.Context, set Settings, cfg Config, options ...Option) (*Ext ID: extID, TelemetrySettings: set.Telemetry, BuildInfo: set.BuildInfo, - ModuleInfo: set.ModuleInfo, } extSet.TelemetrySettings.Logger = components.ExtensionLogger(set.Telemetry.Logger, extID) diff --git a/service/internal/graph/host.go b/service/internal/graph/host.go index 3aaef5e055f3..14c666ed6f54 100644 --- a/service/internal/graph/host.go +++ b/service/internal/graph/host.go @@ -11,11 +11,11 @@ import ( "go.opentelemetry.io/collector/component" "go.opentelemetry.io/collector/component/componentstatus" - "go.opentelemetry.io/collector/extension" "go.opentelemetry.io/collector/featuregate" "go.opentelemetry.io/collector/pipeline" "go.opentelemetry.io/collector/service/extensions" "go.opentelemetry.io/collector/service/internal/builders" + "go.opentelemetry.io/collector/service/internal/moduleinfo" "go.opentelemetry.io/collector/service/internal/status" "go.opentelemetry.io/collector/service/internal/zpages" ) @@ -25,9 +25,16 @@ type getExporters interface { GetExporters() map[pipeline.Signal]map[component.ID]component.Component } +// TODO: expose GetModuleInfo as part of a service/hostcapabilities package. +type getModuleInfo interface { + // GetModuleInfo returns the module information for the host. + GetModuleInfo() moduleinfo.ModuleInfo +} + var ( _ getExporters = (*Host)(nil) _ component.Host = (*Host)(nil) + _ getModuleInfo = (*Host)(nil) ) type Host struct { @@ -38,7 +45,7 @@ type Host struct { Connectors *builders.ConnectorBuilder Extensions *builders.ExtensionBuilder - ModuleInfo extension.ModuleInfo + ModuleInfo moduleinfo.ModuleInfo BuildInfo component.BuildInfo Pipelines *Graph @@ -67,6 +74,10 @@ func (host *Host) GetExtensions() map[component.ID]component.Component { return host.ServiceExtensions.GetExtensions() } +func (host *Host) GetModuleInfo() moduleinfo.ModuleInfo { + return host.ModuleInfo +} + // Deprecated: [0.79.0] This function will be removed in the future. // Several components in the contrib repository use this function so it cannot be removed // before those cases are removed. In most cases, use of this function can be replaced by a diff --git a/service/internal/moduleinfo/moduleinfo.go b/service/internal/moduleinfo/moduleinfo.go new file mode 100644 index 000000000000..6ecc63e6e023 --- /dev/null +++ b/service/internal/moduleinfo/moduleinfo.go @@ -0,0 +1,12 @@ +package moduleinfo + +import "go.opentelemetry.io/collector/component" + +// ModuleInfo describes the go module for each component. +type ModuleInfo struct { + Receiver map[component.Type]string + Processor map[component.Type]string + Exporter map[component.Type]string + Extension map[component.Type]string + Connector map[component.Type]string +} diff --git a/service/service.go b/service/service.go index 288c8e1290d9..0d93c5e7ae27 100644 --- a/service/service.go +++ b/service/service.go @@ -33,6 +33,7 @@ import ( "go.opentelemetry.io/collector/service/extensions" "go.opentelemetry.io/collector/service/internal/builders" "go.opentelemetry.io/collector/service/internal/graph" + "go.opentelemetry.io/collector/service/internal/moduleinfo" "go.opentelemetry.io/collector/service/internal/proctelemetry" "go.opentelemetry.io/collector/service/internal/resource" "go.opentelemetry.io/collector/service/internal/status" @@ -56,6 +57,9 @@ var disableHighCardinalityMetricsFeatureGate = featuregate.GlobalRegistry().Must featuregate.WithRegisterDescription("controls whether the collector should enable potentially high"+ "cardinality metrics. The gate will be removed when the collector allows for view configuration.")) +// ModuleInfo describes the go module for each component. +type ModuleInfo = moduleinfo.ModuleInfo + // Settings holds configuration for building a new Service. type Settings struct { // BuildInfo provides collector start information. @@ -88,7 +92,7 @@ type Settings struct { ExtensionsFactories map[component.Type]extension.Factory // ModuleInfo describes the go module for each component. - ModuleInfo extension.ModuleInfo + ModuleInfo ModuleInfo // AsyncErrorChannel is the channel that is used to report fatal errors. AsyncErrorChannel chan error @@ -341,7 +345,6 @@ func (srv *Service) initExtensions(ctx context.Context, cfg extensions.Config) e Telemetry: srv.telemetrySettings, BuildInfo: srv.buildInfo, Extensions: srv.host.Extensions, - ModuleInfo: srv.host.ModuleInfo, } if srv.host.ServiceExtensions, err = extensions.New(ctx, extensionsSettings, cfg, extensions.WithReporter(srv.host.Reporter)); err != nil { return fmt.Errorf("failed to build extensions: %w", err)