aws_sdk_devopsguru/operation/
describe_organization_resource_collection_health.rs

1// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
2/// Orchestration and serialization glue logic for `DescribeOrganizationResourceCollectionHealth`.
3#[derive(::std::clone::Clone, ::std::default::Default, ::std::fmt::Debug)]
4#[non_exhaustive]
5pub struct DescribeOrganizationResourceCollectionHealth;
6impl DescribeOrganizationResourceCollectionHealth {
7    /// Creates a new `DescribeOrganizationResourceCollectionHealth`
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::describe_organization_resource_collection_health::DescribeOrganizationResourceCollectionHealthInput,
14    ) -> ::std::result::Result<
15        crate::operation::describe_organization_resource_collection_health::DescribeOrganizationResourceCollectionHealthOutput,
16        ::aws_smithy_runtime_api::client::result::SdkError<
17            crate::operation::describe_organization_resource_collection_health::DescribeOrganizationResourceCollectionHealthError,
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::describe_organization_resource_collection_health::DescribeOrganizationResourceCollectionHealthError>(
27                )
28                .expect("correct error type")
29            })
30        };
31        let context = Self::orchestrate_with_stop_point(runtime_plugins, input, ::aws_smithy_runtime::client::orchestrator::StopPoint::None)
32            .await
33            .map_err(map_err)?;
34        let output = context.finalize().map_err(map_err)?;
35        ::std::result::Result::Ok(
36            output
37                .downcast::<crate::operation::describe_organization_resource_collection_health::DescribeOrganizationResourceCollectionHealthOutput>()
38                .expect("correct output type"),
39        )
40    }
41
42    pub(crate) async fn orchestrate_with_stop_point(
43        runtime_plugins: &::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugins,
44        input: crate::operation::describe_organization_resource_collection_health::DescribeOrganizationResourceCollectionHealthInput,
45        stop_point: ::aws_smithy_runtime::client::orchestrator::StopPoint,
46    ) -> ::std::result::Result<
47        ::aws_smithy_runtime_api::client::interceptors::context::InterceptorContext,
48        ::aws_smithy_runtime_api::client::result::SdkError<
49            ::aws_smithy_runtime_api::client::interceptors::context::Error,
50            ::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
51        >,
52    > {
53        let input = ::aws_smithy_runtime_api::client::interceptors::context::Input::erase(input);
54        use ::tracing::Instrument;
55        ::aws_smithy_runtime::client::orchestrator::invoke_with_stop_point(
56            "DevOps Guru",
57            "DescribeOrganizationResourceCollectionHealth",
58            input,
59            runtime_plugins,
60            stop_point,
61        )
62        // Create a parent span for the entire operation. Includes a random, internal-only,
63        // seven-digit ID for the operation orchestration so that it can be correlated in the logs.
64        .instrument(::tracing::debug_span!(
65            "DevOps Guru.DescribeOrganizationResourceCollectionHealth",
66            "rpc.service" = "DevOps Guru",
67            "rpc.method" = "DescribeOrganizationResourceCollectionHealth",
68            "sdk_invocation_id" = ::fastrand::u32(1_000_000..10_000_000),
69            "rpc.system" = "aws-api",
70        ))
71        .await
72    }
73
74    pub(crate) fn operation_runtime_plugins(
75        client_runtime_plugins: ::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugins,
76        client_config: &crate::config::Config,
77        config_override: ::std::option::Option<crate::config::Builder>,
78    ) -> ::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugins {
79        let mut runtime_plugins = client_runtime_plugins.with_operation_plugin(Self::new());
80
81        if let ::std::option::Option::Some(config_override) = config_override {
82            for plugin in config_override.runtime_plugins.iter().cloned() {
83                runtime_plugins = runtime_plugins.with_operation_plugin(plugin);
84            }
85            runtime_plugins = runtime_plugins.with_operation_plugin(crate::config::ConfigOverrideRuntimePlugin::new(
86                config_override,
87                client_config.config.clone(),
88                &client_config.runtime_components,
89            ));
90        }
91        runtime_plugins
92    }
93}
94impl ::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugin for DescribeOrganizationResourceCollectionHealth {
95    fn config(&self) -> ::std::option::Option<::aws_smithy_types::config_bag::FrozenLayer> {
96        let mut cfg = ::aws_smithy_types::config_bag::Layer::new("DescribeOrganizationResourceCollectionHealth");
97
98        cfg.store_put(::aws_smithy_runtime_api::client::ser_de::SharedRequestSerializer::new(
99            DescribeOrganizationResourceCollectionHealthRequestSerializer,
100        ));
101        cfg.store_put(::aws_smithy_runtime_api::client::ser_de::SharedResponseDeserializer::new(
102            DescribeOrganizationResourceCollectionHealthResponseDeserializer,
103        ));
104
105        cfg.store_put(::aws_smithy_runtime_api::client::auth::AuthSchemeOptionResolverParams::new(
106            crate::config::auth::Params::builder()
107                .operation_name("DescribeOrganizationResourceCollectionHealth")
108                .build()
109                .expect("required fields set"),
110        ));
111
112        cfg.store_put(::aws_smithy_runtime_api::client::orchestrator::Metadata::new(
113            "DescribeOrganizationResourceCollectionHealth",
114            "DevOps Guru",
115        ));
116        let mut signing_options = ::aws_runtime::auth::SigningOptions::default();
117        signing_options.double_uri_encode = true;
118        signing_options.content_sha256_header = false;
119        signing_options.normalize_uri_path = true;
120        signing_options.payload_override = None;
121
122        cfg.store_put(::aws_runtime::auth::SigV4OperationSigningConfig {
123            signing_options,
124            ..::std::default::Default::default()
125        });
126
127        ::std::option::Option::Some(cfg.freeze())
128    }
129
130    fn runtime_components(
131        &self,
132        _: &::aws_smithy_runtime_api::client::runtime_components::RuntimeComponentsBuilder,
133    ) -> ::std::borrow::Cow<'_, ::aws_smithy_runtime_api::client::runtime_components::RuntimeComponentsBuilder> {
134        #[allow(unused_mut)]
135        let mut rcb =
136            ::aws_smithy_runtime_api::client::runtime_components::RuntimeComponentsBuilder::new("DescribeOrganizationResourceCollectionHealth")
137                .with_interceptor(::aws_smithy_runtime::client::stalled_stream_protection::StalledStreamProtectionInterceptor::default())
138                .with_interceptor(DescribeOrganizationResourceCollectionHealthEndpointParamsInterceptor)
139                .with_retry_classifier(::aws_smithy_runtime::client::retries::classifiers::TransientErrorClassifier::<
140                    crate::operation::describe_organization_resource_collection_health::DescribeOrganizationResourceCollectionHealthError,
141                >::new())
142                .with_retry_classifier(::aws_smithy_runtime::client::retries::classifiers::ModeledAsRetryableClassifier::<
143                    crate::operation::describe_organization_resource_collection_health::DescribeOrganizationResourceCollectionHealthError,
144                >::new())
145                .with_retry_classifier(::aws_runtime::retries::classifiers::AwsErrorCodeClassifier::<
146                    crate::operation::describe_organization_resource_collection_health::DescribeOrganizationResourceCollectionHealthError,
147                >::new());
148
149        ::std::borrow::Cow::Owned(rcb)
150    }
151}
152
153#[derive(Debug)]
154struct DescribeOrganizationResourceCollectionHealthResponseDeserializer;
155impl ::aws_smithy_runtime_api::client::ser_de::DeserializeResponse for DescribeOrganizationResourceCollectionHealthResponseDeserializer {
156    fn deserialize_nonstreaming(
157        &self,
158        response: &::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
159    ) -> ::aws_smithy_runtime_api::client::interceptors::context::OutputOrError {
160        let (success, status) = (response.status().is_success(), response.status().as_u16());
161        let headers = response.headers();
162        let body = response.body().bytes().expect("body loaded");
163        #[allow(unused_mut)]
164        let mut force_error = false;
165        ::tracing::debug!(request_id = ?::aws_types::request_id::RequestId::request_id(response));
166        let parse_result = if !success && status != 200 || force_error {
167            crate::protocol_serde::shape_describe_organization_resource_collection_health::de_describe_organization_resource_collection_health_http_error(status, headers, body)
168        } else {
169            crate::protocol_serde::shape_describe_organization_resource_collection_health::de_describe_organization_resource_collection_health_http_response(status, headers, body)
170        };
171        crate::protocol_serde::type_erase_result(parse_result)
172    }
173}
174#[derive(Debug)]
175struct DescribeOrganizationResourceCollectionHealthRequestSerializer;
176impl ::aws_smithy_runtime_api::client::ser_de::SerializeRequest for DescribeOrganizationResourceCollectionHealthRequestSerializer {
177    #[allow(unused_mut, clippy::let_and_return, clippy::needless_borrow, clippy::useless_conversion)]
178    fn serialize_input(
179        &self,
180        input: ::aws_smithy_runtime_api::client::interceptors::context::Input,
181        _cfg: &mut ::aws_smithy_types::config_bag::ConfigBag,
182    ) -> ::std::result::Result<::aws_smithy_runtime_api::client::orchestrator::HttpRequest, ::aws_smithy_runtime_api::box_error::BoxError> {
183        let input = input
184            .downcast::<crate::operation::describe_organization_resource_collection_health::DescribeOrganizationResourceCollectionHealthInput>()
185            .expect("correct type");
186        let _header_serialization_settings = _cfg
187            .load::<crate::serialization_settings::HeaderSerializationSettings>()
188            .cloned()
189            .unwrap_or_default();
190        let mut request_builder = {
191            #[allow(clippy::uninlined_format_args)]
192            fn uri_base(
193                _input: &crate::operation::describe_organization_resource_collection_health::DescribeOrganizationResourceCollectionHealthInput,
194                output: &mut ::std::string::String,
195            ) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
196                use ::std::fmt::Write as _;
197                ::std::write!(output, "/organization/health/resource-collection").expect("formatting should succeed");
198                ::std::result::Result::Ok(())
199            }
200            #[allow(clippy::unnecessary_wraps)]
201            fn update_http_builder(
202                input: &crate::operation::describe_organization_resource_collection_health::DescribeOrganizationResourceCollectionHealthInput,
203                builder: ::http::request::Builder,
204            ) -> ::std::result::Result<::http::request::Builder, ::aws_smithy_types::error::operation::BuildError> {
205                let mut uri = ::std::string::String::new();
206                uri_base(input, &mut uri)?;
207                ::std::result::Result::Ok(builder.method("POST").uri(uri))
208            }
209            let mut builder = update_http_builder(&input, ::http::request::Builder::new())?;
210            builder = _header_serialization_settings.set_default_header(builder, ::http::header::CONTENT_TYPE, "application/json");
211            builder
212        };
213        let body = ::aws_smithy_types::body::SdkBody::from(crate::protocol_serde::shape_describe_organization_resource_collection_health::ser_describe_organization_resource_collection_health_input(&input)?);
214        if let Some(content_length) = body.content_length() {
215            let content_length = content_length.to_string();
216            request_builder = _header_serialization_settings.set_default_header(request_builder, ::http::header::CONTENT_LENGTH, &content_length);
217        }
218        ::std::result::Result::Ok(request_builder.body(body).expect("valid request").try_into().unwrap())
219    }
220}
221#[derive(Debug)]
222struct DescribeOrganizationResourceCollectionHealthEndpointParamsInterceptor;
223
224impl ::aws_smithy_runtime_api::client::interceptors::Intercept for DescribeOrganizationResourceCollectionHealthEndpointParamsInterceptor {
225    fn name(&self) -> &'static str {
226        "DescribeOrganizationResourceCollectionHealthEndpointParamsInterceptor"
227    }
228
229    fn read_before_execution(
230        &self,
231        context: &::aws_smithy_runtime_api::client::interceptors::context::BeforeSerializationInterceptorContextRef<
232            '_,
233            ::aws_smithy_runtime_api::client::interceptors::context::Input,
234            ::aws_smithy_runtime_api::client::interceptors::context::Output,
235            ::aws_smithy_runtime_api::client::interceptors::context::Error,
236        >,
237        cfg: &mut ::aws_smithy_types::config_bag::ConfigBag,
238    ) -> ::std::result::Result<(), ::aws_smithy_runtime_api::box_error::BoxError> {
239        let _input = context
240            .input()
241            .downcast_ref::<DescribeOrganizationResourceCollectionHealthInput>()
242            .ok_or("failed to downcast to DescribeOrganizationResourceCollectionHealthInput")?;
243
244        let params = crate::config::endpoint::Params::builder()
245            .set_region(cfg.load::<::aws_types::region::Region>().map(|r| r.as_ref().to_owned()))
246            .set_use_dual_stack(cfg.load::<::aws_types::endpoint_config::UseDualStack>().map(|ty| ty.0))
247            .set_use_fips(cfg.load::<::aws_types::endpoint_config::UseFips>().map(|ty| ty.0))
248            .set_endpoint(cfg.load::<::aws_types::endpoint_config::EndpointUrl>().map(|ty| ty.0.clone()))
249            .build()
250            .map_err(|err| {
251                ::aws_smithy_runtime_api::client::interceptors::error::ContextAttachedError::new("endpoint params could not be built", err)
252            })?;
253        cfg.interceptor_state()
254            .store_put(::aws_smithy_runtime_api::client::endpoint::EndpointResolverParams::new(params));
255        ::std::result::Result::Ok(())
256    }
257}
258
259// The get_* functions below are generated from JMESPath expressions in the
260// operationContextParams trait. They target the operation's input shape.
261
262/// Error type for the `DescribeOrganizationResourceCollectionHealthError` operation.
263#[non_exhaustive]
264#[derive(::std::fmt::Debug)]
265pub enum DescribeOrganizationResourceCollectionHealthError {
266    /// <p>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</a> in the <i>IAM User Guide</i>.</p>
267    AccessDeniedException(crate::types::error::AccessDeniedException),
268    /// <p>An internal failure in an Amazon service occurred.</p>
269    InternalServerException(crate::types::error::InternalServerException),
270    /// <p>The request was denied due to a request throttling.</p>
271    ThrottlingException(crate::types::error::ThrottlingException),
272    /// <p>Contains information about data passed in to a field during a request that is not valid.</p>
273    ValidationException(crate::types::error::ValidationException),
274    /// An unexpected error occurred (e.g., invalid JSON returned by the service or an unknown error code).
275    #[deprecated(note = "Matching `Unhandled` directly is not forwards compatible. Instead, match using a \
276    variable wildcard pattern and check `.code()`:
277     \
278    &nbsp;&nbsp;&nbsp;`err if err.code() == Some(\"SpecificExceptionCode\") => { /* handle the error */ }`
279     \
280    See [`ProvideErrorMetadata`](#impl-ProvideErrorMetadata-for-DescribeOrganizationResourceCollectionHealthError) for what information is available for the error.")]
281    Unhandled(crate::error::sealed_unhandled::Unhandled),
282}
283impl DescribeOrganizationResourceCollectionHealthError {
284    /// Creates the `DescribeOrganizationResourceCollectionHealthError::Unhandled` variant from any error type.
285    pub fn unhandled(
286        err: impl ::std::convert::Into<::std::boxed::Box<dyn ::std::error::Error + ::std::marker::Send + ::std::marker::Sync + 'static>>,
287    ) -> Self {
288        Self::Unhandled(crate::error::sealed_unhandled::Unhandled {
289            source: err.into(),
290            meta: ::std::default::Default::default(),
291        })
292    }
293
294    /// Creates the `DescribeOrganizationResourceCollectionHealthError::Unhandled` variant from an [`ErrorMetadata`](::aws_smithy_types::error::ErrorMetadata).
295    pub fn generic(err: ::aws_smithy_types::error::ErrorMetadata) -> Self {
296        Self::Unhandled(crate::error::sealed_unhandled::Unhandled {
297            source: err.clone().into(),
298            meta: err,
299        })
300    }
301    ///
302    /// Returns error metadata, which includes the error code, message,
303    /// request ID, and potentially additional information.
304    ///
305    pub fn meta(&self) -> &::aws_smithy_types::error::ErrorMetadata {
306        match self {
307            Self::AccessDeniedException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
308            Self::InternalServerException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
309            Self::ThrottlingException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
310            Self::ValidationException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
311            Self::Unhandled(e) => &e.meta,
312        }
313    }
314    /// Returns `true` if the error kind is `DescribeOrganizationResourceCollectionHealthError::AccessDeniedException`.
315    pub fn is_access_denied_exception(&self) -> bool {
316        matches!(self, Self::AccessDeniedException(_))
317    }
318    /// Returns `true` if the error kind is `DescribeOrganizationResourceCollectionHealthError::InternalServerException`.
319    pub fn is_internal_server_exception(&self) -> bool {
320        matches!(self, Self::InternalServerException(_))
321    }
322    /// Returns `true` if the error kind is `DescribeOrganizationResourceCollectionHealthError::ThrottlingException`.
323    pub fn is_throttling_exception(&self) -> bool {
324        matches!(self, Self::ThrottlingException(_))
325    }
326    /// Returns `true` if the error kind is `DescribeOrganizationResourceCollectionHealthError::ValidationException`.
327    pub fn is_validation_exception(&self) -> bool {
328        matches!(self, Self::ValidationException(_))
329    }
330}
331impl ::std::error::Error for DescribeOrganizationResourceCollectionHealthError {
332    fn source(&self) -> ::std::option::Option<&(dyn ::std::error::Error + 'static)> {
333        match self {
334            Self::AccessDeniedException(_inner) => ::std::option::Option::Some(_inner),
335            Self::InternalServerException(_inner) => ::std::option::Option::Some(_inner),
336            Self::ThrottlingException(_inner) => ::std::option::Option::Some(_inner),
337            Self::ValidationException(_inner) => ::std::option::Option::Some(_inner),
338            Self::Unhandled(_inner) => ::std::option::Option::Some(&*_inner.source),
339        }
340    }
341}
342impl ::std::fmt::Display for DescribeOrganizationResourceCollectionHealthError {
343    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
344        match self {
345            Self::AccessDeniedException(_inner) => _inner.fmt(f),
346            Self::InternalServerException(_inner) => _inner.fmt(f),
347            Self::ThrottlingException(_inner) => _inner.fmt(f),
348            Self::ValidationException(_inner) => _inner.fmt(f),
349            Self::Unhandled(_inner) => {
350                if let ::std::option::Option::Some(code) = ::aws_smithy_types::error::metadata::ProvideErrorMetadata::code(self) {
351                    write!(f, "unhandled error ({code})")
352                } else {
353                    f.write_str("unhandled error")
354                }
355            }
356        }
357    }
358}
359impl ::aws_smithy_types::retry::ProvideErrorKind for DescribeOrganizationResourceCollectionHealthError {
360    fn code(&self) -> ::std::option::Option<&str> {
361        ::aws_smithy_types::error::metadata::ProvideErrorMetadata::code(self)
362    }
363    fn retryable_error_kind(&self) -> ::std::option::Option<::aws_smithy_types::retry::ErrorKind> {
364        ::std::option::Option::None
365    }
366}
367impl ::aws_smithy_types::error::metadata::ProvideErrorMetadata for DescribeOrganizationResourceCollectionHealthError {
368    fn meta(&self) -> &::aws_smithy_types::error::ErrorMetadata {
369        match self {
370            Self::AccessDeniedException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
371            Self::InternalServerException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
372            Self::ThrottlingException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
373            Self::ValidationException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
374            Self::Unhandled(_inner) => &_inner.meta,
375        }
376    }
377}
378impl ::aws_smithy_runtime_api::client::result::CreateUnhandledError for DescribeOrganizationResourceCollectionHealthError {
379    fn create_unhandled_error(
380        source: ::std::boxed::Box<dyn ::std::error::Error + ::std::marker::Send + ::std::marker::Sync + 'static>,
381        meta: ::std::option::Option<::aws_smithy_types::error::ErrorMetadata>,
382    ) -> Self {
383        Self::Unhandled(crate::error::sealed_unhandled::Unhandled {
384            source,
385            meta: meta.unwrap_or_default(),
386        })
387    }
388}
389impl ::aws_types::request_id::RequestId
390    for crate::operation::describe_organization_resource_collection_health::DescribeOrganizationResourceCollectionHealthError
391{
392    fn request_id(&self) -> Option<&str> {
393        self.meta().request_id()
394    }
395}
396
397pub use crate::operation::describe_organization_resource_collection_health::_describe_organization_resource_collection_health_output::DescribeOrganizationResourceCollectionHealthOutput;
398
399pub use crate::operation::describe_organization_resource_collection_health::_describe_organization_resource_collection_health_input::DescribeOrganizationResourceCollectionHealthInput;
400
401mod _describe_organization_resource_collection_health_input;
402
403mod _describe_organization_resource_collection_health_output;
404
405/// Builders
406pub mod builders;
407
408/// Paginator for this operation
409pub mod paginator;