From 91643ba2612e4b2998ddf41e1033c8994ea56475 Mon Sep 17 00:00:00 2001 From: Povilas Versockas Date: Tue, 10 Oct 2023 09:40:58 +0300 Subject: [PATCH] [mdatagen] allow adding resource_attribute warnings (#27257) **Description:** allow adding resource_attribute warnings **Link to tracking Issue:** https://github.com/open-telemetry/opentelemetry-collector-contrib/issues/19174 **Testing:** - Generated unit tests - Tested manually with some changes to k8sclusterreceiver: ``` k8s.kubelet.version: description: The version of Kubelet running on the node. type: string enabled: false warnings: if_configured: This resource_attribute is deprecated and will be removed soon. opencensus.resourcetype: description: The OpenCensus resource type. type: string enabled: true warnings: if_enabled: This resource_attribute is deprecated and will be removed soon. ``` Gives the following output: ``` {"level":"warn","ts":1695985300.0413303,"caller":"metadata/generated_metrics.go:2201","msg":"[WARNING] `k8s.kubelet.version` should not be configured: This resource_attribute is deprecated and will be removed soon.","kind":"receiver","name":"k8s_cluster","data_type":"metrics"} {"level":"warn","ts":1695985300.041354,"caller":"metadata/generated_metrics.go:2207","msg":"[WARNING] `opencensus.resourcetype` should not be enabled: This resource_attribute is deprecated and will be removed soon.","kind":"receiver","name":"k8s_cluster","data_type":"metrics"} ``` --- .../main-mdatagen-resource-warnings.yaml | 27 ++++++++++ cmd/mdatagen/documentation.md | 3 ++ .../internal/metadata/generated_config.go | 36 +++++++++++-- .../metadata/generated_config_test.go | 52 ++++++++++++------- .../internal/metadata/generated_metrics.go | 9 ++++ .../metadata/generated_metrics_test.go | 16 ++++++ .../internal/metadata/generated_resource.go | 21 ++++++++ .../metadata/generated_resource_test.go | 22 +++++++- .../internal/metadata/testdata/config.yaml | 12 +++++ cmd/mdatagen/loader.go | 6 ++- cmd/mdatagen/loader_test.go | 34 ++++++++++++ cmd/mdatagen/metadata-sample.yaml | 21 ++++++++ cmd/mdatagen/metadata-schema.yaml | 12 +++++ cmd/mdatagen/templates/config.go.tmpl | 19 ++++++- cmd/mdatagen/templates/metrics.go.tmpl | 17 ++++++ cmd/mdatagen/templates/metrics_test.go.tmpl | 22 ++++++++ .../internal/metadata/generated_config.go | 16 ++++++ .../resourcedetectionprocessor/config_test.go | 2 +- .../ec2/internal/metadata/generated_config.go | 16 ++++++ .../ecs/internal/metadata/generated_config.go | 16 ++++++ .../eks/internal/metadata/generated_config.go | 16 ++++++ .../internal/metadata/generated_config.go | 16 ++++++ .../internal/metadata/generated_config.go | 16 ++++++ .../aks/internal/metadata/generated_config.go | 16 ++++++ .../internal/metadata/generated_config.go | 16 ++++++ .../internal/metadata/generated_config.go | 16 ++++++ .../internal/metadata/generated_config.go | 16 ++++++ .../gcp/internal/metadata/generated_config.go | 16 ++++++ .../internal/metadata/generated_config.go | 16 ++++++ .../internal/metadata/generated_config.go | 16 ++++++ .../internal/metadata/generated_config.go | 16 ++++++ .../internal/metadata/generated_config.go | 16 ++++++ .../metadata/generated_metrics_test.go | 1 + .../internal/metadata/generated_config.go | 14 +++++ .../metadata/generated_metrics_test.go | 1 + .../internal/metadata/generated_config.go | 14 +++++ .../metadata/generated_metrics_test.go | 1 + .../internal/metadata/generated_config.go | 14 +++++ .../metadata/generated_metrics_test.go | 1 + .../internal/metadata/generated_config.go | 16 ++++++ .../internal/metadata/generated_config.go | 14 +++++ .../metadata/generated_metrics_test.go | 1 + .../metadata/generated_metrics_test.go | 1 + .../internal/metadata/generated_config.go | 14 +++++ .../metadata/generated_metrics_test.go | 1 + receiver/dockerstatsreceiver/config_test.go | 2 +- .../internal/metadata/generated_config.go | 14 +++++ .../metadata/generated_metrics_test.go | 1 + receiver/elasticsearchreceiver/config_test.go | 2 +- .../internal/metadata/generated_config.go | 14 +++++ .../metadata/generated_metrics_test.go | 1 + .../metadata/generated_metrics_test.go | 1 + .../internal/metadata/generated_config.go | 14 +++++ .../metadata/generated_metrics_test.go | 1 + .../internal/metadata/generated_config.go | 14 +++++ .../metadata/generated_metrics_test.go | 1 + .../internal/metadata/generated_config.go | 14 +++++ .../metadata/generated_metrics_test.go | 1 + .../metadata/generated_metrics_test.go | 1 + .../metadata/generated_metrics_test.go | 1 + .../metadata/generated_metrics_test.go | 1 + .../metadata/generated_metrics_test.go | 1 + .../metadata/generated_metrics_test.go | 1 + .../metadata/generated_metrics_test.go | 1 + .../metadata/generated_metrics_test.go | 1 + .../metadata/generated_metrics_test.go | 1 + .../internal/metadata/generated_config.go | 14 +++++ .../metadata/generated_metrics_test.go | 1 + .../metadata/generated_metrics_test.go | 1 + .../internal/metadata/generated_config.go | 14 +++++ .../metadata/generated_metrics_test.go | 1 + .../internal/metadata/generated_config.go | 14 +++++ .../metadata/generated_metrics_test.go | 1 + .../metadata/generated_metrics_test.go | 1 + .../internal/metadata/generated_config.go | 14 +++++ .../metadata/generated_metrics_test.go | 1 + .../metadata/generated_metrics_test.go | 1 + .../internal/metadata/generated_config.go | 14 +++++ .../metadata/generated_metrics_test.go | 1 + .../internal/metadata/generated_config.go | 14 +++++ .../metadata/generated_metrics_test.go | 1 + .../internal/metadata/generated_config.go | 14 +++++ .../metadata/generated_metrics_test.go | 1 + .../metadata/generated_metrics_test.go | 1 + .../internal/metadata/generated_config.go | 14 +++++ .../metadata/generated_metrics_test.go | 1 + .../internal/metadata/generated_config.go | 14 +++++ .../metadata/generated_metrics_test.go | 1 + .../internal/metadata/generated_config.go | 14 +++++ .../metadata/generated_metrics_test.go | 1 + .../internal/metadata/generated_config.go | 14 +++++ .../metadata/generated_metrics_test.go | 1 + .../internal/metadata/generated_config.go | 14 +++++ .../metadata/generated_metrics_test.go | 1 + .../internal/metadata/generated_config.go | 14 +++++ .../metadata/generated_metrics_test.go | 1 + receiver/saphanareceiver/config_test.go | 2 +- .../internal/metadata/generated_config.go | 14 +++++ .../metadata/generated_metrics_test.go | 1 + receiver/snowflakereceiver/config_test.go | 2 +- .../internal/metadata/generated_config.go | 14 +++++ .../metadata/generated_metrics_test.go | 1 + .../metadata/generated_metrics_test.go | 1 + receiver/sqlserverreceiver/config_test.go | 6 ++- .../internal/metadata/generated_config.go | 14 +++++ .../metadata/generated_metrics_test.go | 1 + .../internal/metadata/generated_config.go | 14 +++++ .../metadata/generated_metrics_test.go | 1 + receiver/vcenterreceiver/config_test.go | 2 +- .../internal/metadata/generated_config.go | 14 +++++ .../metadata/generated_metrics_test.go | 1 + .../internal/metadata/generated_config.go | 14 +++++ .../metadata/generated_metrics_test.go | 1 + 113 files changed, 1017 insertions(+), 37 deletions(-) create mode 100755 .chloggen/main-mdatagen-resource-warnings.yaml diff --git a/.chloggen/main-mdatagen-resource-warnings.yaml b/.chloggen/main-mdatagen-resource-warnings.yaml new file mode 100755 index 000000000000..919aaaa42166 --- /dev/null +++ b/.chloggen/main-mdatagen-resource-warnings.yaml @@ -0,0 +1,27 @@ +# Use this changelog template to create an entry for release notes. + +# One of 'breaking', 'deprecation', 'new_component', 'enhancement', 'bug_fix' +change_type: enhancement + +# The name of the component, or a single word describing the area of concern, (e.g. filelogreceiver) +component: mdatagen + +# A brief description of the change. Surround your text with quotes ("") if it needs to start with a backtick (`). +note: "allows adding warning section to resource_attribute configuration" + +# Mandatory: One or more tracking issues related to the change. You can use the PR number here if no issue exists. +issues: [19174] + +# (Optional) One or more lines of additional information to render under the primary note. +# These lines will be padded with 2 spaces and then inserted directly into the document. +# Use pipe (|) for multiline entries. +subtext: + +# If your change doesn't affect end users or the exported elements of any package, +# you should instead start your pull request title with [chore] or use the "Skip Changelog" label. +# Optional: The change log or logs in which this entry should be included. +# e.g. '[user]' or '[user, api]' +# Include 'user' if the change is relevant to end users. +# Include 'api' if there is a change to a library API. +# Default: '[user]' +change_logs: [api] diff --git a/cmd/mdatagen/documentation.md b/cmd/mdatagen/documentation.md index b1ddc15ff435..1955e0815351 100644 --- a/cmd/mdatagen/documentation.md +++ b/cmd/mdatagen/documentation.md @@ -91,3 +91,6 @@ metrics: | slice.resource.attr | Resource attribute with a slice value. | Any Slice | true | | string.enum.resource.attr | Resource attribute with a known set of string values. | Str: ``one``, ``two`` | true | | string.resource.attr | Resource attribute with any string value. | Any Str | true | +| string.resource.attr_disable_warning | Resource attribute with any string value. | Any Str | true | +| string.resource.attr_remove_warning | Resource attribute with any string value. | Any Str | false | +| string.resource.attr_to_be_removed | Resource attribute with any string value. | Any Str | true | diff --git a/cmd/mdatagen/internal/metadata/generated_config.go b/cmd/mdatagen/internal/metadata/generated_config.go index 6d1df6b6cb32..ac4e46cd1785 100644 --- a/cmd/mdatagen/internal/metadata/generated_config.go +++ b/cmd/mdatagen/internal/metadata/generated_config.go @@ -51,15 +51,32 @@ func DefaultMetricsConfig() MetricsConfig { // ResourceAttributeConfig provides common config for a particular resource attribute. type ResourceAttributeConfig struct { Enabled bool `mapstructure:"enabled"` + + enabledSetByUser bool +} + +func (rac *ResourceAttributeConfig) Unmarshal(parser *confmap.Conf) error { + if parser == nil { + return nil + } + err := parser.Unmarshal(rac, confmap.WithErrorUnused()) + if err != nil { + return err + } + rac.enabledSetByUser = parser.IsSet("enabled") + return nil } // ResourceAttributesConfig provides config for file resource attributes. type ResourceAttributesConfig struct { - MapResourceAttr ResourceAttributeConfig `mapstructure:"map.resource.attr"` - OptionalResourceAttr ResourceAttributeConfig `mapstructure:"optional.resource.attr"` - SliceResourceAttr ResourceAttributeConfig `mapstructure:"slice.resource.attr"` - StringEnumResourceAttr ResourceAttributeConfig `mapstructure:"string.enum.resource.attr"` - StringResourceAttr ResourceAttributeConfig `mapstructure:"string.resource.attr"` + MapResourceAttr ResourceAttributeConfig `mapstructure:"map.resource.attr"` + OptionalResourceAttr ResourceAttributeConfig `mapstructure:"optional.resource.attr"` + SliceResourceAttr ResourceAttributeConfig `mapstructure:"slice.resource.attr"` + StringEnumResourceAttr ResourceAttributeConfig `mapstructure:"string.enum.resource.attr"` + StringResourceAttr ResourceAttributeConfig `mapstructure:"string.resource.attr"` + StringResourceAttrDisableWarning ResourceAttributeConfig `mapstructure:"string.resource.attr_disable_warning"` + StringResourceAttrRemoveWarning ResourceAttributeConfig `mapstructure:"string.resource.attr_remove_warning"` + StringResourceAttrToBeRemoved ResourceAttributeConfig `mapstructure:"string.resource.attr_to_be_removed"` } func DefaultResourceAttributesConfig() ResourceAttributesConfig { @@ -79,6 +96,15 @@ func DefaultResourceAttributesConfig() ResourceAttributesConfig { StringResourceAttr: ResourceAttributeConfig{ Enabled: true, }, + StringResourceAttrDisableWarning: ResourceAttributeConfig{ + Enabled: true, + }, + StringResourceAttrRemoveWarning: ResourceAttributeConfig{ + Enabled: false, + }, + StringResourceAttrToBeRemoved: ResourceAttributeConfig{ + Enabled: true, + }, } } diff --git a/cmd/mdatagen/internal/metadata/generated_config_test.go b/cmd/mdatagen/internal/metadata/generated_config_test.go index 7a5c4c8efeac..fd755c25eab3 100644 --- a/cmd/mdatagen/internal/metadata/generated_config_test.go +++ b/cmd/mdatagen/internal/metadata/generated_config_test.go @@ -32,11 +32,14 @@ func TestMetricsBuilderConfig(t *testing.T) { OptionalMetricEmptyUnit: MetricConfig{Enabled: true}, }, ResourceAttributes: ResourceAttributesConfig{ - MapResourceAttr: ResourceAttributeConfig{Enabled: true}, - OptionalResourceAttr: ResourceAttributeConfig{Enabled: true}, - SliceResourceAttr: ResourceAttributeConfig{Enabled: true}, - StringEnumResourceAttr: ResourceAttributeConfig{Enabled: true}, - StringResourceAttr: ResourceAttributeConfig{Enabled: true}, + MapResourceAttr: ResourceAttributeConfig{Enabled: true}, + OptionalResourceAttr: ResourceAttributeConfig{Enabled: true}, + SliceResourceAttr: ResourceAttributeConfig{Enabled: true}, + StringEnumResourceAttr: ResourceAttributeConfig{Enabled: true}, + StringResourceAttr: ResourceAttributeConfig{Enabled: true}, + StringResourceAttrDisableWarning: ResourceAttributeConfig{Enabled: true}, + StringResourceAttrRemoveWarning: ResourceAttributeConfig{Enabled: true}, + StringResourceAttrToBeRemoved: ResourceAttributeConfig{Enabled: true}, }, }, }, @@ -50,11 +53,14 @@ func TestMetricsBuilderConfig(t *testing.T) { OptionalMetricEmptyUnit: MetricConfig{Enabled: false}, }, ResourceAttributes: ResourceAttributesConfig{ - MapResourceAttr: ResourceAttributeConfig{Enabled: false}, - OptionalResourceAttr: ResourceAttributeConfig{Enabled: false}, - SliceResourceAttr: ResourceAttributeConfig{Enabled: false}, - StringEnumResourceAttr: ResourceAttributeConfig{Enabled: false}, - StringResourceAttr: ResourceAttributeConfig{Enabled: false}, + MapResourceAttr: ResourceAttributeConfig{Enabled: false}, + OptionalResourceAttr: ResourceAttributeConfig{Enabled: false}, + SliceResourceAttr: ResourceAttributeConfig{Enabled: false}, + StringEnumResourceAttr: ResourceAttributeConfig{Enabled: false}, + StringResourceAttr: ResourceAttributeConfig{Enabled: false}, + StringResourceAttrDisableWarning: ResourceAttributeConfig{Enabled: false}, + StringResourceAttrRemoveWarning: ResourceAttributeConfig{Enabled: false}, + StringResourceAttrToBeRemoved: ResourceAttributeConfig{Enabled: false}, }, }, }, @@ -91,21 +97,27 @@ func TestResourceAttributesConfig(t *testing.T) { { name: "all_set", want: ResourceAttributesConfig{ - MapResourceAttr: ResourceAttributeConfig{Enabled: true}, - OptionalResourceAttr: ResourceAttributeConfig{Enabled: true}, - SliceResourceAttr: ResourceAttributeConfig{Enabled: true}, - StringEnumResourceAttr: ResourceAttributeConfig{Enabled: true}, - StringResourceAttr: ResourceAttributeConfig{Enabled: true}, + MapResourceAttr: ResourceAttributeConfig{Enabled: true}, + OptionalResourceAttr: ResourceAttributeConfig{Enabled: true}, + SliceResourceAttr: ResourceAttributeConfig{Enabled: true}, + StringEnumResourceAttr: ResourceAttributeConfig{Enabled: true}, + StringResourceAttr: ResourceAttributeConfig{Enabled: true}, + StringResourceAttrDisableWarning: ResourceAttributeConfig{Enabled: true}, + StringResourceAttrRemoveWarning: ResourceAttributeConfig{Enabled: true}, + StringResourceAttrToBeRemoved: ResourceAttributeConfig{Enabled: true}, }, }, { name: "none_set", want: ResourceAttributesConfig{ - MapResourceAttr: ResourceAttributeConfig{Enabled: false}, - OptionalResourceAttr: ResourceAttributeConfig{Enabled: false}, - SliceResourceAttr: ResourceAttributeConfig{Enabled: false}, - StringEnumResourceAttr: ResourceAttributeConfig{Enabled: false}, - StringResourceAttr: ResourceAttributeConfig{Enabled: false}, + MapResourceAttr: ResourceAttributeConfig{Enabled: false}, + OptionalResourceAttr: ResourceAttributeConfig{Enabled: false}, + SliceResourceAttr: ResourceAttributeConfig{Enabled: false}, + StringEnumResourceAttr: ResourceAttributeConfig{Enabled: false}, + StringResourceAttr: ResourceAttributeConfig{Enabled: false}, + StringResourceAttrDisableWarning: ResourceAttributeConfig{Enabled: false}, + StringResourceAttrRemoveWarning: ResourceAttributeConfig{Enabled: false}, + StringResourceAttrToBeRemoved: ResourceAttributeConfig{Enabled: false}, }, }, } diff --git a/cmd/mdatagen/internal/metadata/generated_metrics.go b/cmd/mdatagen/internal/metadata/generated_metrics.go index ef3861c97151..a52195c69df9 100644 --- a/cmd/mdatagen/internal/metadata/generated_metrics.go +++ b/cmd/mdatagen/internal/metadata/generated_metrics.go @@ -291,6 +291,15 @@ func NewMetricsBuilder(mbc MetricsBuilderConfig, settings receiver.CreateSetting if mbc.Metrics.OptionalMetricEmptyUnit.enabledSetByUser { settings.Logger.Warn("[WARNING] `optional.metric.empty_unit` should not be configured: This metric is deprecated and will be removed soon.") } + if !mbc.ResourceAttributes.StringResourceAttrDisableWarning.enabledSetByUser { + settings.Logger.Warn("[WARNING] Please set `enabled` field explicitly for `string.resource.attr_disable_warning`: This resource_attribute will be disabled by default soon.") + } + if mbc.ResourceAttributes.StringResourceAttrRemoveWarning.enabledSetByUser { + settings.Logger.Warn("[WARNING] `string.resource.attr_remove_warning` should not be configured: This resource_attribute is deprecated and will be removed soon.") + } + if mbc.ResourceAttributes.StringResourceAttrToBeRemoved.Enabled { + settings.Logger.Warn("[WARNING] `string.resource.attr_to_be_removed` should not be enabled: This resource_attribute is deprecated and will be removed soon.") + } mb := &MetricsBuilder{ config: mbc, startTime: pcommon.NewTimestampFromTime(time.Now()), diff --git a/cmd/mdatagen/internal/metadata/generated_metrics_test.go b/cmd/mdatagen/internal/metadata/generated_metrics_test.go index a092330ae507..dc265beca6d5 100644 --- a/cmd/mdatagen/internal/metadata/generated_metrics_test.go +++ b/cmd/mdatagen/internal/metadata/generated_metrics_test.go @@ -65,6 +65,19 @@ func TestMetricsBuilder(t *testing.T) { assert.Equal(t, "[WARNING] `optional.metric.empty_unit` should not be configured: This metric is deprecated and will be removed soon.", observedLogs.All()[expectedWarnings].Message) expectedWarnings++ } + if test.configSet == testSetDefault { + assert.Equal(t, "[WARNING] Please set `enabled` field explicitly for `string.resource.attr_disable_warning`: This resource_attribute will be disabled by default soon.", observedLogs.All()[expectedWarnings].Message) + expectedWarnings++ + } + if test.configSet == testSetAll || test.configSet == testSetNone { + assert.Equal(t, "[WARNING] `string.resource.attr_remove_warning` should not be configured: This resource_attribute is deprecated and will be removed soon.", observedLogs.All()[expectedWarnings].Message) + expectedWarnings++ + } + if test.configSet == testSetDefault || test.configSet == testSetAll { + assert.Equal(t, "[WARNING] `string.resource.attr_to_be_removed` should not be enabled: This resource_attribute is deprecated and will be removed soon.", observedLogs.All()[expectedWarnings].Message) + expectedWarnings++ + } + assert.Equal(t, expectedWarnings, observedLogs.Len()) defaultMetricsCount := 0 @@ -90,6 +103,9 @@ func TestMetricsBuilder(t *testing.T) { rb.SetSliceResourceAttr([]any{"slice.resource.attr-item1", "slice.resource.attr-item2"}) rb.SetStringEnumResourceAttrOne() rb.SetStringResourceAttr("string.resource.attr-val") + rb.SetStringResourceAttrDisableWarning("string.resource.attr_disable_warning-val") + rb.SetStringResourceAttrRemoveWarning("string.resource.attr_remove_warning-val") + rb.SetStringResourceAttrToBeRemoved("string.resource.attr_to_be_removed-val") res := rb.Emit() metrics := mb.Emit(WithResource(res)) diff --git a/cmd/mdatagen/internal/metadata/generated_resource.go b/cmd/mdatagen/internal/metadata/generated_resource.go index 7f22618828fc..da69b3c08411 100644 --- a/cmd/mdatagen/internal/metadata/generated_resource.go +++ b/cmd/mdatagen/internal/metadata/generated_resource.go @@ -63,6 +63,27 @@ func (rb *ResourceBuilder) SetStringResourceAttr(val string) { } } +// SetStringResourceAttrDisableWarning sets provided value as "string.resource.attr_disable_warning" attribute. +func (rb *ResourceBuilder) SetStringResourceAttrDisableWarning(val string) { + if rb.config.StringResourceAttrDisableWarning.Enabled { + rb.res.Attributes().PutStr("string.resource.attr_disable_warning", val) + } +} + +// SetStringResourceAttrRemoveWarning sets provided value as "string.resource.attr_remove_warning" attribute. +func (rb *ResourceBuilder) SetStringResourceAttrRemoveWarning(val string) { + if rb.config.StringResourceAttrRemoveWarning.Enabled { + rb.res.Attributes().PutStr("string.resource.attr_remove_warning", val) + } +} + +// SetStringResourceAttrToBeRemoved sets provided value as "string.resource.attr_to_be_removed" attribute. +func (rb *ResourceBuilder) SetStringResourceAttrToBeRemoved(val string) { + if rb.config.StringResourceAttrToBeRemoved.Enabled { + rb.res.Attributes().PutStr("string.resource.attr_to_be_removed", val) + } +} + // Emit returns the built resource and resets the internal builder state. func (rb *ResourceBuilder) Emit() pcommon.Resource { r := rb.res diff --git a/cmd/mdatagen/internal/metadata/generated_resource_test.go b/cmd/mdatagen/internal/metadata/generated_resource_test.go index 1472d8893b57..c0bde40a0870 100644 --- a/cmd/mdatagen/internal/metadata/generated_resource_test.go +++ b/cmd/mdatagen/internal/metadata/generated_resource_test.go @@ -18,15 +18,18 @@ func TestResourceBuilder(t *testing.T) { rb.SetSliceResourceAttr([]any{"slice.resource.attr-item1", "slice.resource.attr-item2"}) rb.SetStringEnumResourceAttrOne() rb.SetStringResourceAttr("string.resource.attr-val") + rb.SetStringResourceAttrDisableWarning("string.resource.attr_disable_warning-val") + rb.SetStringResourceAttrRemoveWarning("string.resource.attr_remove_warning-val") + rb.SetStringResourceAttrToBeRemoved("string.resource.attr_to_be_removed-val") res := rb.Emit() assert.Equal(t, 0, rb.Emit().Attributes().Len()) // Second call should return empty Resource switch test { case "default": - assert.Equal(t, 4, res.Attributes().Len()) + assert.Equal(t, 6, res.Attributes().Len()) case "all_set": - assert.Equal(t, 5, res.Attributes().Len()) + assert.Equal(t, 8, res.Attributes().Len()) case "none_set": assert.Equal(t, 0, res.Attributes().Len()) return @@ -59,6 +62,21 @@ func TestResourceBuilder(t *testing.T) { if ok { assert.EqualValues(t, "string.resource.attr-val", val.Str()) } + val, ok = res.Attributes().Get("string.resource.attr_disable_warning") + assert.True(t, ok) + if ok { + assert.EqualValues(t, "string.resource.attr_disable_warning-val", val.Str()) + } + val, ok = res.Attributes().Get("string.resource.attr_remove_warning") + assert.Equal(t, test == "all_set", ok) + if ok { + assert.EqualValues(t, "string.resource.attr_remove_warning-val", val.Str()) + } + val, ok = res.Attributes().Get("string.resource.attr_to_be_removed") + assert.True(t, ok) + if ok { + assert.EqualValues(t, "string.resource.attr_to_be_removed-val", val.Str()) + } }) } } diff --git a/cmd/mdatagen/internal/metadata/testdata/config.yaml b/cmd/mdatagen/internal/metadata/testdata/config.yaml index 8fde806bad8f..8283dc2dd70b 100644 --- a/cmd/mdatagen/internal/metadata/testdata/config.yaml +++ b/cmd/mdatagen/internal/metadata/testdata/config.yaml @@ -20,6 +20,12 @@ all_set: enabled: true string.resource.attr: enabled: true + string.resource.attr_disable_warning: + enabled: true + string.resource.attr_remove_warning: + enabled: true + string.resource.attr_to_be_removed: + enabled: true none_set: metrics: default.metric: @@ -41,3 +47,9 @@ none_set: enabled: false string.resource.attr: enabled: false + string.resource.attr_disable_warning: + enabled: false + string.resource.attr_remove_warning: + enabled: false + string.resource.attr_to_be_removed: + enabled: false diff --git a/cmd/mdatagen/loader.go b/cmd/mdatagen/loader.go index 24a10fe51f39..19add14defb5 100644 --- a/cmd/mdatagen/loader.go +++ b/cmd/mdatagen/loader.go @@ -141,11 +141,11 @@ func (m metric) Data() MetricData { } type warnings struct { - // A warning that will be displayed if the metric is enabled in user config. + // A warning that will be displayed if the field is enabled in user config. IfEnabled string `mapstructure:"if_enabled"` // A warning that will be displayed if `enabled` field is not set explicitly in user config. IfEnabledNotSet string `mapstructure:"if_enabled_not_set"` - // A warning that will be displayed if the metrics is configured by user in any way. + // A warning that will be displayed if the field is configured by user in any way. IfConfigured string `mapstructure:"if_configured"` } @@ -162,6 +162,8 @@ type attribute struct { Type ValueType `mapstructure:"type"` // FullName is the attribute name populated from the map key. FullName attributeName `mapstructure:"-"` + // Warnings that will be shown to user under specified conditions. + Warnings warnings `mapstructure:"warnings"` } // Name returns actual name of the attribute that is set on the metric after applying NameOverride. diff --git a/cmd/mdatagen/loader_test.go b/cmd/mdatagen/loader_test.go index 2d8b27757157..4af1bad52339 100644 --- a/cmd/mdatagen/loader_test.go +++ b/cmd/mdatagen/loader_test.go @@ -74,7 +74,41 @@ func Test_loadMetadata(t *testing.T) { }, FullName: "map.resource.attr", }, + "string.resource.attr_disable_warning": { + Description: "Resource attribute with any string value.", + Warnings: warnings{ + IfEnabledNotSet: "This resource_attribute will be disabled by default soon.", + }, + Enabled: true, + Type: ValueType{ + ValueType: pcommon.ValueTypeStr, + }, + FullName: "string.resource.attr_disable_warning", + }, + "string.resource.attr_remove_warning": { + Description: "Resource attribute with any string value.", + Warnings: warnings{ + IfConfigured: "This resource_attribute is deprecated and will be removed soon.", + }, + Enabled: false, + Type: ValueType{ + ValueType: pcommon.ValueTypeStr, + }, + FullName: "string.resource.attr_remove_warning", + }, + "string.resource.attr_to_be_removed": { + Description: "Resource attribute with any string value.", + Warnings: warnings{ + IfEnabled: "This resource_attribute is deprecated and will be removed soon.", + }, + Enabled: true, + Type: ValueType{ + ValueType: pcommon.ValueTypeStr, + }, + FullName: "string.resource.attr_to_be_removed", + }, }, + Attributes: map[attributeName]attribute{ "enum_attr": { Description: "Attribute with a known set of string values.", diff --git a/cmd/mdatagen/metadata-sample.yaml b/cmd/mdatagen/metadata-sample.yaml index 79112733d7ff..b9a5f8f6c908 100644 --- a/cmd/mdatagen/metadata-sample.yaml +++ b/cmd/mdatagen/metadata-sample.yaml @@ -41,6 +41,27 @@ resource_attributes: type: map enabled: true + string.resource.attr_disable_warning: + description: Resource attribute with any string value. + type: string + enabled: true + warnings: + if_enabled_not_set: This resource_attribute will be disabled by default soon. + + string.resource.attr_remove_warning: + description: Resource attribute with any string value. + type: string + enabled: false + warnings: + if_configured: This resource_attribute is deprecated and will be removed soon. + + string.resource.attr_to_be_removed: + description: Resource attribute with any string value. + type: string + enabled: true + warnings: + if_enabled: This resource_attribute is deprecated and will be removed soon. + attributes: string_attr: description: Attribute with any string value. diff --git a/cmd/mdatagen/metadata-schema.yaml b/cmd/mdatagen/metadata-schema.yaml index a75f0cb36644..539a9527a5d1 100644 --- a/cmd/mdatagen/metadata-schema.yaml +++ b/cmd/mdatagen/metadata-schema.yaml @@ -40,6 +40,18 @@ resource_attributes: enum: [string] # Required: attribute value type. type: + # Optional: warnings that will be shown to user under specified conditions. + warnings: + # A warning that will be displayed if the resource_attribute is enabled in user config. + # Should be used for deprecated default resource_attributes that will be removed soon. + if_enabled: + # A warning that will be displayed if `enabled` field is not set explicitly in user config. + # Should be used for resource_attributes that will be turned from default to optional or vice versa. + if_enabled_not_set: + # A warning that will be displayed if the resource_attribute is configured by user in any way. + # Should be used for deprecated optional resource_attributes that will be removed soon. + if_configured: + # Optional: map of attribute definitions with the key being the attribute name and value # being described below. diff --git a/cmd/mdatagen/templates/config.go.tmpl b/cmd/mdatagen/templates/config.go.tmpl index e0d8be2b1303..02f697883345 100644 --- a/cmd/mdatagen/templates/config.go.tmpl +++ b/cmd/mdatagen/templates/config.go.tmpl @@ -2,8 +2,11 @@ package {{ .Package }} -{{ if .Metrics -}} +{{ if or .Metrics .ResourceAttributes -}} import "go.opentelemetry.io/collector/confmap" +{{- end }} + +{{ if .Metrics -}} // MetricConfig provides common config for a particular metric. type MetricConfig struct { @@ -46,6 +49,20 @@ func DefaultMetricsConfig() MetricsConfig { // ResourceAttributeConfig provides common config for a particular resource attribute. type ResourceAttributeConfig struct { Enabled bool `mapstructure:"enabled"` + + enabledSetByUser bool +} + +func (rac *ResourceAttributeConfig) Unmarshal(parser *confmap.Conf) error { + if parser == nil { + return nil + } + err := parser.Unmarshal(rac, confmap.WithErrorUnused()) + if err != nil { + return err + } + rac.enabledSetByUser = parser.IsSet("enabled") + return nil } // ResourceAttributesConfig provides config for {{ .Type }} resource attributes. diff --git a/cmd/mdatagen/templates/metrics.go.tmpl b/cmd/mdatagen/templates/metrics.go.tmpl index d8646f5824f8..c76623c40fcc 100644 --- a/cmd/mdatagen/templates/metrics.go.tmpl +++ b/cmd/mdatagen/templates/metrics.go.tmpl @@ -165,6 +165,23 @@ func NewMetricsBuilder(mbc MetricsBuilderConfig, settings receiver.CreateSetting } {{- end }} {{- end }} + {{- range $name, $attr := .ResourceAttributes }} + {{- if $attr.Warnings.IfEnabled }} + if mbc.ResourceAttributes.{{ $name.Render }}.Enabled { + settings.Logger.Warn("[WARNING] `{{ $name }}` should not be enabled: {{ $attr.Warnings.IfEnabled }}") + } + {{- end }} + {{- if $attr.Warnings.IfEnabledNotSet }} + if !mbc.ResourceAttributes.{{ $name.Render }}.enabledSetByUser { + settings.Logger.Warn("[WARNING] Please set `enabled` field explicitly for `{{ $name }}`: {{ $attr.Warnings.IfEnabledNotSet }}") + } + {{- end }} + {{- if $attr.Warnings.IfConfigured }} + if mbc.ResourceAttributes.{{ $name.Render }}.enabledSetByUser { + settings.Logger.Warn("[WARNING] `{{ $name }}` should not be configured: {{ $attr.Warnings.IfConfigured }}") + } + {{- end }} + {{- end }} mb := &MetricsBuilder{ config: mbc, startTime: pcommon.NewTimestampFromTime(time.Now()), diff --git a/cmd/mdatagen/templates/metrics_test.go.tmpl b/cmd/mdatagen/templates/metrics_test.go.tmpl index 58695ab9efef..bf7b09d05a99 100644 --- a/cmd/mdatagen/templates/metrics_test.go.tmpl +++ b/cmd/mdatagen/templates/metrics_test.go.tmpl @@ -70,6 +70,28 @@ func TestMetricsBuilder(t *testing.T) { } {{- end }} {{- end }} + {{- range $name, $attr := .ResourceAttributes }} + {{- if and $attr.Enabled $attr.Warnings.IfEnabled }} + if test.configSet == testSetDefault || test.configSet == testSetAll { + assert.Equal(t, "[WARNING] `{{ $name }}` should not be enabled: {{ $attr.Warnings.IfEnabled }}", observedLogs.All()[expectedWarnings].Message) + expectedWarnings++ + } + {{- end }} + {{- if $attr.Warnings.IfEnabledNotSet }} + if test.configSet == testSetDefault { + assert.Equal(t, "[WARNING] Please set `enabled` field explicitly for `{{ $name }}`: {{ $attr.Warnings.IfEnabledNotSet }}", observedLogs.All()[expectedWarnings].Message) + expectedWarnings++ + } + {{- end }} + {{- if $attr.Warnings.IfConfigured }} + if test.configSet == testSetAll || test.configSet == testSetNone { + assert.Equal(t, "[WARNING] `{{ $name }}` should not be configured: {{ $attr.Warnings.IfConfigured }}", observedLogs.All()[expectedWarnings].Message) + expectedWarnings++ + } + {{- end }} + {{- end }} + + assert.Equal(t, expectedWarnings, observedLogs.Len()) defaultMetricsCount := 0 diff --git a/processor/k8sattributesprocessor/internal/metadata/generated_config.go b/processor/k8sattributesprocessor/internal/metadata/generated_config.go index 5a56421b322b..3f339aa2575a 100644 --- a/processor/k8sattributesprocessor/internal/metadata/generated_config.go +++ b/processor/k8sattributesprocessor/internal/metadata/generated_config.go @@ -2,9 +2,25 @@ package metadata +import "go.opentelemetry.io/collector/confmap" + // ResourceAttributeConfig provides common config for a particular resource attribute. type ResourceAttributeConfig struct { Enabled bool `mapstructure:"enabled"` + + enabledSetByUser bool +} + +func (rac *ResourceAttributeConfig) Unmarshal(parser *confmap.Conf) error { + if parser == nil { + return nil + } + err := parser.Unmarshal(rac, confmap.WithErrorUnused()) + if err != nil { + return err + } + rac.enabledSetByUser = parser.IsSet("enabled") + return nil } // ResourceAttributesConfig provides config for k8sattributes resource attributes. diff --git a/processor/resourcedetectionprocessor/config_test.go b/processor/resourcedetectionprocessor/config_test.go index b1b8c97e2bcb..b7ea82f64dbe 100644 --- a/processor/resourcedetectionprocessor/config_test.go +++ b/processor/resourcedetectionprocessor/config_test.go @@ -152,7 +152,7 @@ func TestLoadConfig(t *testing.T) { return } assert.NoError(t, component.ValidateConfig(cfg)) - assert.Equal(t, tt.expected, cfg) + assert.EqualExportedValues(t, *tt.expected.(*Config), *cfg.(*Config)) }) } } diff --git a/processor/resourcedetectionprocessor/internal/aws/ec2/internal/metadata/generated_config.go b/processor/resourcedetectionprocessor/internal/aws/ec2/internal/metadata/generated_config.go index 64115c49f2ad..d8fb1a2cea79 100644 --- a/processor/resourcedetectionprocessor/internal/aws/ec2/internal/metadata/generated_config.go +++ b/processor/resourcedetectionprocessor/internal/aws/ec2/internal/metadata/generated_config.go @@ -2,9 +2,25 @@ package metadata +import "go.opentelemetry.io/collector/confmap" + // ResourceAttributeConfig provides common config for a particular resource attribute. type ResourceAttributeConfig struct { Enabled bool `mapstructure:"enabled"` + + enabledSetByUser bool +} + +func (rac *ResourceAttributeConfig) Unmarshal(parser *confmap.Conf) error { + if parser == nil { + return nil + } + err := parser.Unmarshal(rac, confmap.WithErrorUnused()) + if err != nil { + return err + } + rac.enabledSetByUser = parser.IsSet("enabled") + return nil } // ResourceAttributesConfig provides config for resourcedetectionprocessor/ec2 resource attributes. diff --git a/processor/resourcedetectionprocessor/internal/aws/ecs/internal/metadata/generated_config.go b/processor/resourcedetectionprocessor/internal/aws/ecs/internal/metadata/generated_config.go index dcf69faf3e3e..beec690c85d3 100644 --- a/processor/resourcedetectionprocessor/internal/aws/ecs/internal/metadata/generated_config.go +++ b/processor/resourcedetectionprocessor/internal/aws/ecs/internal/metadata/generated_config.go @@ -2,9 +2,25 @@ package metadata +import "go.opentelemetry.io/collector/confmap" + // ResourceAttributeConfig provides common config for a particular resource attribute. type ResourceAttributeConfig struct { Enabled bool `mapstructure:"enabled"` + + enabledSetByUser bool +} + +func (rac *ResourceAttributeConfig) Unmarshal(parser *confmap.Conf) error { + if parser == nil { + return nil + } + err := parser.Unmarshal(rac, confmap.WithErrorUnused()) + if err != nil { + return err + } + rac.enabledSetByUser = parser.IsSet("enabled") + return nil } // ResourceAttributesConfig provides config for resourcedetectionprocessor/ecs resource attributes. diff --git a/processor/resourcedetectionprocessor/internal/aws/eks/internal/metadata/generated_config.go b/processor/resourcedetectionprocessor/internal/aws/eks/internal/metadata/generated_config.go index 3cc9b61f02b7..47fbd55571ca 100644 --- a/processor/resourcedetectionprocessor/internal/aws/eks/internal/metadata/generated_config.go +++ b/processor/resourcedetectionprocessor/internal/aws/eks/internal/metadata/generated_config.go @@ -2,9 +2,25 @@ package metadata +import "go.opentelemetry.io/collector/confmap" + // ResourceAttributeConfig provides common config for a particular resource attribute. type ResourceAttributeConfig struct { Enabled bool `mapstructure:"enabled"` + + enabledSetByUser bool +} + +func (rac *ResourceAttributeConfig) Unmarshal(parser *confmap.Conf) error { + if parser == nil { + return nil + } + err := parser.Unmarshal(rac, confmap.WithErrorUnused()) + if err != nil { + return err + } + rac.enabledSetByUser = parser.IsSet("enabled") + return nil } // ResourceAttributesConfig provides config for resourcedetectionprocessor/eks resource attributes. diff --git a/processor/resourcedetectionprocessor/internal/aws/elasticbeanstalk/internal/metadata/generated_config.go b/processor/resourcedetectionprocessor/internal/aws/elasticbeanstalk/internal/metadata/generated_config.go index f8dbd4bc88fa..7cfe569aaee3 100644 --- a/processor/resourcedetectionprocessor/internal/aws/elasticbeanstalk/internal/metadata/generated_config.go +++ b/processor/resourcedetectionprocessor/internal/aws/elasticbeanstalk/internal/metadata/generated_config.go @@ -2,9 +2,25 @@ package metadata +import "go.opentelemetry.io/collector/confmap" + // ResourceAttributeConfig provides common config for a particular resource attribute. type ResourceAttributeConfig struct { Enabled bool `mapstructure:"enabled"` + + enabledSetByUser bool +} + +func (rac *ResourceAttributeConfig) Unmarshal(parser *confmap.Conf) error { + if parser == nil { + return nil + } + err := parser.Unmarshal(rac, confmap.WithErrorUnused()) + if err != nil { + return err + } + rac.enabledSetByUser = parser.IsSet("enabled") + return nil } // ResourceAttributesConfig provides config for resourcedetectionprocessor/elastic_beanstalk resource attributes. diff --git a/processor/resourcedetectionprocessor/internal/aws/lambda/internal/metadata/generated_config.go b/processor/resourcedetectionprocessor/internal/aws/lambda/internal/metadata/generated_config.go index 99d8a7a44a20..b9ffb0212ce0 100644 --- a/processor/resourcedetectionprocessor/internal/aws/lambda/internal/metadata/generated_config.go +++ b/processor/resourcedetectionprocessor/internal/aws/lambda/internal/metadata/generated_config.go @@ -2,9 +2,25 @@ package metadata +import "go.opentelemetry.io/collector/confmap" + // ResourceAttributeConfig provides common config for a particular resource attribute. type ResourceAttributeConfig struct { Enabled bool `mapstructure:"enabled"` + + enabledSetByUser bool +} + +func (rac *ResourceAttributeConfig) Unmarshal(parser *confmap.Conf) error { + if parser == nil { + return nil + } + err := parser.Unmarshal(rac, confmap.WithErrorUnused()) + if err != nil { + return err + } + rac.enabledSetByUser = parser.IsSet("enabled") + return nil } // ResourceAttributesConfig provides config for resourcedetectionprocessor/lambda resource attributes. diff --git a/processor/resourcedetectionprocessor/internal/azure/aks/internal/metadata/generated_config.go b/processor/resourcedetectionprocessor/internal/azure/aks/internal/metadata/generated_config.go index c660a4bb8972..6a7887a80820 100644 --- a/processor/resourcedetectionprocessor/internal/azure/aks/internal/metadata/generated_config.go +++ b/processor/resourcedetectionprocessor/internal/azure/aks/internal/metadata/generated_config.go @@ -2,9 +2,25 @@ package metadata +import "go.opentelemetry.io/collector/confmap" + // ResourceAttributeConfig provides common config for a particular resource attribute. type ResourceAttributeConfig struct { Enabled bool `mapstructure:"enabled"` + + enabledSetByUser bool +} + +func (rac *ResourceAttributeConfig) Unmarshal(parser *confmap.Conf) error { + if parser == nil { + return nil + } + err := parser.Unmarshal(rac, confmap.WithErrorUnused()) + if err != nil { + return err + } + rac.enabledSetByUser = parser.IsSet("enabled") + return nil } // ResourceAttributesConfig provides config for resourcedetectionprocessor/aks resource attributes. diff --git a/processor/resourcedetectionprocessor/internal/azure/internal/metadata/generated_config.go b/processor/resourcedetectionprocessor/internal/azure/internal/metadata/generated_config.go index db0515e5acee..3832796ea4b8 100644 --- a/processor/resourcedetectionprocessor/internal/azure/internal/metadata/generated_config.go +++ b/processor/resourcedetectionprocessor/internal/azure/internal/metadata/generated_config.go @@ -2,9 +2,25 @@ package metadata +import "go.opentelemetry.io/collector/confmap" + // ResourceAttributeConfig provides common config for a particular resource attribute. type ResourceAttributeConfig struct { Enabled bool `mapstructure:"enabled"` + + enabledSetByUser bool +} + +func (rac *ResourceAttributeConfig) Unmarshal(parser *confmap.Conf) error { + if parser == nil { + return nil + } + err := parser.Unmarshal(rac, confmap.WithErrorUnused()) + if err != nil { + return err + } + rac.enabledSetByUser = parser.IsSet("enabled") + return nil } // ResourceAttributesConfig provides config for resourcedetectionprocessor/azure resource attributes. diff --git a/processor/resourcedetectionprocessor/internal/consul/internal/metadata/generated_config.go b/processor/resourcedetectionprocessor/internal/consul/internal/metadata/generated_config.go index 5d291cebf0fb..8f91743bae83 100644 --- a/processor/resourcedetectionprocessor/internal/consul/internal/metadata/generated_config.go +++ b/processor/resourcedetectionprocessor/internal/consul/internal/metadata/generated_config.go @@ -2,9 +2,25 @@ package metadata +import "go.opentelemetry.io/collector/confmap" + // ResourceAttributeConfig provides common config for a particular resource attribute. type ResourceAttributeConfig struct { Enabled bool `mapstructure:"enabled"` + + enabledSetByUser bool +} + +func (rac *ResourceAttributeConfig) Unmarshal(parser *confmap.Conf) error { + if parser == nil { + return nil + } + err := parser.Unmarshal(rac, confmap.WithErrorUnused()) + if err != nil { + return err + } + rac.enabledSetByUser = parser.IsSet("enabled") + return nil } // ResourceAttributesConfig provides config for resourcedetectionprocessor/consul resource attributes. diff --git a/processor/resourcedetectionprocessor/internal/docker/internal/metadata/generated_config.go b/processor/resourcedetectionprocessor/internal/docker/internal/metadata/generated_config.go index c7e4a7915906..bbf81951dfd8 100644 --- a/processor/resourcedetectionprocessor/internal/docker/internal/metadata/generated_config.go +++ b/processor/resourcedetectionprocessor/internal/docker/internal/metadata/generated_config.go @@ -2,9 +2,25 @@ package metadata +import "go.opentelemetry.io/collector/confmap" + // ResourceAttributeConfig provides common config for a particular resource attribute. type ResourceAttributeConfig struct { Enabled bool `mapstructure:"enabled"` + + enabledSetByUser bool +} + +func (rac *ResourceAttributeConfig) Unmarshal(parser *confmap.Conf) error { + if parser == nil { + return nil + } + err := parser.Unmarshal(rac, confmap.WithErrorUnused()) + if err != nil { + return err + } + rac.enabledSetByUser = parser.IsSet("enabled") + return nil } // ResourceAttributesConfig provides config for resourcedetectionprocessor/docker resource attributes. diff --git a/processor/resourcedetectionprocessor/internal/gcp/internal/metadata/generated_config.go b/processor/resourcedetectionprocessor/internal/gcp/internal/metadata/generated_config.go index b54064817018..d695d76c10bb 100644 --- a/processor/resourcedetectionprocessor/internal/gcp/internal/metadata/generated_config.go +++ b/processor/resourcedetectionprocessor/internal/gcp/internal/metadata/generated_config.go @@ -2,9 +2,25 @@ package metadata +import "go.opentelemetry.io/collector/confmap" + // ResourceAttributeConfig provides common config for a particular resource attribute. type ResourceAttributeConfig struct { Enabled bool `mapstructure:"enabled"` + + enabledSetByUser bool +} + +func (rac *ResourceAttributeConfig) Unmarshal(parser *confmap.Conf) error { + if parser == nil { + return nil + } + err := parser.Unmarshal(rac, confmap.WithErrorUnused()) + if err != nil { + return err + } + rac.enabledSetByUser = parser.IsSet("enabled") + return nil } // ResourceAttributesConfig provides config for resourcedetectionprocessor/gcp resource attributes. diff --git a/processor/resourcedetectionprocessor/internal/heroku/internal/metadata/generated_config.go b/processor/resourcedetectionprocessor/internal/heroku/internal/metadata/generated_config.go index b357b8208f42..c69f04242185 100644 --- a/processor/resourcedetectionprocessor/internal/heroku/internal/metadata/generated_config.go +++ b/processor/resourcedetectionprocessor/internal/heroku/internal/metadata/generated_config.go @@ -2,9 +2,25 @@ package metadata +import "go.opentelemetry.io/collector/confmap" + // ResourceAttributeConfig provides common config for a particular resource attribute. type ResourceAttributeConfig struct { Enabled bool `mapstructure:"enabled"` + + enabledSetByUser bool +} + +func (rac *ResourceAttributeConfig) Unmarshal(parser *confmap.Conf) error { + if parser == nil { + return nil + } + err := parser.Unmarshal(rac, confmap.WithErrorUnused()) + if err != nil { + return err + } + rac.enabledSetByUser = parser.IsSet("enabled") + return nil } // ResourceAttributesConfig provides config for resourcedetectionprocessor/heroku resource attributes. diff --git a/processor/resourcedetectionprocessor/internal/k8snode/internal/metadata/generated_config.go b/processor/resourcedetectionprocessor/internal/k8snode/internal/metadata/generated_config.go index bda7ff3d4555..3ff5de12051b 100644 --- a/processor/resourcedetectionprocessor/internal/k8snode/internal/metadata/generated_config.go +++ b/processor/resourcedetectionprocessor/internal/k8snode/internal/metadata/generated_config.go @@ -2,9 +2,25 @@ package metadata +import "go.opentelemetry.io/collector/confmap" + // ResourceAttributeConfig provides common config for a particular resource attribute. type ResourceAttributeConfig struct { Enabled bool `mapstructure:"enabled"` + + enabledSetByUser bool +} + +func (rac *ResourceAttributeConfig) Unmarshal(parser *confmap.Conf) error { + if parser == nil { + return nil + } + err := parser.Unmarshal(rac, confmap.WithErrorUnused()) + if err != nil { + return err + } + rac.enabledSetByUser = parser.IsSet("enabled") + return nil } // ResourceAttributesConfig provides config for resourcedetectionprocessor/k8snode resource attributes. diff --git a/processor/resourcedetectionprocessor/internal/openshift/internal/metadata/generated_config.go b/processor/resourcedetectionprocessor/internal/openshift/internal/metadata/generated_config.go index f11616c9b116..659071dff2eb 100644 --- a/processor/resourcedetectionprocessor/internal/openshift/internal/metadata/generated_config.go +++ b/processor/resourcedetectionprocessor/internal/openshift/internal/metadata/generated_config.go @@ -2,9 +2,25 @@ package metadata +import "go.opentelemetry.io/collector/confmap" + // ResourceAttributeConfig provides common config for a particular resource attribute. type ResourceAttributeConfig struct { Enabled bool `mapstructure:"enabled"` + + enabledSetByUser bool +} + +func (rac *ResourceAttributeConfig) Unmarshal(parser *confmap.Conf) error { + if parser == nil { + return nil + } + err := parser.Unmarshal(rac, confmap.WithErrorUnused()) + if err != nil { + return err + } + rac.enabledSetByUser = parser.IsSet("enabled") + return nil } // ResourceAttributesConfig provides config for resourcedetectionprocessor/openshift resource attributes. diff --git a/processor/resourcedetectionprocessor/internal/system/internal/metadata/generated_config.go b/processor/resourcedetectionprocessor/internal/system/internal/metadata/generated_config.go index cb568878dcce..da7b6f2f8bfd 100644 --- a/processor/resourcedetectionprocessor/internal/system/internal/metadata/generated_config.go +++ b/processor/resourcedetectionprocessor/internal/system/internal/metadata/generated_config.go @@ -2,9 +2,25 @@ package metadata +import "go.opentelemetry.io/collector/confmap" + // ResourceAttributeConfig provides common config for a particular resource attribute. type ResourceAttributeConfig struct { Enabled bool `mapstructure:"enabled"` + + enabledSetByUser bool +} + +func (rac *ResourceAttributeConfig) Unmarshal(parser *confmap.Conf) error { + if parser == nil { + return nil + } + err := parser.Unmarshal(rac, confmap.WithErrorUnused()) + if err != nil { + return err + } + rac.enabledSetByUser = parser.IsSet("enabled") + return nil } // ResourceAttributesConfig provides config for resourcedetectionprocessor/system resource attributes. diff --git a/receiver/activedirectorydsreceiver/internal/metadata/generated_metrics_test.go b/receiver/activedirectorydsreceiver/internal/metadata/generated_metrics_test.go index cbc0f69b1343..2d38534a9c60 100644 --- a/receiver/activedirectorydsreceiver/internal/metadata/generated_metrics_test.go +++ b/receiver/activedirectorydsreceiver/internal/metadata/generated_metrics_test.go @@ -49,6 +49,7 @@ func TestMetricsBuilder(t *testing.T) { mb := NewMetricsBuilder(loadMetricsBuilderConfig(t, test.name), settings, WithStartTime(start)) expectedWarnings := 0 + assert.Equal(t, expectedWarnings, observedLogs.Len()) defaultMetricsCount := 0 diff --git a/receiver/aerospikereceiver/internal/metadata/generated_config.go b/receiver/aerospikereceiver/internal/metadata/generated_config.go index ea9f9bddd755..9dc7f59c6c51 100644 --- a/receiver/aerospikereceiver/internal/metadata/generated_config.go +++ b/receiver/aerospikereceiver/internal/metadata/generated_config.go @@ -91,6 +91,20 @@ func DefaultMetricsConfig() MetricsConfig { // ResourceAttributeConfig provides common config for a particular resource attribute. type ResourceAttributeConfig struct { Enabled bool `mapstructure:"enabled"` + + enabledSetByUser bool +} + +func (rac *ResourceAttributeConfig) Unmarshal(parser *confmap.Conf) error { + if parser == nil { + return nil + } + err := parser.Unmarshal(rac, confmap.WithErrorUnused()) + if err != nil { + return err + } + rac.enabledSetByUser = parser.IsSet("enabled") + return nil } // ResourceAttributesConfig provides config for aerospike resource attributes. diff --git a/receiver/aerospikereceiver/internal/metadata/generated_metrics_test.go b/receiver/aerospikereceiver/internal/metadata/generated_metrics_test.go index af22cae353d1..55d9df5c5cfd 100644 --- a/receiver/aerospikereceiver/internal/metadata/generated_metrics_test.go +++ b/receiver/aerospikereceiver/internal/metadata/generated_metrics_test.go @@ -49,6 +49,7 @@ func TestMetricsBuilder(t *testing.T) { mb := NewMetricsBuilder(loadMetricsBuilderConfig(t, test.name), settings, WithStartTime(start)) expectedWarnings := 0 + assert.Equal(t, expectedWarnings, observedLogs.Len()) defaultMetricsCount := 0 diff --git a/receiver/apachereceiver/internal/metadata/generated_config.go b/receiver/apachereceiver/internal/metadata/generated_config.go index 74c9818683f8..a5df14a113f5 100644 --- a/receiver/apachereceiver/internal/metadata/generated_config.go +++ b/receiver/apachereceiver/internal/metadata/generated_config.go @@ -83,6 +83,20 @@ func DefaultMetricsConfig() MetricsConfig { // ResourceAttributeConfig provides common config for a particular resource attribute. type ResourceAttributeConfig struct { Enabled bool `mapstructure:"enabled"` + + enabledSetByUser bool +} + +func (rac *ResourceAttributeConfig) Unmarshal(parser *confmap.Conf) error { + if parser == nil { + return nil + } + err := parser.Unmarshal(rac, confmap.WithErrorUnused()) + if err != nil { + return err + } + rac.enabledSetByUser = parser.IsSet("enabled") + return nil } // ResourceAttributesConfig provides config for apache resource attributes. diff --git a/receiver/apachereceiver/internal/metadata/generated_metrics_test.go b/receiver/apachereceiver/internal/metadata/generated_metrics_test.go index 00ac5eaf7063..cb8fab6b1e04 100644 --- a/receiver/apachereceiver/internal/metadata/generated_metrics_test.go +++ b/receiver/apachereceiver/internal/metadata/generated_metrics_test.go @@ -49,6 +49,7 @@ func TestMetricsBuilder(t *testing.T) { mb := NewMetricsBuilder(loadMetricsBuilderConfig(t, test.name), settings, WithStartTime(start)) expectedWarnings := 0 + assert.Equal(t, expectedWarnings, observedLogs.Len()) defaultMetricsCount := 0 diff --git a/receiver/apachesparkreceiver/internal/metadata/generated_config.go b/receiver/apachesparkreceiver/internal/metadata/generated_config.go index 36904b0ea422..60f15a4644c7 100644 --- a/receiver/apachesparkreceiver/internal/metadata/generated_config.go +++ b/receiver/apachesparkreceiver/internal/metadata/generated_config.go @@ -287,6 +287,20 @@ func DefaultMetricsConfig() MetricsConfig { // ResourceAttributeConfig provides common config for a particular resource attribute. type ResourceAttributeConfig struct { Enabled bool `mapstructure:"enabled"` + + enabledSetByUser bool +} + +func (rac *ResourceAttributeConfig) Unmarshal(parser *confmap.Conf) error { + if parser == nil { + return nil + } + err := parser.Unmarshal(rac, confmap.WithErrorUnused()) + if err != nil { + return err + } + rac.enabledSetByUser = parser.IsSet("enabled") + return nil } // ResourceAttributesConfig provides config for apachespark resource attributes. diff --git a/receiver/apachesparkreceiver/internal/metadata/generated_metrics_test.go b/receiver/apachesparkreceiver/internal/metadata/generated_metrics_test.go index 804d5213eeeb..89e244e21cc6 100644 --- a/receiver/apachesparkreceiver/internal/metadata/generated_metrics_test.go +++ b/receiver/apachesparkreceiver/internal/metadata/generated_metrics_test.go @@ -49,6 +49,7 @@ func TestMetricsBuilder(t *testing.T) { mb := NewMetricsBuilder(loadMetricsBuilderConfig(t, test.name), settings, WithStartTime(start)) expectedWarnings := 0 + assert.Equal(t, expectedWarnings, observedLogs.Len()) defaultMetricsCount := 0 diff --git a/receiver/azuremonitorreceiver/internal/metadata/generated_config.go b/receiver/azuremonitorreceiver/internal/metadata/generated_config.go index b6a1da302230..b3bc277851d6 100644 --- a/receiver/azuremonitorreceiver/internal/metadata/generated_config.go +++ b/receiver/azuremonitorreceiver/internal/metadata/generated_config.go @@ -2,9 +2,25 @@ package metadata +import "go.opentelemetry.io/collector/confmap" + // ResourceAttributeConfig provides common config for a particular resource attribute. type ResourceAttributeConfig struct { Enabled bool `mapstructure:"enabled"` + + enabledSetByUser bool +} + +func (rac *ResourceAttributeConfig) Unmarshal(parser *confmap.Conf) error { + if parser == nil { + return nil + } + err := parser.Unmarshal(rac, confmap.WithErrorUnused()) + if err != nil { + return err + } + rac.enabledSetByUser = parser.IsSet("enabled") + return nil } // ResourceAttributesConfig provides config for azuremonitor resource attributes. diff --git a/receiver/bigipreceiver/internal/metadata/generated_config.go b/receiver/bigipreceiver/internal/metadata/generated_config.go index afdbab9828bd..42b7c90f6709 100644 --- a/receiver/bigipreceiver/internal/metadata/generated_config.go +++ b/receiver/bigipreceiver/internal/metadata/generated_config.go @@ -143,6 +143,20 @@ func DefaultMetricsConfig() MetricsConfig { // ResourceAttributeConfig provides common config for a particular resource attribute. type ResourceAttributeConfig struct { Enabled bool `mapstructure:"enabled"` + + enabledSetByUser bool +} + +func (rac *ResourceAttributeConfig) Unmarshal(parser *confmap.Conf) error { + if parser == nil { + return nil + } + err := parser.Unmarshal(rac, confmap.WithErrorUnused()) + if err != nil { + return err + } + rac.enabledSetByUser = parser.IsSet("enabled") + return nil } // ResourceAttributesConfig provides config for bigip resource attributes. diff --git a/receiver/bigipreceiver/internal/metadata/generated_metrics_test.go b/receiver/bigipreceiver/internal/metadata/generated_metrics_test.go index b834dd688e42..45ddad4d8974 100644 --- a/receiver/bigipreceiver/internal/metadata/generated_metrics_test.go +++ b/receiver/bigipreceiver/internal/metadata/generated_metrics_test.go @@ -49,6 +49,7 @@ func TestMetricsBuilder(t *testing.T) { mb := NewMetricsBuilder(loadMetricsBuilderConfig(t, test.name), settings, WithStartTime(start)) expectedWarnings := 0 + assert.Equal(t, expectedWarnings, observedLogs.Len()) defaultMetricsCount := 0 diff --git a/receiver/chronyreceiver/internal/metadata/generated_metrics_test.go b/receiver/chronyreceiver/internal/metadata/generated_metrics_test.go index abe1d0134469..c71978b26db7 100644 --- a/receiver/chronyreceiver/internal/metadata/generated_metrics_test.go +++ b/receiver/chronyreceiver/internal/metadata/generated_metrics_test.go @@ -49,6 +49,7 @@ func TestMetricsBuilder(t *testing.T) { mb := NewMetricsBuilder(loadMetricsBuilderConfig(t, test.name), settings, WithStartTime(start)) expectedWarnings := 0 + assert.Equal(t, expectedWarnings, observedLogs.Len()) defaultMetricsCount := 0 diff --git a/receiver/couchdbreceiver/internal/metadata/generated_config.go b/receiver/couchdbreceiver/internal/metadata/generated_config.go index c2f3f25fcd9f..fd3d78ee8397 100644 --- a/receiver/couchdbreceiver/internal/metadata/generated_config.go +++ b/receiver/couchdbreceiver/internal/metadata/generated_config.go @@ -67,6 +67,20 @@ func DefaultMetricsConfig() MetricsConfig { // ResourceAttributeConfig provides common config for a particular resource attribute. type ResourceAttributeConfig struct { Enabled bool `mapstructure:"enabled"` + + enabledSetByUser bool +} + +func (rac *ResourceAttributeConfig) Unmarshal(parser *confmap.Conf) error { + if parser == nil { + return nil + } + err := parser.Unmarshal(rac, confmap.WithErrorUnused()) + if err != nil { + return err + } + rac.enabledSetByUser = parser.IsSet("enabled") + return nil } // ResourceAttributesConfig provides config for couchdb resource attributes. diff --git a/receiver/couchdbreceiver/internal/metadata/generated_metrics_test.go b/receiver/couchdbreceiver/internal/metadata/generated_metrics_test.go index e07b02740c9d..c822b6b23c37 100644 --- a/receiver/couchdbreceiver/internal/metadata/generated_metrics_test.go +++ b/receiver/couchdbreceiver/internal/metadata/generated_metrics_test.go @@ -49,6 +49,7 @@ func TestMetricsBuilder(t *testing.T) { mb := NewMetricsBuilder(loadMetricsBuilderConfig(t, test.name), settings, WithStartTime(start)) expectedWarnings := 0 + assert.Equal(t, expectedWarnings, observedLogs.Len()) defaultMetricsCount := 0 diff --git a/receiver/dockerstatsreceiver/config_test.go b/receiver/dockerstatsreceiver/config_test.go index a99d2b28442e..d043aa513a5e 100644 --- a/receiver/dockerstatsreceiver/config_test.go +++ b/receiver/dockerstatsreceiver/config_test.go @@ -83,7 +83,7 @@ func TestLoadConfig(t *testing.T) { require.NoError(t, component.UnmarshalConfig(sub, cfg)) assert.NoError(t, component.ValidateConfig(cfg)) - if diff := cmp.Diff(tt.expected, cfg, cmpopts.IgnoreUnexported(metadata.MetricConfig{})); diff != "" { + if diff := cmp.Diff(tt.expected, cfg, cmpopts.IgnoreUnexported(metadata.MetricConfig{}), cmpopts.IgnoreUnexported(metadata.ResourceAttributeConfig{})); diff != "" { t.Errorf("Config mismatch (-expected +actual):\n%s", diff) } }) diff --git a/receiver/dockerstatsreceiver/internal/metadata/generated_config.go b/receiver/dockerstatsreceiver/internal/metadata/generated_config.go index a5f78a7dcbcd..fdc7c4fc5c0d 100644 --- a/receiver/dockerstatsreceiver/internal/metadata/generated_config.go +++ b/receiver/dockerstatsreceiver/internal/metadata/generated_config.go @@ -303,6 +303,20 @@ func DefaultMetricsConfig() MetricsConfig { // ResourceAttributeConfig provides common config for a particular resource attribute. type ResourceAttributeConfig struct { Enabled bool `mapstructure:"enabled"` + + enabledSetByUser bool +} + +func (rac *ResourceAttributeConfig) Unmarshal(parser *confmap.Conf) error { + if parser == nil { + return nil + } + err := parser.Unmarshal(rac, confmap.WithErrorUnused()) + if err != nil { + return err + } + rac.enabledSetByUser = parser.IsSet("enabled") + return nil } // ResourceAttributesConfig provides config for docker_stats resource attributes. diff --git a/receiver/dockerstatsreceiver/internal/metadata/generated_metrics_test.go b/receiver/dockerstatsreceiver/internal/metadata/generated_metrics_test.go index 485637642883..81c825261108 100644 --- a/receiver/dockerstatsreceiver/internal/metadata/generated_metrics_test.go +++ b/receiver/dockerstatsreceiver/internal/metadata/generated_metrics_test.go @@ -57,6 +57,7 @@ func TestMetricsBuilder(t *testing.T) { assert.Equal(t, "[WARNING] Please set `enabled` field explicitly for `container.cpu.utilization`: This metric will be enabled by default in v0.82.0.", observedLogs.All()[expectedWarnings].Message) expectedWarnings++ } + assert.Equal(t, expectedWarnings, observedLogs.Len()) defaultMetricsCount := 0 diff --git a/receiver/elasticsearchreceiver/config_test.go b/receiver/elasticsearchreceiver/config_test.go index c363c039092c..fb56d900dbdd 100644 --- a/receiver/elasticsearchreceiver/config_test.go +++ b/receiver/elasticsearchreceiver/config_test.go @@ -185,7 +185,7 @@ func TestLoadConfig(t *testing.T) { require.NoError(t, component.UnmarshalConfig(sub, cfg)) assert.NoError(t, component.ValidateConfig(cfg)) - if diff := cmp.Diff(tt.expected, cfg, cmpopts.IgnoreUnexported(metadata.MetricConfig{})); diff != "" { + if diff := cmp.Diff(tt.expected, cfg, cmpopts.IgnoreUnexported(metadata.MetricConfig{}), cmpopts.IgnoreUnexported(metadata.ResourceAttributeConfig{})); diff != "" { t.Errorf("Config mismatch (-expected +actual):\n%s", diff) } }) diff --git a/receiver/elasticsearchreceiver/internal/metadata/generated_config.go b/receiver/elasticsearchreceiver/internal/metadata/generated_config.go index e599253fcb24..1d7d2d97e731 100644 --- a/receiver/elasticsearchreceiver/internal/metadata/generated_config.go +++ b/receiver/elasticsearchreceiver/internal/metadata/generated_config.go @@ -399,6 +399,20 @@ func DefaultMetricsConfig() MetricsConfig { // ResourceAttributeConfig provides common config for a particular resource attribute. type ResourceAttributeConfig struct { Enabled bool `mapstructure:"enabled"` + + enabledSetByUser bool +} + +func (rac *ResourceAttributeConfig) Unmarshal(parser *confmap.Conf) error { + if parser == nil { + return nil + } + err := parser.Unmarshal(rac, confmap.WithErrorUnused()) + if err != nil { + return err + } + rac.enabledSetByUser = parser.IsSet("enabled") + return nil } // ResourceAttributesConfig provides config for elasticsearch resource attributes. diff --git a/receiver/elasticsearchreceiver/internal/metadata/generated_metrics_test.go b/receiver/elasticsearchreceiver/internal/metadata/generated_metrics_test.go index 557f78ae1147..8e23648e5cc9 100644 --- a/receiver/elasticsearchreceiver/internal/metadata/generated_metrics_test.go +++ b/receiver/elasticsearchreceiver/internal/metadata/generated_metrics_test.go @@ -49,6 +49,7 @@ func TestMetricsBuilder(t *testing.T) { mb := NewMetricsBuilder(loadMetricsBuilderConfig(t, test.name), settings, WithStartTime(start)) expectedWarnings := 0 + assert.Equal(t, expectedWarnings, observedLogs.Len()) defaultMetricsCount := 0 diff --git a/receiver/expvarreceiver/internal/metadata/generated_metrics_test.go b/receiver/expvarreceiver/internal/metadata/generated_metrics_test.go index 018978e4baa7..19988caf9529 100644 --- a/receiver/expvarreceiver/internal/metadata/generated_metrics_test.go +++ b/receiver/expvarreceiver/internal/metadata/generated_metrics_test.go @@ -49,6 +49,7 @@ func TestMetricsBuilder(t *testing.T) { mb := NewMetricsBuilder(loadMetricsBuilderConfig(t, test.name), settings, WithStartTime(start)) expectedWarnings := 0 + assert.Equal(t, expectedWarnings, observedLogs.Len()) defaultMetricsCount := 0 diff --git a/receiver/filestatsreceiver/internal/metadata/generated_config.go b/receiver/filestatsreceiver/internal/metadata/generated_config.go index 47b822060daf..5801768b284b 100644 --- a/receiver/filestatsreceiver/internal/metadata/generated_config.go +++ b/receiver/filestatsreceiver/internal/metadata/generated_config.go @@ -51,6 +51,20 @@ func DefaultMetricsConfig() MetricsConfig { // ResourceAttributeConfig provides common config for a particular resource attribute. type ResourceAttributeConfig struct { Enabled bool `mapstructure:"enabled"` + + enabledSetByUser bool +} + +func (rac *ResourceAttributeConfig) Unmarshal(parser *confmap.Conf) error { + if parser == nil { + return nil + } + err := parser.Unmarshal(rac, confmap.WithErrorUnused()) + if err != nil { + return err + } + rac.enabledSetByUser = parser.IsSet("enabled") + return nil } // ResourceAttributesConfig provides config for filestats resource attributes. diff --git a/receiver/filestatsreceiver/internal/metadata/generated_metrics_test.go b/receiver/filestatsreceiver/internal/metadata/generated_metrics_test.go index f9c6003fa985..22d0824c93a9 100644 --- a/receiver/filestatsreceiver/internal/metadata/generated_metrics_test.go +++ b/receiver/filestatsreceiver/internal/metadata/generated_metrics_test.go @@ -49,6 +49,7 @@ func TestMetricsBuilder(t *testing.T) { mb := NewMetricsBuilder(loadMetricsBuilderConfig(t, test.name), settings, WithStartTime(start)) expectedWarnings := 0 + assert.Equal(t, expectedWarnings, observedLogs.Len()) defaultMetricsCount := 0 diff --git a/receiver/flinkmetricsreceiver/internal/metadata/generated_config.go b/receiver/flinkmetricsreceiver/internal/metadata/generated_config.go index 27f5f38c61a0..c8e1062101aa 100644 --- a/receiver/flinkmetricsreceiver/internal/metadata/generated_config.go +++ b/receiver/flinkmetricsreceiver/internal/metadata/generated_config.go @@ -151,6 +151,20 @@ func DefaultMetricsConfig() MetricsConfig { // ResourceAttributeConfig provides common config for a particular resource attribute. type ResourceAttributeConfig struct { Enabled bool `mapstructure:"enabled"` + + enabledSetByUser bool +} + +func (rac *ResourceAttributeConfig) Unmarshal(parser *confmap.Conf) error { + if parser == nil { + return nil + } + err := parser.Unmarshal(rac, confmap.WithErrorUnused()) + if err != nil { + return err + } + rac.enabledSetByUser = parser.IsSet("enabled") + return nil } // ResourceAttributesConfig provides config for flinkmetrics resource attributes. diff --git a/receiver/flinkmetricsreceiver/internal/metadata/generated_metrics_test.go b/receiver/flinkmetricsreceiver/internal/metadata/generated_metrics_test.go index 4890d3fa0b15..04bd72dd72d9 100644 --- a/receiver/flinkmetricsreceiver/internal/metadata/generated_metrics_test.go +++ b/receiver/flinkmetricsreceiver/internal/metadata/generated_metrics_test.go @@ -49,6 +49,7 @@ func TestMetricsBuilder(t *testing.T) { mb := NewMetricsBuilder(loadMetricsBuilderConfig(t, test.name), settings, WithStartTime(start)) expectedWarnings := 0 + assert.Equal(t, expectedWarnings, observedLogs.Len()) defaultMetricsCount := 0 diff --git a/receiver/haproxyreceiver/internal/metadata/generated_config.go b/receiver/haproxyreceiver/internal/metadata/generated_config.go index a32eb198726c..1094112ecc54 100644 --- a/receiver/haproxyreceiver/internal/metadata/generated_config.go +++ b/receiver/haproxyreceiver/internal/metadata/generated_config.go @@ -139,6 +139,20 @@ func DefaultMetricsConfig() MetricsConfig { // ResourceAttributeConfig provides common config for a particular resource attribute. type ResourceAttributeConfig struct { Enabled bool `mapstructure:"enabled"` + + enabledSetByUser bool +} + +func (rac *ResourceAttributeConfig) Unmarshal(parser *confmap.Conf) error { + if parser == nil { + return nil + } + err := parser.Unmarshal(rac, confmap.WithErrorUnused()) + if err != nil { + return err + } + rac.enabledSetByUser = parser.IsSet("enabled") + return nil } // ResourceAttributesConfig provides config for haproxy resource attributes. diff --git a/receiver/haproxyreceiver/internal/metadata/generated_metrics_test.go b/receiver/haproxyreceiver/internal/metadata/generated_metrics_test.go index 7beb9acc3035..cbf8694d61ce 100644 --- a/receiver/haproxyreceiver/internal/metadata/generated_metrics_test.go +++ b/receiver/haproxyreceiver/internal/metadata/generated_metrics_test.go @@ -49,6 +49,7 @@ func TestMetricsBuilder(t *testing.T) { mb := NewMetricsBuilder(loadMetricsBuilderConfig(t, test.name), settings, WithStartTime(start)) expectedWarnings := 0 + assert.Equal(t, expectedWarnings, observedLogs.Len()) defaultMetricsCount := 0 diff --git a/receiver/hostmetricsreceiver/internal/scraper/cpuscraper/internal/metadata/generated_metrics_test.go b/receiver/hostmetricsreceiver/internal/scraper/cpuscraper/internal/metadata/generated_metrics_test.go index a4ff5f62baf0..98749fb0e0c4 100644 --- a/receiver/hostmetricsreceiver/internal/scraper/cpuscraper/internal/metadata/generated_metrics_test.go +++ b/receiver/hostmetricsreceiver/internal/scraper/cpuscraper/internal/metadata/generated_metrics_test.go @@ -49,6 +49,7 @@ func TestMetricsBuilder(t *testing.T) { mb := NewMetricsBuilder(loadMetricsBuilderConfig(t, test.name), settings, WithStartTime(start)) expectedWarnings := 0 + assert.Equal(t, expectedWarnings, observedLogs.Len()) defaultMetricsCount := 0 diff --git a/receiver/hostmetricsreceiver/internal/scraper/diskscraper/internal/metadata/generated_metrics_test.go b/receiver/hostmetricsreceiver/internal/scraper/diskscraper/internal/metadata/generated_metrics_test.go index 7c31b71a2e74..5f2dadf556fa 100644 --- a/receiver/hostmetricsreceiver/internal/scraper/diskscraper/internal/metadata/generated_metrics_test.go +++ b/receiver/hostmetricsreceiver/internal/scraper/diskscraper/internal/metadata/generated_metrics_test.go @@ -49,6 +49,7 @@ func TestMetricsBuilder(t *testing.T) { mb := NewMetricsBuilder(loadMetricsBuilderConfig(t, test.name), settings, WithStartTime(start)) expectedWarnings := 0 + assert.Equal(t, expectedWarnings, observedLogs.Len()) defaultMetricsCount := 0 diff --git a/receiver/hostmetricsreceiver/internal/scraper/filesystemscraper/internal/metadata/generated_metrics_test.go b/receiver/hostmetricsreceiver/internal/scraper/filesystemscraper/internal/metadata/generated_metrics_test.go index 5ede5a720837..90b068c5293c 100644 --- a/receiver/hostmetricsreceiver/internal/scraper/filesystemscraper/internal/metadata/generated_metrics_test.go +++ b/receiver/hostmetricsreceiver/internal/scraper/filesystemscraper/internal/metadata/generated_metrics_test.go @@ -49,6 +49,7 @@ func TestMetricsBuilder(t *testing.T) { mb := NewMetricsBuilder(loadMetricsBuilderConfig(t, test.name), settings, WithStartTime(start)) expectedWarnings := 0 + assert.Equal(t, expectedWarnings, observedLogs.Len()) defaultMetricsCount := 0 diff --git a/receiver/hostmetricsreceiver/internal/scraper/loadscraper/internal/metadata/generated_metrics_test.go b/receiver/hostmetricsreceiver/internal/scraper/loadscraper/internal/metadata/generated_metrics_test.go index a1037184eda6..e4a6690bb646 100644 --- a/receiver/hostmetricsreceiver/internal/scraper/loadscraper/internal/metadata/generated_metrics_test.go +++ b/receiver/hostmetricsreceiver/internal/scraper/loadscraper/internal/metadata/generated_metrics_test.go @@ -49,6 +49,7 @@ func TestMetricsBuilder(t *testing.T) { mb := NewMetricsBuilder(loadMetricsBuilderConfig(t, test.name), settings, WithStartTime(start)) expectedWarnings := 0 + assert.Equal(t, expectedWarnings, observedLogs.Len()) defaultMetricsCount := 0 diff --git a/receiver/hostmetricsreceiver/internal/scraper/memoryscraper/internal/metadata/generated_metrics_test.go b/receiver/hostmetricsreceiver/internal/scraper/memoryscraper/internal/metadata/generated_metrics_test.go index 3fd1e1a6c4e4..5f9629722cf9 100644 --- a/receiver/hostmetricsreceiver/internal/scraper/memoryscraper/internal/metadata/generated_metrics_test.go +++ b/receiver/hostmetricsreceiver/internal/scraper/memoryscraper/internal/metadata/generated_metrics_test.go @@ -49,6 +49,7 @@ func TestMetricsBuilder(t *testing.T) { mb := NewMetricsBuilder(loadMetricsBuilderConfig(t, test.name), settings, WithStartTime(start)) expectedWarnings := 0 + assert.Equal(t, expectedWarnings, observedLogs.Len()) defaultMetricsCount := 0 diff --git a/receiver/hostmetricsreceiver/internal/scraper/networkscraper/internal/metadata/generated_metrics_test.go b/receiver/hostmetricsreceiver/internal/scraper/networkscraper/internal/metadata/generated_metrics_test.go index 8d22cbd3bd80..c8762dd4107b 100644 --- a/receiver/hostmetricsreceiver/internal/scraper/networkscraper/internal/metadata/generated_metrics_test.go +++ b/receiver/hostmetricsreceiver/internal/scraper/networkscraper/internal/metadata/generated_metrics_test.go @@ -49,6 +49,7 @@ func TestMetricsBuilder(t *testing.T) { mb := NewMetricsBuilder(loadMetricsBuilderConfig(t, test.name), settings, WithStartTime(start)) expectedWarnings := 0 + assert.Equal(t, expectedWarnings, observedLogs.Len()) defaultMetricsCount := 0 diff --git a/receiver/hostmetricsreceiver/internal/scraper/pagingscraper/internal/metadata/generated_metrics_test.go b/receiver/hostmetricsreceiver/internal/scraper/pagingscraper/internal/metadata/generated_metrics_test.go index 466b1e8fe62f..23c52463f699 100644 --- a/receiver/hostmetricsreceiver/internal/scraper/pagingscraper/internal/metadata/generated_metrics_test.go +++ b/receiver/hostmetricsreceiver/internal/scraper/pagingscraper/internal/metadata/generated_metrics_test.go @@ -49,6 +49,7 @@ func TestMetricsBuilder(t *testing.T) { mb := NewMetricsBuilder(loadMetricsBuilderConfig(t, test.name), settings, WithStartTime(start)) expectedWarnings := 0 + assert.Equal(t, expectedWarnings, observedLogs.Len()) defaultMetricsCount := 0 diff --git a/receiver/hostmetricsreceiver/internal/scraper/processesscraper/internal/metadata/generated_metrics_test.go b/receiver/hostmetricsreceiver/internal/scraper/processesscraper/internal/metadata/generated_metrics_test.go index af91562c7825..8b0f735f6cb4 100644 --- a/receiver/hostmetricsreceiver/internal/scraper/processesscraper/internal/metadata/generated_metrics_test.go +++ b/receiver/hostmetricsreceiver/internal/scraper/processesscraper/internal/metadata/generated_metrics_test.go @@ -49,6 +49,7 @@ func TestMetricsBuilder(t *testing.T) { mb := NewMetricsBuilder(loadMetricsBuilderConfig(t, test.name), settings, WithStartTime(start)) expectedWarnings := 0 + assert.Equal(t, expectedWarnings, observedLogs.Len()) defaultMetricsCount := 0 diff --git a/receiver/hostmetricsreceiver/internal/scraper/processscraper/internal/metadata/generated_config.go b/receiver/hostmetricsreceiver/internal/scraper/processscraper/internal/metadata/generated_config.go index 795291e5b466..887b329d6cca 100644 --- a/receiver/hostmetricsreceiver/internal/scraper/processscraper/internal/metadata/generated_config.go +++ b/receiver/hostmetricsreceiver/internal/scraper/processscraper/internal/metadata/generated_config.go @@ -87,6 +87,20 @@ func DefaultMetricsConfig() MetricsConfig { // ResourceAttributeConfig provides common config for a particular resource attribute. type ResourceAttributeConfig struct { Enabled bool `mapstructure:"enabled"` + + enabledSetByUser bool +} + +func (rac *ResourceAttributeConfig) Unmarshal(parser *confmap.Conf) error { + if parser == nil { + return nil + } + err := parser.Unmarshal(rac, confmap.WithErrorUnused()) + if err != nil { + return err + } + rac.enabledSetByUser = parser.IsSet("enabled") + return nil } // ResourceAttributesConfig provides config for hostmetricsreceiver/process resource attributes. diff --git a/receiver/hostmetricsreceiver/internal/scraper/processscraper/internal/metadata/generated_metrics_test.go b/receiver/hostmetricsreceiver/internal/scraper/processscraper/internal/metadata/generated_metrics_test.go index e1bb32211019..0a469f044a5a 100644 --- a/receiver/hostmetricsreceiver/internal/scraper/processscraper/internal/metadata/generated_metrics_test.go +++ b/receiver/hostmetricsreceiver/internal/scraper/processscraper/internal/metadata/generated_metrics_test.go @@ -49,6 +49,7 @@ func TestMetricsBuilder(t *testing.T) { mb := NewMetricsBuilder(loadMetricsBuilderConfig(t, test.name), settings, WithStartTime(start)) expectedWarnings := 0 + assert.Equal(t, expectedWarnings, observedLogs.Len()) defaultMetricsCount := 0 diff --git a/receiver/httpcheckreceiver/internal/metadata/generated_metrics_test.go b/receiver/httpcheckreceiver/internal/metadata/generated_metrics_test.go index 1221356506ff..79a50c033a97 100644 --- a/receiver/httpcheckreceiver/internal/metadata/generated_metrics_test.go +++ b/receiver/httpcheckreceiver/internal/metadata/generated_metrics_test.go @@ -49,6 +49,7 @@ func TestMetricsBuilder(t *testing.T) { mb := NewMetricsBuilder(loadMetricsBuilderConfig(t, test.name), settings, WithStartTime(start)) expectedWarnings := 0 + assert.Equal(t, expectedWarnings, observedLogs.Len()) defaultMetricsCount := 0 diff --git a/receiver/iisreceiver/internal/metadata/generated_config.go b/receiver/iisreceiver/internal/metadata/generated_config.go index a0ae31d5a6e2..2cd6e1bdd5f4 100644 --- a/receiver/iisreceiver/internal/metadata/generated_config.go +++ b/receiver/iisreceiver/internal/metadata/generated_config.go @@ -83,6 +83,20 @@ func DefaultMetricsConfig() MetricsConfig { // ResourceAttributeConfig provides common config for a particular resource attribute. type ResourceAttributeConfig struct { Enabled bool `mapstructure:"enabled"` + + enabledSetByUser bool +} + +func (rac *ResourceAttributeConfig) Unmarshal(parser *confmap.Conf) error { + if parser == nil { + return nil + } + err := parser.Unmarshal(rac, confmap.WithErrorUnused()) + if err != nil { + return err + } + rac.enabledSetByUser = parser.IsSet("enabled") + return nil } // ResourceAttributesConfig provides config for iis resource attributes. diff --git a/receiver/iisreceiver/internal/metadata/generated_metrics_test.go b/receiver/iisreceiver/internal/metadata/generated_metrics_test.go index 788781fa1b5b..16bb1ec008ca 100644 --- a/receiver/iisreceiver/internal/metadata/generated_metrics_test.go +++ b/receiver/iisreceiver/internal/metadata/generated_metrics_test.go @@ -49,6 +49,7 @@ func TestMetricsBuilder(t *testing.T) { mb := NewMetricsBuilder(loadMetricsBuilderConfig(t, test.name), settings, WithStartTime(start)) expectedWarnings := 0 + assert.Equal(t, expectedWarnings, observedLogs.Len()) defaultMetricsCount := 0 diff --git a/receiver/k8sclusterreceiver/internal/metadata/generated_config.go b/receiver/k8sclusterreceiver/internal/metadata/generated_config.go index bb6b93900eeb..cf19356c60c2 100644 --- a/receiver/k8sclusterreceiver/internal/metadata/generated_config.go +++ b/receiver/k8sclusterreceiver/internal/metadata/generated_config.go @@ -207,6 +207,20 @@ func DefaultMetricsConfig() MetricsConfig { // ResourceAttributeConfig provides common config for a particular resource attribute. type ResourceAttributeConfig struct { Enabled bool `mapstructure:"enabled"` + + enabledSetByUser bool +} + +func (rac *ResourceAttributeConfig) Unmarshal(parser *confmap.Conf) error { + if parser == nil { + return nil + } + err := parser.Unmarshal(rac, confmap.WithErrorUnused()) + if err != nil { + return err + } + rac.enabledSetByUser = parser.IsSet("enabled") + return nil } // ResourceAttributesConfig provides config for k8s_cluster resource attributes. diff --git a/receiver/k8sclusterreceiver/internal/metadata/generated_metrics_test.go b/receiver/k8sclusterreceiver/internal/metadata/generated_metrics_test.go index acef4eb987b3..ab50cd55b370 100644 --- a/receiver/k8sclusterreceiver/internal/metadata/generated_metrics_test.go +++ b/receiver/k8sclusterreceiver/internal/metadata/generated_metrics_test.go @@ -49,6 +49,7 @@ func TestMetricsBuilder(t *testing.T) { mb := NewMetricsBuilder(loadMetricsBuilderConfig(t, test.name), settings, WithStartTime(start)) expectedWarnings := 0 + assert.Equal(t, expectedWarnings, observedLogs.Len()) defaultMetricsCount := 0 diff --git a/receiver/kafkametricsreceiver/internal/metadata/generated_metrics_test.go b/receiver/kafkametricsreceiver/internal/metadata/generated_metrics_test.go index 4f12d4e7c6ef..8d37a5321951 100644 --- a/receiver/kafkametricsreceiver/internal/metadata/generated_metrics_test.go +++ b/receiver/kafkametricsreceiver/internal/metadata/generated_metrics_test.go @@ -49,6 +49,7 @@ func TestMetricsBuilder(t *testing.T) { mb := NewMetricsBuilder(loadMetricsBuilderConfig(t, test.name), settings, WithStartTime(start)) expectedWarnings := 0 + assert.Equal(t, expectedWarnings, observedLogs.Len()) defaultMetricsCount := 0 diff --git a/receiver/kubeletstatsreceiver/internal/metadata/generated_config.go b/receiver/kubeletstatsreceiver/internal/metadata/generated_config.go index 95e88e99d43d..1e8fa9f76d4f 100644 --- a/receiver/kubeletstatsreceiver/internal/metadata/generated_config.go +++ b/receiver/kubeletstatsreceiver/internal/metadata/generated_config.go @@ -247,6 +247,20 @@ func DefaultMetricsConfig() MetricsConfig { // ResourceAttributeConfig provides common config for a particular resource attribute. type ResourceAttributeConfig struct { Enabled bool `mapstructure:"enabled"` + + enabledSetByUser bool +} + +func (rac *ResourceAttributeConfig) Unmarshal(parser *confmap.Conf) error { + if parser == nil { + return nil + } + err := parser.Unmarshal(rac, confmap.WithErrorUnused()) + if err != nil { + return err + } + rac.enabledSetByUser = parser.IsSet("enabled") + return nil } // ResourceAttributesConfig provides config for kubeletstats resource attributes. diff --git a/receiver/kubeletstatsreceiver/internal/metadata/generated_metrics_test.go b/receiver/kubeletstatsreceiver/internal/metadata/generated_metrics_test.go index 8fbcb9a171d0..779fe477bf9c 100644 --- a/receiver/kubeletstatsreceiver/internal/metadata/generated_metrics_test.go +++ b/receiver/kubeletstatsreceiver/internal/metadata/generated_metrics_test.go @@ -49,6 +49,7 @@ func TestMetricsBuilder(t *testing.T) { mb := NewMetricsBuilder(loadMetricsBuilderConfig(t, test.name), settings, WithStartTime(start)) expectedWarnings := 0 + assert.Equal(t, expectedWarnings, observedLogs.Len()) defaultMetricsCount := 0 diff --git a/receiver/memcachedreceiver/internal/metadata/generated_metrics_test.go b/receiver/memcachedreceiver/internal/metadata/generated_metrics_test.go index a03f05d4b812..dbb7f0eebc67 100644 --- a/receiver/memcachedreceiver/internal/metadata/generated_metrics_test.go +++ b/receiver/memcachedreceiver/internal/metadata/generated_metrics_test.go @@ -49,6 +49,7 @@ func TestMetricsBuilder(t *testing.T) { mb := NewMetricsBuilder(loadMetricsBuilderConfig(t, test.name), settings, WithStartTime(start)) expectedWarnings := 0 + assert.Equal(t, expectedWarnings, observedLogs.Len()) defaultMetricsCount := 0 diff --git a/receiver/mongodbatlasreceiver/internal/metadata/generated_config.go b/receiver/mongodbatlasreceiver/internal/metadata/generated_config.go index 90d61766d6f1..0fa05e63095c 100644 --- a/receiver/mongodbatlasreceiver/internal/metadata/generated_config.go +++ b/receiver/mongodbatlasreceiver/internal/metadata/generated_config.go @@ -283,6 +283,20 @@ func DefaultMetricsConfig() MetricsConfig { // ResourceAttributeConfig provides common config for a particular resource attribute. type ResourceAttributeConfig struct { Enabled bool `mapstructure:"enabled"` + + enabledSetByUser bool +} + +func (rac *ResourceAttributeConfig) Unmarshal(parser *confmap.Conf) error { + if parser == nil { + return nil + } + err := parser.Unmarshal(rac, confmap.WithErrorUnused()) + if err != nil { + return err + } + rac.enabledSetByUser = parser.IsSet("enabled") + return nil } // ResourceAttributesConfig provides config for mongodbatlas resource attributes. diff --git a/receiver/mongodbatlasreceiver/internal/metadata/generated_metrics_test.go b/receiver/mongodbatlasreceiver/internal/metadata/generated_metrics_test.go index 2347569a2aea..7403ddb15dfc 100644 --- a/receiver/mongodbatlasreceiver/internal/metadata/generated_metrics_test.go +++ b/receiver/mongodbatlasreceiver/internal/metadata/generated_metrics_test.go @@ -49,6 +49,7 @@ func TestMetricsBuilder(t *testing.T) { mb := NewMetricsBuilder(loadMetricsBuilderConfig(t, test.name), settings, WithStartTime(start)) expectedWarnings := 0 + assert.Equal(t, expectedWarnings, observedLogs.Len()) defaultMetricsCount := 0 diff --git a/receiver/mongodbreceiver/internal/metadata/generated_config.go b/receiver/mongodbreceiver/internal/metadata/generated_config.go index 16207ec883a1..5f4902ecbb0e 100644 --- a/receiver/mongodbreceiver/internal/metadata/generated_config.go +++ b/receiver/mongodbreceiver/internal/metadata/generated_config.go @@ -155,6 +155,20 @@ func DefaultMetricsConfig() MetricsConfig { // ResourceAttributeConfig provides common config for a particular resource attribute. type ResourceAttributeConfig struct { Enabled bool `mapstructure:"enabled"` + + enabledSetByUser bool +} + +func (rac *ResourceAttributeConfig) Unmarshal(parser *confmap.Conf) error { + if parser == nil { + return nil + } + err := parser.Unmarshal(rac, confmap.WithErrorUnused()) + if err != nil { + return err + } + rac.enabledSetByUser = parser.IsSet("enabled") + return nil } // ResourceAttributesConfig provides config for mongodb resource attributes. diff --git a/receiver/mongodbreceiver/internal/metadata/generated_metrics_test.go b/receiver/mongodbreceiver/internal/metadata/generated_metrics_test.go index 5957a1f21c6e..967df16e4b33 100644 --- a/receiver/mongodbreceiver/internal/metadata/generated_metrics_test.go +++ b/receiver/mongodbreceiver/internal/metadata/generated_metrics_test.go @@ -49,6 +49,7 @@ func TestMetricsBuilder(t *testing.T) { mb := NewMetricsBuilder(loadMetricsBuilderConfig(t, test.name), settings, WithStartTime(start)) expectedWarnings := 0 + assert.Equal(t, expectedWarnings, observedLogs.Len()) defaultMetricsCount := 0 diff --git a/receiver/mysqlreceiver/internal/metadata/generated_config.go b/receiver/mysqlreceiver/internal/metadata/generated_config.go index 080e6119bb66..37348975e17b 100644 --- a/receiver/mysqlreceiver/internal/metadata/generated_config.go +++ b/receiver/mysqlreceiver/internal/metadata/generated_config.go @@ -207,6 +207,20 @@ func DefaultMetricsConfig() MetricsConfig { // ResourceAttributeConfig provides common config for a particular resource attribute. type ResourceAttributeConfig struct { Enabled bool `mapstructure:"enabled"` + + enabledSetByUser bool +} + +func (rac *ResourceAttributeConfig) Unmarshal(parser *confmap.Conf) error { + if parser == nil { + return nil + } + err := parser.Unmarshal(rac, confmap.WithErrorUnused()) + if err != nil { + return err + } + rac.enabledSetByUser = parser.IsSet("enabled") + return nil } // ResourceAttributesConfig provides config for mysql resource attributes. diff --git a/receiver/mysqlreceiver/internal/metadata/generated_metrics_test.go b/receiver/mysqlreceiver/internal/metadata/generated_metrics_test.go index e258c731bad0..416e596664d0 100644 --- a/receiver/mysqlreceiver/internal/metadata/generated_metrics_test.go +++ b/receiver/mysqlreceiver/internal/metadata/generated_metrics_test.go @@ -49,6 +49,7 @@ func TestMetricsBuilder(t *testing.T) { mb := NewMetricsBuilder(loadMetricsBuilderConfig(t, test.name), settings, WithStartTime(start)) expectedWarnings := 0 + assert.Equal(t, expectedWarnings, observedLogs.Len()) defaultMetricsCount := 0 diff --git a/receiver/nginxreceiver/internal/metadata/generated_metrics_test.go b/receiver/nginxreceiver/internal/metadata/generated_metrics_test.go index c1a9a77a0812..d92058c3f72f 100644 --- a/receiver/nginxreceiver/internal/metadata/generated_metrics_test.go +++ b/receiver/nginxreceiver/internal/metadata/generated_metrics_test.go @@ -49,6 +49,7 @@ func TestMetricsBuilder(t *testing.T) { mb := NewMetricsBuilder(loadMetricsBuilderConfig(t, test.name), settings, WithStartTime(start)) expectedWarnings := 0 + assert.Equal(t, expectedWarnings, observedLogs.Len()) defaultMetricsCount := 0 diff --git a/receiver/nsxtreceiver/internal/metadata/generated_config.go b/receiver/nsxtreceiver/internal/metadata/generated_config.go index 1f0fe8fe234c..4b33a16d1870 100644 --- a/receiver/nsxtreceiver/internal/metadata/generated_config.go +++ b/receiver/nsxtreceiver/internal/metadata/generated_config.go @@ -63,6 +63,20 @@ func DefaultMetricsConfig() MetricsConfig { // ResourceAttributeConfig provides common config for a particular resource attribute. type ResourceAttributeConfig struct { Enabled bool `mapstructure:"enabled"` + + enabledSetByUser bool +} + +func (rac *ResourceAttributeConfig) Unmarshal(parser *confmap.Conf) error { + if parser == nil { + return nil + } + err := parser.Unmarshal(rac, confmap.WithErrorUnused()) + if err != nil { + return err + } + rac.enabledSetByUser = parser.IsSet("enabled") + return nil } // ResourceAttributesConfig provides config for nsxt resource attributes. diff --git a/receiver/nsxtreceiver/internal/metadata/generated_metrics_test.go b/receiver/nsxtreceiver/internal/metadata/generated_metrics_test.go index 03d84840bba7..bfda0ca65df9 100644 --- a/receiver/nsxtreceiver/internal/metadata/generated_metrics_test.go +++ b/receiver/nsxtreceiver/internal/metadata/generated_metrics_test.go @@ -49,6 +49,7 @@ func TestMetricsBuilder(t *testing.T) { mb := NewMetricsBuilder(loadMetricsBuilderConfig(t, test.name), settings, WithStartTime(start)) expectedWarnings := 0 + assert.Equal(t, expectedWarnings, observedLogs.Len()) defaultMetricsCount := 0 diff --git a/receiver/oracledbreceiver/internal/metadata/generated_config.go b/receiver/oracledbreceiver/internal/metadata/generated_config.go index e188e2298491..02be19ba21d2 100644 --- a/receiver/oracledbreceiver/internal/metadata/generated_config.go +++ b/receiver/oracledbreceiver/internal/metadata/generated_config.go @@ -143,6 +143,20 @@ func DefaultMetricsConfig() MetricsConfig { // ResourceAttributeConfig provides common config for a particular resource attribute. type ResourceAttributeConfig struct { Enabled bool `mapstructure:"enabled"` + + enabledSetByUser bool +} + +func (rac *ResourceAttributeConfig) Unmarshal(parser *confmap.Conf) error { + if parser == nil { + return nil + } + err := parser.Unmarshal(rac, confmap.WithErrorUnused()) + if err != nil { + return err + } + rac.enabledSetByUser = parser.IsSet("enabled") + return nil } // ResourceAttributesConfig provides config for oracledb resource attributes. diff --git a/receiver/oracledbreceiver/internal/metadata/generated_metrics_test.go b/receiver/oracledbreceiver/internal/metadata/generated_metrics_test.go index 0afdce5ad1c4..1a5789f9e6c2 100644 --- a/receiver/oracledbreceiver/internal/metadata/generated_metrics_test.go +++ b/receiver/oracledbreceiver/internal/metadata/generated_metrics_test.go @@ -49,6 +49,7 @@ func TestMetricsBuilder(t *testing.T) { mb := NewMetricsBuilder(loadMetricsBuilderConfig(t, test.name), settings, WithStartTime(start)) expectedWarnings := 0 + assert.Equal(t, expectedWarnings, observedLogs.Len()) defaultMetricsCount := 0 diff --git a/receiver/postgresqlreceiver/internal/metadata/generated_config.go b/receiver/postgresqlreceiver/internal/metadata/generated_config.go index c4109f6fb005..209e9ae55553 100644 --- a/receiver/postgresqlreceiver/internal/metadata/generated_config.go +++ b/receiver/postgresqlreceiver/internal/metadata/generated_config.go @@ -139,6 +139,20 @@ func DefaultMetricsConfig() MetricsConfig { // ResourceAttributeConfig provides common config for a particular resource attribute. type ResourceAttributeConfig struct { Enabled bool `mapstructure:"enabled"` + + enabledSetByUser bool +} + +func (rac *ResourceAttributeConfig) Unmarshal(parser *confmap.Conf) error { + if parser == nil { + return nil + } + err := parser.Unmarshal(rac, confmap.WithErrorUnused()) + if err != nil { + return err + } + rac.enabledSetByUser = parser.IsSet("enabled") + return nil } // ResourceAttributesConfig provides config for postgresql resource attributes. diff --git a/receiver/postgresqlreceiver/internal/metadata/generated_metrics_test.go b/receiver/postgresqlreceiver/internal/metadata/generated_metrics_test.go index 86d9610aa4d1..65a78cac0e48 100644 --- a/receiver/postgresqlreceiver/internal/metadata/generated_metrics_test.go +++ b/receiver/postgresqlreceiver/internal/metadata/generated_metrics_test.go @@ -49,6 +49,7 @@ func TestMetricsBuilder(t *testing.T) { mb := NewMetricsBuilder(loadMetricsBuilderConfig(t, test.name), settings, WithStartTime(start)) expectedWarnings := 0 + assert.Equal(t, expectedWarnings, observedLogs.Len()) defaultMetricsCount := 0 diff --git a/receiver/rabbitmqreceiver/internal/metadata/generated_config.go b/receiver/rabbitmqreceiver/internal/metadata/generated_config.go index ad878472ea02..a91e40e1c0a0 100644 --- a/receiver/rabbitmqreceiver/internal/metadata/generated_config.go +++ b/receiver/rabbitmqreceiver/internal/metadata/generated_config.go @@ -59,6 +59,20 @@ func DefaultMetricsConfig() MetricsConfig { // ResourceAttributeConfig provides common config for a particular resource attribute. type ResourceAttributeConfig struct { Enabled bool `mapstructure:"enabled"` + + enabledSetByUser bool +} + +func (rac *ResourceAttributeConfig) Unmarshal(parser *confmap.Conf) error { + if parser == nil { + return nil + } + err := parser.Unmarshal(rac, confmap.WithErrorUnused()) + if err != nil { + return err + } + rac.enabledSetByUser = parser.IsSet("enabled") + return nil } // ResourceAttributesConfig provides config for rabbitmq resource attributes. diff --git a/receiver/rabbitmqreceiver/internal/metadata/generated_metrics_test.go b/receiver/rabbitmqreceiver/internal/metadata/generated_metrics_test.go index fb89d520d450..3050b1451ac3 100644 --- a/receiver/rabbitmqreceiver/internal/metadata/generated_metrics_test.go +++ b/receiver/rabbitmqreceiver/internal/metadata/generated_metrics_test.go @@ -49,6 +49,7 @@ func TestMetricsBuilder(t *testing.T) { mb := NewMetricsBuilder(loadMetricsBuilderConfig(t, test.name), settings, WithStartTime(start)) expectedWarnings := 0 + assert.Equal(t, expectedWarnings, observedLogs.Len()) defaultMetricsCount := 0 diff --git a/receiver/redisreceiver/internal/metadata/generated_config.go b/receiver/redisreceiver/internal/metadata/generated_config.go index cea09b3550e9..3f7be28c1b6f 100644 --- a/receiver/redisreceiver/internal/metadata/generated_config.go +++ b/receiver/redisreceiver/internal/metadata/generated_config.go @@ -171,6 +171,20 @@ func DefaultMetricsConfig() MetricsConfig { // ResourceAttributeConfig provides common config for a particular resource attribute. type ResourceAttributeConfig struct { Enabled bool `mapstructure:"enabled"` + + enabledSetByUser bool +} + +func (rac *ResourceAttributeConfig) Unmarshal(parser *confmap.Conf) error { + if parser == nil { + return nil + } + err := parser.Unmarshal(rac, confmap.WithErrorUnused()) + if err != nil { + return err + } + rac.enabledSetByUser = parser.IsSet("enabled") + return nil } // ResourceAttributesConfig provides config for redis resource attributes. diff --git a/receiver/redisreceiver/internal/metadata/generated_metrics_test.go b/receiver/redisreceiver/internal/metadata/generated_metrics_test.go index 5f612c80bd5e..96dfe2712b85 100644 --- a/receiver/redisreceiver/internal/metadata/generated_metrics_test.go +++ b/receiver/redisreceiver/internal/metadata/generated_metrics_test.go @@ -49,6 +49,7 @@ func TestMetricsBuilder(t *testing.T) { mb := NewMetricsBuilder(loadMetricsBuilderConfig(t, test.name), settings, WithStartTime(start)) expectedWarnings := 0 + assert.Equal(t, expectedWarnings, observedLogs.Len()) defaultMetricsCount := 0 diff --git a/receiver/riakreceiver/internal/metadata/generated_config.go b/receiver/riakreceiver/internal/metadata/generated_config.go index 91ab9386f6d1..3f4b0b2921ae 100644 --- a/receiver/riakreceiver/internal/metadata/generated_config.go +++ b/receiver/riakreceiver/internal/metadata/generated_config.go @@ -59,6 +59,20 @@ func DefaultMetricsConfig() MetricsConfig { // ResourceAttributeConfig provides common config for a particular resource attribute. type ResourceAttributeConfig struct { Enabled bool `mapstructure:"enabled"` + + enabledSetByUser bool +} + +func (rac *ResourceAttributeConfig) Unmarshal(parser *confmap.Conf) error { + if parser == nil { + return nil + } + err := parser.Unmarshal(rac, confmap.WithErrorUnused()) + if err != nil { + return err + } + rac.enabledSetByUser = parser.IsSet("enabled") + return nil } // ResourceAttributesConfig provides config for riak resource attributes. diff --git a/receiver/riakreceiver/internal/metadata/generated_metrics_test.go b/receiver/riakreceiver/internal/metadata/generated_metrics_test.go index 42e77f4a1b05..e2d27e3accb9 100644 --- a/receiver/riakreceiver/internal/metadata/generated_metrics_test.go +++ b/receiver/riakreceiver/internal/metadata/generated_metrics_test.go @@ -49,6 +49,7 @@ func TestMetricsBuilder(t *testing.T) { mb := NewMetricsBuilder(loadMetricsBuilderConfig(t, test.name), settings, WithStartTime(start)) expectedWarnings := 0 + assert.Equal(t, expectedWarnings, observedLogs.Len()) defaultMetricsCount := 0 diff --git a/receiver/saphanareceiver/config_test.go b/receiver/saphanareceiver/config_test.go index 231bb3c4435b..37ca8221ef2e 100644 --- a/receiver/saphanareceiver/config_test.go +++ b/receiver/saphanareceiver/config_test.go @@ -90,7 +90,7 @@ func TestLoadConfig(t *testing.T) { expected.Password = "password" expected.CollectionInterval = 2 * time.Minute - if diff := cmp.Diff(expected, cfg, cmpopts.IgnoreUnexported(metadata.MetricConfig{})); diff != "" { + if diff := cmp.Diff(expected, cfg, cmpopts.IgnoreUnexported(metadata.MetricConfig{}), cmpopts.IgnoreUnexported(metadata.ResourceAttributeConfig{})); diff != "" { t.Errorf("Config mismatch (-expected +actual):\n%s", diff) } diff --git a/receiver/saphanareceiver/internal/metadata/generated_config.go b/receiver/saphanareceiver/internal/metadata/generated_config.go index fa4c312426c8..0f98ea9e2730 100644 --- a/receiver/saphanareceiver/internal/metadata/generated_config.go +++ b/receiver/saphanareceiver/internal/metadata/generated_config.go @@ -215,6 +215,20 @@ func DefaultMetricsConfig() MetricsConfig { // ResourceAttributeConfig provides common config for a particular resource attribute. type ResourceAttributeConfig struct { Enabled bool `mapstructure:"enabled"` + + enabledSetByUser bool +} + +func (rac *ResourceAttributeConfig) Unmarshal(parser *confmap.Conf) error { + if parser == nil { + return nil + } + err := parser.Unmarshal(rac, confmap.WithErrorUnused()) + if err != nil { + return err + } + rac.enabledSetByUser = parser.IsSet("enabled") + return nil } // ResourceAttributesConfig provides config for saphana resource attributes. diff --git a/receiver/saphanareceiver/internal/metadata/generated_metrics_test.go b/receiver/saphanareceiver/internal/metadata/generated_metrics_test.go index 3bc4e2e31f28..1378331ce3d9 100644 --- a/receiver/saphanareceiver/internal/metadata/generated_metrics_test.go +++ b/receiver/saphanareceiver/internal/metadata/generated_metrics_test.go @@ -49,6 +49,7 @@ func TestMetricsBuilder(t *testing.T) { mb := NewMetricsBuilder(loadMetricsBuilderConfig(t, test.name), settings, WithStartTime(start)) expectedWarnings := 0 + assert.Equal(t, expectedWarnings, observedLogs.Len()) defaultMetricsCount := 0 diff --git a/receiver/snowflakereceiver/config_test.go b/receiver/snowflakereceiver/config_test.go index 2d835cdb3942..706eaa404205 100644 --- a/receiver/snowflakereceiver/config_test.go +++ b/receiver/snowflakereceiver/config_test.go @@ -138,7 +138,7 @@ func TestLoadConfig(t *testing.T) { require.NoError(t, component.UnmarshalConfig(cmNoStr, cfg)) assert.NoError(t, component.ValidateConfig(cfg)) - diff := cmp.Diff(expected, cfg, cmpopts.IgnoreUnexported(metadata.MetricConfig{})) + diff := cmp.Diff(expected, cfg, cmpopts.IgnoreUnexported(metadata.MetricConfig{}), cmpopts.IgnoreUnexported(metadata.ResourceAttributeConfig{})) if diff != "" { t.Errorf("config mismatch (-expected / +actual)\n%s", diff) } diff --git a/receiver/snowflakereceiver/internal/metadata/generated_config.go b/receiver/snowflakereceiver/internal/metadata/generated_config.go index d35fa5699b74..47ba7600e168 100644 --- a/receiver/snowflakereceiver/internal/metadata/generated_config.go +++ b/receiver/snowflakereceiver/internal/metadata/generated_config.go @@ -175,6 +175,20 @@ func DefaultMetricsConfig() MetricsConfig { // ResourceAttributeConfig provides common config for a particular resource attribute. type ResourceAttributeConfig struct { Enabled bool `mapstructure:"enabled"` + + enabledSetByUser bool +} + +func (rac *ResourceAttributeConfig) Unmarshal(parser *confmap.Conf) error { + if parser == nil { + return nil + } + err := parser.Unmarshal(rac, confmap.WithErrorUnused()) + if err != nil { + return err + } + rac.enabledSetByUser = parser.IsSet("enabled") + return nil } // ResourceAttributesConfig provides config for snowflake resource attributes. diff --git a/receiver/snowflakereceiver/internal/metadata/generated_metrics_test.go b/receiver/snowflakereceiver/internal/metadata/generated_metrics_test.go index 386867bdc803..a50c1387a69f 100644 --- a/receiver/snowflakereceiver/internal/metadata/generated_metrics_test.go +++ b/receiver/snowflakereceiver/internal/metadata/generated_metrics_test.go @@ -49,6 +49,7 @@ func TestMetricsBuilder(t *testing.T) { mb := NewMetricsBuilder(loadMetricsBuilderConfig(t, test.name), settings, WithStartTime(start)) expectedWarnings := 0 + assert.Equal(t, expectedWarnings, observedLogs.Len()) defaultMetricsCount := 0 diff --git a/receiver/splunkenterprisereceiver/internal/metadata/generated_metrics_test.go b/receiver/splunkenterprisereceiver/internal/metadata/generated_metrics_test.go index 74e1b78628e0..b427937ceced 100644 --- a/receiver/splunkenterprisereceiver/internal/metadata/generated_metrics_test.go +++ b/receiver/splunkenterprisereceiver/internal/metadata/generated_metrics_test.go @@ -49,6 +49,7 @@ func TestMetricsBuilder(t *testing.T) { mb := NewMetricsBuilder(loadMetricsBuilderConfig(t, test.name), settings, WithStartTime(start)) expectedWarnings := 0 + assert.Equal(t, expectedWarnings, observedLogs.Len()) defaultMetricsCount := 0 diff --git a/receiver/sqlserverreceiver/config_test.go b/receiver/sqlserverreceiver/config_test.go index 8898a7529c7a..e9abf6e521b9 100644 --- a/receiver/sqlserverreceiver/config_test.go +++ b/receiver/sqlserverreceiver/config_test.go @@ -7,6 +7,8 @@ import ( "path/filepath" "testing" + "github.com/google/go-cmp/cmp" + "github.com/google/go-cmp/cmp/cmpopts" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" "go.opentelemetry.io/collector/component" @@ -91,6 +93,8 @@ func TestLoadConfig(t *testing.T) { require.NoError(t, component.UnmarshalConfig(sub, cfg)) assert.NoError(t, component.ValidateConfig(cfg)) - assert.Equal(t, expected, cfg) + if diff := cmp.Diff(expected, cfg, cmpopts.IgnoreUnexported(metadata.MetricConfig{}), cmpopts.IgnoreUnexported(metadata.ResourceAttributeConfig{})); diff != "" { + t.Errorf("Config mismatch (-expected +actual):\n%s", diff) + } }) } diff --git a/receiver/sqlserverreceiver/internal/metadata/generated_config.go b/receiver/sqlserverreceiver/internal/metadata/generated_config.go index 674623367d6e..21a20078b49f 100644 --- a/receiver/sqlserverreceiver/internal/metadata/generated_config.go +++ b/receiver/sqlserverreceiver/internal/metadata/generated_config.go @@ -115,6 +115,20 @@ func DefaultMetricsConfig() MetricsConfig { // ResourceAttributeConfig provides common config for a particular resource attribute. type ResourceAttributeConfig struct { Enabled bool `mapstructure:"enabled"` + + enabledSetByUser bool +} + +func (rac *ResourceAttributeConfig) Unmarshal(parser *confmap.Conf) error { + if parser == nil { + return nil + } + err := parser.Unmarshal(rac, confmap.WithErrorUnused()) + if err != nil { + return err + } + rac.enabledSetByUser = parser.IsSet("enabled") + return nil } // ResourceAttributesConfig provides config for sqlserver resource attributes. diff --git a/receiver/sqlserverreceiver/internal/metadata/generated_metrics_test.go b/receiver/sqlserverreceiver/internal/metadata/generated_metrics_test.go index c22830bc1058..86e67d77fb7b 100644 --- a/receiver/sqlserverreceiver/internal/metadata/generated_metrics_test.go +++ b/receiver/sqlserverreceiver/internal/metadata/generated_metrics_test.go @@ -49,6 +49,7 @@ func TestMetricsBuilder(t *testing.T) { mb := NewMetricsBuilder(loadMetricsBuilderConfig(t, test.name), settings, WithStartTime(start)) expectedWarnings := 0 + assert.Equal(t, expectedWarnings, observedLogs.Len()) defaultMetricsCount := 0 diff --git a/receiver/sshcheckreceiver/internal/metadata/generated_config.go b/receiver/sshcheckreceiver/internal/metadata/generated_config.go index 2ec90c8d080e..58685bfcf372 100644 --- a/receiver/sshcheckreceiver/internal/metadata/generated_config.go +++ b/receiver/sshcheckreceiver/internal/metadata/generated_config.go @@ -59,6 +59,20 @@ func DefaultMetricsConfig() MetricsConfig { // ResourceAttributeConfig provides common config for a particular resource attribute. type ResourceAttributeConfig struct { Enabled bool `mapstructure:"enabled"` + + enabledSetByUser bool +} + +func (rac *ResourceAttributeConfig) Unmarshal(parser *confmap.Conf) error { + if parser == nil { + return nil + } + err := parser.Unmarshal(rac, confmap.WithErrorUnused()) + if err != nil { + return err + } + rac.enabledSetByUser = parser.IsSet("enabled") + return nil } // ResourceAttributesConfig provides config for sshcheck resource attributes. diff --git a/receiver/sshcheckreceiver/internal/metadata/generated_metrics_test.go b/receiver/sshcheckreceiver/internal/metadata/generated_metrics_test.go index 224ef2b6e25f..3f05d09c26cd 100644 --- a/receiver/sshcheckreceiver/internal/metadata/generated_metrics_test.go +++ b/receiver/sshcheckreceiver/internal/metadata/generated_metrics_test.go @@ -49,6 +49,7 @@ func TestMetricsBuilder(t *testing.T) { mb := NewMetricsBuilder(loadMetricsBuilderConfig(t, test.name), settings, WithStartTime(start)) expectedWarnings := 0 + assert.Equal(t, expectedWarnings, observedLogs.Len()) defaultMetricsCount := 0 diff --git a/receiver/vcenterreceiver/config_test.go b/receiver/vcenterreceiver/config_test.go index 3bb87f893d8a..13297408db20 100644 --- a/receiver/vcenterreceiver/config_test.go +++ b/receiver/vcenterreceiver/config_test.go @@ -107,7 +107,7 @@ func TestLoadConfig(t *testing.T) { expected.MetricsBuilderConfig.Metrics.VcenterHostCPUUtilization.Enabled = false expected.CollectionInterval = 5 * time.Minute - if diff := cmp.Diff(expected, cfg, cmpopts.IgnoreUnexported(metadata.MetricConfig{})); diff != "" { + if diff := cmp.Diff(expected, cfg, cmpopts.IgnoreUnexported(metadata.MetricConfig{}), cmpopts.IgnoreUnexported(metadata.ResourceAttributeConfig{})); diff != "" { t.Errorf("Config mismatch (-expected +actual):\n%s", diff) } diff --git a/receiver/vcenterreceiver/internal/metadata/generated_config.go b/receiver/vcenterreceiver/internal/metadata/generated_config.go index 6647ff4beab6..d69dd31f78d0 100644 --- a/receiver/vcenterreceiver/internal/metadata/generated_config.go +++ b/receiver/vcenterreceiver/internal/metadata/generated_config.go @@ -191,6 +191,20 @@ func DefaultMetricsConfig() MetricsConfig { // ResourceAttributeConfig provides common config for a particular resource attribute. type ResourceAttributeConfig struct { Enabled bool `mapstructure:"enabled"` + + enabledSetByUser bool +} + +func (rac *ResourceAttributeConfig) Unmarshal(parser *confmap.Conf) error { + if parser == nil { + return nil + } + err := parser.Unmarshal(rac, confmap.WithErrorUnused()) + if err != nil { + return err + } + rac.enabledSetByUser = parser.IsSet("enabled") + return nil } // ResourceAttributesConfig provides config for vcenter resource attributes. diff --git a/receiver/vcenterreceiver/internal/metadata/generated_metrics_test.go b/receiver/vcenterreceiver/internal/metadata/generated_metrics_test.go index cdf1b7a9b9c9..6d1864a11a0b 100644 --- a/receiver/vcenterreceiver/internal/metadata/generated_metrics_test.go +++ b/receiver/vcenterreceiver/internal/metadata/generated_metrics_test.go @@ -49,6 +49,7 @@ func TestMetricsBuilder(t *testing.T) { mb := NewMetricsBuilder(loadMetricsBuilderConfig(t, test.name), settings, WithStartTime(start)) expectedWarnings := 0 + assert.Equal(t, expectedWarnings, observedLogs.Len()) defaultMetricsCount := 0 diff --git a/receiver/zookeeperreceiver/internal/metadata/generated_config.go b/receiver/zookeeperreceiver/internal/metadata/generated_config.go index 8af5825235d0..c4fe6573394d 100644 --- a/receiver/zookeeperreceiver/internal/metadata/generated_config.go +++ b/receiver/zookeeperreceiver/internal/metadata/generated_config.go @@ -99,6 +99,20 @@ func DefaultMetricsConfig() MetricsConfig { // ResourceAttributeConfig provides common config for a particular resource attribute. type ResourceAttributeConfig struct { Enabled bool `mapstructure:"enabled"` + + enabledSetByUser bool +} + +func (rac *ResourceAttributeConfig) Unmarshal(parser *confmap.Conf) error { + if parser == nil { + return nil + } + err := parser.Unmarshal(rac, confmap.WithErrorUnused()) + if err != nil { + return err + } + rac.enabledSetByUser = parser.IsSet("enabled") + return nil } // ResourceAttributesConfig provides config for zookeeper resource attributes. diff --git a/receiver/zookeeperreceiver/internal/metadata/generated_metrics_test.go b/receiver/zookeeperreceiver/internal/metadata/generated_metrics_test.go index 1f21fb41204a..186d5380a277 100644 --- a/receiver/zookeeperreceiver/internal/metadata/generated_metrics_test.go +++ b/receiver/zookeeperreceiver/internal/metadata/generated_metrics_test.go @@ -49,6 +49,7 @@ func TestMetricsBuilder(t *testing.T) { mb := NewMetricsBuilder(loadMetricsBuilderConfig(t, test.name), settings, WithStartTime(start)) expectedWarnings := 0 + assert.Equal(t, expectedWarnings, observedLogs.Len()) defaultMetricsCount := 0