Skip to content

Commit 6af2909

Browse files
committed
feat: add generated modules that output const &str for tracing compatibility
1 parent 4dd54a2 commit 6af2909

File tree

17 files changed

+2942
-413
lines changed

17 files changed

+2942
-413
lines changed

opentelemetry-datadog/src/exporter/mod.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -212,7 +212,7 @@ impl DatadogPipelineBuilder {
212212
cfg.resource = Cow::Owned(Resource::new(
213213
cfg.resource
214214
.iter()
215-
.filter(|(k, _v)| **k != semcov::resource::SERVICE_NAME)
215+
.filter(|(k, _v)| k.as_str() != semcov::resource::SERVICE_NAME)
216216
.map(|(k, v)| KeyValue::new(k.clone(), v.clone())),
217217
));
218218
cfg
@@ -226,7 +226,7 @@ impl DatadogPipelineBuilder {
226226
} else {
227227
let service_name = SdkProvidedResourceDetector
228228
.detect(Duration::from_secs(0))
229-
.get(semcov::resource::SERVICE_NAME)
229+
.get(semcov::resource::SERVICE_NAME.into())
230230
.unwrap()
231231
.to_string();
232232
(

opentelemetry-jaeger/src/exporter/config/mod.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ fn build_config_and_process(
6161
let service_name = service_name_opt.unwrap_or_else(|| {
6262
config
6363
.resource
64-
.get(semcov::resource::SERVICE_NAME)
64+
.get(semcov::resource::SERVICE_NAME.into())
6565
.map(|v| v.to_string())
6666
.unwrap_or_else(|| "unknown_service".to_string())
6767
});
@@ -70,7 +70,7 @@ fn build_config_and_process(
7070
let mut tags = config
7171
.resource
7272
.iter()
73-
.filter(|(key, _)| **key != semcov::resource::SERVICE_NAME)
73+
.filter(|(key, _)| key.as_str() != semcov::resource::SERVICE_NAME)
7474
.map(|(key, value)| KeyValue::new(key.clone(), value.clone()))
7575
.collect::<Vec<KeyValue>>();
7676

opentelemetry-otlp/examples/basic-otlp-http/src/main.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -91,11 +91,11 @@ async fn main() -> Result<(), Box<dyn Error + Send + Sync + 'static>> {
9191
"Nice operation!".to_string(),
9292
vec![Key::new("bogons").i64(100)],
9393
);
94-
span.set_attribute(ANOTHER_KEY.string("yes"));
94+
span.set_attribute(KeyValue::new(ANOTHER_KEY, "yes"));
9595

9696
tracer.in_span("Sub operation...", |cx| {
9797
let span = cx.span();
98-
span.set_attribute(LEMONS_KEY.string("five"));
98+
span.set_attribute(KeyValue::new(LEMONS_KEY, "five"));
9999

100100
span.add_event("Sub span event", vec![]);
101101
});

opentelemetry-otlp/examples/basic-otlp/src/main.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -121,13 +121,13 @@ async fn main() -> Result<(), Box<dyn Error + Send + Sync + 'static>> {
121121
"Nice operation!".to_string(),
122122
vec![Key::new("bogons").i64(100)],
123123
);
124-
span.set_attribute(ANOTHER_KEY.string("yes"));
124+
span.set_attribute(KeyValue::new(ANOTHER_KEY, "yes"));
125125

126126
info!(target: "my-target", "hello from {}. My price is {}. I am also inside a Span!", "banana", 2.99);
127127

128128
tracer.in_span("Sub operation...", |cx| {
129129
let span = cx.span();
130-
span.set_attribute(LEMONS_KEY.string("five"));
130+
span.set_attribute(KeyValue::new(LEMONS_KEY, "five"));
131131

132132
span.add_event("Sub span event", vec![]);
133133

opentelemetry-otlp/examples/external-otlp-grpcio-async-std/src/main.rs

+3-3
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ use opentelemetry::{
1111
global::{shutdown_tracer_provider, tracer},
1212
trace::TraceError,
1313
trace::{TraceContextExt, Tracer},
14-
Key,
14+
Key, KeyValue,
1515
};
1616
use opentelemetry_otlp::WithExportConfig;
1717
use std::{
@@ -85,11 +85,11 @@ async fn main() -> Result<(), Box<dyn Error + Send + Sync + 'static>> {
8585
"Nice operation!".to_string(),
8686
vec![Key::new("bogons").i64(100)],
8787
);
88-
span.set_attribute(ANOTHER_KEY.string("yes"));
88+
span.set_attribute(KeyValue::new(ANOTHER_KEY, "yes"));
8989

9090
tracer.in_span("Sub operation...", |cx| {
9191
let span = cx.span();
92-
span.set_attribute(LEMONS_KEY.string("five"));
92+
span.set_attribute(KeyValue::new(LEMONS_KEY, "five"));
9393

9494
span.add_event("Sub span event", vec![]);
9595
});

opentelemetry-prometheus/tests/integration_test.rs

+6-6
Original file line numberDiff line numberDiff line change
@@ -327,9 +327,9 @@ fn prometheus_exporter_integration() {
327327
.merge(&mut Resource::new(
328328
vec![
329329
// always specify service.name because the default depends on the running OS
330-
SERVICE_NAME.string("prometheus_test"),
330+
KeyValue::new(SERVICE_NAME, "prometheus_test"),
331331
// Overwrite the semconv.TelemetrySDKVersionKey value so we don't need to update every version
332-
TELEMETRY_SDK_VERSION.string("latest"),
332+
KeyValue::new(TELEMETRY_SDK_VERSION, "latest"),
333333
]
334334
.into_iter()
335335
.chain(tc.custom_resource_attrs.into_iter()),
@@ -390,9 +390,9 @@ fn multiple_scopes() {
390390
)
391391
.merge(&mut Resource::new(vec![
392392
// always specify service.name because the default depends on the running OS
393-
SERVICE_NAME.string("prometheus_test"),
393+
KeyValue::new(SERVICE_NAME, "prometheus_test"),
394394
// Overwrite the semconv.TelemetrySDKVersionKey value so we don't need to update every version
395-
TELEMETRY_SDK_VERSION.string("latest"),
395+
KeyValue::new(TELEMETRY_SDK_VERSION, "latest"),
396396
]));
397397

398398
let provider = MeterProvider::builder()
@@ -722,9 +722,9 @@ fn duplicate_metrics() {
722722
.merge(&mut Resource::new(
723723
vec![
724724
// always specify service.name because the default depends on the running OS
725-
SERVICE_NAME.string("prometheus_test"),
725+
KeyValue::new(SERVICE_NAME, "prometheus_test"),
726726
// Overwrite the semconv.TelemetrySDKVersionKey value so we don't need to update every version
727-
TELEMETRY_SDK_VERSION.string("latest"),
727+
KeyValue::new(TELEMETRY_SDK_VERSION, "latest"),
728728
]
729729
.into_iter()
730730
.chain(tc.custom_resource_attrs.into_iter()),

opentelemetry-semantic-conventions/CHANGELOG.md

+1
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
### Changed
66

7+
- Replaced Key constants with &'static str [#1320]
78
- Bump MSRV to 1.65 [#1318](https://github.com/open-telemetry/opentelemetry-rust/pull/1318)
89
- Bump MSRV to 1.64 [#1203](https://github.com/open-telemetry/opentelemetry-rust/pull/1203)
910

opentelemetry-semantic-conventions/scripts/templates/header_resource.rs

+19-2
Original file line numberDiff line numberDiff line change
@@ -7,14 +7,31 @@
77
//!
88
//! ## Usage
99
//!
10+
//! `tracing`:
11+
//!
1012
//! ```
13+
//! use opentelemetry_semantic_conventions as semconv;
14+
//! use tracing::span;
15+
//!
16+
//! let span = span!(
17+
//! LEVEL::INFO,
18+
//! "handle_request",
19+
//! { semconv::resource::SERVICE_NAME = "my-service" },
20+
//! { semconv::resource::SERVICE_NAMESPACE = "my-namespace" }
21+
//! );
22+
//! ```
23+
//!
24+
//! OpenTelemetry SDK:
25+
//!
26+
//! ```
27+
//! use opentelemetry::KeyValue;
1128
//! use opentelemetry_sdk::{trace::{config, TracerProvider}, Resource};
1229
//! use opentelemetry_semantic_conventions as semconv;
1330
//!
1431
//! let _tracer = TracerProvider::builder()
1532
//! .with_config(config().with_resource(Resource::new(vec![
16-
//! semconv::resource::SERVICE_NAME.string("my-service"),
17-
//! semconv::resource::SERVICE_NAMESPACE.string("my-namespace"),
33+
//! KeyValue::new(semconv::resource::SERVICE_NAME, "my-service"),
34+
//! KeyValue::new(semconv::resource::SERVICE_NAMESPACE, "my-namespace"),
1835
//! ])))
1936
//! .build();
2037
//! ```

opentelemetry-semantic-conventions/scripts/templates/header_trace.rs

+20-3
Original file line numberDiff line numberDiff line change
@@ -7,16 +7,33 @@
77
//!
88
//! ## Usage
99
//!
10+
//! `tracing`:
11+
//!
1012
//! ```
13+
//! use opentelemetry_semantic_conventions as semconv;
14+
//! use tracing::span;
15+
//!
16+
//! let span = span!(
17+
//! LEVEL::INFO,
18+
//! "handle_request",
19+
//! { semconv::trace::NET_PEER_NAME = "example.org" },
20+
//! { semconv::trace::NET_PEER_PORT = 80 }
21+
//! );
22+
//! ```
23+
//!
24+
//! OpenTelemetry SDK:
25+
//!
26+
//! ```
27+
//! use opentelemetry::KeyValue;
1128
//! use opentelemetry::{global, trace::Tracer as _};
12-
//! use opentelemetry_semantic_conventions as semcov;
29+
//! use opentelemetry_semantic_conventions as semconv;
1330
//!
1431
//! let tracer = global::tracer("my-component");
1532
//! let _span = tracer
1633
//! .span_builder("span-name")
1734
//! .with_attributes(vec![
18-
//! semcov::trace::NET_PEER_NAME.string("example.org"),
19-
//! semcov::trace::NET_PEER_PORT.i64(80),
35+
//! KeyValue::new(semconv::trace::NET_PEER_NAME, "example.org"),
36+
//! KeyValue::new(semconv::trace::NET_PEER_PORT, 80i64),
2037
//! ])
2138
//! .start(&tracer);
2239
//! ```

opentelemetry-semantic-conventions/scripts/templates/semantic_attributes.rs.j2

+1-3
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,6 @@
66

77
{% include 'header_' + conventions + '.rs' %}
88

9-
use opentelemetry::Key;
10-
119
{%- for attribute in attributes if attribute.is_local and not attribute.ref %}
1210

1311
/// {% filter escape %}{{attribute.brief | to_doc_brief}}.{% endfilter %}
@@ -28,5 +26,5 @@ use opentelemetry::Key;
2826
{%- if (attribute.stability | string()) == "StabilityLevel.DEPRECATED" %}
2927
#[deprecated]
3028
{%- endif %}
31-
pub const {{attribute.fqn | to_const_name}}: Key = Key::from_static_str("{{attribute.fqn}}");
29+
pub const {{attribute.fqn | to_const_name}}: &str = "{{attribute.fqn}}";
3230
{%- endfor %}

0 commit comments

Comments
 (0)