Skip to content

Commit c855c77

Browse files
Updated changelog for August release (#2842)
* Updated changelog for August release * Update sdk/core/azure_core/CHANGELOG.md Co-authored-by: Copilot <[email protected]> * Added distributed tracing to ci.yml; removed noise from opentelemetry readme file. --------- Co-authored-by: Copilot <[email protected]>
1 parent c16148b commit c855c77

File tree

9 files changed

+44
-41
lines changed

9 files changed

+44
-41
lines changed

Cargo.toml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,9 @@ path = "sdk/core/azure_core"
5454
version = "0.1.0"
5555
path = "sdk/core/azure_core_macros"
5656

57+
[workspace.dependencies.azure_core_opentelemetry]
58+
version = "0.1.0"
59+
path = "sdk/core/azure_core_opentelemetry"
5760

5861
[workspace.dependencies.azure_core_amqp]
5962
version = "0.6.0"
@@ -93,6 +96,9 @@ hmac = { version = "0.12" }
9396
litemap = "0.7.4"
9497
log = "0.4"
9598
openssl = { version = "0.10.72" }
99+
opentelemetry = { version = "0.30", features = ["trace"] }
100+
opentelemetry_sdk = "0.30"
101+
opentelemetry-http = "0.30"
96102
pin-project = "1.0"
97103
proc-macro2 = "1.0.86"
98104
quick-xml = { version = "0.31", features = ["serialize", "serde-types"] }

sdk/core/azure_core/CHANGELOG.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@
44

55
### Features Added
66

7+
- Added support for distributed tracing macros in Azure service clients, including convenience macros `#[tracing::new]`, `#[tracing::client]` and `#[tracing::function]` to reduce implementation details. See [distributed tracing in rust](https://github.com/Azure/azure-sdk-for-rust/blob/main/doc/distributed-tracing-for-rust-service-clients.md) for more information on distributed tracing.
8+
79
### Breaking Changes
810

911
- `Pager::from_callback` and `PageIterator::from_callback` define a parameter of type `PagerState<C>` instead of `Option<C>`, where `None` => `Initial` and `Some(C)` => `More(C)`.

sdk/core/azure_core_opentelemetry/Cargo.toml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,15 +10,15 @@ homepage = "https://github.com/azure/azure-sdk-for-rust"
1010
documentation = "https://docs.rs/azure_core_tracing_opentelemetry"
1111
keywords = ["sdk", "azure", "tracing", "opentelemetry", "observability"]
1212
categories = ["api-bindings", "development-tools::debugging"]
13-
publish = false
13+
publish = true
1414

1515
edition.workspace = true
1616

1717
[dependencies]
1818
azure_core.workspace = true
19-
opentelemetry = { version = "0.30", features = ["trace"] }
20-
opentelemetry-http = "0.30.0"
21-
opentelemetry_sdk = "0.30"
19+
opentelemetry.workspace = true
20+
opentelemetry-http.workspace = true
21+
opentelemetry_sdk.workspace = true
2222
reqwest.workspace = true
2323
tracing.workspace = true
2424
typespec_client_core.workspace = true

sdk/core/azure_core_opentelemetry/README.md

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -74,12 +74,6 @@ let options = ServiceClientOptions {
7474

7575
Once the `OpenTelemetryTracerProvider` is integrated with the Azure Service ClientOptions, the Azure SDK will be configured to capture per-API and per-HTTP operation tracing options, and the HTTP requests will be annotated with [W3C Trace Context headers](https://www.w3.org/TR/trace-context/).
7676

77-
## Troubleshooting
78-
79-
## General
80-
81-
## Logging
82-
8377
## Contributing
8478

8579
See the [CONTRIBUTING.md] for details on building, testing, and contributing to these libraries.
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"AssetsRepo": "Azure/azure-sdk-assets",
33
"AssetsRepoPrefixPath": "rust",
4-
"Tag": "rust/azure_core_opentelemetry_58be03e82f",
4+
"Tag": "rust/azure_core_opentelemetry_2bc5efc404",
55
"TagPrefix": "rust/azure_core_opentelemetry"
66
}

sdk/core/azure_core_opentelemetry/tests/telemetry_service_implementation.rs

Lines changed: 15 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,11 @@
55

66
//! This file contains an Azure SDK for Rust fake service client API.
77
//!
8+
use azure_core::http::RequestInstrumentationOptions;
89
use azure_core::{
910
credentials::TokenCredential,
1011
fmt::SafeDebug,
11-
http::{
12-
ClientMethodOptions, ClientOptions, Pipeline, RawResponse, Request,
13-
RequestInstrumentationOptions, Url,
14-
},
12+
http::{ClientMethodOptions, ClientOptions, Pipeline, RawResponse, Request, Url},
1513
tracing::{PublicApiInstrumentationInformation, Tracer},
1614
Result,
1715
};
@@ -239,9 +237,10 @@ async fn test_service_client_new(ctx: TestContext) -> Result<()> {
239237
let recording = ctx.recording();
240238
let endpoint = "https://www.microsoft.com";
241239
let credential = recording.credential().clone();
242-
let options = TestServiceClientOptions {
240+
let mut options = TestServiceClientOptions {
243241
..Default::default()
244242
};
243+
recording.instrument(&mut options.azure_client_options);
245244

246245
let client = TestServiceClient::new(endpoint, credential, Some(options)).unwrap();
247246
assert_eq!(client.endpoint().as_str(), "https://www.microsoft.com/");
@@ -256,8 +255,10 @@ async fn test_service_client_get(ctx: TestContext) -> Result<()> {
256255
let recording = ctx.recording();
257256
let endpoint = "https://azuresdkforcpp.azurewebsites.net";
258257
let credential = recording.credential().clone();
258+
let mut options = TestServiceClientOptions::default();
259+
recording.instrument(&mut options.azure_client_options);
259260

260-
let client = TestServiceClient::new(endpoint, credential, None).unwrap();
261+
let client = TestServiceClient::new(endpoint, credential, Some(options)).unwrap();
261262
let response = client.get("get", None).await;
262263
info!("Response: {:?}", response);
263264
assert!(response.is_ok());
@@ -274,7 +275,7 @@ async fn test_service_client_get_with_tracing(ctx: TestContext) -> Result<()> {
274275
let recording = ctx.recording();
275276
let endpoint = "https://azuresdkforcpp.azurewebsites.net";
276277
let credential = recording.credential().clone();
277-
let options = TestServiceClientOptions {
278+
let mut options = TestServiceClientOptions {
278279
azure_client_options: ClientOptions {
279280
request_instrumentation: Some(RequestInstrumentationOptions {
280281
tracer_provider: Some(azure_provider),
@@ -283,6 +284,7 @@ async fn test_service_client_get_with_tracing(ctx: TestContext) -> Result<()> {
283284
},
284285
..Default::default()
285286
};
287+
recording.instrument(&mut options.azure_client_options);
286288

287289
let client = TestServiceClient::new(endpoint, credential, Some(options)).unwrap();
288290
let response = client.get("get", None).await;
@@ -328,7 +330,7 @@ async fn test_service_client_get_tracing_error(ctx: TestContext) -> Result<()> {
328330
let recording = ctx.recording();
329331
let endpoint = "https://azuresdkforcpp.azurewebsites.net";
330332
let credential = recording.credential().clone();
331-
let options = TestServiceClientOptions {
333+
let mut options = TestServiceClientOptions {
332334
azure_client_options: ClientOptions {
333335
request_instrumentation: Some(RequestInstrumentationOptions {
334336
tracer_provider: Some(azure_provider),
@@ -337,6 +339,7 @@ async fn test_service_client_get_tracing_error(ctx: TestContext) -> Result<()> {
337339
},
338340
..Default::default()
339341
};
342+
recording.instrument(&mut options.azure_client_options);
340343

341344
let client = TestServiceClient::new(endpoint, credential, Some(options)).unwrap();
342345
let response = client.get("failing_url", None).await;
@@ -388,7 +391,7 @@ async fn test_service_client_get_with_function_tracing(ctx: TestContext) -> Resu
388391
let recording = ctx.recording();
389392
let endpoint = "https://azuresdkforcpp.azurewebsites.net";
390393
let credential = recording.credential().clone();
391-
let options = TestServiceClientOptions {
394+
let mut options = TestServiceClientOptions {
392395
azure_client_options: ClientOptions {
393396
request_instrumentation: Some(RequestInstrumentationOptions {
394397
tracer_provider: Some(azure_provider),
@@ -397,6 +400,7 @@ async fn test_service_client_get_with_function_tracing(ctx: TestContext) -> Resu
397400
},
398401
..Default::default()
399402
};
403+
recording.instrument(&mut options.azure_client_options);
400404

401405
let client = TestServiceClient::new(endpoint, credential, Some(options)).unwrap();
402406
let response = client.get_with_function_tracing("get", None).await;
@@ -450,7 +454,7 @@ async fn test_service_client_get_with_function_tracing_error(ctx: TestContext) -
450454
let recording = ctx.recording();
451455
let endpoint = "https://azuresdkforcpp.azurewebsites.net";
452456
let credential = recording.credential().clone();
453-
let options = TestServiceClientOptions {
457+
let mut options = TestServiceClientOptions {
454458
azure_client_options: ClientOptions {
455459
request_instrumentation: Some(RequestInstrumentationOptions {
456460
tracer_provider: Some(azure_provider),
@@ -459,6 +463,7 @@ async fn test_service_client_get_with_function_tracing_error(ctx: TestContext) -
459463
},
460464
..Default::default()
461465
};
466+
recording.instrument(&mut options.azure_client_options);
462467

463468
let client = TestServiceClient::new(endpoint, credential, Some(options)).unwrap();
464469
let response = client.get_with_function_tracing("failing_url", None).await;

sdk/core/azure_core_opentelemetry/tests/telemetry_service_macros.rs

Lines changed: 10 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -193,13 +193,13 @@ mod tests {
193193
}
194194

195195
fn create_service_client(
196-
ctx: TestContext,
196+
ctx: &TestContext,
197197
azure_provider: Arc<dyn TracerProvider>,
198198
) -> TestServiceClientWithMacros {
199199
let recording = ctx.recording();
200200
let endpoint = "https://azuresdkforcpp.azurewebsites.net";
201201
let credential = recording.credential().clone();
202-
let options = TestServiceClientWithMacrosOptions {
202+
let mut options = TestServiceClientWithMacrosOptions {
203203
client_options: ClientOptions {
204204
request_instrumentation: Some(RequestInstrumentationOptions {
205205
tracer_provider: Some(azure_provider),
@@ -208,6 +208,7 @@ mod tests {
208208
},
209209
..Default::default()
210210
};
211+
recording.instrument(&mut options.client_options);
211212

212213
TestServiceClientWithMacros::new(endpoint, credential, Some(options)).unwrap()
213214
}
@@ -268,9 +269,10 @@ mod tests {
268269
let recording = ctx.recording();
269270
let endpoint = "https://microsoft.com";
270271
let credential = recording.credential().clone();
271-
let options = TestServiceClientWithMacrosOptions {
272+
let mut options = TestServiceClientWithMacrosOptions {
272273
..Default::default()
273274
};
275+
recording.instrument(&mut options.client_options);
274276

275277
let client = TestServiceClientWithMacros::new(endpoint, credential, Some(options)).unwrap();
276278
assert_eq!(client.endpoint().as_str(), "https://microsoft.com/");
@@ -280,11 +282,11 @@ mod tests {
280282
}
281283

282284
#[recorded::test()]
283-
async fn test_macro_service_client_get(ctx: TestContext) -> Result<()> {
285+
async fn test_macro_service_client_get_simple(ctx: TestContext) -> Result<()> {
284286
let (sdk_provider, otel_exporter) = create_exportable_tracer_provider();
285287
let azure_provider = OpenTelemetryTracerProvider::new(sdk_provider);
286288

287-
let client = create_service_client(ctx, azure_provider.clone());
289+
let client = create_service_client(&ctx, azure_provider.clone());
288290

289291
let response = client.get("get", None).await;
290292
info!("Response: {:?}", response);
@@ -327,7 +329,7 @@ mod tests {
327329
let (sdk_provider, otel_exporter) = create_exportable_tracer_provider();
328330
let azure_provider = OpenTelemetryTracerProvider::new(sdk_provider);
329331

330-
let client = create_service_client(ctx, azure_provider.clone());
332+
let client = create_service_client(&ctx, azure_provider.clone());
331333

332334
let response = client.get("failing_url", None).await;
333335
info!("Response: {:?}", response);
@@ -375,7 +377,7 @@ mod tests {
375377
let (sdk_provider, otel_exporter) = create_exportable_tracer_provider();
376378
let azure_provider = OpenTelemetryTracerProvider::new(sdk_provider);
377379

378-
let client = create_service_client(ctx, azure_provider.clone());
380+
let client = create_service_client(&ctx, azure_provider.clone());
379381

380382
let response = client.get_with_function_tracing("get", None).await;
381383
info!("Response: {:?}", response);
@@ -430,20 +432,8 @@ mod tests {
430432
let (sdk_provider, otel_exporter) = create_exportable_tracer_provider();
431433
let azure_provider = OpenTelemetryTracerProvider::new(sdk_provider);
432434

433-
let recording = ctx.recording();
434-
let endpoint = "https://azuresdkforcpp.azurewebsites.net";
435-
let credential = recording.credential().clone();
436-
let options = TestServiceClientWithMacrosOptions {
437-
client_options: ClientOptions {
438-
request_instrumentation: Some(RequestInstrumentationOptions {
439-
tracer_provider: Some(azure_provider),
440-
}),
441-
..Default::default()
442-
},
443-
..Default::default()
444-
};
435+
let client = create_service_client(&ctx, azure_provider.clone());
445436

446-
let client = TestServiceClientWithMacros::new(endpoint, credential, Some(options)).unwrap();
447437
let response = client.get_with_function_tracing("failing_url", None).await;
448438
info!("Response: {:?}", response);
449439

sdk/core/ci.yml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,5 +17,9 @@ extends:
1717
Artifacts:
1818
- name: azure_core
1919
safeName: AzureCore
20+
- name: azure_core_macros
21+
safeName: AzureCoreMacros
2022
- name: azure_core_amqp
2123
safeName: AzureCoreAmqp
24+
- name: azure_core_opentelemetry
25+
safeName: AzureCoreOpentelemetry

sdk/typespec/CHANGELOG.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@
66

77
### Breaking Changes
88

9+
- `http::Request::method()` returns a copy of the underlying `Method` rather than a reference to the underlying `Method`.
10+
911
### Bugs Fixed
1012

1113
### Other Changes

0 commit comments

Comments
 (0)