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