Skip to content

Commit 071d317

Browse files
Fix incorrect "all" and "resource" definition for Schema File (#3777)
The "all" and "resource" sections had incorrect definitions of "attribute_rename" transform. It was missing the subkey "attribute_map". This is a bug fix and makes the implementation compliant with the spec: https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/schemas/file_format_v1.1.0.md#resources-section Related issue: open-telemetry/opentelemetry-specification#3245 Co-authored-by: Tyler Yahn <[email protected]>
1 parent fe6856e commit 071d317

File tree

7 files changed

+114
-100
lines changed

7 files changed

+114
-100
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@ This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.htm
5151
- Do not silently drop unknown schema data with `Parse` in `go.opentelemetry.io/otel/schema/v1.1`. (#3743)
5252
- Data race issue in OTLP exporter retry mechanism. (#3756)
5353
- Fixes wrapping a nil error in some cases (#????)
54+
- Fix incorrect "all" and "resource" definition for Schema File (#3777)
5455

5556
### Deprecated
5657

schema/v1.0/ast/ast_schema.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,5 +52,5 @@ type Attributes struct {
5252

5353
// AttributeChange corresponds to a section representing attribute changes.
5454
type AttributeChange struct {
55-
RenameAttributes *AttributeMap `yaml:"rename_attributes"`
55+
RenameAttributes *RenameAttributes `yaml:"rename_attributes"`
5656
}

schema/v1.0/parser_test.go

Lines changed: 27 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -39,27 +39,29 @@ func TestParseSchemaFile(t *testing.T) {
3939
All: ast.Attributes{
4040
Changes: []ast.AttributeChange{
4141
{
42-
RenameAttributes: &ast.AttributeMap{
43-
"k8s.cluster.name": "kubernetes.cluster.name",
44-
"k8s.namespace.name": "kubernetes.namespace.name",
45-
"k8s.node.name": "kubernetes.node.name",
46-
"k8s.node.uid": "kubernetes.node.uid",
47-
"k8s.pod.name": "kubernetes.pod.name",
48-
"k8s.pod.uid": "kubernetes.pod.uid",
49-
"k8s.container.name": "kubernetes.container.name",
50-
"k8s.replicaset.name": "kubernetes.replicaset.name",
51-
"k8s.replicaset.uid": "kubernetes.replicaset.uid",
52-
"k8s.cronjob.name": "kubernetes.cronjob.name",
53-
"k8s.cronjob.uid": "kubernetes.cronjob.uid",
54-
"k8s.job.name": "kubernetes.job.name",
55-
"k8s.job.uid": "kubernetes.job.uid",
56-
"k8s.statefulset.name": "kubernetes.statefulset.name",
57-
"k8s.statefulset.uid": "kubernetes.statefulset.uid",
58-
"k8s.daemonset.name": "kubernetes.daemonset.name",
59-
"k8s.daemonset.uid": "kubernetes.daemonset.uid",
60-
"k8s.deployment.name": "kubernetes.deployment.name",
61-
"k8s.deployment.uid": "kubernetes.deployment.uid",
62-
"service.namespace": "service.namespace.name",
42+
RenameAttributes: &ast.RenameAttributes{
43+
AttributeMap: ast.AttributeMap{
44+
"k8s.cluster.name": "kubernetes.cluster.name",
45+
"k8s.namespace.name": "kubernetes.namespace.name",
46+
"k8s.node.name": "kubernetes.node.name",
47+
"k8s.node.uid": "kubernetes.node.uid",
48+
"k8s.pod.name": "kubernetes.pod.name",
49+
"k8s.pod.uid": "kubernetes.pod.uid",
50+
"k8s.container.name": "kubernetes.container.name",
51+
"k8s.replicaset.name": "kubernetes.replicaset.name",
52+
"k8s.replicaset.uid": "kubernetes.replicaset.uid",
53+
"k8s.cronjob.name": "kubernetes.cronjob.name",
54+
"k8s.cronjob.uid": "kubernetes.cronjob.uid",
55+
"k8s.job.name": "kubernetes.job.name",
56+
"k8s.job.uid": "kubernetes.job.uid",
57+
"k8s.statefulset.name": "kubernetes.statefulset.name",
58+
"k8s.statefulset.uid": "kubernetes.statefulset.uid",
59+
"k8s.daemonset.name": "kubernetes.daemonset.name",
60+
"k8s.daemonset.uid": "kubernetes.daemonset.uid",
61+
"k8s.deployment.name": "kubernetes.deployment.name",
62+
"k8s.deployment.uid": "kubernetes.deployment.uid",
63+
"service.namespace": "service.namespace.name",
64+
},
6365
},
6466
},
6567
},
@@ -68,8 +70,10 @@ func TestParseSchemaFile(t *testing.T) {
6870
Resources: ast.Attributes{
6971
Changes: []ast.AttributeChange{
7072
{
71-
RenameAttributes: &ast.AttributeMap{
72-
"telemetry.auto.version": "telemetry.auto_instr.version",
73+
RenameAttributes: &ast.RenameAttributes{
74+
AttributeMap: ast.AttributeMap{
75+
"telemetry.auto.version": "telemetry.auto_instr.version",
76+
},
7377
},
7478
},
7579
},

schema/v1.0/testdata/valid-example.yaml

Lines changed: 28 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -18,41 +18,43 @@ versions:
1818
all:
1919
changes:
2020
- rename_attributes:
21-
# Mapping of attribute names (label names for metrics). The key is the old name
22-
# used prior to this version, the value is the new name starting from this version.
21+
attribute_map:
22+
# Mapping of attribute names (label names for metrics). The key is the old name
23+
# used prior to this version, the value is the new name starting from this version.
2324

24-
# Rename k8s.* to kubernetes.*
25-
k8s.cluster.name: kubernetes.cluster.name
26-
k8s.namespace.name: kubernetes.namespace.name
27-
k8s.node.name: kubernetes.node.name
28-
k8s.node.uid: kubernetes.node.uid
29-
k8s.pod.name: kubernetes.pod.name
30-
k8s.pod.uid: kubernetes.pod.uid
31-
k8s.container.name: kubernetes.container.name
32-
k8s.replicaset.name: kubernetes.replicaset.name
33-
k8s.replicaset.uid: kubernetes.replicaset.uid
34-
k8s.cronjob.name: kubernetes.cronjob.name
35-
k8s.cronjob.uid: kubernetes.cronjob.uid
36-
k8s.job.name: kubernetes.job.name
37-
k8s.job.uid: kubernetes.job.uid
38-
k8s.statefulset.name: kubernetes.statefulset.name
39-
k8s.statefulset.uid: kubernetes.statefulset.uid
40-
k8s.daemonset.name: kubernetes.daemonset.name
41-
k8s.daemonset.uid: kubernetes.daemonset.uid
42-
k8s.deployment.name: kubernetes.deployment.name
43-
k8s.deployment.uid: kubernetes.deployment.uid
25+
# Rename k8s.* to kubernetes.*
26+
k8s.cluster.name: kubernetes.cluster.name
27+
k8s.namespace.name: kubernetes.namespace.name
28+
k8s.node.name: kubernetes.node.name
29+
k8s.node.uid: kubernetes.node.uid
30+
k8s.pod.name: kubernetes.pod.name
31+
k8s.pod.uid: kubernetes.pod.uid
32+
k8s.container.name: kubernetes.container.name
33+
k8s.replicaset.name: kubernetes.replicaset.name
34+
k8s.replicaset.uid: kubernetes.replicaset.uid
35+
k8s.cronjob.name: kubernetes.cronjob.name
36+
k8s.cronjob.uid: kubernetes.cronjob.uid
37+
k8s.job.name: kubernetes.job.name
38+
k8s.job.uid: kubernetes.job.uid
39+
k8s.statefulset.name: kubernetes.statefulset.name
40+
k8s.statefulset.uid: kubernetes.statefulset.uid
41+
k8s.daemonset.name: kubernetes.daemonset.name
42+
k8s.daemonset.uid: kubernetes.daemonset.uid
43+
k8s.deployment.name: kubernetes.deployment.name
44+
k8s.deployment.uid: kubernetes.deployment.uid
4445

45-
service.namespace: service.namespace.name
46+
service.namespace: service.namespace.name
4647

4748
# Like "all" the "resources" section may contain only attribute renaming translations.
4849
# The only translation possible in this section is renaming of attributes in
4950
# versions.
5051
resources:
5152
changes:
5253
- rename_attributes:
53-
# Mapping of attribute names. The key is the old name
54-
# used prior to this version, the value is the new name starting from this version.
55-
telemetry.auto.version: telemetry.auto_instr.version
54+
attribute_map:
55+
# Mapping of attribute names. The key is the old name
56+
# used prior to this version, the value is the new name starting from this version.
57+
telemetry.auto.version: telemetry.auto_instr.version
5658

5759
spans:
5860
changes:

schema/v1.1/parser_test.go

Lines changed: 27 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -40,27 +40,29 @@ func TestParseSchemaFile(t *testing.T) {
4040
All: ast10.Attributes{
4141
Changes: []ast10.AttributeChange{
4242
{
43-
RenameAttributes: &ast10.AttributeMap{
44-
"k8s.cluster.name": "kubernetes.cluster.name",
45-
"k8s.namespace.name": "kubernetes.namespace.name",
46-
"k8s.node.name": "kubernetes.node.name",
47-
"k8s.node.uid": "kubernetes.node.uid",
48-
"k8s.pod.name": "kubernetes.pod.name",
49-
"k8s.pod.uid": "kubernetes.pod.uid",
50-
"k8s.container.name": "kubernetes.container.name",
51-
"k8s.replicaset.name": "kubernetes.replicaset.name",
52-
"k8s.replicaset.uid": "kubernetes.replicaset.uid",
53-
"k8s.cronjob.name": "kubernetes.cronjob.name",
54-
"k8s.cronjob.uid": "kubernetes.cronjob.uid",
55-
"k8s.job.name": "kubernetes.job.name",
56-
"k8s.job.uid": "kubernetes.job.uid",
57-
"k8s.statefulset.name": "kubernetes.statefulset.name",
58-
"k8s.statefulset.uid": "kubernetes.statefulset.uid",
59-
"k8s.daemonset.name": "kubernetes.daemonset.name",
60-
"k8s.daemonset.uid": "kubernetes.daemonset.uid",
61-
"k8s.deployment.name": "kubernetes.deployment.name",
62-
"k8s.deployment.uid": "kubernetes.deployment.uid",
63-
"service.namespace": "service.namespace.name",
43+
RenameAttributes: &ast10.RenameAttributes{
44+
AttributeMap: ast10.AttributeMap{
45+
"k8s.cluster.name": "kubernetes.cluster.name",
46+
"k8s.namespace.name": "kubernetes.namespace.name",
47+
"k8s.node.name": "kubernetes.node.name",
48+
"k8s.node.uid": "kubernetes.node.uid",
49+
"k8s.pod.name": "kubernetes.pod.name",
50+
"k8s.pod.uid": "kubernetes.pod.uid",
51+
"k8s.container.name": "kubernetes.container.name",
52+
"k8s.replicaset.name": "kubernetes.replicaset.name",
53+
"k8s.replicaset.uid": "kubernetes.replicaset.uid",
54+
"k8s.cronjob.name": "kubernetes.cronjob.name",
55+
"k8s.cronjob.uid": "kubernetes.cronjob.uid",
56+
"k8s.job.name": "kubernetes.job.name",
57+
"k8s.job.uid": "kubernetes.job.uid",
58+
"k8s.statefulset.name": "kubernetes.statefulset.name",
59+
"k8s.statefulset.uid": "kubernetes.statefulset.uid",
60+
"k8s.daemonset.name": "kubernetes.daemonset.name",
61+
"k8s.daemonset.uid": "kubernetes.daemonset.uid",
62+
"k8s.deployment.name": "kubernetes.deployment.name",
63+
"k8s.deployment.uid": "kubernetes.deployment.uid",
64+
"service.namespace": "service.namespace.name",
65+
},
6466
},
6567
},
6668
},
@@ -69,8 +71,10 @@ func TestParseSchemaFile(t *testing.T) {
6971
Resources: ast10.Attributes{
7072
Changes: []ast10.AttributeChange{
7173
{
72-
RenameAttributes: &ast10.AttributeMap{
73-
"telemetry.auto.version": "telemetry.auto_instr.version",
74+
RenameAttributes: &ast10.RenameAttributes{
75+
AttributeMap: ast10.AttributeMap{
76+
"telemetry.auto.version": "telemetry.auto_instr.version",
77+
},
7478
},
7579
},
7680
},

schema/v1.1/testdata/unsupported-file-format.yaml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,5 +6,6 @@ versions:
66
all:
77
changes:
88
- rename_attributes:
9-
k8s.cluster.name: kubernetes.cluster.name
9+
attribute_map:
10+
k8s.cluster.name: kubernetes.cluster.name
1011
1.0.0:

schema/v1.1/testdata/valid-example.yaml

Lines changed: 28 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -18,41 +18,43 @@ versions:
1818
all:
1919
changes:
2020
- rename_attributes:
21-
# Mapping of attribute names (label names for metrics). The key is the old name
22-
# used prior to this version, the value is the new name starting from this version.
21+
attribute_map:
22+
# Mapping of attribute names (label names for metrics). The key is the old name
23+
# used prior to this version, the value is the new name starting from this version.
2324

24-
# Rename k8s.* to kubernetes.*
25-
k8s.cluster.name: kubernetes.cluster.name
26-
k8s.namespace.name: kubernetes.namespace.name
27-
k8s.node.name: kubernetes.node.name
28-
k8s.node.uid: kubernetes.node.uid
29-
k8s.pod.name: kubernetes.pod.name
30-
k8s.pod.uid: kubernetes.pod.uid
31-
k8s.container.name: kubernetes.container.name
32-
k8s.replicaset.name: kubernetes.replicaset.name
33-
k8s.replicaset.uid: kubernetes.replicaset.uid
34-
k8s.cronjob.name: kubernetes.cronjob.name
35-
k8s.cronjob.uid: kubernetes.cronjob.uid
36-
k8s.job.name: kubernetes.job.name
37-
k8s.job.uid: kubernetes.job.uid
38-
k8s.statefulset.name: kubernetes.statefulset.name
39-
k8s.statefulset.uid: kubernetes.statefulset.uid
40-
k8s.daemonset.name: kubernetes.daemonset.name
41-
k8s.daemonset.uid: kubernetes.daemonset.uid
42-
k8s.deployment.name: kubernetes.deployment.name
43-
k8s.deployment.uid: kubernetes.deployment.uid
25+
# Rename k8s.* to kubernetes.*
26+
k8s.cluster.name: kubernetes.cluster.name
27+
k8s.namespace.name: kubernetes.namespace.name
28+
k8s.node.name: kubernetes.node.name
29+
k8s.node.uid: kubernetes.node.uid
30+
k8s.pod.name: kubernetes.pod.name
31+
k8s.pod.uid: kubernetes.pod.uid
32+
k8s.container.name: kubernetes.container.name
33+
k8s.replicaset.name: kubernetes.replicaset.name
34+
k8s.replicaset.uid: kubernetes.replicaset.uid
35+
k8s.cronjob.name: kubernetes.cronjob.name
36+
k8s.cronjob.uid: kubernetes.cronjob.uid
37+
k8s.job.name: kubernetes.job.name
38+
k8s.job.uid: kubernetes.job.uid
39+
k8s.statefulset.name: kubernetes.statefulset.name
40+
k8s.statefulset.uid: kubernetes.statefulset.uid
41+
k8s.daemonset.name: kubernetes.daemonset.name
42+
k8s.daemonset.uid: kubernetes.daemonset.uid
43+
k8s.deployment.name: kubernetes.deployment.name
44+
k8s.deployment.uid: kubernetes.deployment.uid
4445

45-
service.namespace: service.namespace.name
46+
service.namespace: service.namespace.name
4647

4748
# Like "all" the "resources" section may contain only attribute renaming translations.
4849
# The only translation possible in this section is renaming of attributes in
4950
# versions.
5051
resources:
5152
changes:
5253
- rename_attributes:
53-
# Mapping of attribute names. The key is the old name
54-
# used prior to this version, the value is the new name starting from this version.
55-
telemetry.auto.version: telemetry.auto_instr.version
54+
attribute_map:
55+
# Mapping of attribute names. The key is the old name
56+
# used prior to this version, the value is the new name starting from this version.
57+
telemetry.auto.version: telemetry.auto_instr.version
5658

5759
spans:
5860
changes:

0 commit comments

Comments
 (0)