Skip to main content

aws_sdk_docdb/operation/
restore_db_cluster_from_snapshot.rs

1// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
2/// Orchestration and serialization glue logic for `RestoreDBClusterFromSnapshot`.
3#[derive(::std::clone::Clone, ::std::default::Default, ::std::fmt::Debug)]
4#[non_exhaustive]
5pub struct RestoreDBClusterFromSnapshot;
6impl RestoreDBClusterFromSnapshot {
7    /// Creates a new `RestoreDBClusterFromSnapshot`
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::restore_db_cluster_from_snapshot::RestoreDbClusterFromSnapshotInput,
14    ) -> ::std::result::Result<
15        crate::operation::restore_db_cluster_from_snapshot::RestoreDbClusterFromSnapshotOutput,
16        ::aws_smithy_runtime_api::client::result::SdkError<
17            crate::operation::restore_db_cluster_from_snapshot::RestoreDBClusterFromSnapshotError,
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::restore_db_cluster_from_snapshot::RestoreDBClusterFromSnapshotError>()
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::restore_db_cluster_from_snapshot::RestoreDbClusterFromSnapshotOutput>()
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::restore_db_cluster_from_snapshot::RestoreDbClusterFromSnapshotInput,
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            "DocDB",
56            "RestoreDBClusterFromSnapshot",
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            "DocDB.RestoreDBClusterFromSnapshot",
65            "rpc.service" = "DocDB",
66            "rpc.method" = "RestoreDBClusterFromSnapshot",
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 RestoreDBClusterFromSnapshot {
94    fn config(&self) -> ::std::option::Option<::aws_smithy_types::config_bag::FrozenLayer> {
95        let mut cfg = ::aws_smithy_types::config_bag::Layer::new("RestoreDBClusterFromSnapshot");
96
97        cfg.store_put(::aws_smithy_runtime_api::client::ser_de::SharedRequestSerializer::new(
98            RestoreDBClusterFromSnapshotRequestSerializer,
99        ));
100        cfg.store_put(::aws_smithy_runtime_api::client::ser_de::SharedResponseDeserializer::new(
101            RestoreDBClusterFromSnapshotResponseDeserializer,
102        ));
103
104        cfg.store_put(::aws_smithy_runtime_api::client::auth::AuthSchemeOptionResolverParams::new(
105            crate::config::auth::Params::builder()
106                .operation_name("RestoreDBClusterFromSnapshot")
107                .build()
108                .expect("required fields set"),
109        ));
110
111        cfg.store_put(::aws_smithy_runtime_api::client::orchestrator::Metadata::new(
112            "RestoreDBClusterFromSnapshot",
113            "DocDB",
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("RestoreDBClusterFromSnapshot")
135            .with_interceptor(::aws_smithy_runtime_api::client::interceptors::SharedInterceptor::permanent(
136                RestoreDBClusterFromSnapshotTelemetryInputCaptureInterceptor,
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                RestoreDBClusterFromSnapshotEndpointParamsInterceptor,
143            ))
144            .with_retry_classifier(::aws_smithy_runtime::client::retries::classifiers::TransientErrorClassifier::<
145                crate::operation::restore_db_cluster_from_snapshot::RestoreDBClusterFromSnapshotError,
146            >::new())
147            .with_retry_classifier(::aws_smithy_runtime::client::retries::classifiers::ModeledAsRetryableClassifier::<
148                crate::operation::restore_db_cluster_from_snapshot::RestoreDBClusterFromSnapshotError,
149            >::new())
150            .with_retry_classifier(::aws_runtime::retries::classifiers::AwsErrorCodeClassifier::<
151                crate::operation::restore_db_cluster_from_snapshot::RestoreDBClusterFromSnapshotError,
152            >::new())
153            .with_retry_classifier(::aws_runtime::service_clock_skew::ServiceClockSkewClassifier::<
154                crate::operation::restore_db_cluster_from_snapshot::RestoreDBClusterFromSnapshotError,
155            >::new());
156
157        ::std::borrow::Cow::Owned(rcb)
158    }
159}
160
161#[derive(Debug)]
162struct RestoreDBClusterFromSnapshotTelemetryInputCaptureInterceptor;
163
164#[::aws_smithy_runtime_api::client::interceptors::dyn_dispatch_hint]
165impl ::aws_smithy_runtime_api::client::interceptors::Intercept for RestoreDBClusterFromSnapshotTelemetryInputCaptureInterceptor {
166    fn name(&self) -> &'static str {
167        "RestoreDBClusterFromSnapshotTelemetryInputCaptureInterceptor"
168    }
169
170    fn read_before_execution(
171        &self,
172        context: &::aws_smithy_runtime_api::client::interceptors::context::BeforeSerializationInterceptorContextRef<
173            '_,
174            ::aws_smithy_runtime_api::client::interceptors::context::Input,
175            ::aws_smithy_runtime_api::client::interceptors::context::Output,
176            ::aws_smithy_runtime_api::client::interceptors::context::Error,
177        >,
178        cfg: &mut ::aws_smithy_types::config_bag::ConfigBag,
179    ) -> ::std::result::Result<(), ::aws_smithy_runtime_api::box_error::BoxError> {
180        // Nothing to do unless the customer opted in by naming members to record.
181        let ::std::option::Option::Some(requested) = cfg
182            .load::<::aws_smithy_types::telemetry::RequestedTelemetryAttributes>()
183            .filter(|r| !r.is_empty())
184        else {
185            return ::std::result::Result::Ok(());
186        };
187
188        let ::std::option::Option::Some(input) = context.input().downcast_ref::<RestoreDbClusterFromSnapshotInput>() else {
189            // A mismatched input is not this interceptor's concern; skip quietly.
190            return ::std::result::Result::Ok(());
191        };
192
193        let mut captured = ::aws_smithy_types::telemetry::CapturedTelemetryAttributes::default();
194        if requested.should_capture("DBClusterIdentifier") {
195            if let ::std::option::Option::Some(value) = input.db_cluster_identifier.as_deref() {
196                captured.insert("DBClusterIdentifier", value);
197            }
198        }
199        if requested.should_capture("SnapshotIdentifier") {
200            if let ::std::option::Option::Some(value) = input.snapshot_identifier.as_deref() {
201                captured.insert("SnapshotIdentifier", value);
202            }
203        }
204        if requested.should_capture("Engine") {
205            if let ::std::option::Option::Some(value) = input.engine.as_deref() {
206                captured.insert("Engine", value);
207            }
208        }
209        if requested.should_capture("EngineVersion") {
210            if let ::std::option::Option::Some(value) = input.engine_version.as_deref() {
211                captured.insert("EngineVersion", value);
212            }
213        }
214        if requested.should_capture("DBSubnetGroupName") {
215            if let ::std::option::Option::Some(value) = input.db_subnet_group_name.as_deref() {
216                captured.insert("DBSubnetGroupName", value);
217            }
218        }
219        if requested.should_capture("KmsKeyId") {
220            if let ::std::option::Option::Some(value) = input.kms_key_id.as_deref() {
221                captured.insert("KmsKeyId", value);
222            }
223        }
224        if requested.should_capture("DBClusterParameterGroupName") {
225            if let ::std::option::Option::Some(value) = input.db_cluster_parameter_group_name.as_deref() {
226                captured.insert("DBClusterParameterGroupName", value);
227            }
228        }
229        if requested.should_capture("StorageType") {
230            if let ::std::option::Option::Some(value) = input.storage_type.as_deref() {
231                captured.insert("StorageType", value);
232            }
233        }
234        if requested.should_capture("NetworkType") {
235            if let ::std::option::Option::Some(value) = input.network_type.as_deref() {
236                captured.insert("NetworkType", value);
237            }
238        }
239
240        cfg.interceptor_state().store_put(captured);
241        ::std::result::Result::Ok(())
242    }
243}
244#[derive(Debug)]
245struct RestoreDBClusterFromSnapshotResponseDeserializer;
246impl ::aws_smithy_runtime_api::client::ser_de::DeserializeResponse for RestoreDBClusterFromSnapshotResponseDeserializer {
247    fn deserialize_nonstreaming_with_config(
248        &self,
249        response: &::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
250        _cfg: &::aws_smithy_types::config_bag::ConfigBag,
251    ) -> ::aws_smithy_runtime_api::client::interceptors::context::OutputOrError {
252        let (success, status) = (response.status().is_success(), response.status().as_u16());
253        let headers = response.headers();
254        let body = response.body().bytes().expect("body loaded");
255        #[allow(unused_mut)]
256        let mut force_error = false;
257        ::tracing::debug!(request_id = ?::aws_types::request_id::RequestId::request_id(response));
258        let parse_result = if !success && status != 200 || force_error {
259            crate::protocol_serde::shape_restore_db_cluster_from_snapshot::de_restore_db_cluster_from_snapshot_http_error(status, headers, body)
260        } else {
261            crate::protocol_serde::shape_restore_db_cluster_from_snapshot::de_restore_db_cluster_from_snapshot_http_response(status, headers, body)
262        };
263        crate::protocol_serde::type_erase_result(parse_result)
264    }
265}
266#[derive(Debug)]
267struct RestoreDBClusterFromSnapshotRequestSerializer;
268impl ::aws_smithy_runtime_api::client::ser_de::SerializeRequest for RestoreDBClusterFromSnapshotRequestSerializer {
269    #[allow(unused_mut, clippy::let_and_return, clippy::needless_borrow, clippy::useless_conversion)]
270    fn serialize_input(
271        &self,
272        input: ::aws_smithy_runtime_api::client::interceptors::context::Input,
273        _cfg: &mut ::aws_smithy_types::config_bag::ConfigBag,
274    ) -> ::std::result::Result<::aws_smithy_runtime_api::client::orchestrator::HttpRequest, ::aws_smithy_runtime_api::box_error::BoxError> {
275        let input = input
276            .downcast::<crate::operation::restore_db_cluster_from_snapshot::RestoreDbClusterFromSnapshotInput>()
277            .expect("correct type");
278        let _header_serialization_settings = _cfg
279            .load::<crate::serialization_settings::HeaderSerializationSettings>()
280            .cloned()
281            .unwrap_or_default();
282        let mut request_builder = {
283            #[allow(clippy::uninlined_format_args)]
284            fn uri_base(
285                _input: &crate::operation::restore_db_cluster_from_snapshot::RestoreDbClusterFromSnapshotInput,
286                output: &mut ::std::string::String,
287            ) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
288                use ::std::fmt::Write as _;
289                ::std::write!(output, "/").expect("formatting should succeed");
290                ::std::result::Result::Ok(())
291            }
292            #[allow(clippy::unnecessary_wraps)]
293            fn update_http_builder(
294                input: &crate::operation::restore_db_cluster_from_snapshot::RestoreDbClusterFromSnapshotInput,
295                builder: ::http_1x::request::Builder,
296            ) -> ::std::result::Result<::http_1x::request::Builder, ::aws_smithy_types::error::operation::BuildError> {
297                let mut uri = ::std::string::String::new();
298                uri_base(input, &mut uri)?;
299                ::std::result::Result::Ok(builder.method("POST").uri(uri))
300            }
301            let mut builder = update_http_builder(&input, ::http_1x::request::Builder::new())?;
302            builder =
303                _header_serialization_settings.set_default_header(builder, ::http_1x::header::CONTENT_TYPE, "application/x-www-form-urlencoded");
304            builder
305        };
306        let body = ::aws_smithy_types::body::SdkBody::from(
307            crate::protocol_serde::shape_restore_db_cluster_from_snapshot_input::ser_restore_db_cluster_from_snapshot_input_input_input(&input)?,
308        );
309        if let Some(content_length) = body.content_length() {
310            let content_length = content_length.to_string();
311            request_builder = _header_serialization_settings.set_default_header(request_builder, ::http_1x::header::CONTENT_LENGTH, &content_length);
312        }
313        ::std::result::Result::Ok(request_builder.body(body).expect("valid request").try_into().unwrap())
314    }
315}
316#[derive(Debug)]
317struct RestoreDBClusterFromSnapshotEndpointParamsInterceptor;
318
319#[::aws_smithy_runtime_api::client::interceptors::dyn_dispatch_hint]
320impl ::aws_smithy_runtime_api::client::interceptors::Intercept for RestoreDBClusterFromSnapshotEndpointParamsInterceptor {
321    fn name(&self) -> &'static str {
322        "RestoreDBClusterFromSnapshotEndpointParamsInterceptor"
323    }
324
325    fn read_before_execution(
326        &self,
327        context: &::aws_smithy_runtime_api::client::interceptors::context::BeforeSerializationInterceptorContextRef<
328            '_,
329            ::aws_smithy_runtime_api::client::interceptors::context::Input,
330            ::aws_smithy_runtime_api::client::interceptors::context::Output,
331            ::aws_smithy_runtime_api::client::interceptors::context::Error,
332        >,
333        cfg: &mut ::aws_smithy_types::config_bag::ConfigBag,
334    ) -> ::std::result::Result<(), ::aws_smithy_runtime_api::box_error::BoxError> {
335        let _input = context
336            .input()
337            .downcast_ref::<RestoreDbClusterFromSnapshotInput>()
338            .ok_or("failed to downcast to RestoreDbClusterFromSnapshotInput")?;
339
340        let params = crate::config::endpoint::Params::builder()
341            .set_region(cfg.load::<::aws_types::region::Region>().map(|r| r.as_ref().to_owned()))
342            .set_use_dual_stack(cfg.load::<::aws_types::endpoint_config::UseDualStack>().map(|ty| ty.0))
343            .set_use_fips(cfg.load::<::aws_types::endpoint_config::UseFips>().map(|ty| ty.0))
344            .set_endpoint(cfg.load::<::aws_types::endpoint_config::EndpointUrl>().map(|ty| ty.0.clone()))
345            .build()
346            .map_err(|err| {
347                ::aws_smithy_runtime_api::client::interceptors::error::ContextAttachedError::new("endpoint params could not be built", err)
348            })?;
349        cfg.interceptor_state()
350            .store_put(::aws_smithy_runtime_api::client::endpoint::EndpointResolverParams::new(params));
351        ::std::result::Result::Ok(())
352    }
353}
354
355// The get_* functions below are generated from JMESPath expressions in the
356// operationContextParams trait. They target the operation's input shape.
357
358/// Error type for the `RestoreDBClusterFromSnapshotError` operation.
359#[non_exhaustive]
360#[derive(::std::fmt::Debug)]
361pub enum RestoreDBClusterFromSnapshotError {
362    /// <p>You already have a cluster with the given identifier.</p>
363    DbClusterAlreadyExistsFault(crate::types::error::DbClusterAlreadyExistsFault),
364    /// <p>The cluster can't be created because you have reached the maximum allowed quota of clusters.</p>
365    DbClusterQuotaExceededFault(crate::types::error::DbClusterQuotaExceededFault),
366    /// <p><code>DBClusterSnapshotIdentifier</code> doesn't refer to an existing cluster snapshot.</p>
367    DbClusterSnapshotNotFoundFault(crate::types::error::DbClusterSnapshotNotFoundFault),
368    /// <p><code>DBSnapshotIdentifier</code> doesn't refer to an existing snapshot.</p>
369    DbSnapshotNotFoundFault(crate::types::error::DbSnapshotNotFoundFault),
370    /// <p><code>DBSubnetGroupName</code> doesn't refer to an existing subnet group.</p>
371    DbSubnetGroupNotFoundFault(crate::types::error::DbSubnetGroupNotFoundFault),
372    /// <p>The cluster doesn't have enough capacity for the current operation.</p>
373    InsufficientDbClusterCapacityFault(crate::types::error::InsufficientDbClusterCapacityFault),
374    /// <p>There is not enough storage available for the current action. You might be able to resolve this error by updating your subnet group to use different Availability Zones that have more storage available.</p>
375    InsufficientStorageClusterCapacityFault(crate::types::error::InsufficientStorageClusterCapacityFault),
376    /// <p>The provided value isn't a valid cluster snapshot state.</p>
377    InvalidDbClusterSnapshotStateFault(crate::types::error::InvalidDbClusterSnapshotStateFault),
378    /// <p>The state of the snapshot doesn't allow deletion.</p>
379    InvalidDbSnapshotStateFault(crate::types::error::InvalidDbSnapshotStateFault),
380    /// <p>You cannot restore from a virtual private cloud (VPC) backup to a non-VPC DB instance.</p>
381    InvalidRestoreFault(crate::types::error::InvalidRestoreFault),
382    /// <p>The requested subnet is not valid, or multiple subnets were requested that are not all in a common virtual private cloud (VPC).</p>
383    InvalidSubnet(crate::types::error::InvalidSubnet),
384    /// <p>The subnet group doesn't cover all Availability Zones after it is created because of changes that were made.</p>
385    InvalidVpcNetworkStateFault(crate::types::error::InvalidVpcNetworkStateFault),
386    /// <p>An error occurred when accessing an KMS key.</p>
387    KmsKeyNotAccessibleFault(crate::types::error::KmsKeyNotAccessibleFault),
388    /// <p>The network type is not supported by either <code>DBSubnetGroup</code> or the DB engine version.</p>
389    NetworkTypeNotSupported(crate::types::error::NetworkTypeNotSupported),
390    /// <p>The request would cause you to exceed the allowed amount of storage available across all instances.</p>
391    StorageQuotaExceededFault(crate::types::error::StorageQuotaExceededFault),
392    /// An unexpected error occurred (e.g., invalid JSON returned by the service or an unknown error code).
393    #[deprecated(note = "Matching `Unhandled` directly is not forwards compatible. Instead, match using a \
394    variable wildcard pattern and check `.code()`:
395     \
396    &nbsp;&nbsp;&nbsp;`err if err.code() == Some(\"SpecificExceptionCode\") => { /* handle the error */ }`
397     \
398    See [`ProvideErrorMetadata`](#impl-ProvideErrorMetadata-for-RestoreDBClusterFromSnapshotError) for what information is available for the error.")]
399    Unhandled(crate::error::sealed_unhandled::Unhandled),
400}
401impl RestoreDBClusterFromSnapshotError {
402    /// Creates the `RestoreDBClusterFromSnapshotError::Unhandled` variant from any error type.
403    pub fn unhandled(
404        err: impl ::std::convert::Into<::std::boxed::Box<dyn ::std::error::Error + ::std::marker::Send + ::std::marker::Sync + 'static>>,
405    ) -> Self {
406        Self::Unhandled(crate::error::sealed_unhandled::Unhandled {
407            source: err.into(),
408            meta: ::std::default::Default::default(),
409        })
410    }
411
412    /// Creates the `RestoreDBClusterFromSnapshotError::Unhandled` variant from an [`ErrorMetadata`](::aws_smithy_types::error::ErrorMetadata).
413    pub fn generic(err: ::aws_smithy_types::error::ErrorMetadata) -> Self {
414        Self::Unhandled(crate::error::sealed_unhandled::Unhandled {
415            source: err.clone().into(),
416            meta: err,
417        })
418    }
419    ///
420    /// Returns error metadata, which includes the error code, message,
421    /// request ID, and potentially additional information.
422    ///
423    pub fn meta(&self) -> &::aws_smithy_types::error::ErrorMetadata {
424        match self {
425            Self::DbClusterAlreadyExistsFault(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
426            Self::DbClusterQuotaExceededFault(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
427            Self::DbClusterSnapshotNotFoundFault(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
428            Self::DbSnapshotNotFoundFault(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
429            Self::DbSubnetGroupNotFoundFault(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
430            Self::InsufficientDbClusterCapacityFault(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
431            Self::InsufficientStorageClusterCapacityFault(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
432            Self::InvalidDbClusterSnapshotStateFault(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
433            Self::InvalidDbSnapshotStateFault(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
434            Self::InvalidRestoreFault(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
435            Self::InvalidSubnet(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
436            Self::InvalidVpcNetworkStateFault(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
437            Self::KmsKeyNotAccessibleFault(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
438            Self::NetworkTypeNotSupported(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
439            Self::StorageQuotaExceededFault(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
440            Self::Unhandled(e) => &e.meta,
441        }
442    }
443    /// Returns `true` if the error kind is `RestoreDBClusterFromSnapshotError::DbClusterAlreadyExistsFault`.
444    pub fn is_db_cluster_already_exists_fault(&self) -> bool {
445        matches!(self, Self::DbClusterAlreadyExistsFault(_))
446    }
447    /// Returns `true` if the error kind is `RestoreDBClusterFromSnapshotError::DbClusterQuotaExceededFault`.
448    pub fn is_db_cluster_quota_exceeded_fault(&self) -> bool {
449        matches!(self, Self::DbClusterQuotaExceededFault(_))
450    }
451    /// Returns `true` if the error kind is `RestoreDBClusterFromSnapshotError::DbClusterSnapshotNotFoundFault`.
452    pub fn is_db_cluster_snapshot_not_found_fault(&self) -> bool {
453        matches!(self, Self::DbClusterSnapshotNotFoundFault(_))
454    }
455    /// Returns `true` if the error kind is `RestoreDBClusterFromSnapshotError::DbSnapshotNotFoundFault`.
456    pub fn is_db_snapshot_not_found_fault(&self) -> bool {
457        matches!(self, Self::DbSnapshotNotFoundFault(_))
458    }
459    /// Returns `true` if the error kind is `RestoreDBClusterFromSnapshotError::DbSubnetGroupNotFoundFault`.
460    pub fn is_db_subnet_group_not_found_fault(&self) -> bool {
461        matches!(self, Self::DbSubnetGroupNotFoundFault(_))
462    }
463    /// Returns `true` if the error kind is `RestoreDBClusterFromSnapshotError::InsufficientDbClusterCapacityFault`.
464    pub fn is_insufficient_db_cluster_capacity_fault(&self) -> bool {
465        matches!(self, Self::InsufficientDbClusterCapacityFault(_))
466    }
467    /// Returns `true` if the error kind is `RestoreDBClusterFromSnapshotError::InsufficientStorageClusterCapacityFault`.
468    pub fn is_insufficient_storage_cluster_capacity_fault(&self) -> bool {
469        matches!(self, Self::InsufficientStorageClusterCapacityFault(_))
470    }
471    /// Returns `true` if the error kind is `RestoreDBClusterFromSnapshotError::InvalidDbClusterSnapshotStateFault`.
472    pub fn is_invalid_db_cluster_snapshot_state_fault(&self) -> bool {
473        matches!(self, Self::InvalidDbClusterSnapshotStateFault(_))
474    }
475    /// Returns `true` if the error kind is `RestoreDBClusterFromSnapshotError::InvalidDbSnapshotStateFault`.
476    pub fn is_invalid_db_snapshot_state_fault(&self) -> bool {
477        matches!(self, Self::InvalidDbSnapshotStateFault(_))
478    }
479    /// Returns `true` if the error kind is `RestoreDBClusterFromSnapshotError::InvalidRestoreFault`.
480    pub fn is_invalid_restore_fault(&self) -> bool {
481        matches!(self, Self::InvalidRestoreFault(_))
482    }
483    /// Returns `true` if the error kind is `RestoreDBClusterFromSnapshotError::InvalidSubnet`.
484    pub fn is_invalid_subnet(&self) -> bool {
485        matches!(self, Self::InvalidSubnet(_))
486    }
487    /// Returns `true` if the error kind is `RestoreDBClusterFromSnapshotError::InvalidVpcNetworkStateFault`.
488    pub fn is_invalid_vpc_network_state_fault(&self) -> bool {
489        matches!(self, Self::InvalidVpcNetworkStateFault(_))
490    }
491    /// Returns `true` if the error kind is `RestoreDBClusterFromSnapshotError::KmsKeyNotAccessibleFault`.
492    pub fn is_kms_key_not_accessible_fault(&self) -> bool {
493        matches!(self, Self::KmsKeyNotAccessibleFault(_))
494    }
495    /// Returns `true` if the error kind is `RestoreDBClusterFromSnapshotError::NetworkTypeNotSupported`.
496    pub fn is_network_type_not_supported(&self) -> bool {
497        matches!(self, Self::NetworkTypeNotSupported(_))
498    }
499    /// Returns `true` if the error kind is `RestoreDBClusterFromSnapshotError::StorageQuotaExceededFault`.
500    pub fn is_storage_quota_exceeded_fault(&self) -> bool {
501        matches!(self, Self::StorageQuotaExceededFault(_))
502    }
503}
504impl ::std::error::Error for RestoreDBClusterFromSnapshotError {
505    fn source(&self) -> ::std::option::Option<&(dyn ::std::error::Error + 'static)> {
506        match self {
507            Self::DbClusterAlreadyExistsFault(_inner) => ::std::option::Option::Some(_inner),
508            Self::DbClusterQuotaExceededFault(_inner) => ::std::option::Option::Some(_inner),
509            Self::DbClusterSnapshotNotFoundFault(_inner) => ::std::option::Option::Some(_inner),
510            Self::DbSnapshotNotFoundFault(_inner) => ::std::option::Option::Some(_inner),
511            Self::DbSubnetGroupNotFoundFault(_inner) => ::std::option::Option::Some(_inner),
512            Self::InsufficientDbClusterCapacityFault(_inner) => ::std::option::Option::Some(_inner),
513            Self::InsufficientStorageClusterCapacityFault(_inner) => ::std::option::Option::Some(_inner),
514            Self::InvalidDbClusterSnapshotStateFault(_inner) => ::std::option::Option::Some(_inner),
515            Self::InvalidDbSnapshotStateFault(_inner) => ::std::option::Option::Some(_inner),
516            Self::InvalidRestoreFault(_inner) => ::std::option::Option::Some(_inner),
517            Self::InvalidSubnet(_inner) => ::std::option::Option::Some(_inner),
518            Self::InvalidVpcNetworkStateFault(_inner) => ::std::option::Option::Some(_inner),
519            Self::KmsKeyNotAccessibleFault(_inner) => ::std::option::Option::Some(_inner),
520            Self::NetworkTypeNotSupported(_inner) => ::std::option::Option::Some(_inner),
521            Self::StorageQuotaExceededFault(_inner) => ::std::option::Option::Some(_inner),
522            Self::Unhandled(_inner) => ::std::option::Option::Some(&*_inner.source),
523        }
524    }
525}
526impl ::std::fmt::Display for RestoreDBClusterFromSnapshotError {
527    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
528        match self {
529            Self::DbClusterAlreadyExistsFault(_inner) => _inner.fmt(f),
530            Self::DbClusterQuotaExceededFault(_inner) => _inner.fmt(f),
531            Self::DbClusterSnapshotNotFoundFault(_inner) => _inner.fmt(f),
532            Self::DbSnapshotNotFoundFault(_inner) => _inner.fmt(f),
533            Self::DbSubnetGroupNotFoundFault(_inner) => _inner.fmt(f),
534            Self::InsufficientDbClusterCapacityFault(_inner) => _inner.fmt(f),
535            Self::InsufficientStorageClusterCapacityFault(_inner) => _inner.fmt(f),
536            Self::InvalidDbClusterSnapshotStateFault(_inner) => _inner.fmt(f),
537            Self::InvalidDbSnapshotStateFault(_inner) => _inner.fmt(f),
538            Self::InvalidRestoreFault(_inner) => _inner.fmt(f),
539            Self::InvalidSubnet(_inner) => _inner.fmt(f),
540            Self::InvalidVpcNetworkStateFault(_inner) => _inner.fmt(f),
541            Self::KmsKeyNotAccessibleFault(_inner) => _inner.fmt(f),
542            Self::NetworkTypeNotSupported(_inner) => _inner.fmt(f),
543            Self::StorageQuotaExceededFault(_inner) => _inner.fmt(f),
544            Self::Unhandled(_inner) => {
545                if let ::std::option::Option::Some(code) = ::aws_smithy_types::error::metadata::ProvideErrorMetadata::code(self) {
546                    write!(f, "unhandled error ({code})")
547                } else {
548                    f.write_str("unhandled error")
549                }
550            }
551        }
552    }
553}
554impl ::aws_smithy_types::retry::ProvideErrorKind for RestoreDBClusterFromSnapshotError {
555    fn code(&self) -> ::std::option::Option<&str> {
556        ::aws_smithy_types::error::metadata::ProvideErrorMetadata::code(self)
557    }
558    fn retryable_error_kind(&self) -> ::std::option::Option<::aws_smithy_types::retry::ErrorKind> {
559        ::std::option::Option::None
560    }
561}
562impl ::aws_smithy_types::error::metadata::ProvideErrorMetadata for RestoreDBClusterFromSnapshotError {
563    fn meta(&self) -> &::aws_smithy_types::error::ErrorMetadata {
564        match self {
565            Self::DbClusterAlreadyExistsFault(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
566            Self::DbClusterQuotaExceededFault(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
567            Self::DbClusterSnapshotNotFoundFault(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
568            Self::DbSnapshotNotFoundFault(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
569            Self::DbSubnetGroupNotFoundFault(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
570            Self::InsufficientDbClusterCapacityFault(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
571            Self::InsufficientStorageClusterCapacityFault(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
572            Self::InvalidDbClusterSnapshotStateFault(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
573            Self::InvalidDbSnapshotStateFault(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
574            Self::InvalidRestoreFault(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
575            Self::InvalidSubnet(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
576            Self::InvalidVpcNetworkStateFault(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
577            Self::KmsKeyNotAccessibleFault(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
578            Self::NetworkTypeNotSupported(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
579            Self::StorageQuotaExceededFault(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
580            Self::Unhandled(_inner) => &_inner.meta,
581        }
582    }
583}
584impl ::aws_smithy_runtime_api::client::result::CreateUnhandledError for RestoreDBClusterFromSnapshotError {
585    fn create_unhandled_error(
586        source: ::std::boxed::Box<dyn ::std::error::Error + ::std::marker::Send + ::std::marker::Sync + 'static>,
587        meta: ::std::option::Option<::aws_smithy_types::error::ErrorMetadata>,
588    ) -> Self {
589        Self::Unhandled(crate::error::sealed_unhandled::Unhandled {
590            source,
591            meta: meta.unwrap_or_default(),
592        })
593    }
594}
595impl ::aws_types::request_id::RequestId for crate::operation::restore_db_cluster_from_snapshot::RestoreDBClusterFromSnapshotError {
596    fn request_id(&self) -> Option<&str> {
597        self.meta().request_id()
598    }
599}
600
601pub use crate::operation::restore_db_cluster_from_snapshot::_restore_db_cluster_from_snapshot_input::RestoreDbClusterFromSnapshotInput;
602
603pub use crate::operation::restore_db_cluster_from_snapshot::_restore_db_cluster_from_snapshot_output::RestoreDbClusterFromSnapshotOutput;
604
605mod _restore_db_cluster_from_snapshot_input;
606
607mod _restore_db_cluster_from_snapshot_output;
608
609/// Builders
610pub mod builders;