Skip to main content

aws_sdk_efs/operation/
modify_mount_target_security_groups.rs

1// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
2/// Orchestration and serialization glue logic for `ModifyMountTargetSecurityGroups`.
3#[derive(::std::clone::Clone, ::std::default::Default, ::std::fmt::Debug)]
4#[non_exhaustive]
5pub struct ModifyMountTargetSecurityGroups;
6impl ModifyMountTargetSecurityGroups {
7    /// Creates a new `ModifyMountTargetSecurityGroups`
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::modify_mount_target_security_groups::ModifyMountTargetSecurityGroupsInput,
14    ) -> ::std::result::Result<
15        crate::operation::modify_mount_target_security_groups::ModifyMountTargetSecurityGroupsOutput,
16        ::aws_smithy_runtime_api::client::result::SdkError<
17            crate::operation::modify_mount_target_security_groups::ModifyMountTargetSecurityGroupsError,
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::modify_mount_target_security_groups::ModifyMountTargetSecurityGroupsError>()
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::modify_mount_target_security_groups::ModifyMountTargetSecurityGroupsOutput>()
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::modify_mount_target_security_groups::ModifyMountTargetSecurityGroupsInput,
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            "ModifyMountTargetSecurityGroups",
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.ModifyMountTargetSecurityGroups",
65            "rpc.service" = "EFS",
66            "rpc.method" = "ModifyMountTargetSecurityGroups",
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 ModifyMountTargetSecurityGroups {
94    fn config(&self) -> ::std::option::Option<::aws_smithy_types::config_bag::FrozenLayer> {
95        let mut cfg = ::aws_smithy_types::config_bag::Layer::new("ModifyMountTargetSecurityGroups");
96
97        cfg.store_put(::aws_smithy_runtime_api::client::ser_de::SharedRequestSerializer::new(
98            ModifyMountTargetSecurityGroupsRequestSerializer,
99        ));
100        cfg.store_put(::aws_smithy_runtime_api::client::ser_de::SharedResponseDeserializer::new(
101            ModifyMountTargetSecurityGroupsResponseDeserializer,
102        ));
103
104        cfg.store_put(::aws_smithy_runtime_api::client::auth::AuthSchemeOptionResolverParams::new(
105            crate::config::auth::Params::builder()
106                .operation_name("ModifyMountTargetSecurityGroups")
107                .build()
108                .expect("required fields set"),
109        ));
110
111        cfg.store_put(::aws_smithy_runtime_api::client::orchestrator::Metadata::new(
112            "ModifyMountTargetSecurityGroups",
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("ModifyMountTargetSecurityGroups")
135            .with_interceptor(::aws_smithy_runtime_api::client::interceptors::SharedInterceptor::permanent(
136                ModifyMountTargetSecurityGroupsTelemetryInputCaptureInterceptor,
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                ModifyMountTargetSecurityGroupsEndpointParamsInterceptor,
143            ))
144            .with_retry_classifier(::aws_smithy_runtime::client::retries::classifiers::TransientErrorClassifier::<
145                crate::operation::modify_mount_target_security_groups::ModifyMountTargetSecurityGroupsError,
146            >::new())
147            .with_retry_classifier(::aws_smithy_runtime::client::retries::classifiers::ModeledAsRetryableClassifier::<
148                crate::operation::modify_mount_target_security_groups::ModifyMountTargetSecurityGroupsError,
149            >::new())
150            .with_retry_classifier(::aws_runtime::retries::classifiers::AwsErrorCodeClassifier::<
151                crate::operation::modify_mount_target_security_groups::ModifyMountTargetSecurityGroupsError,
152            >::new())
153            .with_retry_classifier(::aws_runtime::service_clock_skew::ServiceClockSkewClassifier::<
154                crate::operation::modify_mount_target_security_groups::ModifyMountTargetSecurityGroupsError,
155            >::new());
156
157        ::std::borrow::Cow::Owned(rcb)
158    }
159}
160
161#[derive(Debug)]
162struct ModifyMountTargetSecurityGroupsTelemetryInputCaptureInterceptor;
163
164#[::aws_smithy_runtime_api::client::interceptors::dyn_dispatch_hint]
165impl ::aws_smithy_runtime_api::client::interceptors::Intercept for ModifyMountTargetSecurityGroupsTelemetryInputCaptureInterceptor {
166    fn name(&self) -> &'static str {
167        "ModifyMountTargetSecurityGroupsTelemetryInputCaptureInterceptor"
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::<ModifyMountTargetSecurityGroupsInput>() 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("MountTargetId") {
195            if let ::std::option::Option::Some(value) = input.mount_target_id.as_deref() {
196                captured.insert("MountTargetId", value);
197            }
198        }
199
200        cfg.interceptor_state().store_put(captured);
201        ::std::result::Result::Ok(())
202    }
203}
204#[derive(Debug)]
205struct ModifyMountTargetSecurityGroupsResponseDeserializer;
206impl ::aws_smithy_runtime_api::client::ser_de::DeserializeResponse for ModifyMountTargetSecurityGroupsResponseDeserializer {
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 != 204 || force_error {
219            crate::protocol_serde::shape_modify_mount_target_security_groups::de_modify_mount_target_security_groups_http_error(status, headers, body)
220        } else {
221            crate::protocol_serde::shape_modify_mount_target_security_groups::de_modify_mount_target_security_groups_http_response(
222                status, headers, body,
223            )
224        };
225        crate::protocol_serde::type_erase_result(parse_result)
226    }
227}
228#[derive(Debug)]
229struct ModifyMountTargetSecurityGroupsRequestSerializer;
230impl ::aws_smithy_runtime_api::client::ser_de::SerializeRequest for ModifyMountTargetSecurityGroupsRequestSerializer {
231    #[allow(unused_mut, clippy::let_and_return, clippy::needless_borrow, clippy::useless_conversion)]
232    fn serialize_input(
233        &self,
234        input: ::aws_smithy_runtime_api::client::interceptors::context::Input,
235        _cfg: &mut ::aws_smithy_types::config_bag::ConfigBag,
236    ) -> ::std::result::Result<::aws_smithy_runtime_api::client::orchestrator::HttpRequest, ::aws_smithy_runtime_api::box_error::BoxError> {
237        let input = input
238            .downcast::<crate::operation::modify_mount_target_security_groups::ModifyMountTargetSecurityGroupsInput>()
239            .expect("correct type");
240        let _header_serialization_settings = _cfg
241            .load::<crate::serialization_settings::HeaderSerializationSettings>()
242            .cloned()
243            .unwrap_or_default();
244        let mut request_builder = {
245            #[allow(clippy::uninlined_format_args)]
246            fn uri_base(
247                _input: &crate::operation::modify_mount_target_security_groups::ModifyMountTargetSecurityGroupsInput,
248                output: &mut ::std::string::String,
249            ) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
250                use ::std::fmt::Write as _;
251                let input_1 = &_input.mount_target_id;
252                let input_1 = input_1
253                    .as_ref()
254                    .ok_or_else(|| ::aws_smithy_types::error::operation::BuildError::missing_field("mount_target_id", "cannot be empty or unset"))?;
255                let mount_target_id = ::aws_smithy_http::label::fmt_string(input_1, ::aws_smithy_http::label::EncodingStrategy::Default);
256                if mount_target_id.is_empty() {
257                    return ::std::result::Result::Err(::aws_smithy_types::error::operation::BuildError::missing_field(
258                        "mount_target_id",
259                        "cannot be empty or unset",
260                    ));
261                }
262                ::std::write!(
263                    output,
264                    "/2015-02-01/mount-targets/{MountTargetId}/security-groups",
265                    MountTargetId = mount_target_id
266                )
267                .expect("formatting should succeed");
268                ::std::result::Result::Ok(())
269            }
270            #[allow(clippy::unnecessary_wraps)]
271            fn update_http_builder(
272                input: &crate::operation::modify_mount_target_security_groups::ModifyMountTargetSecurityGroupsInput,
273                builder: ::http_1x::request::Builder,
274            ) -> ::std::result::Result<::http_1x::request::Builder, ::aws_smithy_types::error::operation::BuildError> {
275                let mut uri = ::std::string::String::new();
276                uri_base(input, &mut uri)?;
277                ::std::result::Result::Ok(builder.method("PUT").uri(uri))
278            }
279            let mut builder = update_http_builder(&input, ::http_1x::request::Builder::new())?;
280            builder = _header_serialization_settings.set_default_header(builder, ::http_1x::header::CONTENT_TYPE, "application/json");
281            builder
282        };
283        let body = ::aws_smithy_types::body::SdkBody::from(
284            crate::protocol_serde::shape_modify_mount_target_security_groups::ser_modify_mount_target_security_groups_input(&input)?,
285        );
286        if let Some(content_length) = body.content_length() {
287            let content_length = content_length.to_string();
288            request_builder = _header_serialization_settings.set_default_header(request_builder, ::http_1x::header::CONTENT_LENGTH, &content_length);
289        }
290        ::std::result::Result::Ok(request_builder.body(body).expect("valid request").try_into().unwrap())
291    }
292}
293#[derive(Debug)]
294struct ModifyMountTargetSecurityGroupsEndpointParamsInterceptor;
295
296#[::aws_smithy_runtime_api::client::interceptors::dyn_dispatch_hint]
297impl ::aws_smithy_runtime_api::client::interceptors::Intercept for ModifyMountTargetSecurityGroupsEndpointParamsInterceptor {
298    fn name(&self) -> &'static str {
299        "ModifyMountTargetSecurityGroupsEndpointParamsInterceptor"
300    }
301
302    fn read_before_execution(
303        &self,
304        context: &::aws_smithy_runtime_api::client::interceptors::context::BeforeSerializationInterceptorContextRef<
305            '_,
306            ::aws_smithy_runtime_api::client::interceptors::context::Input,
307            ::aws_smithy_runtime_api::client::interceptors::context::Output,
308            ::aws_smithy_runtime_api::client::interceptors::context::Error,
309        >,
310        cfg: &mut ::aws_smithy_types::config_bag::ConfigBag,
311    ) -> ::std::result::Result<(), ::aws_smithy_runtime_api::box_error::BoxError> {
312        let _input = context
313            .input()
314            .downcast_ref::<ModifyMountTargetSecurityGroupsInput>()
315            .ok_or("failed to downcast to ModifyMountTargetSecurityGroupsInput")?;
316
317        let params = crate::config::endpoint::Params::builder()
318            .set_use_dual_stack(cfg.load::<::aws_types::endpoint_config::UseDualStack>().map(|ty| ty.0))
319            .set_use_fips(cfg.load::<::aws_types::endpoint_config::UseFips>().map(|ty| ty.0))
320            .set_endpoint(cfg.load::<::aws_types::endpoint_config::EndpointUrl>().map(|ty| ty.0.clone()))
321            .set_region(cfg.load::<::aws_types::region::Region>().map(|r| r.as_ref().to_owned()))
322            .build()
323            .map_err(|err| {
324                ::aws_smithy_runtime_api::client::interceptors::error::ContextAttachedError::new("endpoint params could not be built", err)
325            })?;
326        cfg.interceptor_state()
327            .store_put(::aws_smithy_runtime_api::client::endpoint::EndpointResolverParams::new(params));
328        ::std::result::Result::Ok(())
329    }
330}
331
332// The get_* functions below are generated from JMESPath expressions in the
333// operationContextParams trait. They target the operation's input shape.
334
335/// Error type for the `ModifyMountTargetSecurityGroupsError` operation.
336#[non_exhaustive]
337#[derive(::std::fmt::Debug)]
338pub enum ModifyMountTargetSecurityGroupsError {
339    /// <p>Returned if the request is malformed or contains an error such as an invalid parameter value or a missing required parameter.</p>
340    BadRequest(crate::types::error::BadRequest),
341    /// <p>Returned if the mount target is not in the correct state for the operation.</p>
342    IncorrectMountTargetState(crate::types::error::IncorrectMountTargetState),
343    /// <p>Returned if an error occurred on the server side.</p>
344    InternalServerError(crate::types::error::InternalServerError),
345    /// <p>Returned if there is no mount target with the specified ID found in the caller's Amazon Web Services account.</p>
346    MountTargetNotFound(crate::types::error::MountTargetNotFound),
347    /// <p>Returned if the number of <code>SecurityGroups</code> specified in the request is greater than the limit, which is based on account quota. Either delete some security groups or request that the account quota be raised. For more information, see <a href="https://docs.aws.amazon.com/vpc/latest/userguide/amazon-vpc-limits.html">Amazon VPC Quotas</a> in the <i>Amazon VPC User Guide</i> (see the <b>Security Groups</b> table).</p>
348    SecurityGroupLimitExceeded(crate::types::error::SecurityGroupLimitExceeded),
349    /// <p>Returned if one of the specified security groups doesn't exist in the subnet's virtual private cloud (VPC).</p>
350    SecurityGroupNotFound(crate::types::error::SecurityGroupNotFound),
351    /// An unexpected error occurred (e.g., invalid JSON returned by the service or an unknown error code).
352    #[deprecated(note = "Matching `Unhandled` directly is not forwards compatible. Instead, match using a \
353    variable wildcard pattern and check `.code()`:
354     \
355    &nbsp;&nbsp;&nbsp;`err if err.code() == Some(\"SpecificExceptionCode\") => { /* handle the error */ }`
356     \
357    See [`ProvideErrorMetadata`](#impl-ProvideErrorMetadata-for-ModifyMountTargetSecurityGroupsError) for what information is available for the error.")]
358    Unhandled(crate::error::sealed_unhandled::Unhandled),
359}
360impl ModifyMountTargetSecurityGroupsError {
361    /// Creates the `ModifyMountTargetSecurityGroupsError::Unhandled` variant from any error type.
362    pub fn unhandled(
363        err: impl ::std::convert::Into<::std::boxed::Box<dyn ::std::error::Error + ::std::marker::Send + ::std::marker::Sync + 'static>>,
364    ) -> Self {
365        Self::Unhandled(crate::error::sealed_unhandled::Unhandled {
366            source: err.into(),
367            meta: ::std::default::Default::default(),
368        })
369    }
370
371    /// Creates the `ModifyMountTargetSecurityGroupsError::Unhandled` variant from an [`ErrorMetadata`](::aws_smithy_types::error::ErrorMetadata).
372    pub fn generic(err: ::aws_smithy_types::error::ErrorMetadata) -> Self {
373        Self::Unhandled(crate::error::sealed_unhandled::Unhandled {
374            source: err.clone().into(),
375            meta: err,
376        })
377    }
378    ///
379    /// Returns error metadata, which includes the error code, message,
380    /// request ID, and potentially additional information.
381    ///
382    pub fn meta(&self) -> &::aws_smithy_types::error::ErrorMetadata {
383        match self {
384            Self::BadRequest(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
385            Self::IncorrectMountTargetState(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
386            Self::InternalServerError(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
387            Self::MountTargetNotFound(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
388            Self::SecurityGroupLimitExceeded(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
389            Self::SecurityGroupNotFound(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
390            Self::Unhandled(e) => &e.meta,
391        }
392    }
393    /// Returns `true` if the error kind is `ModifyMountTargetSecurityGroupsError::BadRequest`.
394    pub fn is_bad_request(&self) -> bool {
395        matches!(self, Self::BadRequest(_))
396    }
397    /// Returns `true` if the error kind is `ModifyMountTargetSecurityGroupsError::IncorrectMountTargetState`.
398    pub fn is_incorrect_mount_target_state(&self) -> bool {
399        matches!(self, Self::IncorrectMountTargetState(_))
400    }
401    /// Returns `true` if the error kind is `ModifyMountTargetSecurityGroupsError::InternalServerError`.
402    pub fn is_internal_server_error(&self) -> bool {
403        matches!(self, Self::InternalServerError(_))
404    }
405    /// Returns `true` if the error kind is `ModifyMountTargetSecurityGroupsError::MountTargetNotFound`.
406    pub fn is_mount_target_not_found(&self) -> bool {
407        matches!(self, Self::MountTargetNotFound(_))
408    }
409    /// Returns `true` if the error kind is `ModifyMountTargetSecurityGroupsError::SecurityGroupLimitExceeded`.
410    pub fn is_security_group_limit_exceeded(&self) -> bool {
411        matches!(self, Self::SecurityGroupLimitExceeded(_))
412    }
413    /// Returns `true` if the error kind is `ModifyMountTargetSecurityGroupsError::SecurityGroupNotFound`.
414    pub fn is_security_group_not_found(&self) -> bool {
415        matches!(self, Self::SecurityGroupNotFound(_))
416    }
417}
418impl ::std::error::Error for ModifyMountTargetSecurityGroupsError {
419    fn source(&self) -> ::std::option::Option<&(dyn ::std::error::Error + 'static)> {
420        match self {
421            Self::BadRequest(_inner) => ::std::option::Option::Some(_inner),
422            Self::IncorrectMountTargetState(_inner) => ::std::option::Option::Some(_inner),
423            Self::InternalServerError(_inner) => ::std::option::Option::Some(_inner),
424            Self::MountTargetNotFound(_inner) => ::std::option::Option::Some(_inner),
425            Self::SecurityGroupLimitExceeded(_inner) => ::std::option::Option::Some(_inner),
426            Self::SecurityGroupNotFound(_inner) => ::std::option::Option::Some(_inner),
427            Self::Unhandled(_inner) => ::std::option::Option::Some(&*_inner.source),
428        }
429    }
430}
431impl ::std::fmt::Display for ModifyMountTargetSecurityGroupsError {
432    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
433        match self {
434            Self::BadRequest(_inner) => _inner.fmt(f),
435            Self::IncorrectMountTargetState(_inner) => _inner.fmt(f),
436            Self::InternalServerError(_inner) => _inner.fmt(f),
437            Self::MountTargetNotFound(_inner) => _inner.fmt(f),
438            Self::SecurityGroupLimitExceeded(_inner) => _inner.fmt(f),
439            Self::SecurityGroupNotFound(_inner) => _inner.fmt(f),
440            Self::Unhandled(_inner) => {
441                if let ::std::option::Option::Some(code) = ::aws_smithy_types::error::metadata::ProvideErrorMetadata::code(self) {
442                    write!(f, "unhandled error ({code})")
443                } else {
444                    f.write_str("unhandled error")
445                }
446            }
447        }
448    }
449}
450impl ::aws_smithy_types::retry::ProvideErrorKind for ModifyMountTargetSecurityGroupsError {
451    fn code(&self) -> ::std::option::Option<&str> {
452        ::aws_smithy_types::error::metadata::ProvideErrorMetadata::code(self)
453    }
454    fn retryable_error_kind(&self) -> ::std::option::Option<::aws_smithy_types::retry::ErrorKind> {
455        ::std::option::Option::None
456    }
457}
458impl ::aws_smithy_types::error::metadata::ProvideErrorMetadata for ModifyMountTargetSecurityGroupsError {
459    fn meta(&self) -> &::aws_smithy_types::error::ErrorMetadata {
460        match self {
461            Self::BadRequest(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
462            Self::IncorrectMountTargetState(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
463            Self::InternalServerError(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
464            Self::MountTargetNotFound(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
465            Self::SecurityGroupLimitExceeded(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
466            Self::SecurityGroupNotFound(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
467            Self::Unhandled(_inner) => &_inner.meta,
468        }
469    }
470}
471impl ::aws_smithy_runtime_api::client::result::CreateUnhandledError for ModifyMountTargetSecurityGroupsError {
472    fn create_unhandled_error(
473        source: ::std::boxed::Box<dyn ::std::error::Error + ::std::marker::Send + ::std::marker::Sync + 'static>,
474        meta: ::std::option::Option<::aws_smithy_types::error::ErrorMetadata>,
475    ) -> Self {
476        Self::Unhandled(crate::error::sealed_unhandled::Unhandled {
477            source,
478            meta: meta.unwrap_or_default(),
479        })
480    }
481}
482impl ::aws_types::request_id::RequestId for crate::operation::modify_mount_target_security_groups::ModifyMountTargetSecurityGroupsError {
483    fn request_id(&self) -> Option<&str> {
484        self.meta().request_id()
485    }
486}
487
488pub use crate::operation::modify_mount_target_security_groups::_modify_mount_target_security_groups_input::ModifyMountTargetSecurityGroupsInput;
489
490pub use crate::operation::modify_mount_target_security_groups::_modify_mount_target_security_groups_output::ModifyMountTargetSecurityGroupsOutput;
491
492mod _modify_mount_target_security_groups_input;
493
494mod _modify_mount_target_security_groups_output;
495
496/// Builders
497pub mod builders;