Skip to content

Commit

Permalink
Move service.[Collector|NewSvcHandler|CollectorSettings|State|NewComm…
Browse files Browse the repository at this point in the history
…and] to collector package

Signed-off-by: Bogdan Drutu <bogdandrutu@gmail.com>
  • Loading branch information
bogdandrutu committed Nov 23, 2022
1 parent 5b004ba commit fcedaef
Show file tree
Hide file tree
Showing 14 changed files with 190 additions and 30 deletions.
11 changes: 11 additions & 0 deletions .chloggen/depcollector.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
# 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: service

# A brief description of the change. Surround your text with quotes ("") if it needs to start with a backtick (`).
note: Deprecate service.[Collector|NewSvcHandler|CollectorSettings|State|NewCommand] in favor of collector package"

# One or more tracking issues or pull requests related to the change
issues: [6608]
37 changes: 37 additions & 0 deletions collector/collector.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
// 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 collector handles the command-line, configuration, and runs the
// OpenTelemetry Collector.
package collector // import "go.opentelemetry.io/collector/collector"

import (
"go.opentelemetry.io/collector/service"
)

// State defines Collector's state.
type State = service.State //nolint:staticcheck

const (
StateStarting = service.StateStarting //nolint:staticcheck
StateRunning = service.StateRunning //nolint:staticcheck
StateClosing = service.StateClosing //nolint:staticcheck
StateClosed = service.StateClosed //nolint:staticcheck
)

// Collector represents a server providing the OpenTelemetry Collector service.
type Collector = service.Collector //nolint:staticcheck

// New creates and returns a new instance of Collector.
var New = service.New //nolint:staticcheck
25 changes: 25 additions & 0 deletions collector/collector_windows.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
// 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.

//go:build windows
// +build windows

package collector // import "go.opentelemetry.io/collector/collector"

import (
"go.opentelemetry.io/collector/service"
)

// NewSvcHandler constructs a new svc.Handler using the given CollectorSettings.
var NewSvcHandler = service.NewSvcHandler //nolint:staticcheck
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
//go:build windows
// +build windows

package service
package collector

import (
"os"
Expand All @@ -38,7 +38,7 @@ func TestNewSvcHandler(t *testing.T) {
factories, err := componenttest.NopFactories()
require.NoError(t, err)

s := NewSvcHandler(CollectorSettings{BuildInfo: component.NewDefaultBuildInfo(), Factories: factories})
s := NewSvcHandler(Settings{BuildInfo: component.NewDefaultBuildInfo(), Factories: factories})

colDone := make(chan struct{})
requests := make(chan svc.ChangeRequest)
Expand Down
22 changes: 22 additions & 0 deletions collector/command.go
Original file line number Diff line number Diff line change
@@ -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 collector // import "go.opentelemetry.io/collector/collector"

import (
"go.opentelemetry.io/collector/service"
)

// NewCommand constructs a new cobra.Command using the given CollectorSettings.
var NewCommand = service.NewCommand //nolint:staticcheck
20 changes: 15 additions & 5 deletions service/command_test.go → collector/command_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
// See the License for the specific language governing permissions and
// limitations under the License.

package service
package collector

import (
"path/filepath"
Expand All @@ -23,28 +23,38 @@ import (

"go.opentelemetry.io/collector/component"
"go.opentelemetry.io/collector/component/componenttest"
"go.opentelemetry.io/collector/confmap"
"go.opentelemetry.io/collector/confmap/converter/expandconverter"
"go.opentelemetry.io/collector/confmap/provider/fileprovider"
)

func TestNewCommandVersion(t *testing.T) {
cmd := NewCommand(CollectorSettings{BuildInfo: component.BuildInfo{Version: "test_version"}})
cmd := NewCommand(Settings{BuildInfo: component.BuildInfo{Version: "test_version"}})
assert.Equal(t, "test_version", cmd.Version)
}

func TestNewCommandNoConfigURI(t *testing.T) {
factories, err := componenttest.NopFactories()
require.NoError(t, err)

cmd := NewCommand(CollectorSettings{Factories: factories})
cmd := NewCommand(Settings{Factories: factories})
require.Error(t, cmd.Execute())
}

func TestNewCommandInvalidComponent(t *testing.T) {
factories, err := componenttest.NopFactories()
require.NoError(t, err)

cfgProvider, err := NewConfigProvider(newDefaultConfigProviderSettings([]string{filepath.Join("testdata", "otelcol-invalid.yaml")}))
cfgProvider, err := NewConfigProvider(
ConfigProviderSettings{
ResolverSettings: confmap.ResolverSettings{
URIs: []string{filepath.Join("testdata", "otelcol-invalid.yaml")},
Providers: map[string]confmap.Provider{"file": fileprovider.New()},
Converters: []confmap.Converter{expandconverter.New()},
},
})
require.NoError(t, err)

cmd := NewCommand(CollectorSettings{Factories: factories, ConfigProvider: cfgProvider})
cmd := NewCommand(Settings{Factories: factories, ConfigProvider: cfgProvider})
require.Error(t, cmd.Execute())
}
42 changes: 42 additions & 0 deletions collector/config_provider.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
// 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 collector // import "go.opentelemetry.io/collector/collector"

import (
"go.opentelemetry.io/collector/service"
)

// ConfigProvider provides the service configuration.
//
// The typical usage is the following:
//
// cfgProvider.Get(...)
// cfgProvider.Watch() // wait for an event.
// cfgProvider.Get(...)
// cfgProvider.Watch() // wait for an event.
// // repeat Get/Watch cycle until it is time to shut down the Collector process.
// cfgProvider.Shutdown()
type ConfigProvider = service.ConfigProvider //nolint:staticcheck

// ConfigProviderSettings are the settings to configure the behavior of the ConfigProvider.
type ConfigProviderSettings = service.ConfigProviderSettings //nolint:staticcheck

// NewConfigProvider returns a new ConfigProvider that provides the service configuration:
// * Initially it resolves the "configuration map":
// - Retrieve the confmap.Conf by merging all retrieved maps from the given `locations` in order.
// - Then applies all the confmap.Converter in the given order.
//
// * Then unmarshalls the confmap.Conf into the service Config.
var NewConfigProvider = service.NewConfigProvider //nolint:staticcheck
22 changes: 22 additions & 0 deletions collector/settings.go
Original file line number Diff line number Diff line change
@@ -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 collector // import "go.opentelemetry.io/collector/collector"

import (
"go.opentelemetry.io/collector/service"
)

// Settings holds configuration for creating a new Collector.
type Settings = service.CollectorSettings //nolint:staticcheck
8 changes: 6 additions & 2 deletions service/collector.go
Original file line number Diff line number Diff line change
Expand Up @@ -33,13 +33,17 @@ import (
"go.opentelemetry.io/collector/service/internal/grpclog"
)

// State defines Collector's state.
// Deprecated: [v0.66.0] use collector.State
type State int

const (
// Deprecated: [v0.66.0] use collector.StateStarting
StateStarting State = iota
// Deprecated: [v0.66.0] use collector.StateRunning
StateRunning
// Deprecated: [v0.66.0] use collector.StateClosing
StateClosing
// Deprecated: [v0.66.0] use collector.StateClosed
StateClosed
)

Expand Down Expand Up @@ -68,7 +72,7 @@ func (s State) String() string {
// - Upon shutdown, pipelines are notified, then pipelines and extensions are shut down.
// - Users can call (*Collector).Shutdown anytime to shut down the collector.

// Collector represents a server providing the OpenTelemetry Collector service.
// Deprecated: [v0.66.0] use collector.Collector
type Collector struct {
set CollectorSettings

Expand Down
2 changes: 1 addition & 1 deletion service/collector_windows.go
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ type windowsService struct {
flags *flag.FlagSet
}

// NewSvcHandler constructs a new svc.Handler using the given CollectorSettings.
// Deprecated: [v0.66.0] use collector.NewSvcHandler
func NewSvcHandler(set CollectorSettings) svc.Handler {
return &windowsService{settings: set, flags: flags()}
}
Expand Down
2 changes: 1 addition & 1 deletion service/command.go
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ import (
"go.opentelemetry.io/collector/featuregate"
)

// NewCommand constructs a new cobra.Command using the given CollectorSettings.
// Deprecated: [v0.66.0] use collector.NewCommand
func NewCommand(set CollectorSettings) *cobra.Command {
flagSet := flags()
rootCmd := &cobra.Command{
Expand Down
20 changes: 3 additions & 17 deletions service/config_provider.go
Original file line number Diff line number Diff line change
Expand Up @@ -27,16 +27,7 @@ import (
"go.opentelemetry.io/collector/confmap/provider/yamlprovider"
)

// ConfigProvider provides the service configuration.
//
// The typical usage is the following:
//
// cfgProvider.Get(...)
// cfgProvider.Watch() // wait for an event.
// cfgProvider.Get(...)
// cfgProvider.Watch() // wait for an event.
// // repeat Get/Watch cycle until it is time to shut down the Collector process.
// cfgProvider.Shutdown()
// Deprecated: [v0.66.0] use collector.ConfigProvider
type ConfigProvider interface {
// Get returns the service configuration, or error otherwise.
//
Expand Down Expand Up @@ -65,7 +56,7 @@ type configProvider struct {
mapResolver *confmap.Resolver
}

// ConfigProviderSettings are the settings to configure the behavior of the ConfigProvider.
// Deprecated: [v0.66.0] use collector.ConfigProviderSettings
type ConfigProviderSettings struct {
// ResolverSettings are the settings to configure the behavior of the confmap.Resolver.
ResolverSettings confmap.ResolverSettings
Expand All @@ -81,12 +72,7 @@ func newDefaultConfigProviderSettings(uris []string) ConfigProviderSettings {
}
}

// NewConfigProvider returns a new ConfigProvider that provides the service configuration:
// * Initially it resolves the "configuration map":
// - Retrieve the confmap.Conf by merging all retrieved maps from the given `locations` in order.
// - Then applies all the confmap.Converter in the given order.
//
// * Then unmarshalls the confmap.Conf into the service Config.
// Deprecated: [v0.66.0] use collector.NewConfigProvider
func NewConfigProvider(set ConfigProviderSettings) (ConfigProvider, error) {
mr, err := confmap.NewResolver(set.ResolverSettings)
if err != nil {
Expand Down
3 changes: 2 additions & 1 deletion service/servicetest/configprovider.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ package servicetest // import "go.opentelemetry.io/collector/service/servicetest
import (
"context"

"go.opentelemetry.io/collector/collector"
"go.opentelemetry.io/collector/component"
"go.opentelemetry.io/collector/confmap"
"go.opentelemetry.io/collector/confmap/converter/expandconverter"
Expand All @@ -30,7 +31,7 @@ import (
// LoadConfig loads a config.Config from file, and does NOT validate the configuration.
func LoadConfig(fileName string, factories component.Factories) (*service.Config, error) {
// Read yaml config from file
provider, err := service.NewConfigProvider(service.ConfigProviderSettings{
provider, err := collector.NewConfigProvider(collector.ConfigProviderSettings{
ResolverSettings: confmap.ResolverSettings{
URIs: []string{fileName},
Providers: makeMapProvidersMap(fileprovider.New(), envprovider.New(), yamlprovider.New(), httpprovider.New()),
Expand Down
2 changes: 1 addition & 1 deletion service/settings.go
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ type settings struct {
telemetry *telemetryInitializer
}

// CollectorSettings holds configuration for creating a new Collector.
// Deprecated: [v0.66.0] use collector.Settings
type CollectorSettings struct {
// Factories component factories.
Factories component.Factories
Expand Down

0 comments on commit fcedaef

Please sign in to comment.