From f19d8ba9c0223405c93439bd3128f91e255f0347 Mon Sep 17 00:00:00 2001 From: Bogdan Drutu Date: Wed, 29 Jun 2022 06:22:50 -0700 Subject: [PATCH] Move extensions for internal to public package Updates https://github.com/open-telemetry/opentelemetry-collector/issues/5564 Signed-off-by: Bogdan Drutu --- service/extensions/config.go | 22 +++++++++++++++++++ .../{internal => }/extensions/extensions.go | 19 +++++++--------- .../extensions/extensions_test.go | 13 +++++------ service/host.go | 2 +- service/service.go | 17 +++++++------- 5 files changed, 45 insertions(+), 28 deletions(-) create mode 100644 service/extensions/config.go rename service/{internal => }/extensions/extensions.go (90%) rename service/{internal => }/extensions/extensions_test.go (93%) diff --git a/service/extensions/config.go b/service/extensions/config.go new file mode 100644 index 00000000000..44c75b23905 --- /dev/null +++ b/service/extensions/config.go @@ -0,0 +1,22 @@ +// Copyright The OpenTelemetry Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package extensions // import "go.opentelemetry.io/collector/service/extensions" + +import ( + "go.opentelemetry.io/collector/config" +) + +// Config represents the ordered list of extensions configured for the service. +type Config []config.ComponentID diff --git a/service/internal/extensions/extensions.go b/service/extensions/extensions.go similarity index 90% rename from service/internal/extensions/extensions.go rename to service/extensions/extensions.go index 54cf2fac234..d69cc84392b 100644 --- a/service/internal/extensions/extensions.go +++ b/service/extensions/extensions.go @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -package extensions // import "go.opentelemetry.io/collector/service/internal/extensions" +package extensions // import "go.opentelemetry.io/collector/service/extensions" import ( "context" @@ -37,8 +37,8 @@ type Extensions struct { extMap map[config.ComponentID]component.Extension } -// StartAll starts all extensions. -func (bes *Extensions) StartAll(ctx context.Context, host component.Host) error { +// Start starts all extensions. +func (bes *Extensions) Start(ctx context.Context, host component.Host) error { bes.telemetry.Logger.Info("Starting extensions...") for extID, ext := range bes.extMap { extLogger := extensionLogger(bes.telemetry.Logger, extID) @@ -51,8 +51,8 @@ func (bes *Extensions) StartAll(ctx context.Context, host component.Host) error return nil } -// ShutdownAll stops all extensions. -func (bes *Extensions) ShutdownAll(ctx context.Context) error { +// Shutdown stops all extensions. +func (bes *Extensions) Shutdown(ctx context.Context) error { bes.telemetry.Logger.Info("Stopping extensions...") var errs error for _, ext := range bes.extMap { @@ -128,18 +128,15 @@ type Settings struct { // Factories maps extension type names in the config to the respective component.ExtensionFactory. Factories map[config.Type]component.ExtensionFactory - - // ServiceExtensions are the ordered list of extensions configured for the service. - ServiceExtensions []config.ComponentID } -// Build builds Extensions from config. -func Build(ctx context.Context, set Settings) (*Extensions, error) { +// New creates a new Extensions from Config. +func New(ctx context.Context, set Settings, cfg Config) (*Extensions, error) { exts := &Extensions{ telemetry: set.Telemetry, extMap: make(map[config.ComponentID]component.Extension), } - for _, extID := range set.ServiceExtensions { + for _, extID := range cfg { extCfg, existsCfg := set.Configs[extID] if !existsCfg { return nil, fmt.Errorf("extension %q is not configured", extID) diff --git a/service/internal/extensions/extensions_test.go b/service/extensions/extensions_test.go similarity index 93% rename from service/internal/extensions/extensions_test.go rename to service/extensions/extensions_test.go index 6508769f0c1..6c800270aeb 100644 --- a/service/internal/extensions/extensions_test.go +++ b/service/extensions/extensions_test.go @@ -93,13 +93,12 @@ func TestBuildExtensions(t *testing.T) { for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { - _, err := Build(context.Background(), Settings{ - Telemetry: componenttest.NewNopTelemetrySettings(), - BuildInfo: component.NewDefaultBuildInfo(), - Configs: tt.extensionsConfigs, - Factories: tt.factories.Extensions, - ServiceExtensions: tt.serviceExtensions, - }) + _, err := New(context.Background(), Settings{ + Telemetry: componenttest.NewNopTelemetrySettings(), + BuildInfo: component.NewDefaultBuildInfo(), + Configs: tt.extensionsConfigs, + Factories: tt.factories.Extensions, + }, tt.serviceExtensions) require.Error(t, err) assert.EqualError(t, err, tt.wantErrMsg) }) diff --git a/service/host.go b/service/host.go index 6b9e9eec41c..f43a55d172c 100644 --- a/service/host.go +++ b/service/host.go @@ -17,7 +17,7 @@ package service // import "go.opentelemetry.io/collector/service" import ( "go.opentelemetry.io/collector/component" "go.opentelemetry.io/collector/config" - "go.opentelemetry.io/collector/service/internal/extensions" + "go.opentelemetry.io/collector/service/extensions" "go.opentelemetry.io/collector/service/internal/pipelines" ) diff --git a/service/service.go b/service/service.go index 1afa0694d15..c4162cfd4db 100644 --- a/service/service.go +++ b/service/service.go @@ -25,8 +25,8 @@ import ( "go.opentelemetry.io/collector/component" "go.opentelemetry.io/collector/config/configtelemetry" + "go.opentelemetry.io/collector/service/extensions" "go.opentelemetry.io/collector/service/internal" - "go.opentelemetry.io/collector/service/internal/extensions" "go.opentelemetry.io/collector/service/internal/pipelines" "go.opentelemetry.io/collector/service/internal/telemetry" "go.opentelemetry.io/collector/service/internal/telemetrylogs" @@ -73,13 +73,12 @@ func newService(set *settings) (*service, error) { srv.telemetrySettings.MeterProvider = srv.telemetryInitializer.mp extensionsSettings := extensions.Settings{ - Telemetry: srv.telemetrySettings, - BuildInfo: srv.buildInfo, - Configs: srv.config.Extensions, - Factories: srv.host.factories.Extensions, - ServiceExtensions: srv.config.Service.Extensions, + Telemetry: srv.telemetrySettings, + BuildInfo: srv.buildInfo, + Configs: srv.config.Extensions, + Factories: srv.host.factories.Extensions, } - if srv.host.extensions, err = extensions.Build(context.Background(), extensionsSettings); err != nil { + if srv.host.extensions, err = extensions.New(context.Background(), extensionsSettings, srv.config.Service.Extensions); err != nil { return nil, fmt.Errorf("failed build extensions: %w", err) } @@ -109,7 +108,7 @@ func newService(set *settings) (*service, error) { } func (srv *service) Start(ctx context.Context) error { - if err := srv.host.extensions.StartAll(ctx, srv.host); err != nil { + if err := srv.host.extensions.Start(ctx, srv.host); err != nil { return fmt.Errorf("failed to start extensions: %w", err) } @@ -132,7 +131,7 @@ func (srv *service) Shutdown(ctx context.Context) error { errs = multierr.Append(errs, fmt.Errorf("failed to shutdown pipelines: %w", err)) } - if err := srv.host.extensions.ShutdownAll(ctx); err != nil { + if err := srv.host.extensions.Shutdown(ctx); err != nil { errs = multierr.Append(errs, fmt.Errorf("failed to shutdown extensions: %w", err)) }