Skip to main content

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_api::client::interceptors::SharedInterceptor::permanent(
138                    ::aws_smithy_runtime::client::stalled_stream_protection::StalledStreamProtectionInterceptor::default(),
139                ))
140                .with_interceptor(::aws_smithy_runtime_api::client::interceptors::SharedInterceptor::permanent(
141                    DescribeOrganizationResourceCollectionHealthEndpointParamsInterceptor,
142                ))
143                .with_retry_classifier(::aws_smithy_runtime::client::retries::classifiers::TransientErrorClassifier::<
144                    crate::operation::describe_organization_resource_collection_health::DescribeOrganizationResourceCollectionHealthError,
145                >::new())
146                .with_retry_classifier(::aws_smithy_runtime::client::retries::classifiers::ModeledAsRetryableClassifier::<
147                    crate::operation::describe_organization_resource_collection_health::DescribeOrganizationResourceCollectionHealthError,
148                >::new())
149                .with_retry_classifier(::aws_runtime::retries::classifiers::AwsErrorCodeClassifier::<
150                    crate::operation::describe_organization_resource_collection_health::DescribeOrganizationResourceCollectionHealthError,
151                >::new());
152
153        ::std::borrow::Cow::Owned(rcb)
154    }
155}
156
157#[derive(Debug)]
158struct DescribeOrganizationResourceCollectionHealthResponseDeserializer;
159impl ::aws_smithy_runtime_api::client::ser_de::DeserializeResponse for DescribeOrganizationResourceCollectionHealthResponseDeserializer {
160    fn deserialize_nonstreaming(
161        &self,
162        response: &::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
163    ) -> ::aws_smithy_runtime_api::client::interceptors::context::OutputOrError {
164        let (success, status) = (response.status().is_success(), response.status().as_u16());
165        let headers = response.headers();
166        let body = response.body().bytes().expect("body loaded");
167        #[allow(unused_mut)]
168        let mut force_error = false;
169        ::tracing::debug!(request_id = ?::aws_types::request_id::RequestId::request_id(response));
170        let parse_result = if !success && status != 200 || force_error {
171            crate::protocol_serde::shape_describe_organization_resource_collection_health::de_describe_organization_resource_collection_health_http_error(status, headers, body)
172        } else {
173            crate::protocol_serde::shape_describe_organization_resource_collection_health::de_describe_organization_resource_collection_health_http_response(status, headers, body)
174        };
175        crate::protocol_serde::type_erase_result(parse_result)
176    }
177}
178#[derive(Debug)]
179struct DescribeOrganizationResourceCollectionHealthRequestSerializer;
180impl ::aws_smithy_runtime_api::client::ser_de::SerializeRequest for DescribeOrganizationResourceCollectionHealthRequestSerializer {
181    #[allow(unused_mut, clippy::let_and_return, clippy::needless_borrow, clippy::useless_conversion)]
182    fn serialize_input(
183        &self,
184        input: ::aws_smithy_runtime_api::client::interceptors::context::Input,
185        _cfg: &mut ::aws_smithy_types::config_bag::ConfigBag,
186    ) -> ::std::result::Result<::aws_smithy_runtime_api::client::orchestrator::HttpRequest, ::aws_smithy_runtime_api::box_error::BoxError> {
187        let input = input
188            .downcast::<crate::operation::describe_organization_resource_collection_health::DescribeOrganizationResourceCollectionHealthInput>()
189            .expect("correct type");
190        let _header_serialization_settings = _cfg
191            .load::<crate::serialization_settings::HeaderSerializationSettings>()
192            .cloned()
193            .unwrap_or_default();
194        let mut request_builder = {
195            #[allow(clippy::uninlined_format_args)]
196            fn uri_base(
197                _input: &crate::operation::describe_organization_resource_collection_health::DescribeOrganizationResourceCollectionHealthInput,
198                output: &mut ::std::string::String,
199            ) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
200                use ::std::fmt::Write as _;
201                ::std::write!(output, "/organization/health/resource-collection").expect("formatting should succeed");
202                ::std::result::Result::Ok(())
203            }
204            #[allow(clippy::unnecessary_wraps)]
205            fn update_http_builder(
206                input: &crate::operation::describe_organization_resource_collection_health::DescribeOrganizationResourceCollectionHealthInput,
207                builder: ::http_1x::request::Builder,
208            ) -> ::std::result::Result<::http_1x::request::Builder, ::aws_smithy_types::error::operation::BuildError> {
209                let mut uri = ::std::string::String::new();
210                uri_base(input, &mut uri)?;
211                ::std::result::Result::Ok(builder.method("POST").uri(uri))
212            }
213            let mut builder = update_http_builder(&input, ::http_1x::request::Builder::new())?;
214            builder = _header_serialization_settings.set_default_header(builder, ::http_1x::header::CONTENT_TYPE, "application/json");
215            builder
216        };
217        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)?);
218        if let Some(content_length) = body.content_length() {
219            let content_length = content_length.to_string();
220            request_builder = _header_serialization_settings.set_default_header(request_builder, ::http_1x::header::CONTENT_LENGTH, &content_length);
221        }
222        ::std::result::Result::Ok(request_builder.body(body).expect("valid request").try_into().unwrap())
223    }
224}
225#[derive(Debug)]
226struct DescribeOrganizationResourceCollectionHealthEndpointParamsInterceptor;
227
228#[::aws_smithy_runtime_api::client::interceptors::dyn_dispatch_hint]
229impl ::aws_smithy_runtime_api::client::interceptors::Intercept for DescribeOrganizationResourceCollectionHealthEndpointParamsInterceptor {
230    fn name(&self) -> &'static str {
231        "DescribeOrganizationResourceCollectionHealthEndpointParamsInterceptor"
232    }
233
234    fn read_before_execution(
235        &self,
236        context: &::aws_smithy_runtime_api::client::interceptors::context::BeforeSerializationInterceptorContextRef<
237            '_,
238            ::aws_smithy_runtime_api::client::interceptors::context::Input,
239            ::aws_smithy_runtime_api::client::interceptors::context::Output,
240            ::aws_smithy_runtime_api::client::interceptors::context::Error,
241        >,
242        cfg: &mut ::aws_smithy_types::config_bag::ConfigBag,
243    ) -> ::std::result::Result<(), ::aws_smithy_runtime_api::box_error::BoxError> {
244        let _input = context
245            .input()
246            .downcast_ref::<DescribeOrganizationResourceCollectionHealthInput>()
247            .ok_or("failed to downcast to DescribeOrganizationResourceCollectionHealthInput")?;
248
249        let params = crate::config::endpoint::Params::builder()
250            .set_region(cfg.load::<::aws_types::region::Region>().map(|r| r.as_ref().to_owned()))
251            .set_use_dual_stack(cfg.load::<::aws_types::endpoint_config::UseDualStack>().map(|ty| ty.0))
252            .set_use_fips(cfg.load::<::aws_types::endpoint_config::UseFips>().map(|ty| ty.0))
253            .set_endpoint(cfg.load::<::aws_types::endpoint_config::EndpointUrl>().map(|ty| ty.0.clone()))
254            .build()
255            .map_err(|err| {
256                ::aws_smithy_runtime_api::client::interceptors::error::ContextAttachedError::new("endpoint params could not be built", err)
257            })?;
258        cfg.interceptor_state()
259            .store_put(::aws_smithy_runtime_api::client::endpoint::EndpointResolverParams::new(params));
260        ::std::result::Result::Ok(())
261    }
262}
263
264// The get_* functions below are generated from JMESPath expressions in the
265// operationContextParams trait. They target the operation's input shape.
266
267/// Error type for the `DescribeOrganizationResourceCollectionHealthError` operation.
268#[non_exhaustive]
269#[derive(::std::fmt::Debug)]
270pub enum DescribeOrganizationResourceCollectionHealthError {
271    /// <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>
272    AccessDeniedException(crate::types::error::AccessDeniedException),
273    /// <p>An internal failure in an Amazon service occurred.</p>
274    InternalServerException(crate::types::error::InternalServerException),
275    /// <p>The request was denied due to a request throttling.</p>
276    ThrottlingException(crate::types::error::ThrottlingException),
277    /// <p>Contains information about data passed in to a field during a request that is not valid.</p>
278    ValidationException(crate::types::error::ValidationException),
279    /// An unexpected error occurred (e.g., invalid JSON returned by the service or an unknown error code).
280    #[deprecated(note = "Matching `Unhandled` directly is not forwards compatible. Instead, match using a \
281    variable wildcard pattern and check `.code()`:
282     \
283    &nbsp;&nbsp;&nbsp;`err if err.code() == Some(\"SpecificExceptionCode\") => { /* handle the error */ }`
284     \
285    See [`ProvideErrorMetadata`](#impl-ProvideErrorMetadata-for-DescribeOrganizationResourceCollectionHealthError) for what information is available for the error.")]
286    Unhandled(crate::error::sealed_unhandled::Unhandled),
287}
288impl DescribeOrganizationResourceCollectionHealthError {
289    /// Creates the `DescribeOrganizationResourceCollectionHealthError::Unhandled` variant from any error type.
290    pub fn unhandled(
291        err: impl ::std::convert::Into<::std::boxed::Box<dyn ::std::error::Error + ::std::marker::Send + ::std::marker::Sync + 'static>>,
292    ) -> Self {
293        Self::Unhandled(crate::error::sealed_unhandled::Unhandled {
294            source: err.into(),
295            meta: ::std::default::Default::default(),
296        })
297    }
298
299    /// Creates the `DescribeOrganizationResourceCollectionHealthError::Unhandled` variant from an [`ErrorMetadata`](::aws_smithy_types::error::ErrorMetadata).
300    pub fn generic(err: ::aws_smithy_types::error::ErrorMetadata) -> Self {
301        Self::Unhandled(crate::error::sealed_unhandled::Unhandled {
302            source: err.clone().into(),
303            meta: err,
304        })
305    }
306    ///
307    /// Returns error metadata, which includes the error code, message,
308    /// request ID, and potentially additional information.
309    ///
310    pub fn meta(&self) -> &::aws_smithy_types::error::ErrorMetadata {
311        match self {
312            Self::AccessDeniedException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
313            Self::InternalServerException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
314            Self::ThrottlingException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
315            Self::ValidationException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
316            Self::Unhandled(e) => &e.meta,
317        }
318    }
319    /// Returns `true` if the error kind is `DescribeOrganizationResourceCollectionHealthError::AccessDeniedException`.
320    pub fn is_access_denied_exception(&self) -> bool {
321        matches!(self, Self::AccessDeniedException(_))
322    }
323    /// Returns `true` if the error kind is `DescribeOrganizationResourceCollectionHealthError::InternalServerException`.
324    pub fn is_internal_server_exception(&self) -> bool {
325        matches!(self, Self::InternalServerException(_))
326    }
327    /// Returns `true` if the error kind is `DescribeOrganizationResourceCollectionHealthError::ThrottlingException`.
328    pub fn is_throttling_exception(&self) -> bool {
329        matches!(self, Self::ThrottlingException(_))
330    }
331    /// Returns `true` if the error kind is `DescribeOrganizationResourceCollectionHealthError::ValidationException`.
332    pub fn is_validation_exception(&self) -> bool {
333        matches!(self, Self::ValidationException(_))
334    }
335}
336impl ::std::error::Error for DescribeOrganizationResourceCollectionHealthError {
337    fn source(&self) -> ::std::option::Option<&(dyn ::std::error::Error + 'static)> {
338        match self {
339            Self::AccessDeniedException(_inner) => ::std::option::Option::Some(_inner),
340            Self::InternalServerException(_inner) => ::std::option::Option::Some(_inner),
341            Self::ThrottlingException(_inner) => ::std::option::Option::Some(_inner),
342            Self::ValidationException(_inner) => ::std::option::Option::Some(_inner),
343            Self::Unhandled(_inner) => ::std::option::Option::Some(&*_inner.source),
344        }
345    }
346}
347impl ::std::fmt::Display for DescribeOrganizationResourceCollectionHealthError {
348    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
349        match self {
350            Self::AccessDeniedException(_inner) => _inner.fmt(f),
351            Self::InternalServerException(_inner) => _inner.fmt(f),
352            Self::ThrottlingException(_inner) => _inner.fmt(f),
353            Self::ValidationException(_inner) => _inner.fmt(f),
354            Self::Unhandled(_inner) => {
355                if let ::std::option::Option::Some(code) = ::aws_smithy_types::error::metadata::ProvideErrorMetadata::code(self) {
356                    write!(f, "unhandled error ({code})")
357                } else {
358                    f.write_str("unhandled error")
359                }
360            }
361        }
362    }
363}
364impl ::aws_smithy_types::retry::ProvideErrorKind for DescribeOrganizationResourceCollectionHealthError {
365    fn code(&self) -> ::std::option::Option<&str> {
366        ::aws_smithy_types::error::metadata::ProvideErrorMetadata::code(self)
367    }
368    fn retryable_error_kind(&self) -> ::std::option::Option<::aws_smithy_types::retry::ErrorKind> {
369        ::std::option::Option::None
370    }
371}
372impl ::aws_smithy_types::error::metadata::ProvideErrorMetadata for DescribeOrganizationResourceCollectionHealthError {
373    fn meta(&self) -> &::aws_smithy_types::error::ErrorMetadata {
374        match self {
375            Self::AccessDeniedException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
376            Self::InternalServerException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
377            Self::ThrottlingException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
378            Self::ValidationException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
379            Self::Unhandled(_inner) => &_inner.meta,
380        }
381    }
382}
383impl ::aws_smithy_runtime_api::client::result::CreateUnhandledError for DescribeOrganizationResourceCollectionHealthError {
384    fn create_unhandled_error(
385        source: ::std::boxed::Box<dyn ::std::error::Error + ::std::marker::Send + ::std::marker::Sync + 'static>,
386        meta: ::std::option::Option<::aws_smithy_types::error::ErrorMetadata>,
387    ) -> Self {
388        Self::Unhandled(crate::error::sealed_unhandled::Unhandled {
389            source,
390            meta: meta.unwrap_or_default(),
391        })
392    }
393}
394impl ::aws_types::request_id::RequestId
395    for crate::operation::describe_organization_resource_collection_health::DescribeOrganizationResourceCollectionHealthError
396{
397    fn request_id(&self) -> Option<&str> {
398        self.meta().request_id()
399    }
400}
401
402pub use crate::operation::describe_organization_resource_collection_health::_describe_organization_resource_collection_health_input::DescribeOrganizationResourceCollectionHealthInput;
403
404pub use crate::operation::describe_organization_resource_collection_health::_describe_organization_resource_collection_health_output::DescribeOrganizationResourceCollectionHealthOutput;
405
406mod _describe_organization_resource_collection_health_input;
407
408mod _describe_organization_resource_collection_health_output;
409
410/// Builders
411pub mod builders;
412
413/// Paginator for this operation
414pub mod paginator;