Skip to main content

telemetry_rust/middleware/aws/instrumentation/fluent_builder/
appconfigdata.rs

1/// AWS AppConfig Data fluent builder instrumentation implementations
2use super::{utils::*, *};
3
4// Session operations
5impl<'a> AwsBuilderInstrument<'a> for StartConfigurationSessionFluentBuilder {
6    fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
7        let application_id = self
8            .get_application_identifier()
9            .clone()
10            .unwrap_or_default();
11        let attributes = attributes![
12            self.get_environment_identifier()
13                .as_attribute("aws.appconfigdata.environment_id"),
14            self.get_configuration_profile_identifier()
15                .as_attribute("aws.appconfigdata.configuration_profile_id"),
16            self.get_required_minimum_poll_interval_in_seconds()
17                .map(|v| KeyValue::new(
18                    "aws.appconfigdata.required_minimum_poll_interval_in_seconds",
19                    v as i64,
20                )),
21        ];
22        AppConfigDataSpanBuilder::start_configuration_session(application_id)
23            .attributes(attributes)
24    }
25}
26impl InstrumentedFluentBuilderOutput for StartConfigurationSessionOutput {}
27instrument_aws_operation!(aws_sdk_appconfigdata::operation::start_configuration_session);
28
29// Configuration retrieval operations
30impl<'a> AwsBuilderInstrument<'a> for GetLatestConfigurationFluentBuilder {
31    fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
32        AppConfigDataSpanBuilder::get_latest_configuration()
33    }
34}
35impl InstrumentedFluentBuilderOutput for GetLatestConfigurationOutput {
36    fn extract_attributes(&self) -> impl IntoIterator<Item = KeyValue> {
37        attributes![
38            self.content_type()
39                .as_attribute("aws.appconfigdata.content_type"),
40            self.version_label()
41                .as_attribute("aws.appconfigdata.version_label"),
42            Some(KeyValue::new(
43                "aws.appconfigdata.next_poll_interval_in_seconds",
44                self.next_poll_interval_in_seconds() as i64,
45            )),
46        ]
47    }
48}
49instrument_aws_operation!(aws_sdk_appconfigdata::operation::get_latest_configuration);