aws_sdk_neptune/operation/
create_db_cluster.rs

1// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
2/// Orchestration and serialization glue logic for `CreateDBCluster`.
3#[derive(::std::clone::Clone, ::std::default::Default, ::std::fmt::Debug)]
4#[non_exhaustive]
5pub struct CreateDBCluster;
6impl CreateDBCluster {
7    /// Creates a new `CreateDBCluster`
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::create_db_cluster::CreateDbClusterInput,
14    ) -> ::std::result::Result<
15        crate::operation::create_db_cluster::CreateDbClusterOutput,
16        ::aws_smithy_runtime_api::client::result::SdkError<
17            crate::operation::create_db_cluster::CreateDBClusterError,
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::create_db_cluster::CreateDBClusterError>()
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::create_db_cluster::CreateDbClusterOutput>()
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::create_db_cluster::CreateDbClusterInput,
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("Neptune", "CreateDBCluster", input, runtime_plugins, stop_point)
55            // Create a parent span for the entire operation. Includes a random, internal-only,
56            // seven-digit ID for the operation orchestration so that it can be correlated in the logs.
57            .instrument(::tracing::debug_span!(
58                "Neptune.CreateDBCluster",
59                "rpc.service" = "Neptune",
60                "rpc.method" = "CreateDBCluster",
61                "sdk_invocation_id" = ::fastrand::u32(1_000_000..10_000_000),
62                "rpc.system" = "aws-api",
63            ))
64            .await
65    }
66
67    pub(crate) fn operation_runtime_plugins(
68        client_runtime_plugins: ::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugins,
69        client_config: &crate::config::Config,
70        config_override: ::std::option::Option<crate::config::Builder>,
71    ) -> ::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugins {
72        let mut runtime_plugins = client_runtime_plugins.with_operation_plugin(Self::new());
73
74        if let ::std::option::Option::Some(config_override) = config_override {
75            for plugin in config_override.runtime_plugins.iter().cloned() {
76                runtime_plugins = runtime_plugins.with_operation_plugin(plugin);
77            }
78            runtime_plugins = runtime_plugins.with_operation_plugin(crate::config::ConfigOverrideRuntimePlugin::new(
79                config_override,
80                client_config.config.clone(),
81                &client_config.runtime_components,
82            ));
83        }
84        runtime_plugins
85    }
86}
87impl ::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugin for CreateDBCluster {
88    fn config(&self) -> ::std::option::Option<::aws_smithy_types::config_bag::FrozenLayer> {
89        let mut cfg = ::aws_smithy_types::config_bag::Layer::new("CreateDBCluster");
90
91        cfg.store_put(::aws_smithy_runtime_api::client::ser_de::SharedRequestSerializer::new(
92            CreateDBClusterRequestSerializer,
93        ));
94        cfg.store_put(::aws_smithy_runtime_api::client::ser_de::SharedResponseDeserializer::new(
95            CreateDBClusterResponseDeserializer,
96        ));
97
98        cfg.store_put(::aws_smithy_runtime_api::client::auth::AuthSchemeOptionResolverParams::new(
99            crate::config::auth::Params::builder()
100                .operation_name("CreateDBCluster")
101                .build()
102                .expect("required fields set"),
103        ));
104
105        cfg.store_put(::aws_smithy_runtime_api::client::orchestrator::Metadata::new(
106            "CreateDBCluster",
107            "Neptune",
108        ));
109        let mut signing_options = ::aws_runtime::auth::SigningOptions::default();
110        signing_options.double_uri_encode = true;
111        signing_options.content_sha256_header = false;
112        signing_options.normalize_uri_path = true;
113        signing_options.payload_override = None;
114
115        cfg.store_put(::aws_runtime::auth::SigV4OperationSigningConfig {
116            signing_options,
117            ..::std::default::Default::default()
118        });
119
120        ::std::option::Option::Some(cfg.freeze())
121    }
122
123    fn runtime_components(
124        &self,
125        _: &::aws_smithy_runtime_api::client::runtime_components::RuntimeComponentsBuilder,
126    ) -> ::std::borrow::Cow<'_, ::aws_smithy_runtime_api::client::runtime_components::RuntimeComponentsBuilder> {
127        #[allow(unused_mut)]
128        let mut rcb = ::aws_smithy_runtime_api::client::runtime_components::RuntimeComponentsBuilder::new("CreateDBCluster")
129            .with_interceptor(::aws_smithy_runtime::client::stalled_stream_protection::StalledStreamProtectionInterceptor::default())
130            .with_interceptor(CreateDBClusterEndpointParamsInterceptor)
131            .with_retry_classifier(::aws_smithy_runtime::client::retries::classifiers::TransientErrorClassifier::<
132                crate::operation::create_db_cluster::CreateDBClusterError,
133            >::new())
134            .with_retry_classifier(::aws_smithy_runtime::client::retries::classifiers::ModeledAsRetryableClassifier::<
135                crate::operation::create_db_cluster::CreateDBClusterError,
136            >::new())
137            .with_retry_classifier(::aws_runtime::retries::classifiers::AwsErrorCodeClassifier::<
138                crate::operation::create_db_cluster::CreateDBClusterError,
139            >::new());
140
141        ::std::borrow::Cow::Owned(rcb)
142    }
143}
144
145#[derive(Debug)]
146struct CreateDBClusterResponseDeserializer;
147impl ::aws_smithy_runtime_api::client::ser_de::DeserializeResponse for CreateDBClusterResponseDeserializer {
148    fn deserialize_nonstreaming(
149        &self,
150        response: &::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
151    ) -> ::aws_smithy_runtime_api::client::interceptors::context::OutputOrError {
152        let (success, status) = (response.status().is_success(), response.status().as_u16());
153        let headers = response.headers();
154        let body = response.body().bytes().expect("body loaded");
155        #[allow(unused_mut)]
156        let mut force_error = false;
157        ::tracing::debug!(request_id = ?::aws_types::request_id::RequestId::request_id(response));
158        let parse_result = if !success && status != 200 || force_error {
159            crate::protocol_serde::shape_create_db_cluster::de_create_db_cluster_http_error(status, headers, body)
160        } else {
161            crate::protocol_serde::shape_create_db_cluster::de_create_db_cluster_http_response(status, headers, body)
162        };
163        crate::protocol_serde::type_erase_result(parse_result)
164    }
165}
166#[derive(Debug)]
167struct CreateDBClusterRequestSerializer;
168impl ::aws_smithy_runtime_api::client::ser_de::SerializeRequest for CreateDBClusterRequestSerializer {
169    #[allow(unused_mut, clippy::let_and_return, clippy::needless_borrow, clippy::useless_conversion)]
170    fn serialize_input(
171        &self,
172        input: ::aws_smithy_runtime_api::client::interceptors::context::Input,
173        _cfg: &mut ::aws_smithy_types::config_bag::ConfigBag,
174    ) -> ::std::result::Result<::aws_smithy_runtime_api::client::orchestrator::HttpRequest, ::aws_smithy_runtime_api::box_error::BoxError> {
175        let input = input
176            .downcast::<crate::operation::create_db_cluster::CreateDbClusterInput>()
177            .expect("correct type");
178        let _header_serialization_settings = _cfg
179            .load::<crate::serialization_settings::HeaderSerializationSettings>()
180            .cloned()
181            .unwrap_or_default();
182        let mut request_builder = {
183            #[allow(clippy::uninlined_format_args)]
184            fn uri_base(
185                _input: &crate::operation::create_db_cluster::CreateDbClusterInput,
186                output: &mut ::std::string::String,
187            ) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
188                use ::std::fmt::Write as _;
189                ::std::write!(output, "/").expect("formatting should succeed");
190                ::std::result::Result::Ok(())
191            }
192            #[allow(clippy::unnecessary_wraps)]
193            fn update_http_builder(
194                input: &crate::operation::create_db_cluster::CreateDbClusterInput,
195                builder: ::http::request::Builder,
196            ) -> ::std::result::Result<::http::request::Builder, ::aws_smithy_types::error::operation::BuildError> {
197                let mut uri = ::std::string::String::new();
198                uri_base(input, &mut uri)?;
199                ::std::result::Result::Ok(builder.method("POST").uri(uri))
200            }
201            let mut builder = update_http_builder(&input, ::http::request::Builder::new())?;
202            builder = _header_serialization_settings.set_default_header(builder, ::http::header::CONTENT_TYPE, "application/x-www-form-urlencoded");
203            builder
204        };
205        let body = ::aws_smithy_types::body::SdkBody::from(
206            crate::protocol_serde::shape_create_db_cluster_input::ser_create_db_cluster_input_input_input(&input)?,
207        );
208        if let Some(content_length) = body.content_length() {
209            let content_length = content_length.to_string();
210            request_builder = _header_serialization_settings.set_default_header(request_builder, ::http::header::CONTENT_LENGTH, &content_length);
211        }
212        ::std::result::Result::Ok(request_builder.body(body).expect("valid request").try_into().unwrap())
213    }
214}
215#[derive(Debug)]
216struct CreateDBClusterEndpointParamsInterceptor;
217
218impl ::aws_smithy_runtime_api::client::interceptors::Intercept for CreateDBClusterEndpointParamsInterceptor {
219    fn name(&self) -> &'static str {
220        "CreateDBClusterEndpointParamsInterceptor"
221    }
222
223    fn read_before_execution(
224        &self,
225        context: &::aws_smithy_runtime_api::client::interceptors::context::BeforeSerializationInterceptorContextRef<
226            '_,
227            ::aws_smithy_runtime_api::client::interceptors::context::Input,
228            ::aws_smithy_runtime_api::client::interceptors::context::Output,
229            ::aws_smithy_runtime_api::client::interceptors::context::Error,
230        >,
231        cfg: &mut ::aws_smithy_types::config_bag::ConfigBag,
232    ) -> ::std::result::Result<(), ::aws_smithy_runtime_api::box_error::BoxError> {
233        let _input = context
234            .input()
235            .downcast_ref::<CreateDbClusterInput>()
236            .ok_or("failed to downcast to CreateDbClusterInput")?;
237
238        let params = crate::config::endpoint::Params::builder()
239            .set_region(cfg.load::<::aws_types::region::Region>().map(|r| r.as_ref().to_owned()))
240            .set_use_dual_stack(cfg.load::<::aws_types::endpoint_config::UseDualStack>().map(|ty| ty.0))
241            .set_use_fips(cfg.load::<::aws_types::endpoint_config::UseFips>().map(|ty| ty.0))
242            .set_endpoint(cfg.load::<::aws_types::endpoint_config::EndpointUrl>().map(|ty| ty.0.clone()))
243            .build()
244            .map_err(|err| {
245                ::aws_smithy_runtime_api::client::interceptors::error::ContextAttachedError::new("endpoint params could not be built", err)
246            })?;
247        cfg.interceptor_state()
248            .store_put(::aws_smithy_runtime_api::client::endpoint::EndpointResolverParams::new(params));
249        ::std::result::Result::Ok(())
250    }
251}
252
253// The get_* functions below are generated from JMESPath expressions in the
254// operationContextParams trait. They target the operation's input shape.
255
256/// Error type for the `CreateDBClusterError` operation.
257#[non_exhaustive]
258#[derive(::std::fmt::Debug)]
259pub enum CreateDBClusterError {
260    /// <p>User already has a DB cluster with the given identifier.</p>
261    DbClusterAlreadyExistsFault(crate::types::error::DbClusterAlreadyExistsFault),
262    /// <p><i>DBClusterIdentifier</i> does not refer to an existing DB cluster.</p>
263    DbClusterNotFoundFault(crate::types::error::DbClusterNotFoundFault),
264    /// <p><i>DBClusterParameterGroupName</i> does not refer to an existing DB Cluster parameter group.</p>
265    DbClusterParameterGroupNotFoundFault(crate::types::error::DbClusterParameterGroupNotFoundFault),
266    /// <p>User attempted to create a new DB cluster and the user has already reached the maximum allowed DB cluster quota.</p>
267    DbClusterQuotaExceededFault(crate::types::error::DbClusterQuotaExceededFault),
268    /// <p><i>DBInstanceIdentifier</i> does not refer to an existing DB instance.</p>
269    DbInstanceNotFoundFault(crate::types::error::DbInstanceNotFoundFault),
270    /// <p>Subnets in the DB subnet group should cover at least two Availability Zones unless there is only one Availability Zone.</p>
271    DbSubnetGroupDoesNotCoverEnoughAZs(crate::types::error::DbSubnetGroupDoesNotCoverEnoughAZs),
272    /// <p><i>DBSubnetGroupName</i> does not refer to an existing DB subnet group.</p>
273    DbSubnetGroupNotFoundFault(crate::types::error::DbSubnetGroupNotFoundFault),
274    /// <p>The <code>GlobalClusterIdentifier</code> doesn't refer to an existing global database cluster.</p>
275    GlobalClusterNotFoundFault(crate::types::error::GlobalClusterNotFoundFault),
276    /// <p>There is insufficient storage available for the current action. You may be able to resolve this error by updating your subnet group to use different Availability Zones that have more storage available.</p>
277    InsufficientStorageClusterCapacityFault(crate::types::error::InsufficientStorageClusterCapacityFault),
278    /// <p>The DB cluster is not in a valid state.</p>
279    InvalidDbClusterStateFault(crate::types::error::InvalidDbClusterStateFault),
280    /// <p>The specified DB instance is not in the <i>available</i> state.</p>
281    InvalidDbInstanceStateFault(crate::types::error::InvalidDbInstanceStateFault),
282    /// <p>The DB subnet group cannot be deleted because it is in use.</p>
283    InvalidDbSubnetGroupStateFault(crate::types::error::InvalidDbSubnetGroupStateFault),
284    /// <p>The global cluster is in an invalid state and can't perform the requested operation.</p>
285    InvalidGlobalClusterStateFault(crate::types::error::InvalidGlobalClusterStateFault),
286    /// <p>The requested subnet is invalid, or multiple subnets were requested that are not all in a common VPC.</p>
287    InvalidSubnet(crate::types::error::InvalidSubnet),
288    /// <p>DB subnet group does not cover all Availability Zones after it is created because users' change.</p>
289    InvalidVpcNetworkStateFault(crate::types::error::InvalidVpcNetworkStateFault),
290    /// <p>Error accessing KMS key.</p>
291    KmsKeyNotAccessibleFault(crate::types::error::KmsKeyNotAccessibleFault),
292    /// <p>Request would result in user exceeding the allowed amount of storage available across all DB instances.</p>
293    StorageQuotaExceededFault(crate::types::error::StorageQuotaExceededFault),
294    /// An unexpected error occurred (e.g., invalid JSON returned by the service or an unknown error code).
295    #[deprecated(note = "Matching `Unhandled` directly is not forwards compatible. Instead, match using a \
296    variable wildcard pattern and check `.code()`:
297     \
298    &nbsp;&nbsp;&nbsp;`err if err.code() == Some(\"SpecificExceptionCode\") => { /* handle the error */ }`
299     \
300    See [`ProvideErrorMetadata`](#impl-ProvideErrorMetadata-for-CreateDBClusterError) for what information is available for the error.")]
301    Unhandled(crate::error::sealed_unhandled::Unhandled),
302}
303impl CreateDBClusterError {
304    /// Creates the `CreateDBClusterError::Unhandled` variant from any error type.
305    pub fn unhandled(
306        err: impl ::std::convert::Into<::std::boxed::Box<dyn ::std::error::Error + ::std::marker::Send + ::std::marker::Sync + 'static>>,
307    ) -> Self {
308        Self::Unhandled(crate::error::sealed_unhandled::Unhandled {
309            source: err.into(),
310            meta: ::std::default::Default::default(),
311        })
312    }
313
314    /// Creates the `CreateDBClusterError::Unhandled` variant from an [`ErrorMetadata`](::aws_smithy_types::error::ErrorMetadata).
315    pub fn generic(err: ::aws_smithy_types::error::ErrorMetadata) -> Self {
316        Self::Unhandled(crate::error::sealed_unhandled::Unhandled {
317            source: err.clone().into(),
318            meta: err,
319        })
320    }
321    ///
322    /// Returns error metadata, which includes the error code, message,
323    /// request ID, and potentially additional information.
324    ///
325    pub fn meta(&self) -> &::aws_smithy_types::error::ErrorMetadata {
326        match self {
327            Self::DbClusterAlreadyExistsFault(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
328            Self::DbClusterNotFoundFault(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
329            Self::DbClusterParameterGroupNotFoundFault(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
330            Self::DbClusterQuotaExceededFault(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
331            Self::DbInstanceNotFoundFault(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
332            Self::DbSubnetGroupDoesNotCoverEnoughAZs(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
333            Self::DbSubnetGroupNotFoundFault(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
334            Self::GlobalClusterNotFoundFault(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
335            Self::InsufficientStorageClusterCapacityFault(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
336            Self::InvalidDbClusterStateFault(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
337            Self::InvalidDbInstanceStateFault(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
338            Self::InvalidDbSubnetGroupStateFault(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
339            Self::InvalidGlobalClusterStateFault(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
340            Self::InvalidSubnet(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
341            Self::InvalidVpcNetworkStateFault(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
342            Self::KmsKeyNotAccessibleFault(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
343            Self::StorageQuotaExceededFault(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
344            Self::Unhandled(e) => &e.meta,
345        }
346    }
347    /// Returns `true` if the error kind is `CreateDBClusterError::DbClusterAlreadyExistsFault`.
348    pub fn is_db_cluster_already_exists_fault(&self) -> bool {
349        matches!(self, Self::DbClusterAlreadyExistsFault(_))
350    }
351    /// Returns `true` if the error kind is `CreateDBClusterError::DbClusterNotFoundFault`.
352    pub fn is_db_cluster_not_found_fault(&self) -> bool {
353        matches!(self, Self::DbClusterNotFoundFault(_))
354    }
355    /// Returns `true` if the error kind is `CreateDBClusterError::DbClusterParameterGroupNotFoundFault`.
356    pub fn is_db_cluster_parameter_group_not_found_fault(&self) -> bool {
357        matches!(self, Self::DbClusterParameterGroupNotFoundFault(_))
358    }
359    /// Returns `true` if the error kind is `CreateDBClusterError::DbClusterQuotaExceededFault`.
360    pub fn is_db_cluster_quota_exceeded_fault(&self) -> bool {
361        matches!(self, Self::DbClusterQuotaExceededFault(_))
362    }
363    /// Returns `true` if the error kind is `CreateDBClusterError::DbInstanceNotFoundFault`.
364    pub fn is_db_instance_not_found_fault(&self) -> bool {
365        matches!(self, Self::DbInstanceNotFoundFault(_))
366    }
367    /// Returns `true` if the error kind is `CreateDBClusterError::DbSubnetGroupDoesNotCoverEnoughAZs`.
368    pub fn is_db_subnet_group_does_not_cover_enough_azs(&self) -> bool {
369        matches!(self, Self::DbSubnetGroupDoesNotCoverEnoughAZs(_))
370    }
371    /// Returns `true` if the error kind is `CreateDBClusterError::DbSubnetGroupNotFoundFault`.
372    pub fn is_db_subnet_group_not_found_fault(&self) -> bool {
373        matches!(self, Self::DbSubnetGroupNotFoundFault(_))
374    }
375    /// Returns `true` if the error kind is `CreateDBClusterError::GlobalClusterNotFoundFault`.
376    pub fn is_global_cluster_not_found_fault(&self) -> bool {
377        matches!(self, Self::GlobalClusterNotFoundFault(_))
378    }
379    /// Returns `true` if the error kind is `CreateDBClusterError::InsufficientStorageClusterCapacityFault`.
380    pub fn is_insufficient_storage_cluster_capacity_fault(&self) -> bool {
381        matches!(self, Self::InsufficientStorageClusterCapacityFault(_))
382    }
383    /// Returns `true` if the error kind is `CreateDBClusterError::InvalidDbClusterStateFault`.
384    pub fn is_invalid_db_cluster_state_fault(&self) -> bool {
385        matches!(self, Self::InvalidDbClusterStateFault(_))
386    }
387    /// Returns `true` if the error kind is `CreateDBClusterError::InvalidDbInstanceStateFault`.
388    pub fn is_invalid_db_instance_state_fault(&self) -> bool {
389        matches!(self, Self::InvalidDbInstanceStateFault(_))
390    }
391    /// Returns `true` if the error kind is `CreateDBClusterError::InvalidDbSubnetGroupStateFault`.
392    pub fn is_invalid_db_subnet_group_state_fault(&self) -> bool {
393        matches!(self, Self::InvalidDbSubnetGroupStateFault(_))
394    }
395    /// Returns `true` if the error kind is `CreateDBClusterError::InvalidGlobalClusterStateFault`.
396    pub fn is_invalid_global_cluster_state_fault(&self) -> bool {
397        matches!(self, Self::InvalidGlobalClusterStateFault(_))
398    }
399    /// Returns `true` if the error kind is `CreateDBClusterError::InvalidSubnet`.
400    pub fn is_invalid_subnet(&self) -> bool {
401        matches!(self, Self::InvalidSubnet(_))
402    }
403    /// Returns `true` if the error kind is `CreateDBClusterError::InvalidVpcNetworkStateFault`.
404    pub fn is_invalid_vpc_network_state_fault(&self) -> bool {
405        matches!(self, Self::InvalidVpcNetworkStateFault(_))
406    }
407    /// Returns `true` if the error kind is `CreateDBClusterError::KmsKeyNotAccessibleFault`.
408    pub fn is_kms_key_not_accessible_fault(&self) -> bool {
409        matches!(self, Self::KmsKeyNotAccessibleFault(_))
410    }
411    /// Returns `true` if the error kind is `CreateDBClusterError::StorageQuotaExceededFault`.
412    pub fn is_storage_quota_exceeded_fault(&self) -> bool {
413        matches!(self, Self::StorageQuotaExceededFault(_))
414    }
415}
416impl ::std::error::Error for CreateDBClusterError {
417    fn source(&self) -> ::std::option::Option<&(dyn ::std::error::Error + 'static)> {
418        match self {
419            Self::DbClusterAlreadyExistsFault(_inner) => ::std::option::Option::Some(_inner),
420            Self::DbClusterNotFoundFault(_inner) => ::std::option::Option::Some(_inner),
421            Self::DbClusterParameterGroupNotFoundFault(_inner) => ::std::option::Option::Some(_inner),
422            Self::DbClusterQuotaExceededFault(_inner) => ::std::option::Option::Some(_inner),
423            Self::DbInstanceNotFoundFault(_inner) => ::std::option::Option::Some(_inner),
424            Self::DbSubnetGroupDoesNotCoverEnoughAZs(_inner) => ::std::option::Option::Some(_inner),
425            Self::DbSubnetGroupNotFoundFault(_inner) => ::std::option::Option::Some(_inner),
426            Self::GlobalClusterNotFoundFault(_inner) => ::std::option::Option::Some(_inner),
427            Self::InsufficientStorageClusterCapacityFault(_inner) => ::std::option::Option::Some(_inner),
428            Self::InvalidDbClusterStateFault(_inner) => ::std::option::Option::Some(_inner),
429            Self::InvalidDbInstanceStateFault(_inner) => ::std::option::Option::Some(_inner),
430            Self::InvalidDbSubnetGroupStateFault(_inner) => ::std::option::Option::Some(_inner),
431            Self::InvalidGlobalClusterStateFault(_inner) => ::std::option::Option::Some(_inner),
432            Self::InvalidSubnet(_inner) => ::std::option::Option::Some(_inner),
433            Self::InvalidVpcNetworkStateFault(_inner) => ::std::option::Option::Some(_inner),
434            Self::KmsKeyNotAccessibleFault(_inner) => ::std::option::Option::Some(_inner),
435            Self::StorageQuotaExceededFault(_inner) => ::std::option::Option::Some(_inner),
436            Self::Unhandled(_inner) => ::std::option::Option::Some(&*_inner.source),
437        }
438    }
439}
440impl ::std::fmt::Display for CreateDBClusterError {
441    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
442        match self {
443            Self::DbClusterAlreadyExistsFault(_inner) => _inner.fmt(f),
444            Self::DbClusterNotFoundFault(_inner) => _inner.fmt(f),
445            Self::DbClusterParameterGroupNotFoundFault(_inner) => _inner.fmt(f),
446            Self::DbClusterQuotaExceededFault(_inner) => _inner.fmt(f),
447            Self::DbInstanceNotFoundFault(_inner) => _inner.fmt(f),
448            Self::DbSubnetGroupDoesNotCoverEnoughAZs(_inner) => _inner.fmt(f),
449            Self::DbSubnetGroupNotFoundFault(_inner) => _inner.fmt(f),
450            Self::GlobalClusterNotFoundFault(_inner) => _inner.fmt(f),
451            Self::InsufficientStorageClusterCapacityFault(_inner) => _inner.fmt(f),
452            Self::InvalidDbClusterStateFault(_inner) => _inner.fmt(f),
453            Self::InvalidDbInstanceStateFault(_inner) => _inner.fmt(f),
454            Self::InvalidDbSubnetGroupStateFault(_inner) => _inner.fmt(f),
455            Self::InvalidGlobalClusterStateFault(_inner) => _inner.fmt(f),
456            Self::InvalidSubnet(_inner) => _inner.fmt(f),
457            Self::InvalidVpcNetworkStateFault(_inner) => _inner.fmt(f),
458            Self::KmsKeyNotAccessibleFault(_inner) => _inner.fmt(f),
459            Self::StorageQuotaExceededFault(_inner) => _inner.fmt(f),
460            Self::Unhandled(_inner) => {
461                if let ::std::option::Option::Some(code) = ::aws_smithy_types::error::metadata::ProvideErrorMetadata::code(self) {
462                    write!(f, "unhandled error ({code})")
463                } else {
464                    f.write_str("unhandled error")
465                }
466            }
467        }
468    }
469}
470impl ::aws_smithy_types::retry::ProvideErrorKind for CreateDBClusterError {
471    fn code(&self) -> ::std::option::Option<&str> {
472        ::aws_smithy_types::error::metadata::ProvideErrorMetadata::code(self)
473    }
474    fn retryable_error_kind(&self) -> ::std::option::Option<::aws_smithy_types::retry::ErrorKind> {
475        ::std::option::Option::None
476    }
477}
478impl ::aws_smithy_types::error::metadata::ProvideErrorMetadata for CreateDBClusterError {
479    fn meta(&self) -> &::aws_smithy_types::error::ErrorMetadata {
480        match self {
481            Self::DbClusterAlreadyExistsFault(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
482            Self::DbClusterNotFoundFault(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
483            Self::DbClusterParameterGroupNotFoundFault(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
484            Self::DbClusterQuotaExceededFault(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
485            Self::DbInstanceNotFoundFault(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
486            Self::DbSubnetGroupDoesNotCoverEnoughAZs(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
487            Self::DbSubnetGroupNotFoundFault(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
488            Self::GlobalClusterNotFoundFault(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
489            Self::InsufficientStorageClusterCapacityFault(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
490            Self::InvalidDbClusterStateFault(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
491            Self::InvalidDbInstanceStateFault(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
492            Self::InvalidDbSubnetGroupStateFault(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
493            Self::InvalidGlobalClusterStateFault(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
494            Self::InvalidSubnet(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
495            Self::InvalidVpcNetworkStateFault(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
496            Self::KmsKeyNotAccessibleFault(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
497            Self::StorageQuotaExceededFault(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
498            Self::Unhandled(_inner) => &_inner.meta,
499        }
500    }
501}
502impl ::aws_smithy_runtime_api::client::result::CreateUnhandledError for CreateDBClusterError {
503    fn create_unhandled_error(
504        source: ::std::boxed::Box<dyn ::std::error::Error + ::std::marker::Send + ::std::marker::Sync + 'static>,
505        meta: ::std::option::Option<::aws_smithy_types::error::ErrorMetadata>,
506    ) -> Self {
507        Self::Unhandled(crate::error::sealed_unhandled::Unhandled {
508            source,
509            meta: meta.unwrap_or_default(),
510        })
511    }
512}
513impl ::aws_types::request_id::RequestId for crate::operation::create_db_cluster::CreateDBClusterError {
514    fn request_id(&self) -> Option<&str> {
515        self.meta().request_id()
516    }
517}
518
519pub use crate::operation::create_db_cluster::_create_db_cluster_output::CreateDbClusterOutput;
520
521pub use crate::operation::create_db_cluster::_create_db_cluster_input::CreateDbClusterInput;
522
523mod _create_db_cluster_input;
524
525mod _create_db_cluster_output;
526
527/// Builders
528pub mod builders;