Skip to content

Commit

Permalink
Move service/parserprovider to config
Browse files Browse the repository at this point in the history
  • Loading branch information
mx-psi committed Oct 6, 2021
1 parent 190f8fb commit e7a1495
Show file tree
Hide file tree
Showing 22 changed files with 43 additions and 64 deletions.
3 changes: 1 addition & 2 deletions config/configtest/configtest.go
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,6 @@ import (
"go.opentelemetry.io/collector/component"
"go.opentelemetry.io/collector/config"
"go.opentelemetry.io/collector/config/configunmarshaler"
"go.opentelemetry.io/collector/service/parserprovider"
)

// The regular expression for valid config field tag.
Expand All @@ -35,7 +34,7 @@ var configFieldTagRegExp = regexp.MustCompile("^[a-z0-9][a-z0-9_]*$")
// LoadConfig loads a config from file, and does NOT validate the configuration.
func LoadConfig(fileName string, factories component.Factories) (*config.Config, error) {
// Read yaml config from file
cp, err := parserprovider.NewExpandMapProvider(parserprovider.NewFileMapProvider(fileName)).Get(context.Background())
cp, err := config.NewExpandMapProvider(config.NewFileMapProvider(fileName)).Get(context.Background())
if err != nil {
return nil, err
}
Expand Down
2 changes: 1 addition & 1 deletion service/parserprovider/default.go → config/default.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 parserprovider
package config

// NewDefaultMapProvider returns the default MapProvider, and it creates configuration from a file
// defined by the given configFile and overwrites fields using properties.
Expand Down
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 parserprovider
package config

import (
"context"
Expand All @@ -21,16 +21,14 @@ import (

"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"

"go.opentelemetry.io/collector/config"
)

func TestDefaultMapProvider(t *testing.T) {
mp := NewDefaultMapProvider("testdata/default-config.yaml", nil)
cm, err := mp.Get(context.Background())
require.NoError(t, err)

expectedMap, err := config.NewMapFromBuffer(strings.NewReader(`
expectedMap, err := NewMapFromBuffer(strings.NewReader(`
processors:
batch:
exporters:
Expand All @@ -47,7 +45,7 @@ func TestDefaultMapProvider_AddNewConfig(t *testing.T) {
cm, err := mp.Get(context.Background())
require.NoError(t, err)

expectedMap, err := config.NewMapFromBuffer(strings.NewReader(`
expectedMap, err := NewMapFromBuffer(strings.NewReader(`
processors:
batch:
timeout: 2s
Expand All @@ -67,7 +65,7 @@ func TestDefaultMapProvider_OverwriteConfig(t *testing.T) {
cm, err := mp.Get(context.Background())
require.NoError(t, err)

expectedMap, err := config.NewMapFromBuffer(strings.NewReader(`
expectedMap, err := NewMapFromBuffer(strings.NewReader(`
processors:
batch:
timeout: 2s
Expand Down
6 changes: 2 additions & 4 deletions service/parserprovider/expand.go → config/expand.go
Original file line number Diff line number Diff line change
Expand Up @@ -12,13 +12,11 @@
// See the License for the specific language governing permissions and
// limitations under the License.

package parserprovider
package config

import (
"context"
"os"

"go.opentelemetry.io/collector/config"
)

type expandMapProvider struct {
Expand All @@ -33,7 +31,7 @@ func NewExpandMapProvider(base MapProvider) MapProvider {
}
}

func (emp *expandMapProvider) Get(ctx context.Context) (*config.Map, error) {
func (emp *expandMapProvider) Get(ctx context.Context) (*Map, error) {
cfgMap, err := emp.base.Get(ctx)
if err != nil {
return nil, err
Expand Down
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 parserprovider
package config

import (
"context"
Expand All @@ -22,8 +22,6 @@ import (

"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"

"go.opentelemetry.io/collector/config"
)

func TestExpand(t *testing.T) {
Expand All @@ -50,7 +48,7 @@ func TestExpand(t *testing.T) {
assert.NoError(t, os.Unsetenv("EXTRA_LIST_VALUE_1"))
}()

expectedCfgMap, errExpected := config.NewMapFromFile(path.Join("testdata", "expand-with-no-env.yaml"))
expectedCfgMap, errExpected := NewMapFromFile(path.Join("testdata", "expand-with-no-env.yaml"))
require.NoError(t, errExpected, "Unable to get expected config")

for _, test := range testCases {
Expand Down
8 changes: 3 additions & 5 deletions service/parserprovider/file.go → config/file.go
Original file line number Diff line number Diff line change
Expand Up @@ -12,14 +12,12 @@
// See the License for the specific language governing permissions and
// limitations under the License.

package parserprovider
package config

import (
"context"
"errors"
"fmt"

"go.opentelemetry.io/collector/config"
)

type fileMapProvider struct {
Expand All @@ -33,12 +31,12 @@ func NewFileMapProvider(fileName string) MapProvider {
}
}

func (fmp *fileMapProvider) Get(context.Context) (*config.Map, error) {
func (fmp *fileMapProvider) Get(context.Context) (*Map, error) {
if fmp.fileName == "" {
return nil, errors.New("config file not specified")
}

cp, err := config.NewMapFromFile(fmp.fileName)
cp, err := NewMapFromFile(fmp.fileName)
if err != nil {
return nil, fmt.Errorf("error loading config file %q: %w", fmp.fileName, err)
}
Expand Down
8 changes: 3 additions & 5 deletions service/parserprovider/inmemory.go → config/inmemory.go
Original file line number Diff line number Diff line change
Expand Up @@ -12,13 +12,11 @@
// See the License for the specific language governing permissions and
// limitations under the License.

package parserprovider
package config

import (
"context"
"io"

"go.opentelemetry.io/collector/config"
)

type inMemoryMapProvider struct {
Expand All @@ -30,8 +28,8 @@ func NewInMemoryMapProvider(buf io.Reader) MapProvider {
return &inMemoryMapProvider{buf: buf}
}

func (inp *inMemoryMapProvider) Get(context.Context) (*config.Map, error) {
return config.NewMapFromBuffer(inp.buf)
func (inp *inMemoryMapProvider) Get(context.Context) (*Map, error) {
return NewMapFromBuffer(inp.buf)
}

func (inp *inMemoryMapProvider) Close(context.Context) error {
Expand Down
8 changes: 3 additions & 5 deletions service/parserprovider/merge.go → config/merge.go
Original file line number Diff line number Diff line change
Expand Up @@ -12,14 +12,12 @@
// See the License for the specific language governing permissions and
// limitations under the License.

package parserprovider
package config

import (
"context"

"go.uber.org/multierr"

"go.opentelemetry.io/collector/config"
)

// TODO: Add support to "merge" watchable interface.
Expand All @@ -35,8 +33,8 @@ func NewMergeMapProvider(ps ...MapProvider) MapProvider {
return &mergeMapProvider{providers: ps}
}

func (mp *mergeMapProvider) Get(ctx context.Context) (*config.Map, error) {
ret := config.NewMap()
func (mp *mergeMapProvider) Get(ctx context.Context) (*Map, error) {
ret := NewMap()
for _, p := range mp.providers {
cfgMap, err := p.Get(ctx)
if err != nil {
Expand Down
8 changes: 3 additions & 5 deletions service/parserprovider/merge_test.go → config/merge_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 parserprovider
package config

import (
"context"
Expand All @@ -21,8 +21,6 @@ import (

"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"

"go.opentelemetry.io/collector/config"
)

func TestMerge_GetError(t *testing.T) {
Expand All @@ -43,9 +41,9 @@ type errProvider struct {
err error
}

func (epl *errProvider) Get(context.Context) (*config.Map, error) {
func (epl *errProvider) Get(context.Context) (*Map, error) {
if epl.err == nil {
return config.NewMap(), nil
return NewMap(), nil
}
return nil, epl.err
}
Expand Down
10 changes: 4 additions & 6 deletions service/parserprovider/properties.go → config/properties.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 parserprovider
package config

import (
"bytes"
Expand All @@ -21,8 +21,6 @@ import (

"github.com/knadh/koanf/maps"
"github.com/magiconair/properties"

"go.opentelemetry.io/collector/config"
)

type propertiesMapProvider struct {
Expand All @@ -40,9 +38,9 @@ func NewPropertiesMapProvider(properties []string) MapProvider {
}
}

func (pmp *propertiesMapProvider) Get(context.Context) (*config.Map, error) {
func (pmp *propertiesMapProvider) Get(context.Context) (*Map, error) {
if len(pmp.properties) == 0 {
return config.NewMap(), nil
return NewMap(), nil
}

b := &bytes.Buffer{}
Expand All @@ -67,7 +65,7 @@ func (pmp *propertiesMapProvider) Get(context.Context) (*config.Map, error) {
}
prop := maps.Unflatten(parsed, ".")

return config.NewMapFromStringMap(prop), nil
return NewMapFromStringMap(prop), nil
}

func (*propertiesMapProvider) Close(context.Context) error {
Expand Down
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 parserprovider
package config

import (
"context"
Expand Down
6 changes: 2 additions & 4 deletions service/parserprovider/provider.go → config/provider.go
Original file line number Diff line number Diff line change
Expand Up @@ -12,19 +12,17 @@
// See the License for the specific language governing permissions and
// limitations under the License.

package parserprovider
package config

import (
"context"

"go.opentelemetry.io/collector/config"
)

// MapProvider is an interface that helps providing configuration's parser.
// Implementations may load the parser from a file, a database or any other source.
type MapProvider interface {
// Get returns the config.Map if succeed or error otherwise.
Get(ctx context.Context) (*config.Map, error)
Get(ctx context.Context) (*Map, error)

// Close signals that the configuration for which it was used to retrieve values is no longer in use
// and the object should close and release any watchers that it may have created.
Expand Down
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
6 changes: 3 additions & 3 deletions service/collector.go
Original file line number Diff line number Diff line change
Expand Up @@ -34,12 +34,12 @@ import (
"go.uber.org/zap"

"go.opentelemetry.io/collector/component"
"go.opentelemetry.io/collector/config"
"go.opentelemetry.io/collector/config/configunmarshaler"
"go.opentelemetry.io/collector/config/experimental/configsource"
"go.opentelemetry.io/collector/extension/ballastextension"
"go.opentelemetry.io/collector/service/internal"
"go.opentelemetry.io/collector/service/internal/telemetrylogs"
"go.opentelemetry.io/collector/service/parserprovider"
)

// State defines Collector's state.
Expand Down Expand Up @@ -194,7 +194,7 @@ func (col *Collector) setupConfigurationComponents(ctx context.Context) error {
}

// If provider is watchable start a goroutine watching for updates.
if watchable, ok := col.set.ConfigMapProvider.(parserprovider.Watchable); ok {
if watchable, ok := col.set.ConfigMapProvider.(config.Watchable); ok {
go col.watchForConfigUpdates(watchable)
}

Expand Down Expand Up @@ -285,7 +285,7 @@ func (col *Collector) reloadService(ctx context.Context) error {
return nil
}

func (col *Collector) watchForConfigUpdates(watchable parserprovider.Watchable) {
func (col *Collector) watchForConfigUpdates(watchable config.Watchable) {
err := watchable.WatchForUpdate()
if errors.Is(err, configsource.ErrSessionClosed) {
// This is the case of shutdown of the whole collector server, nothing to do.
Expand Down
11 changes: 5 additions & 6 deletions service/collector_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,6 @@ import (
"go.opentelemetry.io/collector/internal/testutil"
"go.opentelemetry.io/collector/service/defaultcomponents"
"go.opentelemetry.io/collector/service/internal/builder"
"go.opentelemetry.io/collector/service/parserprovider"
)

const configStr = `
Expand Down Expand Up @@ -77,7 +76,7 @@ func TestCollector_StartAsGoRoutine(t *testing.T) {
set := CollectorSettings{
BuildInfo: component.NewDefaultBuildInfo(),
Factories: factories,
ConfigMapProvider: parserprovider.NewInMemoryMapProvider(strings.NewReader(configStr)),
ConfigMapProvider: config.NewInMemoryMapProvider(strings.NewReader(configStr)),
}
col, err := New(set)
require.NoError(t, err)
Expand Down Expand Up @@ -114,7 +113,7 @@ func TestCollector_Start(t *testing.T) {
col, err := New(CollectorSettings{
BuildInfo: component.NewDefaultBuildInfo(),
Factories: factories,
ConfigMapProvider: parserprovider.NewFileMapProvider("testdata/otelcol-config.yaml"),
ConfigMapProvider: config.NewFileMapProvider("testdata/otelcol-config.yaml"),
LoggingOptions: []zap.Option{zap.Hooks(hook)},
})
require.NoError(t, err)
Expand Down Expand Up @@ -181,7 +180,7 @@ func TestCollector_ReportError(t *testing.T) {
col, err := New(CollectorSettings{
BuildInfo: component.NewDefaultBuildInfo(),
Factories: factories,
ConfigMapProvider: parserprovider.NewFileMapProvider("testdata/otelcol-config.yaml"),
ConfigMapProvider: config.NewFileMapProvider("testdata/otelcol-config.yaml"),
})
require.NoError(t, err)

Expand Down Expand Up @@ -281,7 +280,7 @@ func TestCollector_reloadService(t *testing.T) {

tests := []struct {
name string
parserProvider parserprovider.MapProvider
parserProvider config.MapProvider
service *service
}{
{
Expand All @@ -301,7 +300,7 @@ func TestCollector_reloadService(t *testing.T) {
},
{
name: "retire_service_ok_load_ok",
parserProvider: parserprovider.NewInMemoryMapProvider(strings.NewReader(configStr)),
parserProvider: config.NewInMemoryMapProvider(strings.NewReader(configStr)),
service: &service{
telemetry: componenttest.NewNopTelemetrySettings(),
builtExporters: builder.Exporters{},
Expand Down

0 comments on commit e7a1495

Please sign in to comment.