diff --git a/Cargo.toml b/Cargo.toml index bf0200d8..3f8d68e3 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -12,10 +12,10 @@ resolver = "2" debug = 1 [workspace.dependencies] -opentelemetry = "0.24" -opentelemetry-appender-tracing = "0.5" -opentelemetry-http = "0.13" -opentelemetry-proto = { version = "0.7", default-features = false } -opentelemetry_sdk = { version = "0.24", default-features = false } -opentelemetry-stdout = "0.5" -opentelemetry-semantic-conventions = "0.16" +opentelemetry = "0.25" +opentelemetry-appender-tracing = "0.25" +opentelemetry-http = "0.25" +opentelemetry-proto = { version = "0.25", default-features = false } +opentelemetry_sdk = { version = "0.25", default-features = false } +opentelemetry-stdout = "0.25" +opentelemetry-semantic-conventions = "0.25" diff --git a/opentelemetry-aws/CHANGELOG.md b/opentelemetry-aws/CHANGELOG.md index 72a2483d..478a0bfa 100644 --- a/opentelemetry-aws/CHANGELOG.md +++ b/opentelemetry-aws/CHANGELOG.md @@ -1,12 +1,16 @@ # Changelog -## vNext +## v0.13.0 ### Added - `LambdaResourceDetector` has been added to the crate to detect AWS Lambda attributes. To enable it in your code, use the feature `detector-aws-lambda`. -### v0.12.0 +### Changed + +- Bump opentelemetry and opentelemetry_sdk versions to 0.25.0 + +## v0.12.0 - Bump opentelemetry and opentelemetry_sdk versions to 0.24.0 - Update hyper to 1.4.1 diff --git a/opentelemetry-aws/Cargo.toml b/opentelemetry-aws/Cargo.toml index 3db4863d..03558e11 100644 --- a/opentelemetry-aws/Cargo.toml +++ b/opentelemetry-aws/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "opentelemetry-aws" -version = "0.12.0" +version = "0.13.0" description = "AWS exporters and propagators for OpenTelemetry" homepage = "https://github.com/open-telemetry/opentelemetry-rust-contrib/tree/main/opentelemetry-aws" repository = "https://github.com/open-telemetry/opentelemetry-rust-contrib/tree/main/opentelemetry-aws" diff --git a/opentelemetry-contrib/CHANGELOG.md b/opentelemetry-contrib/CHANGELOG.md index ea5bc45f..5dfdf3de 100644 --- a/opentelemetry-contrib/CHANGELOG.md +++ b/opentelemetry-contrib/CHANGELOG.md @@ -2,6 +2,13 @@ ## vNext +## v0.17.0 + +### Changed + +- Bump opentelemetry and opentelemetry_sdk versions to 0.25 +- Bump opentelemetry-semantic-conventions version to 0.25 + ## v0.16.0 ### Changed diff --git a/opentelemetry-contrib/Cargo.toml b/opentelemetry-contrib/Cargo.toml index f9478ee4..6e2727be 100644 --- a/opentelemetry-contrib/Cargo.toml +++ b/opentelemetry-contrib/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "opentelemetry-contrib" -version = "0.16.0" +version = "0.17.0" description = "Rust contrib repo for OpenTelemetry" homepage = "https://github.com/open-telemetry/opentelemetry-rust-contrib/tree/main/opentelemetry-contrib" repository = "https://github.com/open-telemetry/opentelemetry-rust-contrib/tree/main/opentelemetry-contrib" diff --git a/opentelemetry-datadog/CHANGELOG.md b/opentelemetry-datadog/CHANGELOG.md index a10ee726..20b5c75e 100644 --- a/opentelemetry-datadog/CHANGELOG.md +++ b/opentelemetry-datadog/CHANGELOG.md @@ -2,6 +2,12 @@ ## vNext +## v0.13.0 + +### Changed + +- Bump opentelemetry and opentelemetry_sdk version to 0.25 + ## v0.12.0 ### Changed diff --git a/opentelemetry-datadog/Cargo.toml b/opentelemetry-datadog/Cargo.toml index 0f7e51d2..dce1865e 100644 --- a/opentelemetry-datadog/Cargo.toml +++ b/opentelemetry-datadog/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "opentelemetry-datadog" -version = "0.12.0" +version = "0.13.0" description = "Datadog exporters and propagators for OpenTelemetry" homepage = "https://github.com/open-telemetry/opentelemetry-rust-contrib/tree/main/opentelemetry-datadog" repository = "https://github.com/open-telemetry/opentelemetry-rust-contrib/tree/main/opentelemetry-datadog" diff --git a/opentelemetry-etw-logs/CHANGELOG.md b/opentelemetry-etw-logs/CHANGELOG.md index 4c641c8f..51e03074 100644 --- a/opentelemetry-etw-logs/CHANGELOG.md +++ b/opentelemetry-etw-logs/CHANGELOG.md @@ -2,6 +2,12 @@ ## vNext +## v0.4.0 + +### Changed + +- Bump opentelemetry and opentelemetry_sdk versions to 0.25 + ## v0.3.0 ### Changed diff --git a/opentelemetry-etw-logs/Cargo.toml b/opentelemetry-etw-logs/Cargo.toml index 066875bd..fc868914 100644 --- a/opentelemetry-etw-logs/Cargo.toml +++ b/opentelemetry-etw-logs/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "opentelemetry-etw-logs" description = "OpenTelemetry logs exporter to ETW (Event Tracing for Windows)" -version = "0.3.0" +version = "0.4.0" edition = "2021" homepage = "https://github.com/open-telemetry/opentelemetry-rust-contrib/tree/main/opentelemetry-etw-logs" repository = "https://github.com/open-telemetry/opentelemetry-rust-contrib/tree/main/opentelemetry-etw-logs" diff --git a/opentelemetry-etw-logs/src/logs/converters.rs b/opentelemetry-etw-logs/src/logs/converters.rs index 214227d9..43354e33 100644 --- a/opentelemetry-etw-logs/src/logs/converters.rs +++ b/opentelemetry-etw-logs/src/logs/converters.rs @@ -44,7 +44,7 @@ mod tests { #[test] fn test_convert_vec_of_any_value_to_string() { - let vec = vec![ + let vec = [ AnyValue::Int(1), AnyValue::Int(2), AnyValue::Int(3), @@ -57,17 +57,17 @@ mod tests { let result = [].as_json_value(); assert_eq!(result, json!([])); - let array = [AnyValue::ListAny(vec![ + let array = [AnyValue::ListAny(Box::new(vec![ AnyValue::Int(1), AnyValue::Int(2), AnyValue::Int(3), - ])]; + ]))]; let result = array.as_json_value(); assert_eq!(result, json!([[1, 2, 3]])); let array = [ - AnyValue::ListAny(vec![AnyValue::Int(1), AnyValue::Int(2)]), - AnyValue::ListAny(vec![AnyValue::Int(3), AnyValue::Int(4)]), + AnyValue::ListAny(Box::new(vec![AnyValue::Int(1), AnyValue::Int(2)])), + AnyValue::ListAny(Box::new(vec![AnyValue::Int(3), AnyValue::Int(4)])), ]; let result = array.as_json_value(); assert_eq!(result, json!([[1, 2], [3, 4]])); @@ -105,8 +105,8 @@ mod tests { #[should_panic] fn test_convert_bytes_panics() { let array = [ - AnyValue::Bytes(vec![97u8, 98u8, 99u8]), - AnyValue::Bytes(vec![]), + AnyValue::Bytes(Box::new(vec![97u8, 98u8, 99u8])), + AnyValue::Bytes(Box::default()), ]; let result = array.as_json_value(); assert_eq!(result, json!(["abc", ""])); @@ -134,7 +134,7 @@ mod tests { let mut map = HashMap::new(); map.insert(Key::new("d"), AnyValue::Int(4)); map.insert(Key::new("e"), AnyValue::Int(5)); - map.insert(Key::new("f"), AnyValue::Map(inner_map)); + map.insert(Key::new("f"), AnyValue::Map(Box::new(inner_map))); let result = map.as_json_value(); assert_eq!(result, json!({"d":4,"e":5,"f":{"a":1,"b":2,"c":3}})); @@ -183,24 +183,30 @@ mod tests { let empty_vec = vec![]; let mut complex_map = HashMap::new(); - complex_map.insert(Key::new("a"), AnyValue::Map(simple_map.clone())); - complex_map.insert(Key::new("b"), AnyValue::Map(empty_map.clone())); - complex_map.insert(Key::new("c"), AnyValue::ListAny(simple_vec.clone())); - complex_map.insert(Key::new("d"), AnyValue::ListAny(empty_vec.clone())); + complex_map.insert(Key::new("a"), AnyValue::Map(Box::new(simple_map.clone()))); + complex_map.insert(Key::new("b"), AnyValue::Map(Box::new(empty_map.clone()))); + complex_map.insert( + Key::new("c"), + AnyValue::ListAny(Box::new(simple_vec.clone())), + ); + complex_map.insert( + Key::new("d"), + AnyValue::ListAny(Box::new(empty_vec.clone())), + ); let result = complex_map.as_json_value(); assert_eq!(result, json!({"a":{"a":1,"b":2},"b":{},"c":[1,2],"d":[]})); - let complex_vec = vec![ - AnyValue::Map(simple_map.clone()), - AnyValue::Map(empty_map.clone()), - AnyValue::ListAny(simple_vec.clone()), - AnyValue::ListAny(empty_vec.clone()), + let complex_vec = [ + AnyValue::Map(Box::new(simple_map.clone())), + AnyValue::Map(Box::new(empty_map.clone())), + AnyValue::ListAny(Box::new(simple_vec.clone())), + AnyValue::ListAny(Box::new(empty_vec.clone())), ]; let result = complex_vec.as_json_value(); assert_eq!(result, json!([{"a":1,"b":2},{},[1,2],[]])); let mut nested_complex_map = HashMap::new(); - nested_complex_map.insert(Key::new("a"), AnyValue::Map(complex_map.clone())); + nested_complex_map.insert(Key::new("a"), AnyValue::Map(Box::new(complex_map.clone()))); let result = nested_complex_map.as_json_value(); assert_eq!( result, diff --git a/opentelemetry-etw-logs/src/logs/exporter.rs b/opentelemetry-etw-logs/src/logs/exporter.rs index ab14a052..e07fbd20 100644 --- a/opentelemetry-etw-logs/src/logs/exporter.rs +++ b/opentelemetry-etw-logs/src/logs/exporter.rs @@ -173,14 +173,14 @@ impl ETWExporter { pub(crate) fn export_log_data( &self, - log_data: &opentelemetry_sdk::export::logs::LogData, + log_record: &opentelemetry_sdk::logs::LogRecord, + instrumentation: &opentelemetry::InstrumentationLibrary, ) -> opentelemetry_sdk::export::logs::ExportResult { - let level = - self.get_severity_level(log_data.record.severity_number.unwrap_or(Severity::Debug)); + let level = self.get_severity_level(log_record.severity_number.unwrap_or(Severity::Debug)); let keyword = match self .exporter_config - .get_log_keyword_or_default(log_data.instrumentation.name.as_ref()) + .get_log_keyword_or_default(instrumentation.name.as_ref()) { Some(keyword) => keyword, _ => return Ok(()), @@ -199,11 +199,11 @@ impl ETWExporter { event.add_u16("__csver__", 0x0401u16, tld::OutType::Hex, field_tag); - self.populate_part_a(&mut event, log_data, field_tag); + self.populate_part_a(&mut event, log_record, field_tag); - let (event_id, event_name) = self.populate_part_c(&mut event, log_data, field_tag); + let (event_id, event_name) = self.populate_part_c(&mut event, log_record, field_tag); - self.populate_part_b(&mut event, log_data, level, event_id, event_name); + self.populate_part_b(&mut event, log_record, level, event_id, event_name); // Write event to ETW let result = event.write(&self.provider, None, None); @@ -217,13 +217,12 @@ impl ETWExporter { fn populate_part_a( &self, event: &mut tld::EventBuilder, - log_data: &opentelemetry_sdk::export::logs::LogData, + log_record: &opentelemetry_sdk::logs::LogRecord, field_tag: u32, ) { - let event_time: SystemTime = log_data - .record + let event_time: SystemTime = log_record .timestamp - .or(log_data.record.observed_timestamp) + .or(log_record.observed_timestamp) .unwrap_or_else(SystemTime::now); const COUNT_TIME: u8 = 1u8; @@ -238,7 +237,7 @@ impl ETWExporter { fn populate_part_b( &self, event: &mut tld::EventBuilder, - log_data: &opentelemetry_sdk::export::logs::LogData, + log_record: &opentelemetry_sdk::logs::LogRecord, level: tld::Level, event_id: Option, event_name: Option<&str>, @@ -249,8 +248,8 @@ impl ETWExporter { let field_count = COUNT_TYPE_NAME + COUNT_SEVERITY_NUMBER - + log_data.record.body.is_some() as u8 - + log_data.record.severity_text.is_some() as u8 + + log_record.body.is_some() as u8 + + log_record.severity_text.is_some() as u8 + event_id.is_some() as u8 + event_name.is_some() as u8; @@ -260,19 +259,14 @@ impl ETWExporter { // Fill fields of PartB struct event.add_str8("_typeName", "Logs", tld::OutType::Default, 0); - if let Some(body) = log_data.record.body.clone() { + if let Some(body) = log_record.body.clone() { add_attribute_to_event(event, &Key::new("body"), &body); } event.add_u8("severityNumber", level.as_int(), tld::OutType::Default, 0); - if let Some(severity_text) = &log_data.record.severity_text { - event.add_str8( - "severityText", - severity_text.as_ref(), - tld::OutType::Default, - 0, - ); + if let Some(severity_text) = &log_record.severity_text { + event.add_str8("severityText", severity_text, tld::OutType::Default, 0); } if let Some(event_id) = event_id { @@ -287,55 +281,52 @@ impl ETWExporter { fn populate_part_c<'a>( &'a self, event: &mut tld::EventBuilder, - log_data: &'a opentelemetry_sdk::export::logs::LogData, + log_record: &'a opentelemetry_sdk::logs::LogRecord, field_tag: u32, ) -> (Option, Option<&str>) { //populate CS PartC let mut event_id: Option = None; let mut event_name: Option<&str> = None; - if let Some(attr_list) = &log_data.record.attributes { - let mut cs_c_count = 0; - + let mut cs_c_count = 0; + for (key, value) in log_record.attributes_iter() { // find if we have PartC and its information - for (key, value) in attr_list.iter() { - match (key.as_str(), &value) { - (EVENT_ID, AnyValue::Int(value)) => { - event_id = Some(*value); - continue; - } - (EVENT_NAME_PRIMARY, AnyValue::String(value)) => { + match (key.as_str(), &value) { + (EVENT_ID, AnyValue::Int(value)) => { + event_id = Some(*value); + continue; + } + (EVENT_NAME_PRIMARY, AnyValue::String(value)) => { + event_name = Some(value.as_str()); + continue; + } + (EVENT_NAME_SECONDARY, AnyValue::String(value)) => { + if event_name.is_none() { event_name = Some(value.as_str()); - continue; - } - (EVENT_NAME_SECONDARY, AnyValue::String(value)) => { - if event_name.is_none() { - event_name = Some(value.as_str()); - } - continue; - } - _ => { - cs_c_count += 1; } + continue; + } + _ => { + cs_c_count += 1; } } + } + + // If there are additional PartC attributes, add them to the event + if cs_c_count > 0 { + event.add_struct("PartC", cs_c_count, field_tag); - if cs_c_count > 0 { - event.add_struct("PartC", cs_c_count, field_tag); - - for (key, value) in attr_list.iter() { - match (key.as_str(), &value) { - (EVENT_ID, _) | (EVENT_NAME_PRIMARY, _) | (EVENT_NAME_SECONDARY, _) => { - continue; - } - _ => { - add_attribute_to_event(event, key, value); - } + for (key, value) in log_record.attributes_iter() { + match (key.as_str(), &value) { + (EVENT_ID, _) | (EVENT_NAME_PRIMARY, _) | (EVENT_NAME_SECONDARY, _) => { + continue; + } + _ => { + add_attribute_to_event(event, key, value); } } } } - (event_id, event_name) } } @@ -348,12 +339,12 @@ impl Debug for ETWExporter { #[async_trait] impl opentelemetry_sdk::export::logs::LogExporter for ETWExporter { - async fn export<'a>( + async fn export( &mut self, - batch: Vec>, + batch: opentelemetry_sdk::export::logs::LogBatch<'_>, ) -> opentelemetry::logs::LogResult<()> { - for log_data in batch { - let _ = self.export_log_data(&log_data); + for (log_record, instrumentation) in batch.iter() { + let _ = self.export_log_data(log_record, instrumentation); } Ok(()) } @@ -417,7 +408,6 @@ fn add_attribute_to_event(event: &mut tld::EventBuilder, key: &Key, value: &AnyV mod tests { use super::*; use opentelemetry::logs::Severity; - use opentelemetry_sdk::export::logs::LogData; #[test] fn test_export_log_data() { @@ -427,13 +417,10 @@ mod tests { None, ExporterConfig::default(), ); + let record = Default::default(); + let instrumentation = Default::default(); - let log_data = LogData { - instrumentation: Default::default(), - record: Default::default(), - }; - - let result = exporter.export_log_data(&log_data); + let result = exporter.export_log_data(&record, &instrumentation); assert!(result.is_ok()); } diff --git a/opentelemetry-etw-logs/src/logs/reentrant_logprocessor.rs b/opentelemetry-etw-logs/src/logs/reentrant_logprocessor.rs index 95627245..7057a717 100644 --- a/opentelemetry-etw-logs/src/logs/reentrant_logprocessor.rs +++ b/opentelemetry-etw-logs/src/logs/reentrant_logprocessor.rs @@ -1,7 +1,8 @@ use std::fmt::Debug; use opentelemetry::logs::LogResult; -use opentelemetry_sdk::export::logs::LogData; +use opentelemetry::InstrumentationLibrary; +use opentelemetry_sdk::logs::LogRecord; #[cfg(feature = "logs_level_enabled")] use opentelemetry_sdk::export::logs::LogExporter; @@ -32,8 +33,8 @@ impl ReentrantLogProcessor { } impl opentelemetry_sdk::logs::LogProcessor for ReentrantLogProcessor { - fn emit(&self, data: &mut LogData) { - _ = self.event_exporter.export_log_data(data); + fn emit(&self, data: &mut LogRecord, instrumentation: &InstrumentationLibrary) { + _ = self.event_exporter.export_log_data(data, instrumentation); } // This is a no-op as this processor doesn't keep anything @@ -97,11 +98,8 @@ mod tests { ExporterConfig::default(), ); - let mut log_data = LogData { - instrumentation: Default::default(), - record: Default::default(), - }; - - processor.emit(&mut log_data); + let mut record = Default::default(); + let instrumentation = Default::default(); + processor.emit(&mut record, &instrumentation); } } diff --git a/opentelemetry-resource-detectors/CHANGELOG.md b/opentelemetry-resource-detectors/CHANGELOG.md index 1b4e1c90..82bd9b8b 100644 --- a/opentelemetry-resource-detectors/CHANGELOG.md +++ b/opentelemetry-resource-detectors/CHANGELOG.md @@ -2,6 +2,13 @@ ## vNext +## v0.4.0 + +### Changed + +- Bump opentelemetry and opentelemetry_sdk versions to 0.25 +- Bump opentelemetry-semantic-conventions version to 0.25 + ## v0.3.0 ### Changed diff --git a/opentelemetry-resource-detectors/Cargo.toml b/opentelemetry-resource-detectors/Cargo.toml index afeb2c6f..3580ed62 100644 --- a/opentelemetry-resource-detectors/Cargo.toml +++ b/opentelemetry-resource-detectors/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "opentelemetry-resource-detectors" -version = "0.3.0" +version = "0.4.0" edition = "2021" description = "A collection of community supported resource detectors for OpenTelemetry" homepage = "https://github.com/open-telemetry/opentelemetry-rust-contrib/tree/main/opentelemetry-resource-detectors" diff --git a/opentelemetry-stackdriver/src/proto/api.rs b/opentelemetry-stackdriver/src/proto/api.rs index 4c849645..047fda77 100644 --- a/opentelemetry-stackdriver/src/proto/api.rs +++ b/opentelemetry-stackdriver/src/proto/api.rs @@ -2,7 +2,6 @@ /// Defines the HTTP configuration for an API service. It contains a list of /// [HttpRule][google.api.HttpRule], each specifying the mapping of an RPC method /// to one or more HTTP REST API methods. -#[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] pub struct Http { /// A list of HTTP configuration rules that apply to individual API methods. @@ -283,7 +282,6 @@ pub struct Http { /// If an API needs to use a JSON array for request or response body, it can map /// the request or response body to a repeated field. However, some gRPC /// Transcoding implementations may not support this feature. -#[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] pub struct HttpRule { /// Selects a method to which this rule applies. @@ -324,7 +322,6 @@ pub mod http_rule { /// Determines the URL pattern is matched by this rules. This pattern can be /// used with any of the {get|put|post|delete|patch} methods. A custom method /// can be defined using the 'custom' field. - #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Oneof)] pub enum Pattern { /// Maps to HTTP GET. Used for listing and getting information about @@ -352,7 +349,6 @@ pub mod http_rule { } } /// A custom pattern is used for defining custom HTTP verb. -#[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] pub struct CustomHttpPattern { /// The name of this custom HTTP verb. @@ -438,7 +434,6 @@ impl LaunchStage { } } /// Required information for every language. -#[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] pub struct CommonLanguageSettings { /// Link to automatically generated reference documentation. Example: @@ -451,7 +446,6 @@ pub struct CommonLanguageSettings { pub destinations: ::prost::alloc::vec::Vec, } /// Details about how and where to publish client libraries. -#[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] pub struct ClientLibrarySettings { /// Version of the API to apply these settings to. This is the full protobuf @@ -494,7 +488,6 @@ pub struct ClientLibrarySettings { /// This message configures the settings for publishing [Google Cloud Client /// libraries]() /// generated from the service config. -#[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] pub struct Publishing { /// A list of API method settings, e.g. the behavior for methods that use the @@ -543,7 +536,6 @@ pub struct Publishing { pub rest_reference_documentation_uri: ::prost::alloc::string::String, } /// Settings for Java client libraries. -#[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] pub struct JavaSettings { /// The package name to use in Java. Clobbers the java_package option @@ -581,7 +573,6 @@ pub struct JavaSettings { pub common: ::core::option::Option, } /// Settings for C++ client libraries. -#[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] pub struct CppSettings { /// Some settings. @@ -589,7 +580,6 @@ pub struct CppSettings { pub common: ::core::option::Option, } /// Settings for Php client libraries. -#[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] pub struct PhpSettings { /// Some settings. @@ -597,7 +587,6 @@ pub struct PhpSettings { pub common: ::core::option::Option, } /// Settings for Python client libraries. -#[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] pub struct PythonSettings { /// Some settings. @@ -612,7 +601,6 @@ pub mod python_settings { /// Experimental features to be included during client library generation. /// These fields will be deprecated once the feature graduates and is enabled /// by default. - #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, Copy, PartialEq, ::prost::Message)] pub struct ExperimentalFeatures { /// Enables generation of asynchronous REST clients if `rest` transport is @@ -624,7 +612,6 @@ pub mod python_settings { } } /// Settings for Node client libraries. -#[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] pub struct NodeSettings { /// Some settings. @@ -632,7 +619,6 @@ pub struct NodeSettings { pub common: ::core::option::Option, } /// Settings for Dotnet client libraries. -#[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] pub struct DotnetSettings { /// Some settings. @@ -672,7 +658,6 @@ pub struct DotnetSettings { pub handwritten_signatures: ::prost::alloc::vec::Vec<::prost::alloc::string::String>, } /// Settings for Ruby client libraries. -#[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] pub struct RubySettings { /// Some settings. @@ -680,7 +665,6 @@ pub struct RubySettings { pub common: ::core::option::Option, } /// Settings for Go client libraries. -#[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] pub struct GoSettings { /// Some settings. @@ -688,7 +672,6 @@ pub struct GoSettings { pub common: ::core::option::Option, } /// Describes the generator configuration for a method. -#[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] pub struct MethodSettings { /// The fully qualified name of the method, for which the options below apply. @@ -739,7 +722,6 @@ pub mod method_settings { /// All default values below are from those used in the client library /// generators (e.g. /// [Java]()). - #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, Copy, PartialEq, ::prost::Message)] pub struct LongRunning { /// Initial delay after which the first poll request will be made. @@ -987,7 +969,6 @@ impl FieldBehavior { /// pattern: "folders/{folder}/logs/{log}" /// pattern: "organizations/{organization}/logs/{log}" /// pattern: "billingAccounts/{billing_account}/logs/{log}" -#[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] pub struct ResourceDescriptor { /// The resource type. It must be in the format of @@ -1148,7 +1129,6 @@ pub mod resource_descriptor { } /// Defines a proto annotation that describes a string field that refers to /// an API resource. -#[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] pub struct ResourceReference { /// The resource type that the annotated field references. @@ -1188,7 +1168,6 @@ pub struct ResourceReference { pub child_type: ::prost::alloc::string::String, } /// A description of a label. -#[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] pub struct LabelDescriptor { /// The label key. @@ -1248,7 +1227,6 @@ pub mod label_descriptor { /// provide a `list` method that returns the monitored resource descriptors used /// by the API. /// -#[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] pub struct MonitoredResourceDescriptor { /// Optional. The resource name of the monitored resource descriptor: @@ -1302,7 +1280,6 @@ pub struct MonitoredResourceDescriptor { /// "labels": { "project_id": "my-project", /// "instance_id": "12345678901234", /// "zone": "us-central1-a" }} -#[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] pub struct MonitoredResource { /// Required. The monitored resource type. This field must match @@ -1327,7 +1304,6 @@ pub struct MonitoredResource { /// instance. There is some other useful auxiliary metadata. Monitoring and /// Logging use an ingestion pipeline to extract metadata for cloud resources of /// all types, and store the metadata in this message. -#[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] pub struct MonitoredResourceMetadata { /// Output only. Values for predefined system metadata labels. diff --git a/opentelemetry-stackdriver/src/proto/devtools/cloudtrace/v2.rs b/opentelemetry-stackdriver/src/proto/devtools/cloudtrace/v2.rs index 5f258b4b..4fc7fdd2 100644 --- a/opentelemetry-stackdriver/src/proto/devtools/cloudtrace/v2.rs +++ b/opentelemetry-stackdriver/src/proto/devtools/cloudtrace/v2.rs @@ -7,7 +7,6 @@ /// A trace can also contain multiple root spans, or none at all. /// Spans do not need to be contiguous. There might be /// gaps or overlaps between spans in a trace. -#[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] pub struct Span { /// Required. The resource name of the span in the following format: @@ -86,7 +85,6 @@ pub struct Span { /// Nested message and enum types in `Span`. pub mod span { /// A set of attributes as key-value pairs. - #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] pub struct Attributes { /// A set of attributes. Each attribute's key can be up to 128 bytes @@ -106,7 +104,6 @@ pub mod span { pub dropped_attributes_count: i32, } /// A time-stamped annotation or message event in the Span. - #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] pub struct TimeEvent { /// The timestamp indicating the time the event occurred. @@ -120,7 +117,6 @@ pub mod span { /// Nested message and enum types in `TimeEvent`. pub mod time_event { /// Text annotation with a set of attributes. - #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] pub struct Annotation { /// A user-supplied message describing the event. The maximum length for @@ -133,7 +129,6 @@ pub mod span { pub attributes: ::core::option::Option, } /// An event describing a message sent/received between Spans. - #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, Copy, PartialEq, ::prost::Message)] pub struct MessageEvent { /// Type of MessageEvent. Indicates whether the message was sent or @@ -193,7 +188,6 @@ pub mod span { } /// A `TimeEvent` can contain either an `Annotation` object or a /// `MessageEvent` object, but not both. - #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Oneof)] pub enum Value { /// Text annotation with a set of attributes. @@ -207,7 +201,6 @@ pub mod span { /// A collection of `TimeEvent`s. A `TimeEvent` is a time-stamped annotation /// on the span, consisting of either user-supplied key:value pairs, or /// details of a message sent/received between Spans. - #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] pub struct TimeEvents { /// A collection of `TimeEvent`s. @@ -226,7 +219,6 @@ pub mod span { /// different trace. For example, this can be used in batching operations, /// where a single batch handler processes multiple requests from different /// traces or when the handler receives a request from a different project. - #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] pub struct Link { /// The `\[TRACE_ID\]` for a trace within a project. @@ -284,7 +276,6 @@ pub mod span { } /// A collection of links, which are references from this span to a span /// in the same or different trace. - #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] pub struct Links { /// A collection of links. @@ -352,7 +343,6 @@ pub mod span { } } /// The allowed types for `\[VALUE\]` in a `\[KEY\]:[VALUE]` attribute. -#[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] pub struct AttributeValue { /// The type of the value. @@ -362,7 +352,6 @@ pub struct AttributeValue { /// Nested message and enum types in `AttributeValue`. pub mod attribute_value { /// The type of the value. - #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Oneof)] pub enum Value { /// A string up to 256 bytes long. @@ -377,7 +366,6 @@ pub mod attribute_value { } } /// A call stack appearing in a trace. -#[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] pub struct StackTrace { /// Stack frames in this stack trace. A maximum of 128 frames are allowed. @@ -398,7 +386,6 @@ pub struct StackTrace { /// Nested message and enum types in `StackTrace`. pub mod stack_trace { /// Represents a single stack frame in a stack trace. - #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] pub struct StackFrame { /// The fully-qualified name that uniquely identifies the function or @@ -430,7 +417,6 @@ pub mod stack_trace { pub source_version: ::core::option::Option, } /// A collection of stack frames, which can be truncated. - #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] pub struct StackFrames { /// Stack frames in this call stack. @@ -444,7 +430,6 @@ pub mod stack_trace { } } /// Binary module. -#[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] pub struct Module { /// For example: main binary, kernel modules, and dynamic libraries @@ -457,7 +442,6 @@ pub struct Module { pub build_id: ::core::option::Option, } /// Represents a string that might be shortened to a specified length. -#[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] pub struct TruncatableString { /// The shortened string. For example, if the original string is 500 @@ -475,7 +459,6 @@ pub struct TruncatableString { pub truncated_byte_count: i32, } /// The request message for the `BatchWriteSpans` method. -#[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] pub struct BatchWriteSpansRequest { /// Required. The name of the project where the spans belong. The format is diff --git a/opentelemetry-stackdriver/src/proto/logging/type.rs b/opentelemetry-stackdriver/src/proto/logging/type.rs index 2f239634..41430639 100644 --- a/opentelemetry-stackdriver/src/proto/logging/type.rs +++ b/opentelemetry-stackdriver/src/proto/logging/type.rs @@ -2,7 +2,6 @@ /// A common proto for logging HTTP requests. Only contains semantics /// defined by the HTTP specification. Product-specific logging /// information MUST be defined in a separate message. -#[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] pub struct HttpRequest { /// The request method. Examples: `"GET"`, `"HEAD"`, `"PUT"`, `"POST"`. diff --git a/opentelemetry-stackdriver/src/proto/logging/v2.rs b/opentelemetry-stackdriver/src/proto/logging/v2.rs index 85f1b7ee..ae2168a7 100644 --- a/opentelemetry-stackdriver/src/proto/logging/v2.rs +++ b/opentelemetry-stackdriver/src/proto/logging/v2.rs @@ -1,6 +1,5 @@ // This file is @generated by prost-build. /// An individual entry in a log. -#[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] pub struct LogEntry { /// Required. The resource name of the log to which this log entry belongs: @@ -161,7 +160,6 @@ pub struct LogEntry { /// Nested message and enum types in `LogEntry`. pub mod log_entry { /// The log entry payload, which can be one of multiple types. - #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Oneof)] pub enum Payload { /// The log entry payload, represented as a protocol buffer. Some Google @@ -185,7 +183,6 @@ pub mod log_entry { } /// Additional information about a potentially long-running operation with which /// a log entry is associated. -#[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] pub struct LogEntryOperation { /// Optional. An arbitrary operation identifier. Log entries with the same @@ -206,7 +203,6 @@ pub struct LogEntryOperation { } /// Additional information about the source code location that produced the log /// entry. -#[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] pub struct LogEntrySourceLocation { /// Optional. Source file name. Depending on the runtime environment, this @@ -229,7 +225,6 @@ pub struct LogEntrySourceLocation { /// Additional information used to correlate multiple log entries. Used when a /// single LogEntry would exceed the Google Cloud Logging size limit and is /// split across multiple log entries. -#[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] pub struct LogSplit { /// A globally unique identifier for all log entries in a sequence of split log @@ -247,7 +242,6 @@ pub struct LogSplit { pub total_splits: i32, } /// The parameters to DeleteLog. -#[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] pub struct DeleteLogRequest { /// Required. The resource name of the log to delete: @@ -267,7 +261,6 @@ pub struct DeleteLogRequest { pub log_name: ::prost::alloc::string::String, } /// The parameters to WriteLogEntries. -#[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] pub struct WriteLogEntriesRequest { /// Optional. A default log resource name that is assigned to all log entries @@ -348,11 +341,9 @@ pub struct WriteLogEntriesRequest { pub dry_run: bool, } /// Result returned from WriteLogEntries. -#[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, Copy, PartialEq, ::prost::Message)] pub struct WriteLogEntriesResponse {} /// Error details for WriteLogEntries with partial success. -#[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] pub struct WriteLogEntriesPartialErrors { /// When `WriteLogEntriesRequest.partial_success` is true, records the error @@ -365,7 +356,6 @@ pub struct WriteLogEntriesPartialErrors { pub log_entry_errors: ::std::collections::HashMap, } /// The parameters to `ListLogEntries`. -#[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] pub struct ListLogEntriesRequest { /// Required. Names of one or more parent resources from which to @@ -416,7 +406,6 @@ pub struct ListLogEntriesRequest { pub page_token: ::prost::alloc::string::String, } /// Result returned from `ListLogEntries`. -#[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] pub struct ListLogEntriesResponse { /// A list of log entries. If `entries` is empty, `nextPageToken` may still be @@ -438,7 +427,6 @@ pub struct ListLogEntriesResponse { pub next_page_token: ::prost::alloc::string::String, } /// The parameters to ListMonitoredResourceDescriptors -#[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] pub struct ListMonitoredResourceDescriptorsRequest { /// Optional. The maximum number of results to return from this request. @@ -454,7 +442,6 @@ pub struct ListMonitoredResourceDescriptorsRequest { pub page_token: ::prost::alloc::string::String, } /// Result returned from ListMonitoredResourceDescriptors. -#[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] pub struct ListMonitoredResourceDescriptorsResponse { /// A list of resource descriptors. @@ -468,7 +455,6 @@ pub struct ListMonitoredResourceDescriptorsResponse { pub next_page_token: ::prost::alloc::string::String, } /// The parameters to ListLogs. -#[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] pub struct ListLogsRequest { /// Required. The resource name to list logs for: @@ -509,7 +495,6 @@ pub struct ListLogsRequest { pub page_token: ::prost::alloc::string::String, } /// Result returned from ListLogs. -#[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] pub struct ListLogsResponse { /// A list of log names. For example, @@ -524,7 +509,6 @@ pub struct ListLogsResponse { pub next_page_token: ::prost::alloc::string::String, } /// The parameters to `TailLogEntries`. -#[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] pub struct TailLogEntriesRequest { /// Required. Name of a parent resource from which to retrieve log entries: @@ -557,7 +541,6 @@ pub struct TailLogEntriesRequest { pub buffer_window: ::core::option::Option<::prost_types::Duration>, } /// Result returned from `TailLogEntries`. -#[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] pub struct TailLogEntriesResponse { /// A list of log entries. Each response in the stream will order entries with @@ -576,7 +559,6 @@ pub struct TailLogEntriesResponse { /// Nested message and enum types in `TailLogEntriesResponse`. pub mod tail_log_entries_response { /// Information about entries that were omitted from the session. - #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, Copy, PartialEq, ::prost::Message)] pub struct SuppressionInfo { /// The reason that entries were omitted from the session. diff --git a/opentelemetry-stackdriver/src/proto/rpc.rs b/opentelemetry-stackdriver/src/proto/rpc.rs index 3c6f5f40..fe27d475 100644 --- a/opentelemetry-stackdriver/src/proto/rpc.rs +++ b/opentelemetry-stackdriver/src/proto/rpc.rs @@ -6,7 +6,6 @@ /// /// You can find out more about this error model and how to work with it in the /// [API Design Guide](). -#[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] pub struct Status { /// The status code, which should be an enum value of diff --git a/opentelemetry-stackdriver/tests/generate.rs b/opentelemetry-stackdriver/tests/generate.rs index 65a62506..d7284fca 100644 --- a/opentelemetry-stackdriver/tests/generate.rs +++ b/opentelemetry-stackdriver/tests/generate.rs @@ -41,7 +41,6 @@ async fn sync_schemas() { /// This test will fail if the code currently in the repository is different from the /// newly generated code, and will update it in place in that case. #[test] -#[ignore] fn generated_code_is_fresh() { // Generate code into a temporary directory. diff --git a/opentelemetry-user-events-logs/CHANGELOG.md b/opentelemetry-user-events-logs/CHANGELOG.md index dccaf162..cd9c975f 100644 --- a/opentelemetry-user-events-logs/CHANGELOG.md +++ b/opentelemetry-user-events-logs/CHANGELOG.md @@ -2,6 +2,12 @@ ## vNext +## v0.6.0 + +### Changed + +- Bump opentelemetry and opentelemetry_sdk versions to 0.25 + ## v0.5.0 - **BREAKING** Decouple Exporter creation with the Reentrant processor [#82](https://github.com/open-telemetry/opentelemetry-rust-contrib/pull/82) diff --git a/opentelemetry-user-events-logs/Cargo.toml b/opentelemetry-user-events-logs/Cargo.toml index 0c745f7f..723d893d 100644 --- a/opentelemetry-user-events-logs/Cargo.toml +++ b/opentelemetry-user-events-logs/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "opentelemetry-user-events-logs" description = "OpenTelemetry-Rust exporter to userevents" -version = "0.5.0" +version = "0.6.0" edition = "2021" homepage = "https://github.com/open-telemetry/opentelemetry-rust-contrib/tree/main/opentelemetry-user-events-logs" repository = "https://github.com/open-telemetry/opentelemetry-rust-contrib/tree/main/opentelemetry-user-events-logs" diff --git a/opentelemetry-user-events-logs/src/logs/exporter.rs b/opentelemetry-user-events-logs/src/logs/exporter.rs index cb0eafda..75b0c651 100644 --- a/opentelemetry-user-events-logs/src/logs/exporter.rs +++ b/opentelemetry-user-events-logs/src/logs/exporter.rs @@ -106,9 +106,9 @@ impl UserEventsExporter { } } - fn add_attribute_to_event(&self, eb: &mut EventBuilder, attrib: &(Key, AnyValue)) { - let field_name = &attrib.0.to_string(); - match attrib.1.to_owned() { + fn add_attribute_to_event(&self, eb: &mut EventBuilder, (key, value): (&Key, &AnyValue)) { + let field_name = key.as_str(); + match value.to_owned() { AnyValue::Boolean(b) => { eb.add_value(field_name, b, FieldFormat::Boolean, 0); } @@ -166,16 +166,17 @@ impl UserEventsExporter { pub(crate) fn export_log_data( &self, - log_data: &opentelemetry_sdk::export::logs::LogData, + log_record: &opentelemetry_sdk::logs::LogRecord, + instrumentation: &opentelemetry::InstrumentationLibrary, ) -> opentelemetry_sdk::export::logs::ExportResult { let mut level: Level = Level::Invalid; - if log_data.record.severity_number.is_some() { - level = self.get_severity_level(log_data.record.severity_number.unwrap()); + if log_record.severity_number.is_some() { + level = self.get_severity_level(log_record.severity_number.unwrap()); } let keyword = self .exporter_config - .get_log_keyword_or_default(log_data.instrumentation.name.as_ref()); + .get_log_keyword_or_default(instrumentation.name.as_ref()); if keyword.is_none() { return Ok(()); @@ -193,17 +194,16 @@ impl UserEventsExporter { EBW.with(|eb| { let mut eb = eb.borrow_mut(); let event_tags: u32 = 0; // TBD name and event_tag values - eb.reset(log_data.instrumentation.name.as_ref(), event_tags as u16); + eb.reset(instrumentation.name.as_ref(), event_tags as u16); eb.opcode(Opcode::Info); eb.add_value("__csver__", 0x0401u16, FieldFormat::HexInt, 0); // populate CS PartA let mut cs_a_count = 0; - let event_time: SystemTime = log_data - .record + let event_time: SystemTime = log_record .timestamp - .or(log_data.record.observed_timestamp) + .or(log_record.observed_timestamp) .unwrap_or_else(SystemTime::now); cs_a_count += 1; // for event_time eb.add_struct("PartA", cs_a_count, 0); @@ -216,35 +216,33 @@ impl UserEventsExporter { //populate CS PartC let (mut is_event_id, mut event_id) = (false, 0); let (mut is_event_name, mut event_name) = (false, ""); - - if let Some(attr_list) = &log_data.record.attributes { - let (mut is_part_c_present, mut cs_c_bookmark, mut cs_c_count) = (false, 0, 0); - for attrib in attr_list.iter() { - match (attrib.0.as_str(), &attrib.1) { - (EVENT_ID, AnyValue::Int(value)) => { - is_event_id = true; - event_id = *value; - continue; - } - (EVENT_NAME_PRIMARY, AnyValue::String(value)) => { - is_event_name = true; + let (mut is_part_c_present, mut cs_c_bookmark, mut cs_c_count) = (false, 0, 0); + + for (key, value) in log_record.attributes_iter() { + match (key.as_str(), value) { + (EVENT_ID, AnyValue::Int(value)) => { + is_event_id = true; + event_id = *value; + continue; + } + (EVENT_NAME_PRIMARY, AnyValue::String(value)) => { + is_event_name = true; + event_name = value.as_str(); + continue; + } + (EVENT_NAME_SECONDARY, AnyValue::String(value)) => { + if !is_event_name { event_name = value.as_str(); - continue; - } - (EVENT_NAME_SECONDARY, AnyValue::String(value)) => { - if !is_event_name { - event_name = value.as_str(); - } - continue; } - _ => { - if !is_part_c_present { - eb.add_struct_with_bookmark("PartC", 1, 0, &mut cs_c_bookmark); - is_part_c_present = true; - } - self.add_attribute_to_event(&mut eb, attrib); - cs_c_count += 1; + continue; + } + _ => { + if !is_part_c_present { + eb.add_struct_with_bookmark("PartC", 1, 0, &mut cs_c_bookmark); + is_part_c_present = true; } + self.add_attribute_to_event(&mut eb, (key, value)); + cs_c_count += 1; } } @@ -259,10 +257,10 @@ impl UserEventsExporter { eb.add_str("_typeName", "Logs", FieldFormat::Default, 0); cs_b_count += 1; - if log_data.record.body.is_some() { + if log_record.body.is_some() { eb.add_str( "body", - match log_data.record.body.as_ref().unwrap() { + match log_record.body.as_ref().unwrap() { AnyValue::Int(value) => value.to_string(), AnyValue::String(value) => value.to_string(), AnyValue::Boolean(value) => value.to_string(), @@ -280,10 +278,10 @@ impl UserEventsExporter { eb.add_value("severityNumber", level.as_int(), FieldFormat::SignedInt, 0); cs_b_count += 1; } - if log_data.record.severity_text.is_some() { + if log_record.severity_text.is_some() { eb.add_str( "severityText", - log_data.record.severity_text.as_ref().unwrap().as_ref(), + log_record.severity_text.as_ref().unwrap(), FieldFormat::SignedInt, 0, ); @@ -315,12 +313,12 @@ impl Debug for UserEventsExporter { #[async_trait] impl opentelemetry_sdk::export::logs::LogExporter for UserEventsExporter { - async fn export<'a>( + async fn export( &mut self, - batch: Vec>, + batch: opentelemetry_sdk::export::logs::LogBatch<'_>, ) -> opentelemetry::logs::LogResult<()> { - for log_data in batch { - let _ = self.export_log_data(&log_data); + for (record, instrumentation) in batch.iter() { + let _ = self.export_log_data(record, instrumentation); } Ok(()) } diff --git a/opentelemetry-user-events-logs/src/logs/reentrant_logprocessor.rs b/opentelemetry-user-events-logs/src/logs/reentrant_logprocessor.rs index 3e913443..3cada92a 100644 --- a/opentelemetry-user-events-logs/src/logs/reentrant_logprocessor.rs +++ b/opentelemetry-user-events-logs/src/logs/reentrant_logprocessor.rs @@ -1,7 +1,6 @@ use std::fmt::Debug; use opentelemetry::logs::LogResult; -use opentelemetry_sdk::export::logs::LogData; #[cfg(feature = "logs_level_enabled")] use opentelemetry_sdk::export::logs::LogExporter; @@ -27,8 +26,12 @@ impl ReentrantLogProcessor { } impl opentelemetry_sdk::logs::LogProcessor for ReentrantLogProcessor { - fn emit(&self, data: &mut LogData) { - _ = self.event_exporter.export_log_data(data); + fn emit( + &self, + record: &mut opentelemetry_sdk::logs::LogRecord, + instrumentation: &opentelemetry::InstrumentationLibrary, + ) { + _ = self.event_exporter.export_log_data(record, instrumentation); } // This is a no-op as this processor doesn't keep anything diff --git a/opentelemetry-user-events-metrics/CHANGELOG.md b/opentelemetry-user-events-metrics/CHANGELOG.md index 20007c4d..6c3b2e9e 100644 --- a/opentelemetry-user-events-metrics/CHANGELOG.md +++ b/opentelemetry-user-events-metrics/CHANGELOG.md @@ -2,6 +2,13 @@ ## vNext +## v0.6.0 + +### Changed + +- Bump opentelemetry and opentelemetry_sdk versions to 0.25, + opentelemetry-proto version to 0.25. + ## v0.5.0 ### Changed diff --git a/opentelemetry-user-events-metrics/Cargo.toml b/opentelemetry-user-events-metrics/Cargo.toml index cddc0132..7b212595 100644 --- a/opentelemetry-user-events-metrics/Cargo.toml +++ b/opentelemetry-user-events-metrics/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "opentelemetry-user-events-metrics" -version = "0.5.0" +version = "0.6.0" description = "OpenTelemetry metrics exporter to user events" homepage = "https://github.com/open-telemetry/opentelemetry-rust-contrib/tree/main/opentelemetry-user-events-metrics" repository = "https://github.com/open-telemetry/opentelemetry-rust-contrib/tree/main/opentelemetry-user-events-metrics" diff --git a/opentelemetry-user-events-metrics/examples/basic-metrics.rs b/opentelemetry-user-events-metrics/examples/basic-metrics.rs index 232e6581..80eee892 100644 --- a/opentelemetry-user-events-metrics/examples/basic-metrics.rs +++ b/opentelemetry-user-events-metrics/examples/basic-metrics.rs @@ -55,109 +55,97 @@ async fn main() -> Result<(), Box> { .init(); // Create a ObservableGauge instrument and register a callback that reports the measurement. - let gauge = meter + let _gauge = meter .f64_observable_gauge("observable_gauge_f64_test") .with_unit("test_unit") .with_description("test_description") + .with_callback(|observer| { + observer.observe( + 1.0, + &[ + KeyValue::new("mykey1", "myvalue1"), + KeyValue::new("mykey2", "myvalue2"), + ], + ) + }) .init(); - let gauge2 = meter + let _gauge2 = meter .u64_observable_gauge("observable_gauge_u64_test") .with_unit("test_unit") .with_description("test_description") + .with_callback(|observer| { + observer.observe( + 1, + &[ + KeyValue::new("mykey1", "myvalue1"), + KeyValue::new("mykey2", "myvalue2"), + ], + ) + }) .init(); - meter.register_callback(&[gauge.as_any()], move |observer| { - observer.observe_f64( - &gauge, - 1.0, - &[ - KeyValue::new("mykey1", "myvalue1"), - KeyValue::new("mykey2", "myvalue2"), - ], - ) - })?; - - meter.register_callback(&[gauge2.as_any()], move |observer| { - observer.observe_u64( - &gauge2, - 1, - &[ - KeyValue::new("mykey1", "myvalue1"), - KeyValue::new("mykey2", "myvalue2"), - ], - ) - })?; - // Create a ObservableCounter instrument and register a callback that reports the measurement. - let observable_counter = meter + let _observable_counter = meter .u64_observable_counter("observable_counter_u64_test") .with_description("test_description") .with_unit("test_unit") + .with_callback(|observer| { + observer.observe( + 100, + &[ + KeyValue::new("mykey1", "myvalue1"), + KeyValue::new("mykey2", "myvalue2"), + ], + ) + }) .init(); - let observable_counter2 = meter + let _observable_counter2 = meter .f64_observable_counter("observable_counter_f64_test") .with_description("test_description") .with_unit("test_unit") + .with_callback(|observer| { + observer.observe( + 100.0, + &[ + KeyValue::new("mykey1", "myvalue1"), + KeyValue::new("mykey2", "myvalue2"), + ], + ) + }) .init(); - meter.register_callback(&[observable_counter.as_any()], move |observer| { - observer.observe_u64( - &observable_counter, - 100, - &[ - KeyValue::new("mykey1", "myvalue1"), - KeyValue::new("mykey2", "myvalue2"), - ], - ) - })?; - - meter.register_callback(&[observable_counter2.as_any()], move |observer| { - observer.observe_f64( - &observable_counter2, - 100.0, - &[ - KeyValue::new("mykey1", "myvalue1"), - KeyValue::new("mykey2", "myvalue2"), - ], - ) - })?; - // Create a Observable UpDownCounter instrument and register a callback that reports the measurement. - let observable_up_down_counter = meter + let _observable_up_down_counter = meter .i64_observable_up_down_counter("observable_up_down_counter_i64_test") .with_description("test_description") .with_unit("test_unit") + .with_callback(|observer| { + observer.observe( + 100, + &[ + KeyValue::new("mykey1", "myvalue1"), + KeyValue::new("mykey2", "myvalue2"), + ], + ) + }) .init(); - let observable_up_down_counter2 = meter + let _observable_up_down_counter2 = meter .f64_observable_up_down_counter("observable_up_down_counter_f64_test") .with_description("test_description") .with_unit("test_unit") + .with_callback(|observer| { + observer.observe( + 100.0, + &[ + KeyValue::new("mykey1", "myvalue1"), + KeyValue::new("mykey2", "myvalue2"), + ], + ) + }) .init(); - meter.register_callback(&[observable_up_down_counter.as_any()], move |observer| { - observer.observe_i64( - &observable_up_down_counter, - 100, - &[ - KeyValue::new("mykey1", "myvalue1"), - KeyValue::new("mykey2", "myvalue2"), - ], - ) - })?; - - meter.register_callback(&[observable_up_down_counter2.as_any()], move |observer| { - observer.observe_f64( - &observable_up_down_counter2, - 100.0, - &[ - KeyValue::new("mykey1", "myvalue1"), - KeyValue::new("mykey2", "myvalue2"), - ], - ) - })?; - loop { // Record measurements using the Counter instrument. counter.add( diff --git a/opentelemetry-zpages/CHANGELOG.md b/opentelemetry-zpages/CHANGELOG.md index f37320e2..25a89dfd 100644 --- a/opentelemetry-zpages/CHANGELOG.md +++ b/opentelemetry-zpages/CHANGELOG.md @@ -2,6 +2,12 @@ ## vNext +## v0.10.0 + +### Changed + +- Bump opentelemetry version to 0.25, opentelemetry_sdk version to 0.25 + ## v0.9.0 ### Changed diff --git a/opentelemetry-zpages/Cargo.toml b/opentelemetry-zpages/Cargo.toml index bc2b018c..e99c5f43 100644 --- a/opentelemetry-zpages/Cargo.toml +++ b/opentelemetry-zpages/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "opentelemetry-zpages" -version = "0.9.0" +version = "0.10.0" description = "ZPages implementation for OpenTelemetry" homepage = "https://github.com/open-telemetry/opentelemetry-rust-contrib/tree/main/opentelemetry-zpages" repository = "https://github.com/open-telemetry/opentelemetry-rust-contrib/tree/main/opentelemetry-zpages"