From 04f6cb0abc3b871f2fe89f5d8218fbc689bb04a9 Mon Sep 17 00:00:00 2001 From: Jaganathan P <156800415+jagan2221@users.noreply.github.com> Date: Tue, 11 Jun 2024 11:03:10 +0530 Subject: [PATCH 01/64] Update provider.go --- pkg/configprovider/opampprovider/provider.go | 36 ++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/pkg/configprovider/opampprovider/provider.go b/pkg/configprovider/opampprovider/provider.go index 5c80bfcbdd..a87ae67a9c 100644 --- a/pkg/configprovider/opampprovider/provider.go +++ b/pkg/configprovider/opampprovider/provider.go @@ -69,6 +69,41 @@ func NewFactory() confmap.ProviderFactory { return confmap.NewProviderFactory(NewWithSettings) } +// Remove specific keys from srcMap if same keys present in mergeMap under same path +func removeMatchingKeysFromSrcMap(srcMap map[string]interface{}, mergeMap map[string]interface{}) map[string]interface{} { + srcMapVal := srcMap + mergeMapVal := mergeMap + for key, mergeValue := range mergeMapVal { + srcValue, exists := srcMapVal[key] + + //if key not exists in merge map, skip the path + if !exists { + continue + } + + if key == "collector_fields" { + delete(srcMapVal, key) + } + + mergeNestedMap, isMergeMap := mergeValue.(map[string]interface{}) + srcNestedMap, isSrcMap := srcValue.(map[string]interface{}) + + if isMergeMap && isSrcMap { + // Recursively handle nested maps + removeMatchingKeysFromSrcMap(srcNestedMap, mergeNestedMap) + } + } + return srcMap +} + +// Checks and prepares scrConf for replace behavior instead of map merge +// Hack for confmap.Conf.Merge method to replace specific fields instead of merging them +// Merge method merges field values from source and mergeConf, so by removing existing values from +// source map, we can achieve replace behavior +func PrepareForReplaceBehavior(srcConf *confmap.Conf, mergeConf *confmap.Conf) { + *srcConf = *confmap.NewFromStringMap(removeMatchingKeysFromSrcMap(srcConf.ToStringMap(), mergeConf.ToStringMap())) +} + func (p *Provider) Retrieve(ctx context.Context, configPath string, fn confmap.WatcherFunc) (*confmap.Retrieved, error) { var cfg ConfigFragment configPath = strings.TrimPrefix(configPath, "opamp:") @@ -100,6 +135,7 @@ func (p *Provider) Retrieve(ctx context.Context, configPath string, fn confmap.W if err != nil { return nil, err } + PrepareForReplaceBehavior(retConf, addlConf) // merge the file config in if err := conf.Merge(addlConf); err != nil { return nil, err From 28013f4f63b7a3c8a388cdf0121a4fcc3ad162c6 Mon Sep 17 00:00:00 2001 From: Jaganathan P <156800415+jagan2221@users.noreply.github.com> Date: Thu, 13 Jun 2024 11:37:59 +0530 Subject: [PATCH 02/64] Update provider.go --- pkg/configprovider/opampprovider/provider.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/pkg/configprovider/opampprovider/provider.go b/pkg/configprovider/opampprovider/provider.go index a87ae67a9c..4bc5dbc452 100644 --- a/pkg/configprovider/opampprovider/provider.go +++ b/pkg/configprovider/opampprovider/provider.go @@ -135,7 +135,8 @@ func (p *Provider) Retrieve(ctx context.Context, configPath string, fn confmap.W if err != nil { return nil, err } - PrepareForReplaceBehavior(retConf, addlConf) + //Order of conf parameter is imp, see method comments + PrepareForReplaceBehavior(addlConf, retConf) // merge the file config in if err := conf.Merge(addlConf); err != nil { return nil, err From 64d9df32fad41df1711f8d785875ad40afa26c55 Mon Sep 17 00:00:00 2001 From: Jaganathan P <156800415+jagan2221@users.noreply.github.com> Date: Thu, 13 Jun 2024 13:57:54 +0530 Subject: [PATCH 03/64] Create utils.go --- pkg/configprovider/providerutil/utils.go | 38 ++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 pkg/configprovider/providerutil/utils.go diff --git a/pkg/configprovider/providerutil/utils.go b/pkg/configprovider/providerutil/utils.go new file mode 100644 index 0000000000..103794327d --- /dev/null +++ b/pkg/configprovider/providerutil/utils.go @@ -0,0 +1,38 @@ +package providerutil + +import "go.opentelemetry.io/collector/confmap" + +// Remove specific keys from srcMap if same keys present in mergeMap under same path +func removeMatchingKeysFromSrcMap(srcMap map[string]interface{}, mergeMap map[string]interface{}) map[string]interface{} { + srcMapVal := srcMap + mergeMapVal := mergeMap + for key, mergeValue := range mergeMapVal { + srcValue, exists := srcMapVal[key] + + //if key not exists in merge map, skip the path + if !exists { + continue + } + + if key == "collector_fields" { + delete(srcMapVal, key) + } + + mergeNestedMap, isMergeMap := mergeValue.(map[string]interface{}) + srcNestedMap, isSrcMap := srcValue.(map[string]interface{}) + + if isMergeMap && isSrcMap { + // Recursively handle nested maps + removeMatchingKeysFromSrcMap(srcNestedMap, mergeNestedMap) + } + } + return srcMap +} + +// Checks and prepares scrConf for replace behavior instead of map merge +// Hack for confmap.Conf.Merge method to replace specific fields instead of merging them +// Merge method merges field values from source and mergeConf, so by removing existing values from +// source map, we can achieve replace behavior +func PrepareForReplaceBehavior(srcConf *confmap.Conf, mergeConf *confmap.Conf) { + *srcConf = *confmap.NewFromStringMap(removeMatchingKeysFromSrcMap(srcConf.ToStringMap(), mergeConf.ToStringMap())) +} From 5be51e65fa8528c4cdcc3ba5f42df1bf645a7f76 Mon Sep 17 00:00:00 2001 From: Jaganathan P <156800415+jagan2221@users.noreply.github.com> Date: Thu, 13 Jun 2024 14:00:15 +0530 Subject: [PATCH 04/64] Create go.mod --- pkg/configprovider/providerutil/go.mod | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 pkg/configprovider/providerutil/go.mod diff --git a/pkg/configprovider/providerutil/go.mod b/pkg/configprovider/providerutil/go.mod new file mode 100644 index 0000000000..999ad65529 --- /dev/null +++ b/pkg/configprovider/providerutil/go.mod @@ -0,0 +1,22 @@ +module github.com/SumoLogic/sumologic-otel-collector/pkg/configprovider/providerutil + +go 1.21.0 + +toolchain go1.22.3 + +require ( + go.opentelemetry.io/collector/confmap v0.102.1 +) + +require ( + github.com/go-viper/mapstructure/v2 v2.0.0-alpha.1 // indirect + github.com/knadh/koanf/maps v0.1.1 // indirect + github.com/knadh/koanf/providers/confmap v0.1.0 // indirect + github.com/knadh/koanf/v2 v2.1.1 // indirect + github.com/mitchellh/copystructure v1.2.0 // indirect + github.com/mitchellh/reflectwalk v1.0.2 // indirect + go.uber.org/multierr v1.11.0 // indirect + go.uber.org/zap v1.27.0 // indirect + gopkg.in/yaml.v3 v3.0.1 // indirect +) + From bf94cab94ac69656451c6b30d767d3c16159dfea Mon Sep 17 00:00:00 2001 From: Jaganathan P <156800415+jagan2221@users.noreply.github.com> Date: Thu, 13 Jun 2024 14:02:14 +0530 Subject: [PATCH 05/64] Update provider.go --- pkg/configprovider/globprovider/provider.go | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/pkg/configprovider/globprovider/provider.go b/pkg/configprovider/globprovider/provider.go index f755a41ced..bb8c55f879 100644 --- a/pkg/configprovider/globprovider/provider.go +++ b/pkg/configprovider/globprovider/provider.go @@ -17,6 +17,7 @@ package globprovider import ( "context" "fmt" + "github.com/SumoLogic/sumologic-otel-collector/pkg/configprovider/providerutil" "os" "path/filepath" "sort" @@ -68,11 +69,12 @@ func (fmp *provider) Retrieve(ctx context.Context, uri string, _ confmap.Watcher return &confmap.Retrieved{}, err } pathConf := confmap.NewFromStringMap(rawConf) + providerutil.PrepareForReplaceBehavior(conf, pathConf) if err := conf.Merge(pathConf); err != nil { return &confmap.Retrieved{}, err } - } + } return confmap.NewRetrieved(conf.ToStringMap()) } From f47b83117ae6ae42ced0b9c19a5a3311429fe146 Mon Sep 17 00:00:00 2001 From: Jaganathan P Date: Thu, 13 Jun 2024 14:14:50 +0530 Subject: [PATCH 06/64] link util with providers --- pkg/configprovider/globprovider/go.mod | 2 ++ pkg/configprovider/globprovider/provider.go | 3 ++- pkg/configprovider/opampprovider/go.mod | 2 ++ pkg/configprovider/opampprovider/provider.go | 3 ++- 4 files changed, 8 insertions(+), 2 deletions(-) diff --git a/pkg/configprovider/globprovider/go.mod b/pkg/configprovider/globprovider/go.mod index 7c2ba715c0..99df358a6c 100644 --- a/pkg/configprovider/globprovider/go.mod +++ b/pkg/configprovider/globprovider/go.mod @@ -25,3 +25,5 @@ require ( go.uber.org/zap v1.27.0 // indirect gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c // indirect ) + +replace github.com/SumoLogic/sumologic-otel-collector/pkg/configprovider/providerutil => ../providerutil \ No newline at end of file diff --git a/pkg/configprovider/globprovider/provider.go b/pkg/configprovider/globprovider/provider.go index f755a41ced..400624ed82 100644 --- a/pkg/configprovider/globprovider/provider.go +++ b/pkg/configprovider/globprovider/provider.go @@ -23,7 +23,7 @@ import ( "strings" "gopkg.in/yaml.v3" - + "github.com/SumoLogic/sumologic-otel-collector/pkg/configprovider/providerutil" "go.opentelemetry.io/collector/confmap" ) @@ -68,6 +68,7 @@ func (fmp *provider) Retrieve(ctx context.Context, uri string, _ confmap.Watcher return &confmap.Retrieved{}, err } pathConf := confmap.NewFromStringMap(rawConf) + providerutil.PrepareForReplaceBehavior(conf, pathConf) if err := conf.Merge(pathConf); err != nil { return &confmap.Retrieved{}, err } diff --git a/pkg/configprovider/opampprovider/go.mod b/pkg/configprovider/opampprovider/go.mod index dad205dcc6..04570f9b40 100644 --- a/pkg/configprovider/opampprovider/go.mod +++ b/pkg/configprovider/opampprovider/go.mod @@ -25,3 +25,5 @@ require ( ) replace github.com/SumoLogic/sumologic-otel-collector/pkg/configprovider/globprovider => ../globprovider + +replace github.com/SumoLogic/sumologic-otel-collector/pkg/configprovider/providerutil => ../providerutil \ No newline at end of file diff --git a/pkg/configprovider/opampprovider/provider.go b/pkg/configprovider/opampprovider/provider.go index 5c80bfcbdd..1780a1b96d 100644 --- a/pkg/configprovider/opampprovider/provider.go +++ b/pkg/configprovider/opampprovider/provider.go @@ -20,8 +20,8 @@ import ( "os" "path/filepath" "strings" - "github.com/SumoLogic/sumologic-otel-collector/pkg/configprovider/globprovider" + "github.com/SumoLogic/sumologic-otel-collector/pkg/configprovider/providerutil" "go.opentelemetry.io/collector/confmap" "go.opentelemetry.io/collector/confmap/provider/fileprovider" "gopkg.in/yaml.v2" @@ -100,6 +100,7 @@ func (p *Provider) Retrieve(ctx context.Context, configPath string, fn confmap.W if err != nil { return nil, err } + providerutil.PrepareForReplaceBehavior(addlConf, retConf) // merge the file config in if err := conf.Merge(addlConf); err != nil { return nil, err From 3ffa98372ac95d960fcfe8efbdecd59365333bb1 Mon Sep 17 00:00:00 2001 From: Jaganathan P Date: Thu, 13 Jun 2024 14:32:12 +0530 Subject: [PATCH 07/64] refactor --- pkg/configprovider/opampprovider/provider.go | 41 ++------------------ 1 file changed, 3 insertions(+), 38 deletions(-) diff --git a/pkg/configprovider/opampprovider/provider.go b/pkg/configprovider/opampprovider/provider.go index 9337f3fd6f..d837cd1c20 100644 --- a/pkg/configprovider/opampprovider/provider.go +++ b/pkg/configprovider/opampprovider/provider.go @@ -17,14 +17,14 @@ import ( "context" "errors" "fmt" - "os" - "path/filepath" - "strings" "github.com/SumoLogic/sumologic-otel-collector/pkg/configprovider/globprovider" "github.com/SumoLogic/sumologic-otel-collector/pkg/configprovider/providerutil" "go.opentelemetry.io/collector/confmap" "go.opentelemetry.io/collector/confmap/provider/fileprovider" "gopkg.in/yaml.v2" + "os" + "path/filepath" + "strings" ) const ( @@ -69,41 +69,6 @@ func NewFactory() confmap.ProviderFactory { return confmap.NewProviderFactory(NewWithSettings) } -// Remove specific keys from srcMap if same keys present in mergeMap under same path -func removeMatchingKeysFromSrcMap(srcMap map[string]interface{}, mergeMap map[string]interface{}) map[string]interface{} { - srcMapVal := srcMap - mergeMapVal := mergeMap - for key, mergeValue := range mergeMapVal { - srcValue, exists := srcMapVal[key] - - //if key not exists in merge map, skip the path - if !exists { - continue - } - - if key == "collector_fields" { - delete(srcMapVal, key) - } - - mergeNestedMap, isMergeMap := mergeValue.(map[string]interface{}) - srcNestedMap, isSrcMap := srcValue.(map[string]interface{}) - - if isMergeMap && isSrcMap { - // Recursively handle nested maps - removeMatchingKeysFromSrcMap(srcNestedMap, mergeNestedMap) - } - } - return srcMap -} - -// Checks and prepares scrConf for replace behavior instead of map merge -// Hack for confmap.Conf.Merge method to replace specific fields instead of merging them -// Merge method merges field values from source and mergeConf, so by removing existing values from -// source map, we can achieve replace behavior -func PrepareForReplaceBehavior(srcConf *confmap.Conf, mergeConf *confmap.Conf) { - *srcConf = *confmap.NewFromStringMap(removeMatchingKeysFromSrcMap(srcConf.ToStringMap(), mergeConf.ToStringMap())) -} - func (p *Provider) Retrieve(ctx context.Context, configPath string, fn confmap.WatcherFunc) (*confmap.Retrieved, error) { var cfg ConfigFragment configPath = strings.TrimPrefix(configPath, "opamp:") From 4b3906152f1920fbf858b8ba302fcb8d7d09e5f2 Mon Sep 17 00:00:00 2001 From: Jaganathan P Date: Thu, 13 Jun 2024 14:45:43 +0530 Subject: [PATCH 08/64] build err --- otelcolbuilder/.otelcol-builder.yaml | 1 + pkg/configprovider/opampprovider/go.mod | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/otelcolbuilder/.otelcol-builder.yaml b/otelcolbuilder/.otelcol-builder.yaml index 64ab6cef7e..79e35d9103 100644 --- a/otelcolbuilder/.otelcol-builder.yaml +++ b/otelcolbuilder/.otelcol-builder.yaml @@ -250,3 +250,4 @@ replaces: - github.com/SumoLogic/sumologic-otel-collector/pkg/extension/opampextension => ../../pkg/extension/opampextension - github.com/SumoLogic/sumologic-otel-collector/pkg/configprovider/globprovider => ../../pkg/configprovider/globprovider - github.com/SumoLogic/sumologic-otel-collector/pkg/configprovider/opampprovider => ../../pkg/configprovider/opampprovider + - github.com/SumoLogic/sumologic-otel-collector/pkg/configprovider/providerutil => ../../pkg/configprovider/providerutil diff --git a/pkg/configprovider/opampprovider/go.mod b/pkg/configprovider/opampprovider/go.mod index c9a8c7b967..333fe72099 100644 --- a/pkg/configprovider/opampprovider/go.mod +++ b/pkg/configprovider/opampprovider/go.mod @@ -6,7 +6,7 @@ toolchain go1.22.3 require ( github.com/SumoLogic/sumologic-otel-collector/pkg/configprovider/globprovider v0.0.0-00010101000000-000000000000 - github.com/SumoLogic/sumologic-otel-collector/pkg/configprovider/providerutil v0.0.0-00010101000000-000000000000 + github.com/SumoLogic/sumologic-otel-collector/pkg/configprovider/providerutil github.com/google/go-cmp v0.5.9 go.opentelemetry.io/collector/confmap v0.102.1 go.opentelemetry.io/collector/confmap/provider/fileprovider v0.102.1 From 0a5c12d6d5c47c14e7bdd641a1bb7973d4585186 Mon Sep 17 00:00:00 2001 From: Jaganathan P Date: Thu, 13 Jun 2024 14:48:45 +0530 Subject: [PATCH 09/64] pkg/configprovider/opampprovider/go.mod --- pkg/configprovider/opampprovider/go.mod | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/configprovider/opampprovider/go.mod b/pkg/configprovider/opampprovider/go.mod index 333fe72099..c9a8c7b967 100644 --- a/pkg/configprovider/opampprovider/go.mod +++ b/pkg/configprovider/opampprovider/go.mod @@ -6,7 +6,7 @@ toolchain go1.22.3 require ( github.com/SumoLogic/sumologic-otel-collector/pkg/configprovider/globprovider v0.0.0-00010101000000-000000000000 - github.com/SumoLogic/sumologic-otel-collector/pkg/configprovider/providerutil + github.com/SumoLogic/sumologic-otel-collector/pkg/configprovider/providerutil v0.0.0-00010101000000-000000000000 github.com/google/go-cmp v0.5.9 go.opentelemetry.io/collector/confmap v0.102.1 go.opentelemetry.io/collector/confmap/provider/fileprovider v0.102.1 From f95b34dc762a21274f3add0935ed42d6587ba561 Mon Sep 17 00:00:00 2001 From: Jaganathan P <156800415+jagan2221@users.noreply.github.com> Date: Wed, 26 Jun 2024 18:09:26 +0530 Subject: [PATCH 10/64] Update pkg/configprovider/opampprovider/provider.go Co-authored-by: Dominik Rosiek <58699848+sumo-drosiek@users.noreply.github.com> --- pkg/configprovider/opampprovider/provider.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/configprovider/opampprovider/provider.go b/pkg/configprovider/opampprovider/provider.go index d837cd1c20..2a9c173509 100644 --- a/pkg/configprovider/opampprovider/provider.go +++ b/pkg/configprovider/opampprovider/provider.go @@ -100,7 +100,7 @@ func (p *Provider) Retrieve(ctx context.Context, configPath string, fn confmap.W if err != nil { return nil, err } - //Order of conf parameter is imp, see method comments + // Order of conf parameters is important, see method comments providerutil.PrepareForReplaceBehavior(addlConf, retConf) // merge the file config in From a136bfff1b5bb4c7c2d04cf2c8362f09630c78d2 Mon Sep 17 00:00:00 2001 From: Jaganathan P Date: Wed, 26 Jun 2024 21:57:29 +0530 Subject: [PATCH 11/64] check while key path while removing fields+ add test cases --- pkg/configprovider/providerutil/utils.go | 49 +++++----- pkg/configprovider/providerutil/utils_test.go | 94 +++++++++++++++++++ 2 files changed, 122 insertions(+), 21 deletions(-) create mode 100644 pkg/configprovider/providerutil/utils_test.go diff --git a/pkg/configprovider/providerutil/utils.go b/pkg/configprovider/providerutil/utils.go index 103794327d..f5afef0305 100644 --- a/pkg/configprovider/providerutil/utils.go +++ b/pkg/configprovider/providerutil/utils.go @@ -1,29 +1,30 @@ package providerutil -import "go.opentelemetry.io/collector/confmap" +import ( + "go.opentelemetry.io/collector/confmap" + "strings" +) -// Remove specific keys from srcMap if same keys present in mergeMap under same path -func removeMatchingKeysFromSrcMap(srcMap map[string]interface{}, mergeMap map[string]interface{}) map[string]interface{} { - srcMapVal := srcMap - mergeMapVal := mergeMap - for key, mergeValue := range mergeMapVal { - srcValue, exists := srcMapVal[key] +func removeKeyFromSrcMap(srcMap map[string]interface{}, mergeMap map[string]interface{}, keys []string, index int) map[string]interface{} { - //if key not exists in merge map, skip the path - if !exists { - continue - } + if index == len(keys) { //out of index + return srcMap + } - if key == "collector_fields" { - delete(srcMapVal, key) + currentKey := keys[index] + leafIndex := len(keys) - 1 + if index == leafIndex { // Got Leaf key, if leaf key exists in both maps, remove it from source map + _, existInSrc := srcMap[currentKey] + _, existInMerge := mergeMap[currentKey] + // If leaf key exists in both maps, remove from source map + if existInSrc && existInMerge { + delete(srcMap, currentKey) } - - mergeNestedMap, isMergeMap := mergeValue.(map[string]interface{}) - srcNestedMap, isSrcMap := srcValue.(map[string]interface{}) - - if isMergeMap && isSrcMap { - // Recursively handle nested maps - removeMatchingKeysFromSrcMap(srcNestedMap, mergeNestedMap) + } else { // More levels to go, descend into child if current key present in both maps + srcNestedMap, isCurrKeyInSrcMap := srcMap[currentKey].(map[string]interface{}) + mergeNestedMap, isCurrKeyInMergeMap := mergeMap[currentKey].(map[string]interface{}) + if isCurrKeyInSrcMap && isCurrKeyInMergeMap { + removeKeyFromSrcMap(srcNestedMap, mergeNestedMap, keys, index+1) } } return srcMap @@ -34,5 +35,11 @@ func removeMatchingKeysFromSrcMap(srcMap map[string]interface{}, mergeMap map[st // Merge method merges field values from source and mergeConf, so by removing existing values from // source map, we can achieve replace behavior func PrepareForReplaceBehavior(srcConf *confmap.Conf, mergeConf *confmap.Conf) { - *srcConf = *confmap.NewFromStringMap(removeMatchingKeysFromSrcMap(srcConf.ToStringMap(), mergeConf.ToStringMap())) + keyPathsWithReplaceBehavior := []string{ + "extensions#sumologic#collector_fields", + } + for _, path := range keyPathsWithReplaceBehavior { + pathKeys := strings.Split(path, "#") + *srcConf = *confmap.NewFromStringMap(removeKeyFromSrcMap(srcConf.ToStringMap(), mergeConf.ToStringMap(), pathKeys, 0)) + } } diff --git a/pkg/configprovider/providerutil/utils_test.go b/pkg/configprovider/providerutil/utils_test.go new file mode 100644 index 0000000000..55d0f1afa1 --- /dev/null +++ b/pkg/configprovider/providerutil/utils_test.go @@ -0,0 +1,94 @@ +package providerutil + +import ( + "go.opentelemetry.io/collector/confmap" + "reflect" + "testing" +) + +func TestPrepareForReplaceBehavior(t *testing.T) { + tests := []struct { + name string + srcMap map[string]interface{} + mergeMap map[string]interface{} + expectedMap map[string]interface{} + }{ + { + name: "Remove matching key path from source map", + srcMap: map[string]interface{}{ + "extensions": map[string]interface{}{ + "sumologic": map[string]interface{}{ + "collector_fields": map[string]interface{}{ + "cluster": "cluster-1", + }, + "childKey2": "value2", + }, + }, + "anotherKey": "anotherValue", + }, + mergeMap: map[string]interface{}{ + "extensions": map[string]interface{}{ + "sumologic": map[string]interface{}{ + "collector_fields": map[string]interface{}{ + "zone": "eu", + }, + "childKey2": "value2", + }, + }, + "anotherKey": "anotherValue", + }, + expectedMap: map[string]interface{}{ + "extensions": map[string]interface{}{ + "sumologic": map[string]interface{}{ + "childKey2": "value2", + }, + }, + "anotherKey": "anotherValue", + }, + }, + { + name: "No matching key paths to remove, source map remains unaffected", + srcMap: map[string]interface{}{ + "extensions": map[string]interface{}{ + "sumologic": map[string]interface{}{ + "collector_fields1": map[string]interface{}{ + "cluster": "cluster-1", + }, + }, + }, + "anotherKey": "anotherValue", + }, + mergeMap: map[string]interface{}{ + "extensions": map[string]interface{}{ + "sumologic": map[string]interface{}{ + "collector_fields2": map[string]interface{}{ + "zone": "eu", + }, + }, + }, + "anotherKey": "anotherValue", + }, + expectedMap: map[string]interface{}{ + "extensions": map[string]interface{}{ + "sumologic": map[string]interface{}{ + "collector_fields1": map[string]interface{}{ + "cluster": "cluster-1", + }, + }, + }, + "anotherKey": "anotherValue", + }, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + srcConf := confmap.NewFromStringMap(tt.srcMap) + mergeConf := confmap.NewFromStringMap(tt.mergeMap) + PrepareForReplaceBehavior(srcConf, mergeConf) + if !reflect.DeepEqual(srcConf.ToStringMap(), tt.expectedMap) { + t.Errorf("PrepareForReplaceBehavior() = %v, want %v", srcConf.ToStringMap(), tt.expectedMap) + } + }) + } +} From 3ea8f1bed08ff3f5a4aed54f9dcd5de41fd38758 Mon Sep 17 00:00:00 2001 From: Jaganathan P <156800415+jagan2221@users.noreply.github.com> Date: Thu, 27 Jun 2024 16:01:02 +0530 Subject: [PATCH 12/64] Update pkg/configprovider/providerutil/utils.go Co-authored-by: Dominik Rosiek <58699848+sumo-drosiek@users.noreply.github.com> --- pkg/configprovider/providerutil/utils.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkg/configprovider/providerutil/utils.go b/pkg/configprovider/providerutil/utils.go index f5afef0305..23026e0115 100644 --- a/pkg/configprovider/providerutil/utils.go +++ b/pkg/configprovider/providerutil/utils.go @@ -35,8 +35,8 @@ func removeKeyFromSrcMap(srcMap map[string]interface{}, mergeMap map[string]inte // Merge method merges field values from source and mergeConf, so by removing existing values from // source map, we can achieve replace behavior func PrepareForReplaceBehavior(srcConf *confmap.Conf, mergeConf *confmap.Conf) { - keyPathsWithReplaceBehavior := []string{ - "extensions#sumologic#collector_fields", + keyPathsWithReplaceBehavior := [][]string{ + {"extensions", "sumologic", "collector_fields"}, } for _, path := range keyPathsWithReplaceBehavior { pathKeys := strings.Split(path, "#") From d80a30431427fd6585310bd96ca3304b3639643b Mon Sep 17 00:00:00 2001 From: Jaganathan P <156800415+jagan2221@users.noreply.github.com> Date: Tue, 2 Jul 2024 18:33:55 +0530 Subject: [PATCH 13/64] Review changes --- pkg/configprovider/providerutil/utils.go | 27 ++++++++++++------------ 1 file changed, 13 insertions(+), 14 deletions(-) diff --git a/pkg/configprovider/providerutil/utils.go b/pkg/configprovider/providerutil/utils.go index 23026e0115..443a210e56 100644 --- a/pkg/configprovider/providerutil/utils.go +++ b/pkg/configprovider/providerutil/utils.go @@ -5,27 +5,27 @@ import ( "strings" ) -func removeKeyFromSrcMap(srcMap map[string]interface{}, mergeMap map[string]interface{}, keys []string, index int) map[string]interface{} { +func removeKeyFromSrcMap(srcMap map[string]interface{}, mergeMap map[string]interface{}, keys []string) map[string]interface{} { - if index == len(keys) { //out of index + if len(keys) == 0 { return srcMap } - currentKey := keys[index] - leafIndex := len(keys) - 1 - if index == leafIndex { // Got Leaf key, if leaf key exists in both maps, remove it from source map + currentKey := keys[0] + if len(keys) == 1 { // Got Leaf key, if leaf key exists in both maps, remove it from source map _, existInSrc := srcMap[currentKey] _, existInMerge := mergeMap[currentKey] // If leaf key exists in both maps, remove from source map if existInSrc && existInMerge { delete(srcMap, currentKey) } - } else { // More levels to go, descend into child if current key present in both maps - srcNestedMap, isCurrKeyInSrcMap := srcMap[currentKey].(map[string]interface{}) - mergeNestedMap, isCurrKeyInMergeMap := mergeMap[currentKey].(map[string]interface{}) - if isCurrKeyInSrcMap && isCurrKeyInMergeMap { - removeKeyFromSrcMap(srcNestedMap, mergeNestedMap, keys, index+1) - } + return srcMap + } + // More levels to go, descend into child if current key present in both maps + srcNestedMap, isCurrKeyInSrcMap := srcMap[currentKey].(map[string]interface{}) + mergeNestedMap, isCurrKeyInMergeMap := mergeMap[currentKey].(map[string]interface{}) + if isCurrKeyInSrcMap && isCurrKeyInMergeMap { + removeKeyFromSrcMap(srcNestedMap, mergeNestedMap, keys[1:]) } return srcMap } @@ -38,8 +38,7 @@ func PrepareForReplaceBehavior(srcConf *confmap.Conf, mergeConf *confmap.Conf) { keyPathsWithReplaceBehavior := [][]string{ {"extensions", "sumologic", "collector_fields"}, } - for _, path := range keyPathsWithReplaceBehavior { - pathKeys := strings.Split(path, "#") - *srcConf = *confmap.NewFromStringMap(removeKeyFromSrcMap(srcConf.ToStringMap(), mergeConf.ToStringMap(), pathKeys, 0)) + for _, keyPath := range keyPathsWithReplaceBehavior { + *srcConf = *confmap.NewFromStringMap(removeKeyFromSrcMap(srcConf.ToStringMap(), mergeConf.ToStringMap(), keyPath)) } } From e0912f9dd4ba20d6ac5af330b093e0e623087872 Mon Sep 17 00:00:00 2001 From: Jaganathan P <156800415+jagan2221@users.noreply.github.com> Date: Tue, 2 Jul 2024 21:01:14 +0530 Subject: [PATCH 14/64] Update utils.go --- pkg/configprovider/providerutil/utils.go | 1 - 1 file changed, 1 deletion(-) diff --git a/pkg/configprovider/providerutil/utils.go b/pkg/configprovider/providerutil/utils.go index 443a210e56..73871dcb58 100644 --- a/pkg/configprovider/providerutil/utils.go +++ b/pkg/configprovider/providerutil/utils.go @@ -2,7 +2,6 @@ package providerutil import ( "go.opentelemetry.io/collector/confmap" - "strings" ) func removeKeyFromSrcMap(srcMap map[string]interface{}, mergeMap map[string]interface{}, keys []string) map[string]interface{} { From 6f4ac0bc3640ead6d551b302a4f5065ecdf75484 Mon Sep 17 00:00:00 2001 From: Jaganathan P <156800415+jagan2221@users.noreply.github.com> Date: Wed, 3 Jul 2024 11:22:17 +0530 Subject: [PATCH 15/64] Create 1604.changed.txt --- .changelog/.changelog/1604.changed.txt | 1 + 1 file changed, 1 insertion(+) create mode 100644 .changelog/.changelog/1604.changed.txt diff --git a/.changelog/.changelog/1604.changed.txt b/.changelog/.changelog/1604.changed.txt new file mode 100644 index 0000000000..691600a48e --- /dev/null +++ b/.changelog/.changelog/1604.changed.txt @@ -0,0 +1 @@ +feat(ConfigProvider): Modify config merge to do replace instead of update for Specific tags From c49cc085e2cd009758bf41652560ec3743e074d4 Mon Sep 17 00:00:00 2001 From: Jaganathan P <156800415+jagan2221@users.noreply.github.com> Date: Wed, 3 Jul 2024 11:23:54 +0530 Subject: [PATCH 16/64] Delete .changelog/.changelog directory --- .changelog/.changelog/1604.changed.txt | 1 - 1 file changed, 1 deletion(-) delete mode 100644 .changelog/.changelog/1604.changed.txt diff --git a/.changelog/.changelog/1604.changed.txt b/.changelog/.changelog/1604.changed.txt deleted file mode 100644 index 691600a48e..0000000000 --- a/.changelog/.changelog/1604.changed.txt +++ /dev/null @@ -1 +0,0 @@ -feat(ConfigProvider): Modify config merge to do replace instead of update for Specific tags From 083e81eaf43f0d1be93afbf6f0691abfd1e22e45 Mon Sep 17 00:00:00 2001 From: Jaganathan P <156800415+jagan2221@users.noreply.github.com> Date: Wed, 3 Jul 2024 11:24:11 +0530 Subject: [PATCH 17/64] Add files via upload --- .changelog/1604.changed.txt | 1 + 1 file changed, 1 insertion(+) create mode 100644 .changelog/1604.changed.txt diff --git a/.changelog/1604.changed.txt b/.changelog/1604.changed.txt new file mode 100644 index 0000000000..691600a48e --- /dev/null +++ b/.changelog/1604.changed.txt @@ -0,0 +1 @@ +feat(ConfigProvider): Modify config merge to do replace instead of update for Specific tags From 6a6cefea6ae4649d421a673cdbe1fbec5ee7e8ff Mon Sep 17 00:00:00 2001 From: Jaganathan P <156800415+jagan2221@users.noreply.github.com> Date: Wed, 3 Jul 2024 11:26:38 +0530 Subject: [PATCH 18/64] Update utils.go --- pkg/configprovider/providerutil/utils.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/configprovider/providerutil/utils.go b/pkg/configprovider/providerutil/utils.go index 73871dcb58..ac27420188 100644 --- a/pkg/configprovider/providerutil/utils.go +++ b/pkg/configprovider/providerutil/utils.go @@ -18,7 +18,7 @@ func removeKeyFromSrcMap(srcMap map[string]interface{}, mergeMap map[string]inte if existInSrc && existInMerge { delete(srcMap, currentKey) } - return srcMap + return srcMap } // More levels to go, descend into child if current key present in both maps srcNestedMap, isCurrKeyInSrcMap := srcMap[currentKey].(map[string]interface{}) From 98ba5ac678c71dcc6379608728ff2e8db258544e Mon Sep 17 00:00:00 2001 From: Jaganathan P <156800415+jagan2221@users.noreply.github.com> Date: Wed, 3 Jul 2024 11:32:28 +0530 Subject: [PATCH 19/64] Add makefile --- pkg/configprovider/providerutil/Makefile.txt | 1 + 1 file changed, 1 insertion(+) create mode 100644 pkg/configprovider/providerutil/Makefile.txt diff --git a/pkg/configprovider/providerutil/Makefile.txt b/pkg/configprovider/providerutil/Makefile.txt new file mode 100644 index 0000000000..ded7a36092 --- /dev/null +++ b/pkg/configprovider/providerutil/Makefile.txt @@ -0,0 +1 @@ +include ../../Makefile.Common From 055013ff29fc5610e206968d6bb9063bc328c79e Mon Sep 17 00:00:00 2001 From: Jaganathan P <156800415+jagan2221@users.noreply.github.com> Date: Wed, 3 Jul 2024 11:36:32 +0530 Subject: [PATCH 20/64] Rename Makefile.txt to Makefile --- pkg/configprovider/providerutil/{Makefile.txt => Makefile} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename pkg/configprovider/providerutil/{Makefile.txt => Makefile} (100%) diff --git a/pkg/configprovider/providerutil/Makefile.txt b/pkg/configprovider/providerutil/Makefile similarity index 100% rename from pkg/configprovider/providerutil/Makefile.txt rename to pkg/configprovider/providerutil/Makefile From dccff3b7b73c9122ed8f229d7ae2fb71e8b603e5 Mon Sep 17 00:00:00 2001 From: Jaganathan P Date: Wed, 3 Jul 2024 11:43:38 +0530 Subject: [PATCH 21/64] add mod file for providerUtil --- pkg/configprovider/providerutil/go.sum | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 pkg/configprovider/providerutil/go.sum diff --git a/pkg/configprovider/providerutil/go.sum b/pkg/configprovider/providerutil/go.sum new file mode 100644 index 0000000000..b80a2c800d --- /dev/null +++ b/pkg/configprovider/providerutil/go.sum @@ -0,0 +1,20 @@ +github.com/go-viper/mapstructure/v2 v2.0.0-alpha.1 h1:TQcrn6Wq+sKGkpyPvppOz99zsMBaUOKXq6HSv655U1c= +github.com/go-viper/mapstructure/v2 v2.0.0-alpha.1/go.mod h1:oJDH3BJKyqBA2TXFhDsKDGDTlndYOZ6rGS0BRZIxGhM= +github.com/knadh/koanf/maps v0.1.1 h1:G5TjmUh2D7G2YWf5SQQqSiHRJEjaicvU0KpypqB3NIs= +github.com/knadh/koanf/maps v0.1.1/go.mod h1:npD/QZY3V6ghQDdcQzl1W4ICNVTkohC8E73eI2xW4yI= +github.com/knadh/koanf/providers/confmap v0.1.0 h1:gOkxhHkemwG4LezxxN8DMOFopOPghxRVp7JbIvdvqzU= +github.com/knadh/koanf/providers/confmap v0.1.0/go.mod h1:2uLhxQzJnyHKfxG927awZC7+fyHFdQkd697K4MdLnIU= +github.com/knadh/koanf/v2 v2.1.1 h1:/R8eXqasSTsmDCsAyYj+81Wteg8AqrV9CP6gvsTsOmM= +github.com/knadh/koanf/v2 v2.1.1/go.mod h1:4mnTRbZCK+ALuBXHZMjDfG9y714L7TykVnZkXbMU3Es= +github.com/mitchellh/copystructure v1.2.0 h1:vpKXTN4ewci03Vljg/q9QvCGUDttBOGBIa15WveJJGw= +github.com/mitchellh/copystructure v1.2.0/go.mod h1:qLl+cE2AmVv+CoeAwDPye/v+N2HKCj9FbZEVFJRxO9s= +github.com/mitchellh/reflectwalk v1.0.2 h1:G2LzWKi524PWgd3mLHV8Y5k7s6XUvT0Gef6zxSIeXaQ= +github.com/mitchellh/reflectwalk v1.0.2/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw= +go.opentelemetry.io/collector/confmap v0.102.1 h1:wZuH+d/P11Suz8wbp+xQCJ0BPE9m5pybtUe74c+rU7E= +go.opentelemetry.io/collector/confmap v0.102.1/go.mod h1:KgpS7UxH5rkd69CzAzlY2I1heH8Z7eNCZlHmwQBMxNg= +go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0= +go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= +go.uber.org/zap v1.27.0 h1:aJMhYGrd5QSmlpLMr2MftRKl7t8J8PTZPA732ud/XR8= +go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= From 3e177fc88123a0de1a0133c038ba1e9d77de3655 Mon Sep 17 00:00:00 2001 From: Jaganathan P Date: Wed, 3 Jul 2024 11:50:36 +0530 Subject: [PATCH 22/64] goimports refactror --- pkg/configprovider/opampprovider/provider.go | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/pkg/configprovider/opampprovider/provider.go b/pkg/configprovider/opampprovider/provider.go index 2a9c173509..2decb55bfb 100644 --- a/pkg/configprovider/opampprovider/provider.go +++ b/pkg/configprovider/opampprovider/provider.go @@ -17,14 +17,15 @@ import ( "context" "errors" "fmt" + "os" + "path/filepath" + "strings" + "github.com/SumoLogic/sumologic-otel-collector/pkg/configprovider/globprovider" "github.com/SumoLogic/sumologic-otel-collector/pkg/configprovider/providerutil" "go.opentelemetry.io/collector/confmap" "go.opentelemetry.io/collector/confmap/provider/fileprovider" "gopkg.in/yaml.v2" - "os" - "path/filepath" - "strings" ) const ( From 850f7e75b633c12bd035ea6699432b0f738baea0 Mon Sep 17 00:00:00 2001 From: Jaganathan P Date: Wed, 3 Jul 2024 11:56:20 +0530 Subject: [PATCH 23/64] goimports refactor --- pkg/configprovider/providerutil/utils_test.go | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/pkg/configprovider/providerutil/utils_test.go b/pkg/configprovider/providerutil/utils_test.go index 55d0f1afa1..3a01ef5a18 100644 --- a/pkg/configprovider/providerutil/utils_test.go +++ b/pkg/configprovider/providerutil/utils_test.go @@ -1,9 +1,10 @@ package providerutil import ( - "go.opentelemetry.io/collector/confmap" "reflect" "testing" + + "go.opentelemetry.io/collector/confmap" ) func TestPrepareForReplaceBehavior(t *testing.T) { @@ -18,10 +19,10 @@ func TestPrepareForReplaceBehavior(t *testing.T) { srcMap: map[string]interface{}{ "extensions": map[string]interface{}{ "sumologic": map[string]interface{}{ + "childKey2": "value2", "collector_fields": map[string]interface{}{ "cluster": "cluster-1", }, - "childKey2": "value2", }, }, "anotherKey": "anotherValue", From e1079be636ef8f1f74bf4a47b127d15076ec7181 Mon Sep 17 00:00:00 2001 From: Jaganathan P Date: Thu, 4 Jul 2024 14:31:45 +0530 Subject: [PATCH 24/64] refactor UT --- pkg/configprovider/providerutil/go.mod | 4 +- pkg/configprovider/providerutil/go.sum | 10 +++++ pkg/configprovider/providerutil/utils_test.go | 42 +++++++++---------- 3 files changed, 32 insertions(+), 24 deletions(-) diff --git a/pkg/configprovider/providerutil/go.mod b/pkg/configprovider/providerutil/go.mod index 999ad65529..6488239a46 100644 --- a/pkg/configprovider/providerutil/go.mod +++ b/pkg/configprovider/providerutil/go.mod @@ -5,18 +5,20 @@ go 1.21.0 toolchain go1.22.3 require ( + github.com/stretchr/testify v1.9.0 go.opentelemetry.io/collector/confmap v0.102.1 ) require ( + github.com/davecgh/go-spew v1.1.1 // indirect github.com/go-viper/mapstructure/v2 v2.0.0-alpha.1 // indirect github.com/knadh/koanf/maps v0.1.1 // indirect github.com/knadh/koanf/providers/confmap v0.1.0 // indirect github.com/knadh/koanf/v2 v2.1.1 // indirect github.com/mitchellh/copystructure v1.2.0 // indirect github.com/mitchellh/reflectwalk v1.0.2 // indirect + github.com/pmezard/go-difflib v1.0.0 // indirect go.uber.org/multierr v1.11.0 // indirect go.uber.org/zap v1.27.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) - diff --git a/pkg/configprovider/providerutil/go.sum b/pkg/configprovider/providerutil/go.sum index b80a2c800d..4d5ee31707 100644 --- a/pkg/configprovider/providerutil/go.sum +++ b/pkg/configprovider/providerutil/go.sum @@ -1,3 +1,5 @@ +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= github.com/go-viper/mapstructure/v2 v2.0.0-alpha.1 h1:TQcrn6Wq+sKGkpyPvppOz99zsMBaUOKXq6HSv655U1c= github.com/go-viper/mapstructure/v2 v2.0.0-alpha.1/go.mod h1:oJDH3BJKyqBA2TXFhDsKDGDTlndYOZ6rGS0BRZIxGhM= github.com/knadh/koanf/maps v0.1.1 h1:G5TjmUh2D7G2YWf5SQQqSiHRJEjaicvU0KpypqB3NIs= @@ -10,11 +12,19 @@ github.com/mitchellh/copystructure v1.2.0 h1:vpKXTN4ewci03Vljg/q9QvCGUDttBOGBIa1 github.com/mitchellh/copystructure v1.2.0/go.mod h1:qLl+cE2AmVv+CoeAwDPye/v+N2HKCj9FbZEVFJRxO9s= github.com/mitchellh/reflectwalk v1.0.2 h1:G2LzWKi524PWgd3mLHV8Y5k7s6XUvT0Gef6zxSIeXaQ= github.com/mitchellh/reflectwalk v1.0.2/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw= +github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= +github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= go.opentelemetry.io/collector/confmap v0.102.1 h1:wZuH+d/P11Suz8wbp+xQCJ0BPE9m5pybtUe74c+rU7E= go.opentelemetry.io/collector/confmap v0.102.1/go.mod h1:KgpS7UxH5rkd69CzAzlY2I1heH8Z7eNCZlHmwQBMxNg= +go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= +go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE= go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0= go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= go.uber.org/zap v1.27.0 h1:aJMhYGrd5QSmlpLMr2MftRKl7t8J8PTZPA732ud/XR8= go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= diff --git a/pkg/configprovider/providerutil/utils_test.go b/pkg/configprovider/providerutil/utils_test.go index 3a01ef5a18..3f2c2e0007 100644 --- a/pkg/configprovider/providerutil/utils_test.go +++ b/pkg/configprovider/providerutil/utils_test.go @@ -1,22 +1,22 @@ package providerutil import ( - "reflect" "testing" + "github.com/stretchr/testify/assert" "go.opentelemetry.io/collector/confmap" ) func TestPrepareForReplaceBehavior(t *testing.T) { tests := []struct { - name string - srcMap map[string]interface{} - mergeMap map[string]interface{} - expectedMap map[string]interface{} + name string + srcConf *confmap.Conf + mergeConf *confmap.Conf + expectedConf *confmap.Conf }{ { name: "Remove matching key path from source map", - srcMap: map[string]interface{}{ + srcConf: confmap.NewFromStringMap(map[string]interface{}{ "extensions": map[string]interface{}{ "sumologic": map[string]interface{}{ "childKey2": "value2", @@ -26,8 +26,8 @@ func TestPrepareForReplaceBehavior(t *testing.T) { }, }, "anotherKey": "anotherValue", - }, - mergeMap: map[string]interface{}{ + }), + mergeConf: confmap.NewFromStringMap(map[string]interface{}{ "extensions": map[string]interface{}{ "sumologic": map[string]interface{}{ "collector_fields": map[string]interface{}{ @@ -37,19 +37,19 @@ func TestPrepareForReplaceBehavior(t *testing.T) { }, }, "anotherKey": "anotherValue", - }, - expectedMap: map[string]interface{}{ + }), + expectedConf: confmap.NewFromStringMap(map[string]interface{}{ "extensions": map[string]interface{}{ "sumologic": map[string]interface{}{ "childKey2": "value2", }, }, "anotherKey": "anotherValue", - }, + }), }, { name: "No matching key paths to remove, source map remains unaffected", - srcMap: map[string]interface{}{ + srcConf: confmap.NewFromStringMap(map[string]interface{}{ "extensions": map[string]interface{}{ "sumologic": map[string]interface{}{ "collector_fields1": map[string]interface{}{ @@ -58,8 +58,8 @@ func TestPrepareForReplaceBehavior(t *testing.T) { }, }, "anotherKey": "anotherValue", - }, - mergeMap: map[string]interface{}{ + }), + mergeConf: confmap.NewFromStringMap(map[string]interface{}{ "extensions": map[string]interface{}{ "sumologic": map[string]interface{}{ "collector_fields2": map[string]interface{}{ @@ -68,8 +68,8 @@ func TestPrepareForReplaceBehavior(t *testing.T) { }, }, "anotherKey": "anotherValue", - }, - expectedMap: map[string]interface{}{ + }), + expectedConf: confmap.NewFromStringMap(map[string]interface{}{ "extensions": map[string]interface{}{ "sumologic": map[string]interface{}{ "collector_fields1": map[string]interface{}{ @@ -78,18 +78,14 @@ func TestPrepareForReplaceBehavior(t *testing.T) { }, }, "anotherKey": "anotherValue", - }, + }), }, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { - srcConf := confmap.NewFromStringMap(tt.srcMap) - mergeConf := confmap.NewFromStringMap(tt.mergeMap) - PrepareForReplaceBehavior(srcConf, mergeConf) - if !reflect.DeepEqual(srcConf.ToStringMap(), tt.expectedMap) { - t.Errorf("PrepareForReplaceBehavior() = %v, want %v", srcConf.ToStringMap(), tt.expectedMap) - } + PrepareForReplaceBehavior(tt.srcConf, tt.mergeConf) + assert.Equal(t, tt.expectedConf, tt.srcConf) }) } } From 8d964912eb1de7cdf9b5c97ad100ae4b60455c20 Mon Sep 17 00:00:00 2001 From: Jaganathan P <156800415+jagan2221@users.noreply.github.com> Date: Thu, 4 Jul 2024 15:18:47 +0530 Subject: [PATCH 25/64] Update .changelog/1604.changed.txt Co-authored-by: Dominik Rosiek <58699848+sumo-drosiek@users.noreply.github.com> --- .changelog/1604.changed.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.changelog/1604.changed.txt b/.changelog/1604.changed.txt index 691600a48e..c05af58a29 100644 --- a/.changelog/1604.changed.txt +++ b/.changelog/1604.changed.txt @@ -1 +1 @@ -feat(ConfigProvider): Modify config merge to do replace instead of update for Specific tags +feat(ConfigProvider)!: Modify config merge to do replace instead of update for Specific tags From ae4bcc86addf0b0b0784107f9fedd20655d6ccfc Mon Sep 17 00:00:00 2001 From: Jaganathan P <156800415+jagan2221@users.noreply.github.com> Date: Thu, 4 Jul 2024 17:02:42 +0530 Subject: [PATCH 26/64] Rename 1604.changed.txt to 1604.breaking.txt --- .changelog/{1604.changed.txt => 1604.breaking.txt} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename .changelog/{1604.changed.txt => 1604.breaking.txt} (100%) diff --git a/.changelog/1604.changed.txt b/.changelog/1604.breaking.txt similarity index 100% rename from .changelog/1604.changed.txt rename to .changelog/1604.breaking.txt From 438ce8ae08056fefaa70b7f9514c356393e344c1 Mon Sep 17 00:00:00 2001 From: Jaganathan P <156800415+jagan2221@users.noreply.github.com> Date: Thu, 4 Jul 2024 18:16:49 +0530 Subject: [PATCH 27/64] Update upgrading.md- breaking changes for config merge flow change --- docs/upgrading.md | 77 ++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 73 insertions(+), 4 deletions(-) diff --git a/docs/upgrading.md b/docs/upgrading.md index 0d9cd92d11..093f1966e1 100644 --- a/docs/upgrading.md +++ b/docs/upgrading.md @@ -1,5 +1,7 @@ # Upgrading +- [Upgrading to v0.103.0-sumo-0](#upgrading-to-v01030-sumo-0) + - [`sumologic` configuration: modified the `configuration files` merge behaviour](#sumologic-configuration-modified-the-configuration-files-merge-behaviour) - [Upgrading to v0.96.0-sumo-0](#upgrading-to-v0960-sumo-0) - [`sumologic` exporter: remove `json_logs`](#sumologic-exporter-remove-json_logs) - [`sumologic` exporter: remove `clear_logs_timestamp`](#sumologic-exporter-remove-clear_logs_timestamp) @@ -53,6 +55,73 @@ - [Removing unnecessary metadata using the resourceprocessor](#removing-unnecessary-metadata-using-the-resourceprocessor) - [Moving record-level attributes used for metadata to the resource level](#moving-record-level-attributes-used-for-metadata-to-the-resource-level) + +## Upgrading to v0.103.0-sumo-0 + +### `sumologic` configuration: modified the `configuration files` merge behaviour + +Modified the configuration merge behaviour to perform overwrite instead of update for `collector_fields` key of [Sumo Logic Extension](https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/extension/sumologicextension#configuration). + +For example, if two configuration files(say `conf1.yaml` and `conf2.yaml`) define the `collector_fields`, + +In previous flow, the values of `collector_fields` from `conf2.yaml` will be added to `conf1.yaml` and the effective configuration will have vaules from both the configurations. + +Starting from `v0.103.0-sumo-0`, the values of collector_fields tag from conf1.yaml will be overwritten by values from conf2.yaml and the effective configuration will have collector_fields value of conf2.yaml only. + +For example: + +conf1.yaml +``` +extensions: + sumologic: + collector_description: "My OpenTelemetry Collector" + collector_fields: + cluster: "cluster-1" + some_list: + - element 1 + - element 2 +``` +conf2.yaml +``` +extensions: + sumologic: + collector_fields: + zone: "eu" + some_list: + - element 3 + - element 4 +``` +effective configuration (`old behaviour`) +``` +extensions: + sumologic: + collector_description: "My OpenTelemetry Collector" + collector_fields: + cluster: "cluster-1" + zone: "eu" + some_list: + - element 3 + - element 4 +``` +effective configuration (`new behaviour`) +``` +extensions: + sumologic: + collector_description: "My OpenTelemetry Collector" + collector_fields: + zone: "eu" + some_list: + - element 3 + - element 4 +``` + +If you have multiple config files with collector_fields key specified, only the value from the last file(alphabetically sorted order) will be present in effective configuration. +So, for locally managed collectors, Please don't maintain collector_fields key in multiple configuration files and move them to a single file. + +Note: This applied only to collector_fields key, all other key behaviour will remain same. + +For more details regarding configuration structure and merge behaviour, see https://help.sumologic.com/docs/send-data/opentelemetry-collector/data-source-configurations/overview/#configuration-structure + ## Upgrading to v0.96.0-sumo-0 ### `sumologic` exporter: remove `json_logs` @@ -682,8 +751,8 @@ to make it behave like the Sumo Logic exporter. See the [Source processor documentation][sourceprocessor_docs] for more details. -[sumologicexporter_docs]: ../pkg/exporter/sumologicexporter/README.md -[sourceprocessor_docs]: ../pkg/processor/sourceprocessor/README.md +[sumologicexporter_docs]: https://github.com/sumologic/sumologic-otel-collector/tree/v0.57.2-sumo-0/pkg/exporter/sumologicexporter/README.md +[sourceprocessor_docs]: https://github.com/sumologic/sumologic-otel-collector/tree/v0.57.2-sumo-0/pkg/processor/sourceprocessor/README.md ## Upgrading to v0.56.0-sumo-0 @@ -760,8 +829,8 @@ service: **Note**: By default, the `sumologicschema` processor also performs other actions. Please see a corresponding warning in paragraph [`sumologic` exporter: drop support for translating attributes](#sumologic-exporter-drop-support-for-translating-attributes) for more information. -[sumologicschema_processor]: ../pkg/processor/sumologicschemaprocessor/ -[sumologicschema_processor_readme]: ../pkg/processor/sumologicschemaprocessor/README.md +[sumologicschema_processor]: https://github.com/sumologic/sumologic-otel-collector/tree/v0.56.0-sumo-0/pkg/processor/sumologicschemaprocessor/ +[sumologicschema_processor_readme]: https://github.com/sumologic/sumologic-otel-collector/tree/v0.56.0-sumo-0/pkg/processor/sumologicschemaprocessor/README.md ## Upgrading to v0.55.0-sumo-0 From 0b88b1ece82e41f43c301075eded8461e1114faa Mon Sep 17 00:00:00 2001 From: Jaganathan P <156800415+jagan2221@users.noreply.github.com> Date: Fri, 5 Jul 2024 13:34:55 +0530 Subject: [PATCH 28/64] Update upgrading.md(review changes) --- docs/upgrading.md | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/docs/upgrading.md b/docs/upgrading.md index 093f1966e1..1b81052a30 100644 --- a/docs/upgrading.md +++ b/docs/upgrading.md @@ -55,7 +55,6 @@ - [Removing unnecessary metadata using the resourceprocessor](#removing-unnecessary-metadata-using-the-resourceprocessor) - [Moving record-level attributes used for metadata to the resource level](#moving-record-level-attributes-used-for-metadata-to-the-resource-level) - ## Upgrading to v0.103.0-sumo-0 ### `sumologic` configuration: modified the `configuration files` merge behaviour @@ -66,11 +65,12 @@ For example, if two configuration files(say `conf1.yaml` and `conf2.yaml`) defin In previous flow, the values of `collector_fields` from `conf2.yaml` will be added to `conf1.yaml` and the effective configuration will have vaules from both the configurations. -Starting from `v0.103.0-sumo-0`, the values of collector_fields tag from conf1.yaml will be overwritten by values from conf2.yaml and the effective configuration will have collector_fields value of conf2.yaml only. +Starting from `v0.103.0-sumo-0`, the values of `collector_fields` tag from `conf1.yaml` will be overwritten by values from `conf2.yaml` and the effective configuration will have `collector_fields` value of `conf2.yaml` only. For example: -conf1.yaml +`conf1.yaml`: + ``` extensions: sumologic: @@ -81,7 +81,9 @@ extensions: - element 1 - element 2 ``` -conf2.yaml + +`conf2.yaml`: + ``` extensions: sumologic: @@ -91,7 +93,9 @@ extensions: - element 3 - element 4 ``` + effective configuration (`old behaviour`) + ``` extensions: sumologic: @@ -103,7 +107,9 @@ extensions: - element 3 - element 4 ``` + effective configuration (`new behaviour`) + ``` extensions: sumologic: @@ -115,10 +121,10 @@ extensions: - element 4 ``` -If you have multiple config files with collector_fields key specified, only the value from the last file(alphabetically sorted order) will be present in effective configuration. -So, for locally managed collectors, Please don't maintain collector_fields key in multiple configuration files and move them to a single file. +If you have multiple config files with `collector_fields` key specified, only the value from the last file(**alphabetically** sorted order) will be present in effective configuration. +So, for locally managed collectors, Please don't maintain `collector_fields` key in multiple configuration files and move them to a single file. -Note: This applied only to collector_fields key, all other key behaviour will remain same. +Note: This applies only to `collector_fields` key, all other key behaviour will remain the same. For more details regarding configuration structure and merge behaviour, see https://help.sumologic.com/docs/send-data/opentelemetry-collector/data-source-configurations/overview/#configuration-structure From c3aa5ec984cf668e034ed28c0f30103d56ed9ab7 Mon Sep 17 00:00:00 2001 From: Jaganathan P <156800415+jagan2221@users.noreply.github.com> Date: Tue, 9 Jul 2024 14:12:02 +0530 Subject: [PATCH 29/64] Update docs/upgrading.md Co-authored-by: Dominik Rosiek <58699848+sumo-drosiek@users.noreply.github.com> --- docs/upgrading.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/upgrading.md b/docs/upgrading.md index 1b81052a30..04cc6d5b36 100644 --- a/docs/upgrading.md +++ b/docs/upgrading.md @@ -122,7 +122,7 @@ extensions: ``` If you have multiple config files with `collector_fields` key specified, only the value from the last file(**alphabetically** sorted order) will be present in effective configuration. -So, for locally managed collectors, Please don't maintain `collector_fields` key in multiple configuration files and move them to a single file. +Due to above, avoid maintaining `collector_fields` in multiple configuration files and move them to a single file. Note: This applies only to `collector_fields` key, all other key behaviour will remain the same. From 1f4d959dd841df1310adc92a90e2d9832848d16f Mon Sep 17 00:00:00 2001 From: Jaganathan P <156800415+jagan2221@users.noreply.github.com> Date: Wed, 10 Jul 2024 18:09:17 +0530 Subject: [PATCH 30/64] Update utils.go --- pkg/configprovider/providerutil/utils.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkg/configprovider/providerutil/utils.go b/pkg/configprovider/providerutil/utils.go index ac27420188..c9c00185a4 100644 --- a/pkg/configprovider/providerutil/utils.go +++ b/pkg/configprovider/providerutil/utils.go @@ -3,8 +3,8 @@ package providerutil import ( "go.opentelemetry.io/collector/confmap" ) - -func removeKeyFromSrcMap(srcMap map[string]interface{}, mergeMap map[string]interface{}, keys []string) map[string]interface{} { +// Removes the key(path passed in keys array) from sourceMap if same key path is present in mergeMap +func removeMatchingKeyFromSrcMap(srcMap map[string]interface{}, mergeMap map[string]interface{}, keys []string) map[string]interface{} { if len(keys) == 0 { return srcMap @@ -38,6 +38,6 @@ func PrepareForReplaceBehavior(srcConf *confmap.Conf, mergeConf *confmap.Conf) { {"extensions", "sumologic", "collector_fields"}, } for _, keyPath := range keyPathsWithReplaceBehavior { - *srcConf = *confmap.NewFromStringMap(removeKeyFromSrcMap(srcConf.ToStringMap(), mergeConf.ToStringMap(), keyPath)) + *srcConf = *confmap.NewFromStringMap(removeMatchingKeyFromSrcMap(srcConf.ToStringMap(), mergeConf.ToStringMap(), keyPath)) } } From 3bea1730820ef1458f222b49f235d08733e2afae Mon Sep 17 00:00:00 2001 From: Jaganathan P <156800415+jagan2221@users.noreply.github.com> Date: Tue, 16 Jul 2024 17:02:15 +0530 Subject: [PATCH 31/64] Update upgrading.md --- docs/upgrading.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/upgrading.md b/docs/upgrading.md index 78eeda844c..9e25e9b009 100644 --- a/docs/upgrading.md +++ b/docs/upgrading.md @@ -1,4 +1,5 @@ # Upgrading + - [Upgrading to v0.104.0-sumo-0](#upgrading-to-v01040-sumo-0) - [`sumologic` exporter: remove `compress_encoding`](#sumologic-exporter-remove-compress_encoding) - [Upgrading to v0.103.0-sumo-0](#upgrading-to-v01030-sumo-0) From 4a81307096adbed5d2554f65a22d185c86d3fc28 Mon Sep 17 00:00:00 2001 From: Jaganathan P <156800415+jagan2221@users.noreply.github.com> Date: Tue, 16 Jul 2024 17:05:17 +0530 Subject: [PATCH 32/64] Update utils.go --- pkg/configprovider/providerutil/utils.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/configprovider/providerutil/utils.go b/pkg/configprovider/providerutil/utils.go index c9c00185a4..5a8314fe2b 100644 --- a/pkg/configprovider/providerutil/utils.go +++ b/pkg/configprovider/providerutil/utils.go @@ -24,7 +24,7 @@ func removeMatchingKeyFromSrcMap(srcMap map[string]interface{}, mergeMap map[str srcNestedMap, isCurrKeyInSrcMap := srcMap[currentKey].(map[string]interface{}) mergeNestedMap, isCurrKeyInMergeMap := mergeMap[currentKey].(map[string]interface{}) if isCurrKeyInSrcMap && isCurrKeyInMergeMap { - removeKeyFromSrcMap(srcNestedMap, mergeNestedMap, keys[1:]) + removeMatchingKeyFromSrcMap(srcNestedMap, mergeNestedMap, keys[1:]) } return srcMap } From 89df819ad11c6e73f123bb3fb50a507817224302 Mon Sep 17 00:00:00 2001 From: Jaganathan P <156800415+jagan2221@users.noreply.github.com> Date: Wed, 17 Jul 2024 18:53:16 +0530 Subject: [PATCH 33/64] Update utils.go --- pkg/configprovider/providerutil/utils.go | 1 + 1 file changed, 1 insertion(+) diff --git a/pkg/configprovider/providerutil/utils.go b/pkg/configprovider/providerutil/utils.go index 5a8314fe2b..39495deb90 100644 --- a/pkg/configprovider/providerutil/utils.go +++ b/pkg/configprovider/providerutil/utils.go @@ -3,6 +3,7 @@ package providerutil import ( "go.opentelemetry.io/collector/confmap" ) + // Removes the key(path passed in keys array) from sourceMap if same key path is present in mergeMap func removeMatchingKeyFromSrcMap(srcMap map[string]interface{}, mergeMap map[string]interface{}, keys []string) map[string]interface{} { From 15c02ee0a6b62ff5b2d628272ce1a12f052ffec6 Mon Sep 17 00:00:00 2001 From: Jaganathan P <156800415+jagan2221@users.noreply.github.com> Date: Wed, 17 Jul 2024 19:44:05 +0530 Subject: [PATCH 34/64] Update utils.go --- pkg/configprovider/providerutil/utils.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/configprovider/providerutil/utils.go b/pkg/configprovider/providerutil/utils.go index 39495deb90..5e3398d46c 100644 --- a/pkg/configprovider/providerutil/utils.go +++ b/pkg/configprovider/providerutil/utils.go @@ -4,7 +4,7 @@ import ( "go.opentelemetry.io/collector/confmap" ) -// Removes the key(path passed in keys array) from sourceMap if same key path is present in mergeMap +// Removes the key(path passed in keys array) from sourceMap if same key path is present in MergeMap func removeMatchingKeyFromSrcMap(srcMap map[string]interface{}, mergeMap map[string]interface{}, keys []string) map[string]interface{} { if len(keys) == 0 { From 3e13dd3d4dd3a3b88ebd22b6c8988452123203fb Mon Sep 17 00:00:00 2001 From: Jaganathan P <156800415+jagan2221@users.noreply.github.com> Date: Thu, 1 Aug 2024 18:38:18 +0530 Subject: [PATCH 35/64] Update upgrading.md --- docs/upgrading.md | 3 --- 1 file changed, 3 deletions(-) diff --git a/docs/upgrading.md b/docs/upgrading.md index 9e25e9b009..0098b578d9 100644 --- a/docs/upgrading.md +++ b/docs/upgrading.md @@ -2,7 +2,6 @@ - [Upgrading to v0.104.0-sumo-0](#upgrading-to-v01040-sumo-0) - [`sumologic` exporter: remove `compress_encoding`](#sumologic-exporter-remove-compress_encoding) -- [Upgrading to v0.103.0-sumo-0](#upgrading-to-v01030-sumo-0) - [`sumologic` configuration: modified the `configuration files` merge behaviour](#sumologic-configuration-modified-the-configuration-files-merge-behaviour) - [Upgrading to v0.96.0-sumo-0](#upgrading-to-v0960-sumo-0) - [`sumologic` exporter: remove `json_logs`](#sumologic-exporter-remove-json_logs) @@ -83,8 +82,6 @@ to this: compression: "" ``` -## Upgrading to v0.103.0-sumo-0 - ### `sumologic` configuration: modified the `configuration files` merge behaviour Modified the configuration merge behaviour to perform overwrite instead of update for `collector_fields` key of [Sumo Logic Extension](https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/extension/sumologicextension#configuration). From 3f931b94f4356622d91853a14dc9f68ccbb37c19 Mon Sep 17 00:00:00 2001 From: Jaganathan P <156800415+jagan2221@users.noreply.github.com> Date: Fri, 30 Aug 2024 16:22:22 +0530 Subject: [PATCH 36/64] Update opamp_agent.go --- pkg/extension/opampextension/opamp_agent.go | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/pkg/extension/opampextension/opamp_agent.go b/pkg/extension/opampextension/opamp_agent.go index 3838d2eeaa..3dfa4ead33 100644 --- a/pkg/extension/opampextension/opamp_agent.go +++ b/pkg/extension/opampextension/opamp_agent.go @@ -484,7 +484,7 @@ func (o *opampAgent) composeEffectiveConfig() *protobufs.EffectiveConfig { } func (o *opampAgent) applyRemoteConfig(config *protobufs.AgentRemoteConfig) (configChanged bool, err error) { - o.logger.Debug("Received remote config from OpAMP server", zap.ByteString("hash", config.ConfigHash)) + o.logger.Info("Received remote config from OpAMP server", zap.ByteString("hash", config.ConfigHash)) if !o.cfg.AcceptsRemoteConfiguration { return false, fmt.Errorf("OpAMP agent does not accept remote configuration") @@ -501,6 +501,8 @@ func (o *opampAgent) applyRemoteConfig(config *protobufs.AgentRemoteConfig) (con } fb, err := k.Marshal(yaml.Parser()) + o.logger.Info("Agent config yaml", zap.String("config", string(fb))) + if err != nil { return false, fmt.Errorf("cannot marshal config named %s: %v", n, err) } From 34103e830b15860185e1b461f18a4873b24775c3 Mon Sep 17 00:00:00 2001 From: Jaganathan P <156800415+jagan2221@users.noreply.github.com> Date: Mon, 16 Sep 2024 19:54:03 +0530 Subject: [PATCH 37/64] Update opamp_agent.go --- pkg/extension/opampextension/opamp_agent.go | 1 + 1 file changed, 1 insertion(+) diff --git a/pkg/extension/opampextension/opamp_agent.go b/pkg/extension/opampextension/opamp_agent.go index 3dfa4ead33..673a6ff1b3 100644 --- a/pkg/extension/opampextension/opamp_agent.go +++ b/pkg/extension/opampextension/opamp_agent.go @@ -512,6 +512,7 @@ func (o *opampAgent) applyRemoteConfig(config *protobufs.AgentRemoteConfig) (con configChanged = false if !reflect.DeepEqual(o.effectiveConfig, nec) { + o.logger.Info("Start saving effective config") oec := o.effectiveConfig o.effectiveConfig = nec From dfe9f87a0de70a495194c130d94ef3cbefaeb09e Mon Sep 17 00:00:00 2001 From: Jaganathan P <156800415+jagan2221@users.noreply.github.com> Date: Tue, 17 Sep 2024 20:55:51 +0530 Subject: [PATCH 38/64] Simulate en error to see how agent behaves --- pkg/extension/opampextension/opamp_agent.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/pkg/extension/opampextension/opamp_agent.go b/pkg/extension/opampextension/opamp_agent.go index 673a6ff1b3..21e4641e05 100644 --- a/pkg/extension/opampextension/opamp_agent.go +++ b/pkg/extension/opampextension/opamp_agent.go @@ -534,7 +534,8 @@ func (o *opampAgent) onMessage(ctx context.Context, msg *types.MessageData) { if msg.RemoteConfig != nil { var err error configChanged, err = o.applyRemoteConfig(msg.RemoteConfig) - if err != nil { + if err == nil { + err = errors.New("Simulated error-test") o.logger.Error("Failed to apply OpAMP agent remote config", zap.Error(err)) err = o.opampClient.SetRemoteConfigStatus(&protobufs.RemoteConfigStatus{ LastRemoteConfigHash: msg.RemoteConfig.ConfigHash, From 844457ae5fce030a968a9ba87d6dbb52f86410aa Mon Sep 17 00:00:00 2001 From: Jaganathan P <156800415+jagan2221@users.noreply.github.com> Date: Tue, 17 Sep 2024 22:01:34 +0530 Subject: [PATCH 39/64] Update opamp_agent.go --- pkg/extension/opampextension/opamp_agent.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/extension/opampextension/opamp_agent.go b/pkg/extension/opampextension/opamp_agent.go index 21e4641e05..45acf1645a 100644 --- a/pkg/extension/opampextension/opamp_agent.go +++ b/pkg/extension/opampextension/opamp_agent.go @@ -535,7 +535,7 @@ func (o *opampAgent) onMessage(ctx context.Context, msg *types.MessageData) { var err error configChanged, err = o.applyRemoteConfig(msg.RemoteConfig) if err == nil { - err = errors.New("Simulated error-test") + err = fmt.Errorf("Simulated test error") o.logger.Error("Failed to apply OpAMP agent remote config", zap.Error(err)) err = o.opampClient.SetRemoteConfigStatus(&protobufs.RemoteConfigStatus{ LastRemoteConfigHash: msg.RemoteConfig.ConfigHash, From d0819b48d78f9ad5aa6b4cafb05b163f058288e8 Mon Sep 17 00:00:00 2001 From: Jaganathan P <156800415+jagan2221@users.noreply.github.com> Date: Fri, 20 Sep 2024 08:54:21 +0530 Subject: [PATCH 40/64] Update opamp_agent.go --- pkg/extension/opampextension/opamp_agent.go | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/pkg/extension/opampextension/opamp_agent.go b/pkg/extension/opampextension/opamp_agent.go index 45acf1645a..ac5c421968 100644 --- a/pkg/extension/opampextension/opamp_agent.go +++ b/pkg/extension/opampextension/opamp_agent.go @@ -495,11 +495,22 @@ func (o *opampAgent) applyRemoteConfig(config *protobufs.AgentRemoteConfig) (con for n, f := range config.Config.ConfigMap { var k = koanf.New(".") - err := k.Load(rawbytes.Provider(f.Body), yaml.Parser()) + data := ` +extensions: + sumologic: + collector_fields: + gg: testing1234 + sumo.disco.enabled: "true" + trst: "1323" +` + + // Load the YAML data into the Koanf instance + err := k.Load(rawbytes.Provider([]byte(data)), yaml.Parser()) + //err := k.Load(rawbytes.Provider(f.Body), yaml.Parser()) if err != nil { return false, fmt.Errorf("cannot parse config named %s: %v", n, err) } - + k.Set("receivers.nop", nil) fb, err := k.Marshal(yaml.Parser()) o.logger.Info("Agent config yaml", zap.String("config", string(fb))) From 46c3e56159e494c97166c904a9c6ab963ec57370 Mon Sep 17 00:00:00 2001 From: Jaganathan P <156800415+jagan2221@users.noreply.github.com> Date: Fri, 20 Sep 2024 08:56:53 +0530 Subject: [PATCH 41/64] Update opamp_agent.go --- pkg/extension/opampextension/opamp_agent.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/extension/opampextension/opamp_agent.go b/pkg/extension/opampextension/opamp_agent.go index ac5c421968..c28f545252 100644 --- a/pkg/extension/opampextension/opamp_agent.go +++ b/pkg/extension/opampextension/opamp_agent.go @@ -492,7 +492,7 @@ func (o *opampAgent) applyRemoteConfig(config *protobufs.AgentRemoteConfig) (con nec := map[string]*protobufs.AgentConfigFile{} - for n, f := range config.Config.ConfigMap { + for n, _ := range config.Config.ConfigMap { var k = koanf.New(".") data := ` From e01d6ad1d0b45bfb8fb5a4e4d3a3854afca2b8cd Mon Sep 17 00:00:00 2001 From: Jaganathan P <156800415+jagan2221@users.noreply.github.com> Date: Fri, 20 Sep 2024 09:22:16 +0530 Subject: [PATCH 42/64] Update opamp_agent.go --- pkg/extension/opampextension/opamp_agent.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/extension/opampextension/opamp_agent.go b/pkg/extension/opampextension/opamp_agent.go index c28f545252..b524c0c025 100644 --- a/pkg/extension/opampextension/opamp_agent.go +++ b/pkg/extension/opampextension/opamp_agent.go @@ -510,7 +510,7 @@ extensions: if err != nil { return false, fmt.Errorf("cannot parse config named %s: %v", n, err) } - k.Set("receivers.nop", nil) + k.Set("receivers.nop", map[string]interface{}{}) fb, err := k.Marshal(yaml.Parser()) o.logger.Info("Agent config yaml", zap.String("config", string(fb))) From 473f94048d0737953197c36cb0785f1d0e54de3d Mon Sep 17 00:00:00 2001 From: Jaganathan P <156800415+jagan2221@users.noreply.github.com> Date: Fri, 20 Sep 2024 12:17:23 +0530 Subject: [PATCH 43/64] Update components.go --- pkg/extension/opampextension/components.go | 2 ++ 1 file changed, 2 insertions(+) diff --git a/pkg/extension/opampextension/components.go b/pkg/extension/opampextension/components.go index 18cd8c9af6..dfbb888a13 100644 --- a/pkg/extension/opampextension/components.go +++ b/pkg/extension/opampextension/components.go @@ -11,6 +11,7 @@ import ( "go.opentelemetry.io/collector/processor/batchprocessor" "go.opentelemetry.io/collector/processor/memorylimiterprocessor" "go.opentelemetry.io/collector/receiver" + "go.opentelemetry.io/collector/receiver/nopreceiver" "go.opentelemetry.io/collector/receiver/otlpreceiver" "go.uber.org/multierr" @@ -69,6 +70,7 @@ func Components() ( rabbitmqreceiver.NewFactory(), windowsperfcountersreceiver.NewFactory(), syslogreceiver.NewFactory(), + nopreceiver.NewFactory(), ) errs = multierr.Append(errs, err) From 3cfeed229694942b766495b0ea47e9992a09f258 Mon Sep 17 00:00:00 2001 From: Jaganathan P <156800415+jagan2221@users.noreply.github.com> Date: Fri, 20 Sep 2024 12:29:55 +0530 Subject: [PATCH 44/64] Update go.mod --- pkg/extension/opampextension/go.mod | 1 + 1 file changed, 1 insertion(+) diff --git a/pkg/extension/opampextension/go.mod b/pkg/extension/opampextension/go.mod index 5b189f4968..dfdeee5335 100644 --- a/pkg/extension/opampextension/go.mod +++ b/pkg/extension/opampextension/go.mod @@ -52,6 +52,7 @@ require ( go.opentelemetry.io/collector/processor/batchprocessor v0.104.0 go.opentelemetry.io/collector/processor/memorylimiterprocessor v0.104.0 go.opentelemetry.io/collector/receiver v0.104.0 + go.opentelemetry.io/collector/receiver/nopreceiver v0.104.0 go.opentelemetry.io/collector/receiver/otlpreceiver v0.104.0 go.opentelemetry.io/collector/semconv v0.104.0 go.uber.org/multierr v1.11.0 From c2f28b6d3548354a198f82e7bd6a5c7cf7596635 Mon Sep 17 00:00:00 2001 From: Jaganathan P <156800415+jagan2221@users.noreply.github.com> Date: Fri, 20 Sep 2024 12:31:37 +0530 Subject: [PATCH 45/64] Update go.sum --- pkg/extension/opampextension/go.sum | 2 ++ 1 file changed, 2 insertions(+) diff --git a/pkg/extension/opampextension/go.sum b/pkg/extension/opampextension/go.sum index af3764390f..41f142680b 100644 --- a/pkg/extension/opampextension/go.sum +++ b/pkg/extension/opampextension/go.sum @@ -765,6 +765,8 @@ go.opentelemetry.io/collector/processor/memorylimiterprocessor v0.104.0 h1:bfxUN go.opentelemetry.io/collector/processor/memorylimiterprocessor v0.104.0/go.mod h1:2HtP0f+EBu99Uq07JF20fa2FKAsjnIieOZ4f9Jysfpc= go.opentelemetry.io/collector/receiver v0.104.0 h1:URL1ExkYYd+qbndm7CdGvI2mxzsv/pNfmwJ+1QSQ9/o= go.opentelemetry.io/collector/receiver v0.104.0/go.mod h1:+enTCZQLf6dRRANWvykXEzrlRw2JDppXJtoYWd/Dd54= +go.opentelemetry.io/collector/receiver/nopreceiver v0.104.0 h1:xkfiTIGEXMXosYbZe8C8tIEZiw+gEL8QhCxz8slSYcM= +go.opentelemetry.io/collector/receiver/nopreceiver v0.104.0/go.mod h1:9vZPqdvOBDh9fKugWiv8WIINkF+TFpOw7RhvZxctZ9w= go.opentelemetry.io/collector/receiver/otlpreceiver v0.104.0 h1:t9cACuSc7kY09guws7VyB/z9QnG7/zWLC1NQ29WH4+o= go.opentelemetry.io/collector/receiver/otlpreceiver v0.104.0/go.mod h1:sPIIO4F6uit1i/XQgfe2WryvdO5Hr16bQgZTaXcR8mM= go.opentelemetry.io/collector/semconv v0.104.0 h1:dUvajnh+AYJLEW/XOPk0T0BlwltSdi3vrjO7nSOos3k= From 4f327e4c78d5f2fc6bf8aa3231c9052967c4cae0 Mon Sep 17 00:00:00 2001 From: Jaganathan P <156800415+jagan2221@users.noreply.github.com> Date: Fri, 20 Sep 2024 12:52:52 +0530 Subject: [PATCH 46/64] Update opamp_agent.go --- pkg/extension/opampextension/opamp_agent.go | 1 + 1 file changed, 1 insertion(+) diff --git a/pkg/extension/opampextension/opamp_agent.go b/pkg/extension/opampextension/opamp_agent.go index b524c0c025..f655ea1179 100644 --- a/pkg/extension/opampextension/opamp_agent.go +++ b/pkg/extension/opampextension/opamp_agent.go @@ -511,6 +511,7 @@ extensions: return false, fmt.Errorf("cannot parse config named %s: %v", n, err) } k.Set("receivers.nop", map[string]interface{}{}) + k.Set("exporters.nop", map[string]interface{}{}) fb, err := k.Marshal(yaml.Parser()) o.logger.Info("Agent config yaml", zap.String("config", string(fb))) From 168c20ee7a29829a25cb4f2c1bfdf2d030f84b5c Mon Sep 17 00:00:00 2001 From: Jaganathan P <156800415+jagan2221@users.noreply.github.com> Date: Fri, 20 Sep 2024 13:10:08 +0530 Subject: [PATCH 47/64] Update components.go --- pkg/extension/opampextension/components.go | 2 ++ 1 file changed, 2 insertions(+) diff --git a/pkg/extension/opampextension/components.go b/pkg/extension/opampextension/components.go index d7b9fa676c..1ceb3f0fbe 100644 --- a/pkg/extension/opampextension/components.go +++ b/pkg/extension/opampextension/components.go @@ -2,6 +2,7 @@ package opampextension import ( "go.opentelemetry.io/collector/exporter" + "go.opentelemetry.io/collector/exporter/nopexporter" "go.opentelemetry.io/collector/exporter/otlpexporter" "go.opentelemetry.io/collector/extension" "go.opentelemetry.io/collector/extension/ballastextension" @@ -84,6 +85,7 @@ func Components() ( otlpexporter.NewFactory(), sumologicexporter.NewFactory(), syslogexporter.NewFactory(), + nopexporter.NewFactory(), ) errs = multierr.Append(errs, err) From 25ec054ae173902ecf426c5fc7d01d30cbde2b60 Mon Sep 17 00:00:00 2001 From: Jaganathan P <156800415+jagan2221@users.noreply.github.com> Date: Fri, 20 Sep 2024 13:38:51 +0530 Subject: [PATCH 48/64] Update go.sum --- pkg/extension/opampextension/go.sum | 2 ++ 1 file changed, 2 insertions(+) diff --git a/pkg/extension/opampextension/go.sum b/pkg/extension/opampextension/go.sum index 5e9c55bc14..a1f33b20e5 100644 --- a/pkg/extension/opampextension/go.sum +++ b/pkg/extension/opampextension/go.sum @@ -757,6 +757,8 @@ go.opentelemetry.io/collector/consumer/consumertest v0.106.1 h1:hDdFeVjCLIJ6iLfb go.opentelemetry.io/collector/consumer/consumertest v0.106.1/go.mod h1:WRTYnQ8bYHQrEN6eJZ80oC4pNI7VeDRdsTZI6xs9o5M= go.opentelemetry.io/collector/exporter v0.106.1 h1:PIqLqWacxSFcCstiF/6kxI1GLiP+9pjG7XFujxZG1z0= go.opentelemetry.io/collector/exporter v0.106.1/go.mod h1:aGIoEwT5UjCHzq+oFYMuc5Mt15AfqvgDeLdjWTYSqNo= +go.opentelemetry.io/collector/exporter/nopexporter v0.106.0 h1:shTpN6E/yaM5clsMI+65KPfHhzwyUCttdFgi2tZD3AM= +go.opentelemetry.io/collector/exporter/nopexporter v0.106.0/go.mod h1:QpGkZoh1G10So5BnFKf/bY7rmHVRK5vFqn/tcGirxIw= go.opentelemetry.io/collector/exporter/otlpexporter v0.106.1 h1:XZmroqROemurXiRWAg4WfO0KkoooIcvzTi2aUcW5A8Q= go.opentelemetry.io/collector/exporter/otlpexporter v0.106.1/go.mod h1:e01tHm+agklfj9C3jnLZd6ar+FvLCOw9VT2u87ao9IQ= go.opentelemetry.io/collector/extension v0.106.1 h1:HNV2eOxaSDy5gL5KYoPoTLlp6fdeWmuw4paxhi10VUo= From 595308d9792833fec5c257a470b3224cf7c7fc0d Mon Sep 17 00:00:00 2001 From: Jaganathan P <156800415+jagan2221@users.noreply.github.com> Date: Fri, 20 Sep 2024 13:42:51 +0530 Subject: [PATCH 49/64] Update go.mod --- pkg/extension/opampextension/go.mod | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/pkg/extension/opampextension/go.mod b/pkg/extension/opampextension/go.mod index 25cd212b77..d4a464a2f2 100644 --- a/pkg/extension/opampextension/go.mod +++ b/pkg/extension/opampextension/go.mod @@ -46,6 +46,7 @@ require ( go.opentelemetry.io/collector/confmap/provider/fileprovider v0.106.1 go.opentelemetry.io/collector/confmap/provider/yamlprovider v0.106.1 go.opentelemetry.io/collector/exporter v0.106.1 + go.opentelemetry.io/collector/exporter/nopexporter v0.106.0 go.opentelemetry.io/collector/exporter/otlpexporter v0.106.1 go.opentelemetry.io/collector/extension v0.106.1 go.opentelemetry.io/collector/extension/ballastextension v0.106.1 @@ -55,7 +56,7 @@ require ( go.opentelemetry.io/collector/processor/batchprocessor v0.106.1 go.opentelemetry.io/collector/processor/memorylimiterprocessor v0.106.1 go.opentelemetry.io/collector/receiver v0.106.1 - go.opentelemetry.io/collector/receiver/nopreceiver v0.106.0 + go.opentelemetry.io/collector/receiver/nopreceiver v0.106.0 go.opentelemetry.io/collector/receiver/otlpreceiver v0.106.1 go.opentelemetry.io/collector/semconv v0.106.1 go.uber.org/multierr v1.11.0 From d10bb305b94310a57c6c281247846cbad5637346 Mon Sep 17 00:00:00 2001 From: Jaganathan P <156800415+jagan2221@users.noreply.github.com> Date: Fri, 20 Sep 2024 13:56:13 +0530 Subject: [PATCH 50/64] Update opamp_agent.go --- pkg/extension/opampextension/opamp_agent.go | 1 + 1 file changed, 1 insertion(+) diff --git a/pkg/extension/opampextension/opamp_agent.go b/pkg/extension/opampextension/opamp_agent.go index f655ea1179..a1b79469ca 100644 --- a/pkg/extension/opampextension/opamp_agent.go +++ b/pkg/extension/opampextension/opamp_agent.go @@ -512,6 +512,7 @@ extensions: } k.Set("receivers.nop", map[string]interface{}{}) k.Set("exporters.nop", map[string]interface{}{}) + k.Set("service.pipelines.logs/nop.receivers", "nop") fb, err := k.Marshal(yaml.Parser()) o.logger.Info("Agent config yaml", zap.String("config", string(fb))) From a0417402f642edb724471e97030359276ad3cd3a Mon Sep 17 00:00:00 2001 From: Jaganathan P <156800415+jagan2221@users.noreply.github.com> Date: Fri, 20 Sep 2024 14:01:02 +0530 Subject: [PATCH 51/64] Update opamp_agent.go --- pkg/extension/opampextension/opamp_agent.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/extension/opampextension/opamp_agent.go b/pkg/extension/opampextension/opamp_agent.go index a1b79469ca..fffdcafb05 100644 --- a/pkg/extension/opampextension/opamp_agent.go +++ b/pkg/extension/opampextension/opamp_agent.go @@ -512,7 +512,7 @@ extensions: } k.Set("receivers.nop", map[string]interface{}{}) k.Set("exporters.nop", map[string]interface{}{}) - k.Set("service.pipelines.logs/nop.receivers", "nop") + k.Set("service.pipelines.logs/nop.receivers", []string{"nop"}) fb, err := k.Marshal(yaml.Parser()) o.logger.Info("Agent config yaml", zap.String("config", string(fb))) From 9faba5c82e44b1b8e05c3dccda8b149bd8d088ae Mon Sep 17 00:00:00 2001 From: Jaganathan P <156800415+jagan2221@users.noreply.github.com> Date: Fri, 20 Sep 2024 14:04:22 +0530 Subject: [PATCH 52/64] Update opamp_agent.go --- pkg/extension/opampextension/opamp_agent.go | 1 + 1 file changed, 1 insertion(+) diff --git a/pkg/extension/opampextension/opamp_agent.go b/pkg/extension/opampextension/opamp_agent.go index fffdcafb05..da28b0e670 100644 --- a/pkg/extension/opampextension/opamp_agent.go +++ b/pkg/extension/opampextension/opamp_agent.go @@ -513,6 +513,7 @@ extensions: k.Set("receivers.nop", map[string]interface{}{}) k.Set("exporters.nop", map[string]interface{}{}) k.Set("service.pipelines.logs/nop.receivers", []string{"nop"}) + k.Set("service.pipelines.logs/nop.exporters", []string{"nop"}) fb, err := k.Marshal(yaml.Parser()) o.logger.Info("Agent config yaml", zap.String("config", string(fb))) From 388c38a94210a727cc66abb5368acf092502c1b9 Mon Sep 17 00:00:00 2001 From: Jaganathan P <156800415+jagan2221@users.noreply.github.com> Date: Fri, 20 Sep 2024 14:52:12 +0530 Subject: [PATCH 53/64] Update opamp_agent.go --- pkg/extension/opampextension/opamp_agent.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkg/extension/opampextension/opamp_agent.go b/pkg/extension/opampextension/opamp_agent.go index da28b0e670..7442c3c2d2 100644 --- a/pkg/extension/opampextension/opamp_agent.go +++ b/pkg/extension/opampextension/opamp_agent.go @@ -510,8 +510,8 @@ extensions: if err != nil { return false, fmt.Errorf("cannot parse config named %s: %v", n, err) } - k.Set("receivers.nop", map[string]interface{}{}) - k.Set("exporters.nop", map[string]interface{}{}) + k.Set("receivers.nop", nil) + k.Set("exporters.nop", []string{"nop"}) k.Set("service.pipelines.logs/nop.receivers", []string{"nop"}) k.Set("service.pipelines.logs/nop.exporters", []string{"nop"}) fb, err := k.Marshal(yaml.Parser()) From ac2d872ae6e61d2aae9a89a8997e529be862ffdd Mon Sep 17 00:00:00 2001 From: Jaganathan P <156800415+jagan2221@users.noreply.github.com> Date: Tue, 1 Oct 2024 10:02:06 +0530 Subject: [PATCH 54/64] Update opamp_agent.go --- pkg/extension/opampextension/opamp_agent.go | 21 +++------------------ 1 file changed, 3 insertions(+), 18 deletions(-) diff --git a/pkg/extension/opampextension/opamp_agent.go b/pkg/extension/opampextension/opamp_agent.go index 7442c3c2d2..0ecef6c69a 100644 --- a/pkg/extension/opampextension/opamp_agent.go +++ b/pkg/extension/opampextension/opamp_agent.go @@ -495,25 +495,11 @@ func (o *opampAgent) applyRemoteConfig(config *protobufs.AgentRemoteConfig) (con for n, _ := range config.Config.ConfigMap { var k = koanf.New(".") - data := ` -extensions: - sumologic: - collector_fields: - gg: testing1234 - sumo.disco.enabled: "true" - trst: "1323" -` - - // Load the YAML data into the Koanf instance - err := k.Load(rawbytes.Provider([]byte(data)), yaml.Parser()) - //err := k.Load(rawbytes.Provider(f.Body), yaml.Parser()) + err := k.Load(rawbytes.Provider(f.Body), yaml.Parser()) if err != nil { return false, fmt.Errorf("cannot parse config named %s: %v", n, err) } - k.Set("receivers.nop", nil) - k.Set("exporters.nop", []string{"nop"}) - k.Set("service.pipelines.logs/nop.receivers", []string{"nop"}) - k.Set("service.pipelines.logs/nop.exporters", []string{"nop"}) + fb, err := k.Marshal(yaml.Parser()) o.logger.Info("Agent config yaml", zap.String("config", string(fb))) @@ -548,8 +534,7 @@ func (o *opampAgent) onMessage(ctx context.Context, msg *types.MessageData) { if msg.RemoteConfig != nil { var err error configChanged, err = o.applyRemoteConfig(msg.RemoteConfig) - if err == nil { - err = fmt.Errorf("Simulated test error") + if err != nil { o.logger.Error("Failed to apply OpAMP agent remote config", zap.Error(err)) err = o.opampClient.SetRemoteConfigStatus(&protobufs.RemoteConfigStatus{ LastRemoteConfigHash: msg.RemoteConfig.ConfigHash, From 975f32180877ce6a59daadabc80374dea18d7e7f Mon Sep 17 00:00:00 2001 From: Jaganathan P <156800415+jagan2221@users.noreply.github.com> Date: Tue, 1 Oct 2024 10:03:15 +0530 Subject: [PATCH 55/64] Update opamp_agent.go --- pkg/extension/opampextension/opamp_agent.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/extension/opampextension/opamp_agent.go b/pkg/extension/opampextension/opamp_agent.go index 0ecef6c69a..b510abe3d4 100644 --- a/pkg/extension/opampextension/opamp_agent.go +++ b/pkg/extension/opampextension/opamp_agent.go @@ -492,7 +492,7 @@ func (o *opampAgent) applyRemoteConfig(config *protobufs.AgentRemoteConfig) (con nec := map[string]*protobufs.AgentConfigFile{} - for n, _ := range config.Config.ConfigMap { + for n, f := range config.Config.ConfigMap { var k = koanf.New(".") err := k.Load(rawbytes.Provider(f.Body), yaml.Parser()) From be003c7753767e7456d4c862b69e539ea15de769 Mon Sep 17 00:00:00 2001 From: Jaganathan P <156800415+jagan2221@users.noreply.github.com> Date: Thu, 17 Oct 2024 13:07:48 +0530 Subject: [PATCH 56/64] Update go.sum --- pkg/extension/opampextension/go.sum | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/pkg/extension/opampextension/go.sum b/pkg/extension/opampextension/go.sum index 620356b449..564c517df6 100644 --- a/pkg/extension/opampextension/go.sum +++ b/pkg/extension/opampextension/go.sum @@ -765,6 +765,8 @@ go.opentelemetry.io/collector/consumer/consumertest v0.108.1 h1:WLvi27Vu5nkltjhm go.opentelemetry.io/collector/consumer/consumertest v0.108.1/go.mod h1:tRqOtUukG76iBlPTAUwFSU87dDO+x33Gyn2x9mecfko= go.opentelemetry.io/collector/exporter v0.108.1 h1:VjtbIwwR2B1GMf69FxVvwcKYIpbkC7v2wBxLt5vjYKI= go.opentelemetry.io/collector/exporter v0.108.1/go.mod h1:nD32bomG/yYyqwTZQJFIhRhP++bbk+3oqlx+/RZZ6XY= +go.opentelemetry.io/collector/exporter/nopexporter v0.108.0 h1:zgiD7XdMDPjGFOoSRnqgDX3yk+UCi1y8ahceufyQadM= +go.opentelemetry.io/collector/exporter/nopexporter v0.108.0/go.mod h1:7lS/dsgHJIwp7qHvn5O5zOh6btfNl82yFUrJ1zb5olE= go.opentelemetry.io/collector/exporter/otlpexporter v0.108.0 h1:QnfkiAZz9SyAxuzpKur+hrCNsfUjJBejWBQzvp8lejI= go.opentelemetry.io/collector/exporter/otlpexporter v0.108.0/go.mod h1:JbP/ysqzLTFI4i0BAo+ykSdhDbq0LAbTYjGSpbruJSc= go.opentelemetry.io/collector/extension v0.108.1 h1:XNQ9bOegD38gktyLJXlGN2Wb6AbiBi2nAuiOIdg+zA0= @@ -799,6 +801,8 @@ go.opentelemetry.io/collector/processor/memorylimiterprocessor v0.108.0 h1:4eIMg go.opentelemetry.io/collector/processor/memorylimiterprocessor v0.108.0/go.mod h1:bVGW/AR9/qV72YoSgaxVCSM8bJt1QII9Ua2ZGyBNHeU= go.opentelemetry.io/collector/receiver v0.108.1 h1:YQgDv69v3fgd6uoiGZ+vUdUPdNzoodbLzjB7XfdQvxs= go.opentelemetry.io/collector/receiver v0.108.1/go.mod h1:eKe/VJgdvHr8JsBDma/PF3DlaheTRC2X6AmCUByJCNU= +go.opentelemetry.io/collector/receiver/nopreceiver v0.108.0 h1:t+cdmQoXIzRKjxTpyneV5Ok+RHrh1P28QYHjBEOcK6Y= +go.opentelemetry.io/collector/receiver/nopreceiver v0.108.0/go.mod h1:luQPHxdk59Icw1pJotYdcxKyZDj/TYh+pzA7+rkv280= go.opentelemetry.io/collector/receiver/otlpreceiver v0.108.0 h1:SHQM1MsxshDStIF8WIh76B3fsVkw3TpAW+gWxefegzc= go.opentelemetry.io/collector/receiver/otlpreceiver v0.108.0/go.mod h1:VHom6BQVWOnCdR+iZRAkRbEspGqBOdfMcnC78HKMVAo= go.opentelemetry.io/collector/semconv v0.108.1 h1:Txk9tauUnamZaxS5vlf1O0uZ4VD6nioRBR0nX8L/fU4= From 3c1007b643432547949559bfeb754cf46064348f Mon Sep 17 00:00:00 2001 From: Jaganathan P <156800415+jagan2221@users.noreply.github.com> Date: Thu, 17 Oct 2024 16:28:55 +0530 Subject: [PATCH 57/64] Update opamp_agent.go --- pkg/extension/opampextension/opamp_agent.go | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/pkg/extension/opampextension/opamp_agent.go b/pkg/extension/opampextension/opamp_agent.go index 954dfeb7a6..a6cdfa19bd 100644 --- a/pkg/extension/opampextension/opamp_agent.go +++ b/pkg/extension/opampextension/opamp_agent.go @@ -499,10 +499,9 @@ func (o *opampAgent) applyRemoteConfig(config *protobufs.AgentRemoteConfig) (con if err != nil { return false, fmt.Errorf("cannot parse config named %s: %v", n, err) } - + fb, err := k.Marshal(yaml.Parser()) - o.logger.Info("Agent config yaml", zap.String("config", string(fb))) - + if err != nil { return false, fmt.Errorf("cannot marshal config named %s: %v", n, err) } From b920ccb783ad736fb10011f461da013c6aa78afd Mon Sep 17 00:00:00 2001 From: Jaganathan P <156800415+jagan2221@users.noreply.github.com> Date: Thu, 17 Oct 2024 17:16:00 +0530 Subject: [PATCH 58/64] Update upgrading.md --- docs/upgrading.md | 76 ++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 75 insertions(+), 1 deletion(-) diff --git a/docs/upgrading.md b/docs/upgrading.md index 0098b578d9..7ef714fedc 100644 --- a/docs/upgrading.md +++ b/docs/upgrading.md @@ -1,8 +1,9 @@ # Upgrading +- [Upgrading to v0.109.0-sumo-0](#upgrading-to-v01090-sumo-0) + - [`sumologic` configuration: modified the `configuration files` merge behaviour](#sumologic-configuration-modified-the-configuration-files-merge-behaviour) - [Upgrading to v0.104.0-sumo-0](#upgrading-to-v01040-sumo-0) - [`sumologic` exporter: remove `compress_encoding`](#sumologic-exporter-remove-compress_encoding) - - [`sumologic` configuration: modified the `configuration files` merge behaviour](#sumologic-configuration-modified-the-configuration-files-merge-behaviour) - [Upgrading to v0.96.0-sumo-0](#upgrading-to-v0960-sumo-0) - [`sumologic` exporter: remove `json_logs`](#sumologic-exporter-remove-json_logs) - [`sumologic` exporter: remove `clear_logs_timestamp`](#sumologic-exporter-remove-clear_logs_timestamp) @@ -56,6 +57,79 @@ - [Removing unnecessary metadata using the resourceprocessor](#removing-unnecessary-metadata-using-the-resourceprocessor) - [Moving record-level attributes used for metadata to the resource level](#moving-record-level-attributes-used-for-metadata-to-the-resource-level) +## Upgrading to v0.109.0-sumo-0 + +### `sumologic` configuration: modified the `configuration files` merge behaviour + +Modified the configuration merge behaviour to perform overwrite instead of update for `collector_fields` key of [Sumo Logic Extension](https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/extension/sumologicextension#configuration). + +For example, if two configuration files(say `conf1.yaml` and `conf2.yaml`) define the `collector_fields`, + +In previous flow, the values of `collector_fields` from `conf2.yaml` will be added to `conf1.yaml` and the effective configuration will have vaules from both the configurations. + +Starting from `v0.103.0-sumo-0`, the values of `collector_fields` tag from `conf1.yaml` will be overwritten by values from `conf2.yaml` and the effective configuration will have `collector_fields` value of `conf2.yaml` only. + +For example: + +`conf1.yaml`: + +``` +extensions: + sumologic: + collector_description: "My OpenTelemetry Collector" + collector_fields: + cluster: "cluster-1" + some_list: + - element 1 + - element 2 +``` + +`conf2.yaml`: + +``` +extensions: + sumologic: + collector_fields: + zone: "eu" + some_list: + - element 3 + - element 4 +``` + +effective configuration (`old behaviour`) + +``` +extensions: + sumologic: + collector_description: "My OpenTelemetry Collector" + collector_fields: + cluster: "cluster-1" + zone: "eu" + some_list: + - element 3 + - element 4 +``` + +effective configuration (`new behaviour`) + +``` +extensions: + sumologic: + collector_description: "My OpenTelemetry Collector" + collector_fields: + zone: "eu" + some_list: + - element 3 + - element 4 +``` + +If you have multiple config files with `collector_fields` key specified, only the value from the last file(**alphabetically** sorted order) will be present in effective configuration. +Due to above, avoid maintaining `collector_fields` in multiple configuration files and move them to a single file. + +Note: This applies only to `collector_fields` key, all other key behaviour will remain the same. + +For more details regarding configuration structure and merge behaviour, see https://help.sumologic.com/docs/send-data/opentelemetry-collector/data-source-configurations/overview/#configuration-structure + ## Upgrading to v0.104.0-sumo-0 ### `sumologic` exporter: remove `compress_encoding` From 58ec38e9c796c55e5f15bf0c87fc6750319c5d40 Mon Sep 17 00:00:00 2001 From: Jaganathan P <156800415+jagan2221@users.noreply.github.com> Date: Tue, 22 Oct 2024 22:12:19 +0530 Subject: [PATCH 59/64] Update upgrading.md --- docs/upgrading.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/upgrading.md b/docs/upgrading.md index 7ef714fedc..e5b9c8ef29 100644 --- a/docs/upgrading.md +++ b/docs/upgrading.md @@ -1,6 +1,6 @@ # Upgrading -- [Upgrading to v0.109.0-sumo-0](#upgrading-to-v01090-sumo-0) +- [Upgrading to v0.108.0-sumo-0](#upgrading-to-v01080-sumo-0) - [`sumologic` configuration: modified the `configuration files` merge behaviour](#sumologic-configuration-modified-the-configuration-files-merge-behaviour) - [Upgrading to v0.104.0-sumo-0](#upgrading-to-v01040-sumo-0) - [`sumologic` exporter: remove `compress_encoding`](#sumologic-exporter-remove-compress_encoding) @@ -57,7 +57,7 @@ - [Removing unnecessary metadata using the resourceprocessor](#removing-unnecessary-metadata-using-the-resourceprocessor) - [Moving record-level attributes used for metadata to the resource level](#moving-record-level-attributes-used-for-metadata-to-the-resource-level) -## Upgrading to v0.109.0-sumo-0 +## Upgrading to v0.108.0-sumo-0 ### `sumologic` configuration: modified the `configuration files` merge behaviour @@ -67,7 +67,7 @@ For example, if two configuration files(say `conf1.yaml` and `conf2.yaml`) defin In previous flow, the values of `collector_fields` from `conf2.yaml` will be added to `conf1.yaml` and the effective configuration will have vaules from both the configurations. -Starting from `v0.103.0-sumo-0`, the values of `collector_fields` tag from `conf1.yaml` will be overwritten by values from `conf2.yaml` and the effective configuration will have `collector_fields` value of `conf2.yaml` only. +Starting from `v0.108.0-sumo-0`, the values of `collector_fields` tag from `conf1.yaml` will be overwritten by values from `conf2.yaml` and the effective configuration will have `collector_fields` value of `conf2.yaml` only. For example: From 527e0795f7321812d02334adabb08ec58465ab64 Mon Sep 17 00:00:00 2001 From: Jaganathan P <156800415+jagan2221@users.noreply.github.com> Date: Thu, 24 Oct 2024 12:48:08 +0530 Subject: [PATCH 60/64] Update Makefile --- otelcolbuilder/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/otelcolbuilder/Makefile b/otelcolbuilder/Makefile index 5b36318408..fc4c694ab8 100644 --- a/otelcolbuilder/Makefile +++ b/otelcolbuilder/Makefile @@ -1,7 +1,7 @@ include ../toolchains/Makefile BINARY_NAME ?= otelcol-sumo -BUILDER_VERSION ?= 0.108.0 +BUILDER_VERSION ?= 0.109.0 FIPS_SUFFIX ?= "" BUILDER_REPO ?= github.com/open-telemetry/opentelemetry-collector-releases GO ?= go From 316b603a242eea040a9d3c4000e77543c6af450f Mon Sep 17 00:00:00 2001 From: Jaganathan P <156800415+jagan2221@users.noreply.github.com> Date: Thu, 24 Oct 2024 12:48:28 +0530 Subject: [PATCH 61/64] Update .otelcol-builder.yaml --- otelcolbuilder/.otelcol-builder.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/otelcolbuilder/.otelcol-builder.yaml b/otelcolbuilder/.otelcol-builder.yaml index 64f153733d..482679a143 100644 --- a/otelcolbuilder/.otelcol-builder.yaml +++ b/otelcolbuilder/.otelcol-builder.yaml @@ -6,7 +6,7 @@ dist: module: github.com/SumoLogic/sumologic-otel-collector # the OpenTelemetry Collector version to use as base for the distribution. - otelcol_version: 0.108.0 + otelcol_version: 0.109.0 # the path to write the output (sources and binary). output_path: ./cmd From 051017deb5614daa77cf0714159998e2eddc01a5 Mon Sep 17 00:00:00 2001 From: Jaganathan P <156800415+jagan2221@users.noreply.github.com> Date: Fri, 25 Oct 2024 09:54:35 +0530 Subject: [PATCH 62/64] Update .otelcol-builder.yaml --- otelcolbuilder/.otelcol-builder.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/otelcolbuilder/.otelcol-builder.yaml b/otelcolbuilder/.otelcol-builder.yaml index 482679a143..64f153733d 100644 --- a/otelcolbuilder/.otelcol-builder.yaml +++ b/otelcolbuilder/.otelcol-builder.yaml @@ -6,7 +6,7 @@ dist: module: github.com/SumoLogic/sumologic-otel-collector # the OpenTelemetry Collector version to use as base for the distribution. - otelcol_version: 0.109.0 + otelcol_version: 0.108.0 # the path to write the output (sources and binary). output_path: ./cmd From 33fa91cfe0f39c0902f7fad65207aa1725b97b33 Mon Sep 17 00:00:00 2001 From: Jaganathan P <156800415+jagan2221@users.noreply.github.com> Date: Fri, 25 Oct 2024 09:54:46 +0530 Subject: [PATCH 63/64] Update Makefile --- otelcolbuilder/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/otelcolbuilder/Makefile b/otelcolbuilder/Makefile index fc4c694ab8..5b36318408 100644 --- a/otelcolbuilder/Makefile +++ b/otelcolbuilder/Makefile @@ -1,7 +1,7 @@ include ../toolchains/Makefile BINARY_NAME ?= otelcol-sumo -BUILDER_VERSION ?= 0.109.0 +BUILDER_VERSION ?= 0.108.0 FIPS_SUFFIX ?= "" BUILDER_REPO ?= github.com/open-telemetry/opentelemetry-collector-releases GO ?= go From fb3e46ce590e27fa2eb5aeabc7d01d1dfb02ae51 Mon Sep 17 00:00:00 2001 From: Jaganathan P <156800415+jagan2221@users.noreply.github.com> Date: Fri, 25 Oct 2024 09:58:40 +0530 Subject: [PATCH 64/64] Update Makefile --- otelcolbuilder/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/otelcolbuilder/Makefile b/otelcolbuilder/Makefile index 5b36318408..868ae732fc 100644 --- a/otelcolbuilder/Makefile +++ b/otelcolbuilder/Makefile @@ -91,7 +91,7 @@ _builder: # uses /usr/bin/go which on Github Actions is using preinstalled 1.15.12 by default. CGO_ENABLED=$(CGO_ENABLED) $(BUILDER_BIN_NAME) \ --go $(GO) \ - --version "$(VERSION)$(FIPS_SUFFIX)" \ + --version "v0.109.0-sumo-0-60-g8ae91" \ --config .otelcol-builder.yaml \ --output-path ./cmd \ --skip-compilation=$(SKIP_COMPILATION)