Skip to content

Commit 5846872

Browse files
authored
feat(semantic-conventions): update semantic conventions to v1.31.0 (#5589)
1 parent 0f6619e commit 5846872

File tree

6 files changed

+762
-58
lines changed

6 files changed

+762
-58
lines changed

scripts/semconv/changelog-gen.js

Lines changed: 30 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -100,14 +100,6 @@ function summarizeChanges({prev, curr, prevSrc, currSrc}) {
100100
return a !== b;
101101
}
102102
};
103-
const isNewlyDeprecated = (k) => {
104-
const isPrevDeprecated = prevNames.has(k) && isDeprecated(prevSrc, k);
105-
const isCurrDeprecated = currNames.has(k) && isDeprecated(currSrc, k);
106-
if (isPrevDeprecated && !isCurrDeprecated) {
107-
throw new Error(`semconv export '${k}' was *un*-deprecated in this release!? Wassup?`);
108-
}
109-
return (!isPrevDeprecated && isCurrDeprecated);
110-
};
111103

112104
// Determine changes.
113105
const changes = [];
@@ -120,9 +112,12 @@ function summarizeChanges({prev, curr, prevSrc, currSrc}) {
120112
} else if (valChanged(curr[k], prev[k])) {
121113
changes.push({type: 'changed', k, v: curr[k], prevV: prev[k]});
122114
} else {
123-
const deprecatedResult = isNewlyDeprecated(k);
124-
if (deprecatedResult) {
125-
changes.push({type: 'deprecated', k, v: curr[k], deprecatedResult});
115+
const isPrevDeprecated = prevNames.has(k) && isDeprecated(prevSrc, k);
116+
const isCurrDeprecated = currNames.has(k) && isDeprecated(currSrc, k);
117+
if (!isPrevDeprecated && isCurrDeprecated) {
118+
changes.push({type: 'deprecated', k, v: curr[k], deprecatedResult: isCurrDeprecated});
119+
} else if (isPrevDeprecated && !isCurrDeprecated) {
120+
changes.push({type: 'undeprecated', k, v: curr[k]});
126121
}
127122
}
128123
}
@@ -138,19 +133,21 @@ function summarizeChanges({prev, curr, prevSrc, currSrc}) {
138133
removed: [],
139134
changed: [],
140135
deprecated: [],
136+
undeprecated: [],
141137
added: [],
142138
}
143139
const execSummaryFromChangeType = {
144140
removed: null,
145141
changed: null,
146142
deprecated: null,
143+
undeprecated: null,
147144
added: null,
148145
};
149146

150147
const removed = changes.filter(ch => ch.type === 'removed');
151148
let summary = summaryFromChangeType.removed;
152149
if (removed.length) {
153-
execSummaryFromChangeType.removed = `${removed.length} removed exports`;
150+
execSummaryFromChangeType.removed = `${removed.length} removed export${removed.length === 1 ? '' : 's'}`;
154151
if (summary.length) { summary.push(''); }
155152
let last;
156153
const longest = removed.reduce((acc, ch) => Math.max(acc, ch.k.length), 0);
@@ -168,7 +165,7 @@ function summarizeChanges({prev, curr, prevSrc, currSrc}) {
168165
const changed = changes.filter(ch => ch.type === 'changed');
169166
summary = summaryFromChangeType.changed;
170167
if (changed.length) {
171-
execSummaryFromChangeType.changed = `${changed.length} exported values changed`;
168+
execSummaryFromChangeType.changed = `${changed.length} exported value${changed.length === 1 ? '' : 's'} changed`;
172169
if (summary.length) { summary.push(''); }
173170
let last;
174171
const longest = changed.reduce((acc, ch) => Math.max(acc, ch.k.length), 0);
@@ -187,7 +184,7 @@ function summarizeChanges({prev, curr, prevSrc, currSrc}) {
187184
const deprecated = changes.filter(ch => ch.type === 'deprecated');
188185
summary = summaryFromChangeType.deprecated;
189186
if (deprecated.length) {
190-
execSummaryFromChangeType.deprecated = `${deprecated.length} newly deprecated exports`;
187+
execSummaryFromChangeType.deprecated = `${deprecated.length} newly deprecated export${deprecated.length === 1 ? '': 's'}`;
191188
if (summary.length) { summary.push(''); }
192189
let last;
193190
const longest = deprecated.reduce((acc, ch) => Math.max(acc, ch.k.length), 0);
@@ -205,10 +202,27 @@ function summarizeChanges({prev, curr, prevSrc, currSrc}) {
205202
});
206203
}
207204

205+
const undeprecated = changes.filter(ch => ch.type === 'undeprecated');
206+
summary = summaryFromChangeType.undeprecated;
207+
if (undeprecated.length) {
208+
execSummaryFromChangeType.undeprecated = `${undeprecated.length} newly undeprecated export${undeprecated.length === 1 ? '': 's'}`;
209+
if (summary.length) { summary.push(''); }
210+
let last;
211+
const longest = undeprecated.reduce((acc, ch) => Math.max(acc, ch.k.length), 0);
212+
undeprecated.forEach(ch => {
213+
if (last && ch.ns !== last.ns) { summary.push(''); }
214+
const cindent = ' '.repeat(longest - ch.k.length + 1);
215+
216+
summary.push(`${ch.k}${cindent}// ${ch.v}`);
217+
218+
last = ch;
219+
});
220+
}
221+
208222
const added = changes.filter(ch => ch.type === 'added');
209223
summary = summaryFromChangeType.added;
210224
if (added.length) {
211-
execSummaryFromChangeType.added = `${added.length} added exports`;
225+
execSummaryFromChangeType.added = `${added.length} added export${added.length === 1 ? '': 's'}`;
212226
let last, lastAttr;
213227
const longest = added.reduce((acc, ch) => Math.max(acc, ch.k.length), 0);
214228
added.forEach(ch => {
@@ -311,7 +325,7 @@ function semconvChangelogGen(aVer=undefined, bVer=undefined) {
311325
});
312326

313327
// Render the "change info" into a Markdown summary for the changelog.
314-
const changeTypes = ['removed', 'changed', 'deprecated', 'added'];
328+
const changeTypes = ['removed', 'changed', 'deprecated', 'undeprecated', 'added'];
315329
let execSummaryFromChInfo = (chInfo) => {
316330
const parts = changeTypes
317331
.map(chType => chInfo.execSummaryFromChangeType[chType])

scripts/semconv/generate.sh

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,9 @@ ROOT_DIR="${SCRIPT_DIR}/../../"
77

88
# Get latest version by running `git tag -l --sort=version:refname | tail -1`
99
# ... in [email protected]:open-telemetry/semantic-conventions.git
10-
SPEC_VERSION=v1.30.0
10+
SPEC_VERSION=v1.31.0
1111
# ... in [email protected]:open-telemetry/weaver.git
12-
GENERATOR_VERSION=v0.12.0
12+
GENERATOR_VERSION=v0.13.2
1313

1414
# When running on windows and you are getting references to ";C" (like Telemetry;C)
1515
# then this is an issue with the bash shell, so first run the following in your shell:

scripts/semconv/templates/registry/stable/docstring.ts.j2

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
{% endif -%}
2121

2222
{%- if obj is deprecated %}
23-
{%- set deprecated_jsdoc = "\n@deprecated " ~ strong_rfc2119(obj.deprecated) -%}
23+
{%- set deprecated_jsdoc = "\n@deprecated " ~ strong_rfc2119(obj.deprecated.note) -%}
2424
{%- endif -%}
2525

2626
{{ [

semantic-conventions/CHANGELOG.md

Lines changed: 115 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,121 @@ All notable changes to the semantic-conventions package will be documented in th
99

1010
### :rocket: Features
1111

12+
* feat: update semantic conventions to v1.31.0
13+
* Semantic Conventions v1.31.0: [changelog](https://github.com/open-telemetry/semantic-conventions/blob/main/CHANGELOG.md#v1310) | [latest docs](https://opentelemetry.io/docs/specs/semconv/)
14+
* `@opentelemetry/semantic-conventions` (stable) changes: *none*
15+
* `@opentelemetry/semantic-conventions/incubating` (unstable) changes: *8 newly deprecated exports, 1 newly undeprecated export, 63 added exports*
16+
17+
#### Unstable changes in v1.31.0
18+
19+
<details>
20+
<summary>8 newly deprecated exports</summary>
21+
22+
```js
23+
METRIC_K8S_REPLICATION_CONTROLLER_AVAILABLE_PODS // k8s.replication_controller.available_pods: Replaced by `k8s.replicationcontroller.available_pods`.
24+
METRIC_K8S_REPLICATION_CONTROLLER_DESIRED_PODS // k8s.replication_controller.desired_pods: Replaced by `k8s.replicationcontroller.desired_pods`.
25+
METRIC_SYSTEM_CPU_FREQUENCY // system.cpu.frequency: Replaced by `cpu.frequency`.
26+
METRIC_SYSTEM_CPU_TIME // system.cpu.time: Replaced by `cpu.time`.
27+
METRIC_SYSTEM_CPU_UTILIZATION // system.cpu.utilization: Replaced by `cpu.utilization`.
28+
ATTR_CODE_FILEPATH // code.filepath: Replaced by `code.file.path`
29+
ATTR_CODE_NAMESPACE // code.namespace: Value should be included in `code.function.name` which is expected to be a fully-qualified name.
30+
ATTR_GEN_AI_OPENAI_REQUEST_RESPONSE_FORMAT // gen_ai.openai.request.response_format: Replaced by `gen_ai.output.type`.
31+
```
32+
33+
</details>
34+
35+
<details>
36+
<summary>1 newly undeprecated export</summary>
37+
38+
```js
39+
ATTR_ENDUSER_ID // enduser.id
40+
```
41+
42+
</details>
43+
44+
<details>
45+
<summary>63 added exports</summary>
46+
47+
```js
48+
METRIC_CPU_FREQUENCY // cpu.frequency
49+
METRIC_CPU_TIME // cpu.time
50+
METRIC_CPU_UTILIZATION // cpu.utilization
51+
52+
METRIC_HW_HOST_AMBIENT_TEMPERATURE // hw.host.ambient_temperature
53+
METRIC_HW_HOST_ENERGY // hw.host.energy
54+
METRIC_HW_HOST_HEATING_MARGIN // hw.host.heating_margin
55+
METRIC_HW_HOST_POWER // hw.host.power
56+
57+
METRIC_K8S_REPLICATIONCONTROLLER_AVAILABLE_PODS // k8s.replicationcontroller.available_pods
58+
METRIC_K8S_REPLICATIONCONTROLLER_DESIRED_PODS // k8s.replicationcontroller.desired_pods
59+
60+
METRIC_OTEL_SDK_EXPORTER_SPAN_EXPORTED_COUNT // otel.sdk.exporter.span.exported.count
61+
METRIC_OTEL_SDK_EXPORTER_SPAN_INFLIGHT_COUNT // otel.sdk.exporter.span.inflight.count
62+
METRIC_OTEL_SDK_PROCESSOR_SPAN_PROCESSED_COUNT // otel.sdk.processor.span.processed.count
63+
METRIC_OTEL_SDK_PROCESSOR_SPAN_QUEUE_CAPACITY // otel.sdk.processor.span.queue.capacity
64+
METRIC_OTEL_SDK_PROCESSOR_SPAN_QUEUE_SIZE // otel.sdk.processor.span.queue.size
65+
METRIC_OTEL_SDK_SPAN_ENDED_COUNT // otel.sdk.span.ended.count
66+
METRIC_OTEL_SDK_SPAN_LIVE_COUNT // otel.sdk.span.live.count
67+
68+
ATTR_ANDROID_APP_STATE // android.app.state
69+
ANDROID_APP_STATE_VALUE_BACKGROUND // "background"
70+
ANDROID_APP_STATE_VALUE_CREATED // "created"
71+
ANDROID_APP_STATE_VALUE_FOREGROUND // "foreground"
72+
73+
ATTR_CICD_PIPELINE_RUN_URL_FULL // cicd.pipeline.run.url.full
74+
75+
ATTR_CPU_LOGICAL_NUMBER // cpu.logical_number
76+
77+
ATTR_ENDUSER_PSEUDO_ID // enduser.pseudo.id
78+
79+
ATTR_GEN_AI_AGENT_DESCRIPTION // gen_ai.agent.description
80+
ATTR_GEN_AI_AGENT_ID // gen_ai.agent.id
81+
ATTR_GEN_AI_AGENT_NAME // gen_ai.agent.name
82+
GEN_AI_OPERATION_NAME_VALUE_CREATE_AGENT // "create_agent"
83+
GEN_AI_OPERATION_NAME_VALUE_EXECUTE_TOOL // "execute_tool"
84+
ATTR_GEN_AI_OUTPUT_TYPE // gen_ai.output.type
85+
GEN_AI_OUTPUT_TYPE_VALUE_IMAGE // "image"
86+
GEN_AI_OUTPUT_TYPE_VALUE_JSON // "json"
87+
GEN_AI_OUTPUT_TYPE_VALUE_SPEECH // "speech"
88+
GEN_AI_OUTPUT_TYPE_VALUE_TEXT // "text"
89+
ATTR_GEN_AI_REQUEST_CHOICE_COUNT // gen_ai.request.choice.count
90+
GEN_AI_TOKEN_TYPE_VALUE_OUTPUT // "output"
91+
ATTR_GEN_AI_TOOL_CALL_ID // gen_ai.tool.call.id
92+
ATTR_GEN_AI_TOOL_NAME // gen_ai.tool.name
93+
ATTR_GEN_AI_TOOL_TYPE // gen_ai.tool.type
94+
95+
ATTR_IOS_APP_STATE // ios.app.state
96+
IOS_APP_STATE_VALUE_ACTIVE // "active"
97+
IOS_APP_STATE_VALUE_BACKGROUND // "background"
98+
IOS_APP_STATE_VALUE_FOREGROUND // "foreground"
99+
IOS_APP_STATE_VALUE_INACTIVE // "inactive"
100+
IOS_APP_STATE_VALUE_TERMINATE // "terminate"
101+
102+
ATTR_K8S_HPA_NAME // k8s.hpa.name
103+
ATTR_K8S_HPA_UID // k8s.hpa.uid
104+
ATTR_K8S_REPLICATIONCONTROLLER_NAME // k8s.replicationcontroller.name
105+
ATTR_K8S_REPLICATIONCONTROLLER_UID // k8s.replicationcontroller.uid
106+
ATTR_K8S_RESOURCEQUOTA_NAME // k8s.resourcequota.name
107+
ATTR_K8S_RESOURCEQUOTA_UID // k8s.resourcequota.uid
108+
109+
ATTR_OTEL_COMPONENT_NAME // otel.component.name
110+
ATTR_OTEL_COMPONENT_TYPE // otel.component.type
111+
OTEL_COMPONENT_TYPE_VALUE_BATCHING_SPAN_PROCESSOR // "batching_span_processor"
112+
OTEL_COMPONENT_TYPE_VALUE_OTLP_GRPC_SPAN_EXPORTER // "otlp_grpc_span_exporter"
113+
OTEL_COMPONENT_TYPE_VALUE_OTLP_HTTP_JSON_SPAN_EXPORTER // "otlp_http_json_span_exporter"
114+
OTEL_COMPONENT_TYPE_VALUE_OTLP_HTTP_SPAN_EXPORTER // "otlp_http_span_exporter"
115+
OTEL_COMPONENT_TYPE_VALUE_SIMPLE_SPAN_PROCESSOR // "simple_span_processor"
116+
ATTR_OTEL_SPAN_SAMPLING_RESULT // otel.span.sampling_result
117+
OTEL_SPAN_SAMPLING_RESULT_VALUE_DROP // "DROP"
118+
OTEL_SPAN_SAMPLING_RESULT_VALUE_RECORD_AND_SAMPLE // "RECORD_AND_SAMPLE"
119+
OTEL_SPAN_SAMPLING_RESULT_VALUE_RECORD_ONLY // "RECORD_ONLY"
120+
121+
ATTR_USER_AGENT_OS_NAME // user_agent.os.name
122+
ATTR_USER_AGENT_OS_VERSION // user_agent.os.version
123+
```
124+
125+
</details>
126+
12127
### :bug: Bug Fixes
13128

14129
### :books: Documentation

0 commit comments

Comments
 (0)