Skip to main content

aws_sdk_observabilityadmin/operation/
list_resource_telemetry.rs

1// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
2/// Orchestration and serialization glue logic for `ListResourceTelemetry`.
3#[derive(::std::clone::Clone, ::std::default::Default, ::std::fmt::Debug)]
4#[non_exhaustive]
5pub struct ListResourceTelemetry;
6impl ListResourceTelemetry {
7    /// Creates a new `ListResourceTelemetry`
8    pub fn new() -> Self {
9        Self
10    }
11    pub(crate) async fn orchestrate(
12        runtime_plugins: &::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugins,
13        input: crate::operation::list_resource_telemetry::ListResourceTelemetryInput,
14    ) -> ::std::result::Result<
15        crate::operation::list_resource_telemetry::ListResourceTelemetryOutput,
16        ::aws_smithy_runtime_api::client::result::SdkError<
17            crate::operation::list_resource_telemetry::ListResourceTelemetryError,
18            ::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
19        >,
20    > {
21        let map_err = |err: ::aws_smithy_runtime_api::client::result::SdkError<
22            ::aws_smithy_runtime_api::client::interceptors::context::Error,
23            ::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
24        >| {
25            err.map_service_error(|err| {
26                err.downcast::<crate::operation::list_resource_telemetry::ListResourceTelemetryError>()
27                    .expect("correct error type")
28            })
29        };
30        let context = Self::orchestrate_with_stop_point(runtime_plugins, input, ::aws_smithy_runtime::client::orchestrator::StopPoint::None)
31            .await
32            .map_err(map_err)?;
33        let output = context.finalize().map_err(map_err)?;
34        ::std::result::Result::Ok(
35            output
36                .downcast::<crate::operation::list_resource_telemetry::ListResourceTelemetryOutput>()
37                .expect("correct output type"),
38        )
39    }
40
41    pub(crate) async fn orchestrate_with_stop_point(
42        runtime_plugins: &::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugins,
43        input: crate::operation::list_resource_telemetry::ListResourceTelemetryInput,
44        stop_point: ::aws_smithy_runtime::client::orchestrator::StopPoint,
45    ) -> ::std::result::Result<
46        ::aws_smithy_runtime_api::client::interceptors::context::InterceptorContext,
47        ::aws_smithy_runtime_api::client::result::SdkError<
48            ::aws_smithy_runtime_api::client::interceptors::context::Error,
49            ::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
50        >,
51    > {
52        let input = ::aws_smithy_runtime_api::client::interceptors::context::Input::erase(input);
53        use ::tracing::Instrument;
54        ::aws_smithy_runtime::client::orchestrator::invoke_with_stop_point(
55            "ObservabilityAdmin",
56            "ListResourceTelemetry",
57            input,
58            runtime_plugins,
59            stop_point,
60        )
61        // Create a parent span for the entire operation. Includes a random, internal-only,
62        // seven-digit ID for the operation orchestration so that it can be correlated in the logs.
63        .instrument(::tracing::debug_span!(
64            "ObservabilityAdmin.ListResourceTelemetry",
65            "rpc.service" = "ObservabilityAdmin",
66            "rpc.method" = "ListResourceTelemetry",
67            "sdk_invocation_id" = ::fastrand::u32(1_000_000..10_000_000),
68            "rpc.system" = "aws-api",
69        ))
70        .await
71    }
72
73    pub(crate) fn operation_runtime_plugins(
74        client_runtime_plugins: ::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugins,
75        client_config: &crate::config::Config,
76        config_override: ::std::option::Option<crate::config::Builder>,
77    ) -> ::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugins {
78        let mut runtime_plugins = client_runtime_plugins.with_operation_plugin(Self::new());
79
80        if let ::std::option::Option::Some(config_override) = config_override {
81            for plugin in config_override.runtime_plugins.iter().cloned() {
82                runtime_plugins = runtime_plugins.with_operation_plugin(plugin);
83            }
84            runtime_plugins = runtime_plugins.with_operation_plugin(crate::config::ConfigOverrideRuntimePlugin::new(
85                config_override,
86                client_config.config.clone(),
87                &client_config.runtime_components,
88            ));
89        }
90        runtime_plugins
91    }
92}
93impl ::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugin for ListResourceTelemetry {
94    fn config(&self) -> ::std::option::Option<::aws_smithy_types::config_bag::FrozenLayer> {
95        let mut cfg = ::aws_smithy_types::config_bag::Layer::new("ListResourceTelemetry");
96
97        cfg.store_put(::aws_smithy_runtime_api::client::ser_de::SharedRequestSerializer::new(
98            ListResourceTelemetryRequestSerializer,
99        ));
100        cfg.store_put(::aws_smithy_runtime_api::client::ser_de::SharedResponseDeserializer::new(
101            ListResourceTelemetryResponseDeserializer,
102        ));
103
104        cfg.store_put(::aws_smithy_runtime_api::client::auth::AuthSchemeOptionResolverParams::new(
105            crate::config::auth::Params::builder()
106                .operation_name("ListResourceTelemetry")
107                .build()
108                .expect("required fields set"),
109        ));
110
111        cfg.store_put(::aws_smithy_runtime_api::client::orchestrator::Metadata::new(
112            "ListResourceTelemetry",
113            "ObservabilityAdmin",
114        ));
115        let mut signing_options = ::aws_runtime::auth::SigningOptions::default();
116        signing_options.double_uri_encode = true;
117        signing_options.content_sha256_header = false;
118        signing_options.normalize_uri_path = true;
119        signing_options.payload_override = None;
120
121        cfg.store_put(::aws_runtime::auth::SigV4OperationSigningConfig {
122            signing_options,
123            ..::std::default::Default::default()
124        });
125
126        ::std::option::Option::Some(cfg.freeze())
127    }
128
129    fn runtime_components(
130        &self,
131        _: &::aws_smithy_runtime_api::client::runtime_components::RuntimeComponentsBuilder,
132    ) -> ::std::borrow::Cow<'_, ::aws_smithy_runtime_api::client::runtime_components::RuntimeComponentsBuilder> {
133        #[allow(unused_mut)]
134        let mut rcb = ::aws_smithy_runtime_api::client::runtime_components::RuntimeComponentsBuilder::new("ListResourceTelemetry")
135            .with_interceptor(::aws_smithy_runtime_api::client::interceptors::SharedInterceptor::permanent(
136                ListResourceTelemetryTelemetryInputCaptureInterceptor,
137            ))
138            .with_interceptor(::aws_smithy_runtime_api::client::interceptors::SharedInterceptor::permanent(
139                ::aws_smithy_runtime::client::stalled_stream_protection::StalledStreamProtectionInterceptor::default(),
140            ))
141            .with_interceptor(::aws_smithy_runtime_api::client::interceptors::SharedInterceptor::permanent(
142                ListResourceTelemetryEndpointParamsInterceptor,
143            ))
144            .with_retry_classifier(::aws_smithy_runtime::client::retries::classifiers::TransientErrorClassifier::<
145                crate::operation::list_resource_telemetry::ListResourceTelemetryError,
146            >::new())
147            .with_retry_classifier(::aws_smithy_runtime::client::retries::classifiers::ModeledAsRetryableClassifier::<
148                crate::operation::list_resource_telemetry::ListResourceTelemetryError,
149            >::new())
150            .with_retry_classifier(::aws_runtime::retries::classifiers::AwsErrorCodeClassifier::<
151                crate::operation::list_resource_telemetry::ListResourceTelemetryError,
152            >::new());
153
154        ::std::borrow::Cow::Owned(rcb)
155    }
156}
157
158#[derive(Debug)]
159struct ListResourceTelemetryTelemetryInputCaptureInterceptor;
160
161#[::aws_smithy_runtime_api::client::interceptors::dyn_dispatch_hint]
162impl ::aws_smithy_runtime_api::client::interceptors::Intercept for ListResourceTelemetryTelemetryInputCaptureInterceptor {
163    fn name(&self) -> &'static str {
164        "ListResourceTelemetryTelemetryInputCaptureInterceptor"
165    }
166
167    fn read_before_execution(
168        &self,
169        context: &::aws_smithy_runtime_api::client::interceptors::context::BeforeSerializationInterceptorContextRef<
170            '_,
171            ::aws_smithy_runtime_api::client::interceptors::context::Input,
172            ::aws_smithy_runtime_api::client::interceptors::context::Output,
173            ::aws_smithy_runtime_api::client::interceptors::context::Error,
174        >,
175        cfg: &mut ::aws_smithy_types::config_bag::ConfigBag,
176    ) -> ::std::result::Result<(), ::aws_smithy_runtime_api::box_error::BoxError> {
177        // Nothing to do unless the customer opted in by naming members to record.
178        let ::std::option::Option::Some(requested) = cfg
179            .load::<::aws_smithy_types::telemetry::RequestedTelemetryAttributes>()
180            .filter(|r| !r.is_empty())
181        else {
182            return ::std::result::Result::Ok(());
183        };
184
185        let ::std::option::Option::Some(input) = context.input().downcast_ref::<ListResourceTelemetryInput>() else {
186            // A mismatched input is not this interceptor's concern; skip quietly.
187            return ::std::result::Result::Ok(());
188        };
189
190        let mut captured = ::aws_smithy_types::telemetry::CapturedTelemetryAttributes::default();
191        if requested.should_capture("ResourceIdentifierPrefix") {
192            if let ::std::option::Option::Some(value) = input.resource_identifier_prefix.as_deref() {
193                captured.insert("ResourceIdentifierPrefix", value);
194            }
195        }
196        if requested.should_capture("NextToken") {
197            if let ::std::option::Option::Some(value) = input.next_token.as_deref() {
198                captured.insert("NextToken", value);
199            }
200        }
201
202        cfg.interceptor_state().store_put(captured);
203        ::std::result::Result::Ok(())
204    }
205}
206#[derive(Debug)]
207struct ListResourceTelemetryResponseDeserializer;
208impl ::aws_smithy_runtime_api::client::ser_de::DeserializeResponse for ListResourceTelemetryResponseDeserializer {
209    fn deserialize_nonstreaming_with_config(
210        &self,
211        response: &::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
212        _cfg: &::aws_smithy_types::config_bag::ConfigBag,
213    ) -> ::aws_smithy_runtime_api::client::interceptors::context::OutputOrError {
214        let (success, status) = (response.status().is_success(), response.status().as_u16());
215        let headers = response.headers();
216        let body = response.body().bytes().expect("body loaded");
217        #[allow(unused_mut)]
218        let mut force_error = false;
219        ::tracing::debug!(request_id = ?::aws_types::request_id::RequestId::request_id(response));
220        let parse_result = if !success && status != 200 || force_error {
221            crate::protocol_serde::shape_list_resource_telemetry::de_list_resource_telemetry_http_error(status, headers, body)
222        } else {
223            crate::protocol_serde::shape_list_resource_telemetry::de_list_resource_telemetry_http_response(status, headers, body)
224        };
225        crate::protocol_serde::type_erase_result(parse_result)
226    }
227}
228#[derive(Debug)]
229struct ListResourceTelemetryRequestSerializer;
230impl ::aws_smithy_runtime_api::client::ser_de::SerializeRequest for ListResourceTelemetryRequestSerializer {
231    #[allow(unused_mut, clippy::let_and_return, clippy::needless_borrow, clippy::useless_conversion)]
232    fn serialize_input(
233        &self,
234        input: ::aws_smithy_runtime_api::client::interceptors::context::Input,
235        _cfg: &mut ::aws_smithy_types::config_bag::ConfigBag,
236    ) -> ::std::result::Result<::aws_smithy_runtime_api::client::orchestrator::HttpRequest, ::aws_smithy_runtime_api::box_error::BoxError> {
237        let input = input
238            .downcast::<crate::operation::list_resource_telemetry::ListResourceTelemetryInput>()
239            .expect("correct type");
240        let _header_serialization_settings = _cfg
241            .load::<crate::serialization_settings::HeaderSerializationSettings>()
242            .cloned()
243            .unwrap_or_default();
244        let mut request_builder = {
245            #[allow(clippy::uninlined_format_args)]
246            fn uri_base(
247                _input: &crate::operation::list_resource_telemetry::ListResourceTelemetryInput,
248                output: &mut ::std::string::String,
249            ) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
250                use ::std::fmt::Write as _;
251                ::std::write!(output, "/ListResourceTelemetry").expect("formatting should succeed");
252                ::std::result::Result::Ok(())
253            }
254            #[allow(clippy::unnecessary_wraps)]
255            fn update_http_builder(
256                input: &crate::operation::list_resource_telemetry::ListResourceTelemetryInput,
257                builder: ::http_1x::request::Builder,
258            ) -> ::std::result::Result<::http_1x::request::Builder, ::aws_smithy_types::error::operation::BuildError> {
259                let mut uri = ::std::string::String::new();
260                uri_base(input, &mut uri)?;
261                ::std::result::Result::Ok(builder.method("POST").uri(uri))
262            }
263            let mut builder = update_http_builder(&input, ::http_1x::request::Builder::new())?;
264            builder = _header_serialization_settings.set_default_header(builder, ::http_1x::header::CONTENT_TYPE, "application/json");
265            builder
266        };
267        let body = ::aws_smithy_types::body::SdkBody::from(crate::protocol_serde::shape_list_resource_telemetry::ser_list_resource_telemetry_input(
268            &input,
269        )?);
270        if let Some(content_length) = body.content_length() {
271            let content_length = content_length.to_string();
272            request_builder = _header_serialization_settings.set_default_header(request_builder, ::http_1x::header::CONTENT_LENGTH, &content_length);
273        }
274        ::std::result::Result::Ok(request_builder.body(body).expect("valid request").try_into().unwrap())
275    }
276}
277#[derive(Debug)]
278struct ListResourceTelemetryEndpointParamsInterceptor;
279
280#[::aws_smithy_runtime_api::client::interceptors::dyn_dispatch_hint]
281impl ::aws_smithy_runtime_api::client::interceptors::Intercept for ListResourceTelemetryEndpointParamsInterceptor {
282    fn name(&self) -> &'static str {
283        "ListResourceTelemetryEndpointParamsInterceptor"
284    }
285
286    fn read_before_execution(
287        &self,
288        context: &::aws_smithy_runtime_api::client::interceptors::context::BeforeSerializationInterceptorContextRef<
289            '_,
290            ::aws_smithy_runtime_api::client::interceptors::context::Input,
291            ::aws_smithy_runtime_api::client::interceptors::context::Output,
292            ::aws_smithy_runtime_api::client::interceptors::context::Error,
293        >,
294        cfg: &mut ::aws_smithy_types::config_bag::ConfigBag,
295    ) -> ::std::result::Result<(), ::aws_smithy_runtime_api::box_error::BoxError> {
296        let _input = context
297            .input()
298            .downcast_ref::<ListResourceTelemetryInput>()
299            .ok_or("failed to downcast to ListResourceTelemetryInput")?;
300
301        let params = crate::config::endpoint::Params::builder()
302            .set_region(cfg.load::<::aws_types::region::Region>().map(|r| r.as_ref().to_owned()))
303            .set_use_dual_stack(cfg.load::<::aws_types::endpoint_config::UseDualStack>().map(|ty| ty.0))
304            .set_use_fips(cfg.load::<::aws_types::endpoint_config::UseFips>().map(|ty| ty.0))
305            .set_endpoint(cfg.load::<::aws_types::endpoint_config::EndpointUrl>().map(|ty| ty.0.clone()))
306            .build()
307            .map_err(|err| {
308                ::aws_smithy_runtime_api::client::interceptors::error::ContextAttachedError::new("endpoint params could not be built", err)
309            })?;
310        cfg.interceptor_state()
311            .store_put(::aws_smithy_runtime_api::client::endpoint::EndpointResolverParams::new(params));
312        ::std::result::Result::Ok(())
313    }
314}
315
316// The get_* functions below are generated from JMESPath expressions in the
317// operationContextParams trait. They target the operation's input shape.
318
319/// Error type for the `ListResourceTelemetryError` operation.
320#[non_exhaustive]
321#[derive(::std::fmt::Debug)]
322pub enum ListResourceTelemetryError {
323    /// <p>Indicates you don't have permissions to perform the requested operation. The user or role that is making the request must have at least one IAM permissions policy attached that grants the required permissions. For more information, see <a href="https://docs.aws.amazon.com/IAM/latest/UserGuide/access.html">Access management for Amazon Web Services resources</a> in the IAM user guide.</p>
324    AccessDeniedException(crate::types::error::AccessDeniedException),
325    /// <p>Indicates the request has failed to process because of an unknown server error, exception, or failure.</p>
326    InternalServerException(crate::types::error::InternalServerException),
327    /// <p>The request throughput limit was exceeded.</p>
328    TooManyRequestsException(crate::types::error::TooManyRequestsException),
329    /// <p>Indicates input validation failed. Check your request parameters and retry the request.</p>
330    ValidationException(crate::types::error::ValidationException),
331    /// An unexpected error occurred (e.g., invalid JSON returned by the service or an unknown error code).
332    #[deprecated(note = "Matching `Unhandled` directly is not forwards compatible. Instead, match using a \
333    variable wildcard pattern and check `.code()`:
334     \
335    &nbsp;&nbsp;&nbsp;`err if err.code() == Some(\"SpecificExceptionCode\") => { /* handle the error */ }`
336     \
337    See [`ProvideErrorMetadata`](#impl-ProvideErrorMetadata-for-ListResourceTelemetryError) for what information is available for the error.")]
338    Unhandled(crate::error::sealed_unhandled::Unhandled),
339}
340impl ListResourceTelemetryError {
341    /// Creates the `ListResourceTelemetryError::Unhandled` variant from any error type.
342    pub fn unhandled(
343        err: impl ::std::convert::Into<::std::boxed::Box<dyn ::std::error::Error + ::std::marker::Send + ::std::marker::Sync + 'static>>,
344    ) -> Self {
345        Self::Unhandled(crate::error::sealed_unhandled::Unhandled {
346            source: err.into(),
347            meta: ::std::default::Default::default(),
348        })
349    }
350
351    /// Creates the `ListResourceTelemetryError::Unhandled` variant from an [`ErrorMetadata`](::aws_smithy_types::error::ErrorMetadata).
352    pub fn generic(err: ::aws_smithy_types::error::ErrorMetadata) -> Self {
353        Self::Unhandled(crate::error::sealed_unhandled::Unhandled {
354            source: err.clone().into(),
355            meta: err,
356        })
357    }
358    ///
359    /// Returns error metadata, which includes the error code, message,
360    /// request ID, and potentially additional information.
361    ///
362    pub fn meta(&self) -> &::aws_smithy_types::error::ErrorMetadata {
363        match self {
364            Self::AccessDeniedException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
365            Self::InternalServerException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
366            Self::TooManyRequestsException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
367            Self::ValidationException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
368            Self::Unhandled(e) => &e.meta,
369        }
370    }
371    /// Returns `true` if the error kind is `ListResourceTelemetryError::AccessDeniedException`.
372    pub fn is_access_denied_exception(&self) -> bool {
373        matches!(self, Self::AccessDeniedException(_))
374    }
375    /// Returns `true` if the error kind is `ListResourceTelemetryError::InternalServerException`.
376    pub fn is_internal_server_exception(&self) -> bool {
377        matches!(self, Self::InternalServerException(_))
378    }
379    /// Returns `true` if the error kind is `ListResourceTelemetryError::TooManyRequestsException`.
380    pub fn is_too_many_requests_exception(&self) -> bool {
381        matches!(self, Self::TooManyRequestsException(_))
382    }
383    /// Returns `true` if the error kind is `ListResourceTelemetryError::ValidationException`.
384    pub fn is_validation_exception(&self) -> bool {
385        matches!(self, Self::ValidationException(_))
386    }
387}
388impl ::std::error::Error for ListResourceTelemetryError {
389    fn source(&self) -> ::std::option::Option<&(dyn ::std::error::Error + 'static)> {
390        match self {
391            Self::AccessDeniedException(_inner) => ::std::option::Option::Some(_inner),
392            Self::InternalServerException(_inner) => ::std::option::Option::Some(_inner),
393            Self::TooManyRequestsException(_inner) => ::std::option::Option::Some(_inner),
394            Self::ValidationException(_inner) => ::std::option::Option::Some(_inner),
395            Self::Unhandled(_inner) => ::std::option::Option::Some(&*_inner.source),
396        }
397    }
398}
399impl ::std::fmt::Display for ListResourceTelemetryError {
400    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
401        match self {
402            Self::AccessDeniedException(_inner) => _inner.fmt(f),
403            Self::InternalServerException(_inner) => _inner.fmt(f),
404            Self::TooManyRequestsException(_inner) => _inner.fmt(f),
405            Self::ValidationException(_inner) => _inner.fmt(f),
406            Self::Unhandled(_inner) => {
407                if let ::std::option::Option::Some(code) = ::aws_smithy_types::error::metadata::ProvideErrorMetadata::code(self) {
408                    write!(f, "unhandled error ({code})")
409                } else {
410                    f.write_str("unhandled error")
411                }
412            }
413        }
414    }
415}
416impl ::aws_smithy_types::retry::ProvideErrorKind for ListResourceTelemetryError {
417    fn code(&self) -> ::std::option::Option<&str> {
418        ::aws_smithy_types::error::metadata::ProvideErrorMetadata::code(self)
419    }
420    fn retryable_error_kind(&self) -> ::std::option::Option<::aws_smithy_types::retry::ErrorKind> {
421        ::std::option::Option::None
422    }
423}
424impl ::aws_smithy_types::error::metadata::ProvideErrorMetadata for ListResourceTelemetryError {
425    fn meta(&self) -> &::aws_smithy_types::error::ErrorMetadata {
426        match self {
427            Self::AccessDeniedException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
428            Self::InternalServerException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
429            Self::TooManyRequestsException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
430            Self::ValidationException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
431            Self::Unhandled(_inner) => &_inner.meta,
432        }
433    }
434}
435impl ::aws_smithy_runtime_api::client::result::CreateUnhandledError for ListResourceTelemetryError {
436    fn create_unhandled_error(
437        source: ::std::boxed::Box<dyn ::std::error::Error + ::std::marker::Send + ::std::marker::Sync + 'static>,
438        meta: ::std::option::Option<::aws_smithy_types::error::ErrorMetadata>,
439    ) -> Self {
440        Self::Unhandled(crate::error::sealed_unhandled::Unhandled {
441            source,
442            meta: meta.unwrap_or_default(),
443        })
444    }
445}
446impl ::aws_types::request_id::RequestId for crate::operation::list_resource_telemetry::ListResourceTelemetryError {
447    fn request_id(&self) -> Option<&str> {
448        self.meta().request_id()
449    }
450}
451
452pub use crate::operation::list_resource_telemetry::_list_resource_telemetry_input::ListResourceTelemetryInput;
453
454pub use crate::operation::list_resource_telemetry::_list_resource_telemetry_output::ListResourceTelemetryOutput;
455
456mod _list_resource_telemetry_input;
457
458mod _list_resource_telemetry_output;
459
460/// Builders
461pub mod builders;
462
463/// Paginator for this operation
464pub mod paginator;