Skip to main content

aws_sdk_efs/operation/
create_replication_configuration.rs

1// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
2/// Orchestration and serialization glue logic for `CreateReplicationConfiguration`.
3#[derive(::std::clone::Clone, ::std::default::Default, ::std::fmt::Debug)]
4#[non_exhaustive]
5pub struct CreateReplicationConfiguration;
6impl CreateReplicationConfiguration {
7    /// Creates a new `CreateReplicationConfiguration`
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_replication_configuration::CreateReplicationConfigurationInput,
14    ) -> ::std::result::Result<
15        crate::operation::create_replication_configuration::CreateReplicationConfigurationOutput,
16        ::aws_smithy_runtime_api::client::result::SdkError<
17            crate::operation::create_replication_configuration::CreateReplicationConfigurationError,
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_replication_configuration::CreateReplicationConfigurationError>()
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_replication_configuration::CreateReplicationConfigurationOutput>()
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_replication_configuration::CreateReplicationConfigurationInput,
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            "EFS",
56            "CreateReplicationConfiguration",
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            "EFS.CreateReplicationConfiguration",
65            "rpc.service" = "EFS",
66            "rpc.method" = "CreateReplicationConfiguration",
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 CreateReplicationConfiguration {
94    fn config(&self) -> ::std::option::Option<::aws_smithy_types::config_bag::FrozenLayer> {
95        let mut cfg = ::aws_smithy_types::config_bag::Layer::new("CreateReplicationConfiguration");
96
97        cfg.store_put(::aws_smithy_runtime_api::client::ser_de::SharedRequestSerializer::new(
98            CreateReplicationConfigurationRequestSerializer,
99        ));
100        cfg.store_put(::aws_smithy_runtime_api::client::ser_de::SharedResponseDeserializer::new(
101            CreateReplicationConfigurationResponseDeserializer,
102        ));
103
104        cfg.store_put(::aws_smithy_runtime_api::client::auth::AuthSchemeOptionResolverParams::new(
105            crate::config::auth::Params::builder()
106                .operation_name("CreateReplicationConfiguration")
107                .build()
108                .expect("required fields set"),
109        ));
110
111        cfg.store_put(::aws_smithy_runtime_api::client::orchestrator::Metadata::new(
112            "CreateReplicationConfiguration",
113            "EFS",
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("CreateReplicationConfiguration")
135            .with_interceptor(::aws_smithy_runtime_api::client::interceptors::SharedInterceptor::permanent(
136                CreateReplicationConfigurationTelemetryInputCaptureInterceptor,
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                CreateReplicationConfigurationEndpointParamsInterceptor,
143            ))
144            .with_retry_classifier(::aws_smithy_runtime::client::retries::classifiers::TransientErrorClassifier::<
145                crate::operation::create_replication_configuration::CreateReplicationConfigurationError,
146            >::new())
147            .with_retry_classifier(::aws_smithy_runtime::client::retries::classifiers::ModeledAsRetryableClassifier::<
148                crate::operation::create_replication_configuration::CreateReplicationConfigurationError,
149            >::new())
150            .with_retry_classifier(::aws_runtime::retries::classifiers::AwsErrorCodeClassifier::<
151                crate::operation::create_replication_configuration::CreateReplicationConfigurationError,
152            >::new())
153            .with_retry_classifier(::aws_runtime::service_clock_skew::ServiceClockSkewClassifier::<
154                crate::operation::create_replication_configuration::CreateReplicationConfigurationError,
155            >::new());
156
157        ::std::borrow::Cow::Owned(rcb)
158    }
159}
160
161#[derive(Debug)]
162struct CreateReplicationConfigurationTelemetryInputCaptureInterceptor;
163
164#[::aws_smithy_runtime_api::client::interceptors::dyn_dispatch_hint]
165impl ::aws_smithy_runtime_api::client::interceptors::Intercept for CreateReplicationConfigurationTelemetryInputCaptureInterceptor {
166    fn name(&self) -> &'static str {
167        "CreateReplicationConfigurationTelemetryInputCaptureInterceptor"
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::<CreateReplicationConfigurationInput>() 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("SourceFileSystemId") {
195            if let ::std::option::Option::Some(value) = input.source_file_system_id.as_deref() {
196                captured.insert("SourceFileSystemId", value);
197            }
198        }
199
200        cfg.interceptor_state().store_put(captured);
201        ::std::result::Result::Ok(())
202    }
203}
204#[derive(Debug)]
205struct CreateReplicationConfigurationResponseDeserializer;
206impl ::aws_smithy_runtime_api::client::ser_de::DeserializeResponse for CreateReplicationConfigurationResponseDeserializer {
207    fn deserialize_nonstreaming_with_config(
208        &self,
209        response: &::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
210        _cfg: &::aws_smithy_types::config_bag::ConfigBag,
211    ) -> ::aws_smithy_runtime_api::client::interceptors::context::OutputOrError {
212        let (success, status) = (response.status().is_success(), response.status().as_u16());
213        let headers = response.headers();
214        let body = response.body().bytes().expect("body loaded");
215        #[allow(unused_mut)]
216        let mut force_error = false;
217        ::tracing::debug!(request_id = ?::aws_types::request_id::RequestId::request_id(response));
218        let parse_result = if !success && status != 200 || force_error {
219            crate::protocol_serde::shape_create_replication_configuration::de_create_replication_configuration_http_error(status, headers, body)
220        } else {
221            crate::protocol_serde::shape_create_replication_configuration::de_create_replication_configuration_http_response(status, headers, body)
222        };
223        crate::protocol_serde::type_erase_result(parse_result)
224    }
225}
226#[derive(Debug)]
227struct CreateReplicationConfigurationRequestSerializer;
228impl ::aws_smithy_runtime_api::client::ser_de::SerializeRequest for CreateReplicationConfigurationRequestSerializer {
229    #[allow(unused_mut, clippy::let_and_return, clippy::needless_borrow, clippy::useless_conversion)]
230    fn serialize_input(
231        &self,
232        input: ::aws_smithy_runtime_api::client::interceptors::context::Input,
233        _cfg: &mut ::aws_smithy_types::config_bag::ConfigBag,
234    ) -> ::std::result::Result<::aws_smithy_runtime_api::client::orchestrator::HttpRequest, ::aws_smithy_runtime_api::box_error::BoxError> {
235        let input = input
236            .downcast::<crate::operation::create_replication_configuration::CreateReplicationConfigurationInput>()
237            .expect("correct type");
238        let _header_serialization_settings = _cfg
239            .load::<crate::serialization_settings::HeaderSerializationSettings>()
240            .cloned()
241            .unwrap_or_default();
242        let mut request_builder = {
243            #[allow(clippy::uninlined_format_args)]
244            fn uri_base(
245                _input: &crate::operation::create_replication_configuration::CreateReplicationConfigurationInput,
246                output: &mut ::std::string::String,
247            ) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
248                use ::std::fmt::Write as _;
249                let input_1 = &_input.source_file_system_id;
250                let input_1 = input_1.as_ref().ok_or_else(|| {
251                    ::aws_smithy_types::error::operation::BuildError::missing_field("source_file_system_id", "cannot be empty or unset")
252                })?;
253                let source_file_system_id = ::aws_smithy_http::label::fmt_string(input_1, ::aws_smithy_http::label::EncodingStrategy::Default);
254                if source_file_system_id.is_empty() {
255                    return ::std::result::Result::Err(::aws_smithy_types::error::operation::BuildError::missing_field(
256                        "source_file_system_id",
257                        "cannot be empty or unset",
258                    ));
259                }
260                ::std::write!(
261                    output,
262                    "/2015-02-01/file-systems/{SourceFileSystemId}/replication-configuration",
263                    SourceFileSystemId = source_file_system_id
264                )
265                .expect("formatting should succeed");
266                ::std::result::Result::Ok(())
267            }
268            #[allow(clippy::unnecessary_wraps)]
269            fn update_http_builder(
270                input: &crate::operation::create_replication_configuration::CreateReplicationConfigurationInput,
271                builder: ::http_1x::request::Builder,
272            ) -> ::std::result::Result<::http_1x::request::Builder, ::aws_smithy_types::error::operation::BuildError> {
273                let mut uri = ::std::string::String::new();
274                uri_base(input, &mut uri)?;
275                ::std::result::Result::Ok(builder.method("POST").uri(uri))
276            }
277            let mut builder = update_http_builder(&input, ::http_1x::request::Builder::new())?;
278            builder = _header_serialization_settings.set_default_header(builder, ::http_1x::header::CONTENT_TYPE, "application/json");
279            builder
280        };
281        let body = ::aws_smithy_types::body::SdkBody::from(
282            crate::protocol_serde::shape_create_replication_configuration::ser_create_replication_configuration_input(&input)?,
283        );
284        if let Some(content_length) = body.content_length() {
285            let content_length = content_length.to_string();
286            request_builder = _header_serialization_settings.set_default_header(request_builder, ::http_1x::header::CONTENT_LENGTH, &content_length);
287        }
288        ::std::result::Result::Ok(request_builder.body(body).expect("valid request").try_into().unwrap())
289    }
290}
291#[derive(Debug)]
292struct CreateReplicationConfigurationEndpointParamsInterceptor;
293
294#[::aws_smithy_runtime_api::client::interceptors::dyn_dispatch_hint]
295impl ::aws_smithy_runtime_api::client::interceptors::Intercept for CreateReplicationConfigurationEndpointParamsInterceptor {
296    fn name(&self) -> &'static str {
297        "CreateReplicationConfigurationEndpointParamsInterceptor"
298    }
299
300    fn read_before_execution(
301        &self,
302        context: &::aws_smithy_runtime_api::client::interceptors::context::BeforeSerializationInterceptorContextRef<
303            '_,
304            ::aws_smithy_runtime_api::client::interceptors::context::Input,
305            ::aws_smithy_runtime_api::client::interceptors::context::Output,
306            ::aws_smithy_runtime_api::client::interceptors::context::Error,
307        >,
308        cfg: &mut ::aws_smithy_types::config_bag::ConfigBag,
309    ) -> ::std::result::Result<(), ::aws_smithy_runtime_api::box_error::BoxError> {
310        let _input = context
311            .input()
312            .downcast_ref::<CreateReplicationConfigurationInput>()
313            .ok_or("failed to downcast to CreateReplicationConfigurationInput")?;
314
315        let params = crate::config::endpoint::Params::builder()
316            .set_use_dual_stack(cfg.load::<::aws_types::endpoint_config::UseDualStack>().map(|ty| ty.0))
317            .set_use_fips(cfg.load::<::aws_types::endpoint_config::UseFips>().map(|ty| ty.0))
318            .set_endpoint(cfg.load::<::aws_types::endpoint_config::EndpointUrl>().map(|ty| ty.0.clone()))
319            .set_region(cfg.load::<::aws_types::region::Region>().map(|r| r.as_ref().to_owned()))
320            .build()
321            .map_err(|err| {
322                ::aws_smithy_runtime_api::client::interceptors::error::ContextAttachedError::new("endpoint params could not be built", err)
323            })?;
324        cfg.interceptor_state()
325            .store_put(::aws_smithy_runtime_api::client::endpoint::EndpointResolverParams::new(params));
326        ::std::result::Result::Ok(())
327    }
328}
329
330// The get_* functions below are generated from JMESPath expressions in the
331// operationContextParams trait. They target the operation's input shape.
332
333/// Error type for the `CreateReplicationConfigurationError` operation.
334#[non_exhaustive]
335#[derive(::std::fmt::Debug)]
336pub enum CreateReplicationConfigurationError {
337    /// <p>Returned if the request is malformed or contains an error such as an invalid parameter value or a missing required parameter.</p>
338    BadRequest(crate::types::error::BadRequest),
339    /// <p>Returned if the source file system in a replication is encrypted but the destination file system is unencrypted.</p>
340    ConflictException(crate::types::error::ConflictException),
341    /// <p>Returned if the Amazon Web Services account has already created the maximum number of file systems allowed per account.</p>
342    FileSystemLimitExceeded(crate::types::error::FileSystemLimitExceeded),
343    /// <p>Returned if the specified <code>FileSystemId</code> value doesn't exist in the requester's Amazon Web Services account.</p>
344    FileSystemNotFound(crate::types::error::FileSystemNotFound),
345    /// <p>Returned if the file system's lifecycle state is not "available".</p>
346    IncorrectFileSystemLifeCycleState(crate::types::error::IncorrectFileSystemLifeCycleState),
347    /// <p>Returned if there's not enough capacity to provision additional throughput. This value might be returned when you try to create a file system in provisioned throughput mode, when you attempt to increase the provisioned throughput of an existing file system, or when you attempt to change an existing file system from Bursting Throughput to Provisioned Throughput mode. Try again later.</p>
348    InsufficientThroughputCapacity(crate::types::error::InsufficientThroughputCapacity),
349    /// <p>Returned if an error occurred on the server side.</p>
350    InternalServerError(crate::types::error::InternalServerError),
351    /// <p>Returned if the specified file system does not have a replication configuration.</p>
352    ReplicationNotFound(crate::types::error::ReplicationNotFound),
353    /// <p>Returned if the throughput mode or amount of provisioned throughput can't be changed because the throughput limit of 1024 MiB/s has been reached.</p>
354    ThroughputLimitExceeded(crate::types::error::ThroughputLimitExceeded),
355    /// <p>Returned if the requested Amazon EFS functionality is not available in the specified Availability Zone.</p>
356    UnsupportedAvailabilityZone(crate::types::error::UnsupportedAvailabilityZone),
357    /// <p>Returned if the Backup service is not available in the Amazon Web Services Region in which the request was made.</p>
358    ValidationException(crate::types::error::ValidationException),
359    /// An unexpected error occurred (e.g., invalid JSON returned by the service or an unknown error code).
360    #[deprecated(note = "Matching `Unhandled` directly is not forwards compatible. Instead, match using a \
361    variable wildcard pattern and check `.code()`:
362     \
363    &nbsp;&nbsp;&nbsp;`err if err.code() == Some(\"SpecificExceptionCode\") => { /* handle the error */ }`
364     \
365    See [`ProvideErrorMetadata`](#impl-ProvideErrorMetadata-for-CreateReplicationConfigurationError) for what information is available for the error.")]
366    Unhandled(crate::error::sealed_unhandled::Unhandled),
367}
368impl CreateReplicationConfigurationError {
369    /// Creates the `CreateReplicationConfigurationError::Unhandled` variant from any error type.
370    pub fn unhandled(
371        err: impl ::std::convert::Into<::std::boxed::Box<dyn ::std::error::Error + ::std::marker::Send + ::std::marker::Sync + 'static>>,
372    ) -> Self {
373        Self::Unhandled(crate::error::sealed_unhandled::Unhandled {
374            source: err.into(),
375            meta: ::std::default::Default::default(),
376        })
377    }
378
379    /// Creates the `CreateReplicationConfigurationError::Unhandled` variant from an [`ErrorMetadata`](::aws_smithy_types::error::ErrorMetadata).
380    pub fn generic(err: ::aws_smithy_types::error::ErrorMetadata) -> Self {
381        Self::Unhandled(crate::error::sealed_unhandled::Unhandled {
382            source: err.clone().into(),
383            meta: err,
384        })
385    }
386    ///
387    /// Returns error metadata, which includes the error code, message,
388    /// request ID, and potentially additional information.
389    ///
390    pub fn meta(&self) -> &::aws_smithy_types::error::ErrorMetadata {
391        match self {
392            Self::BadRequest(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
393            Self::ConflictException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
394            Self::FileSystemLimitExceeded(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
395            Self::FileSystemNotFound(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
396            Self::IncorrectFileSystemLifeCycleState(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
397            Self::InsufficientThroughputCapacity(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
398            Self::InternalServerError(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
399            Self::ReplicationNotFound(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
400            Self::ThroughputLimitExceeded(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
401            Self::UnsupportedAvailabilityZone(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
402            Self::ValidationException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
403            Self::Unhandled(e) => &e.meta,
404        }
405    }
406    /// Returns `true` if the error kind is `CreateReplicationConfigurationError::BadRequest`.
407    pub fn is_bad_request(&self) -> bool {
408        matches!(self, Self::BadRequest(_))
409    }
410    /// Returns `true` if the error kind is `CreateReplicationConfigurationError::ConflictException`.
411    pub fn is_conflict_exception(&self) -> bool {
412        matches!(self, Self::ConflictException(_))
413    }
414    /// Returns `true` if the error kind is `CreateReplicationConfigurationError::FileSystemLimitExceeded`.
415    pub fn is_file_system_limit_exceeded(&self) -> bool {
416        matches!(self, Self::FileSystemLimitExceeded(_))
417    }
418    /// Returns `true` if the error kind is `CreateReplicationConfigurationError::FileSystemNotFound`.
419    pub fn is_file_system_not_found(&self) -> bool {
420        matches!(self, Self::FileSystemNotFound(_))
421    }
422    /// Returns `true` if the error kind is `CreateReplicationConfigurationError::IncorrectFileSystemLifeCycleState`.
423    pub fn is_incorrect_file_system_life_cycle_state(&self) -> bool {
424        matches!(self, Self::IncorrectFileSystemLifeCycleState(_))
425    }
426    /// Returns `true` if the error kind is `CreateReplicationConfigurationError::InsufficientThroughputCapacity`.
427    pub fn is_insufficient_throughput_capacity(&self) -> bool {
428        matches!(self, Self::InsufficientThroughputCapacity(_))
429    }
430    /// Returns `true` if the error kind is `CreateReplicationConfigurationError::InternalServerError`.
431    pub fn is_internal_server_error(&self) -> bool {
432        matches!(self, Self::InternalServerError(_))
433    }
434    /// Returns `true` if the error kind is `CreateReplicationConfigurationError::ReplicationNotFound`.
435    pub fn is_replication_not_found(&self) -> bool {
436        matches!(self, Self::ReplicationNotFound(_))
437    }
438    /// Returns `true` if the error kind is `CreateReplicationConfigurationError::ThroughputLimitExceeded`.
439    pub fn is_throughput_limit_exceeded(&self) -> bool {
440        matches!(self, Self::ThroughputLimitExceeded(_))
441    }
442    /// Returns `true` if the error kind is `CreateReplicationConfigurationError::UnsupportedAvailabilityZone`.
443    pub fn is_unsupported_availability_zone(&self) -> bool {
444        matches!(self, Self::UnsupportedAvailabilityZone(_))
445    }
446    /// Returns `true` if the error kind is `CreateReplicationConfigurationError::ValidationException`.
447    pub fn is_validation_exception(&self) -> bool {
448        matches!(self, Self::ValidationException(_))
449    }
450}
451impl ::std::error::Error for CreateReplicationConfigurationError {
452    fn source(&self) -> ::std::option::Option<&(dyn ::std::error::Error + 'static)> {
453        match self {
454            Self::BadRequest(_inner) => ::std::option::Option::Some(_inner),
455            Self::ConflictException(_inner) => ::std::option::Option::Some(_inner),
456            Self::FileSystemLimitExceeded(_inner) => ::std::option::Option::Some(_inner),
457            Self::FileSystemNotFound(_inner) => ::std::option::Option::Some(_inner),
458            Self::IncorrectFileSystemLifeCycleState(_inner) => ::std::option::Option::Some(_inner),
459            Self::InsufficientThroughputCapacity(_inner) => ::std::option::Option::Some(_inner),
460            Self::InternalServerError(_inner) => ::std::option::Option::Some(_inner),
461            Self::ReplicationNotFound(_inner) => ::std::option::Option::Some(_inner),
462            Self::ThroughputLimitExceeded(_inner) => ::std::option::Option::Some(_inner),
463            Self::UnsupportedAvailabilityZone(_inner) => ::std::option::Option::Some(_inner),
464            Self::ValidationException(_inner) => ::std::option::Option::Some(_inner),
465            Self::Unhandled(_inner) => ::std::option::Option::Some(&*_inner.source),
466        }
467    }
468}
469impl ::std::fmt::Display for CreateReplicationConfigurationError {
470    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
471        match self {
472            Self::BadRequest(_inner) => _inner.fmt(f),
473            Self::ConflictException(_inner) => _inner.fmt(f),
474            Self::FileSystemLimitExceeded(_inner) => _inner.fmt(f),
475            Self::FileSystemNotFound(_inner) => _inner.fmt(f),
476            Self::IncorrectFileSystemLifeCycleState(_inner) => _inner.fmt(f),
477            Self::InsufficientThroughputCapacity(_inner) => _inner.fmt(f),
478            Self::InternalServerError(_inner) => _inner.fmt(f),
479            Self::ReplicationNotFound(_inner) => _inner.fmt(f),
480            Self::ThroughputLimitExceeded(_inner) => _inner.fmt(f),
481            Self::UnsupportedAvailabilityZone(_inner) => _inner.fmt(f),
482            Self::ValidationException(_inner) => _inner.fmt(f),
483            Self::Unhandled(_inner) => {
484                if let ::std::option::Option::Some(code) = ::aws_smithy_types::error::metadata::ProvideErrorMetadata::code(self) {
485                    write!(f, "unhandled error ({code})")
486                } else {
487                    f.write_str("unhandled error")
488                }
489            }
490        }
491    }
492}
493impl ::aws_smithy_types::retry::ProvideErrorKind for CreateReplicationConfigurationError {
494    fn code(&self) -> ::std::option::Option<&str> {
495        ::aws_smithy_types::error::metadata::ProvideErrorMetadata::code(self)
496    }
497    fn retryable_error_kind(&self) -> ::std::option::Option<::aws_smithy_types::retry::ErrorKind> {
498        ::std::option::Option::None
499    }
500}
501impl ::aws_smithy_types::error::metadata::ProvideErrorMetadata for CreateReplicationConfigurationError {
502    fn meta(&self) -> &::aws_smithy_types::error::ErrorMetadata {
503        match self {
504            Self::BadRequest(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
505            Self::ConflictException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
506            Self::FileSystemLimitExceeded(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
507            Self::FileSystemNotFound(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
508            Self::IncorrectFileSystemLifeCycleState(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
509            Self::InsufficientThroughputCapacity(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
510            Self::InternalServerError(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
511            Self::ReplicationNotFound(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
512            Self::ThroughputLimitExceeded(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
513            Self::UnsupportedAvailabilityZone(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
514            Self::ValidationException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
515            Self::Unhandled(_inner) => &_inner.meta,
516        }
517    }
518}
519impl ::aws_smithy_runtime_api::client::result::CreateUnhandledError for CreateReplicationConfigurationError {
520    fn create_unhandled_error(
521        source: ::std::boxed::Box<dyn ::std::error::Error + ::std::marker::Send + ::std::marker::Sync + 'static>,
522        meta: ::std::option::Option<::aws_smithy_types::error::ErrorMetadata>,
523    ) -> Self {
524        Self::Unhandled(crate::error::sealed_unhandled::Unhandled {
525            source,
526            meta: meta.unwrap_or_default(),
527        })
528    }
529}
530impl ::aws_types::request_id::RequestId for crate::operation::create_replication_configuration::CreateReplicationConfigurationError {
531    fn request_id(&self) -> Option<&str> {
532        self.meta().request_id()
533    }
534}
535
536pub use crate::operation::create_replication_configuration::_create_replication_configuration_input::CreateReplicationConfigurationInput;
537
538pub use crate::operation::create_replication_configuration::_create_replication_configuration_output::CreateReplicationConfigurationOutput;
539
540mod _create_replication_configuration_input;
541
542mod _create_replication_configuration_output;
543
544/// Builders
545pub mod builders;