Skip to main content

aws_sdk_elasticloadbalancing/operation/
create_load_balancer.rs

1// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
2/// Orchestration and serialization glue logic for `CreateLoadBalancer`.
3#[derive(::std::clone::Clone, ::std::default::Default, ::std::fmt::Debug)]
4#[non_exhaustive]
5pub struct CreateLoadBalancer;
6impl CreateLoadBalancer {
7    /// Creates a new `CreateLoadBalancer`
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_load_balancer::CreateLoadBalancerInput,
14    ) -> ::std::result::Result<
15        crate::operation::create_load_balancer::CreateLoadBalancerOutput,
16        ::aws_smithy_runtime_api::client::result::SdkError<
17            crate::operation::create_load_balancer::CreateLoadBalancerError,
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_load_balancer::CreateLoadBalancerError>()
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_load_balancer::CreateLoadBalancerOutput>()
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_load_balancer::CreateLoadBalancerInput,
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            "Elastic Load Balancing",
56            "CreateLoadBalancer",
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            "Elastic Load Balancing.CreateLoadBalancer",
65            "rpc.service" = "Elastic Load Balancing",
66            "rpc.method" = "CreateLoadBalancer",
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 CreateLoadBalancer {
94    fn config(&self) -> ::std::option::Option<::aws_smithy_types::config_bag::FrozenLayer> {
95        let mut cfg = ::aws_smithy_types::config_bag::Layer::new("CreateLoadBalancer");
96
97        cfg.store_put(::aws_smithy_runtime_api::client::ser_de::SharedRequestSerializer::new(
98            CreateLoadBalancerRequestSerializer,
99        ));
100        cfg.store_put(::aws_smithy_runtime_api::client::ser_de::SharedResponseDeserializer::new(
101            CreateLoadBalancerResponseDeserializer,
102        ));
103
104        cfg.store_put(::aws_smithy_runtime_api::client::auth::AuthSchemeOptionResolverParams::new(
105            crate::config::auth::Params::builder()
106                .operation_name("CreateLoadBalancer")
107                .build()
108                .expect("required fields set"),
109        ));
110
111        cfg.store_put(::aws_smithy_runtime_api::client::orchestrator::Metadata::new(
112            "CreateLoadBalancer",
113            "Elastic Load Balancing",
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("CreateLoadBalancer")
135            .with_interceptor(::aws_smithy_runtime_api::client::interceptors::SharedInterceptor::permanent(
136                ::aws_smithy_runtime::client::stalled_stream_protection::StalledStreamProtectionInterceptor::default(),
137            ))
138            .with_interceptor(::aws_smithy_runtime_api::client::interceptors::SharedInterceptor::permanent(
139                CreateLoadBalancerEndpointParamsInterceptor,
140            ))
141            .with_retry_classifier(::aws_smithy_runtime::client::retries::classifiers::TransientErrorClassifier::<
142                crate::operation::create_load_balancer::CreateLoadBalancerError,
143            >::new())
144            .with_retry_classifier(::aws_smithy_runtime::client::retries::classifiers::ModeledAsRetryableClassifier::<
145                crate::operation::create_load_balancer::CreateLoadBalancerError,
146            >::new())
147            .with_retry_classifier(::aws_runtime::retries::classifiers::AwsErrorCodeClassifier::<
148                crate::operation::create_load_balancer::CreateLoadBalancerError,
149            >::new());
150
151        ::std::borrow::Cow::Owned(rcb)
152    }
153}
154
155#[derive(Debug)]
156struct CreateLoadBalancerResponseDeserializer;
157impl ::aws_smithy_runtime_api::client::ser_de::DeserializeResponse for CreateLoadBalancerResponseDeserializer {
158    fn deserialize_nonstreaming_with_config(
159        &self,
160        response: &::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
161        _cfg: &::aws_smithy_types::config_bag::ConfigBag,
162    ) -> ::aws_smithy_runtime_api::client::interceptors::context::OutputOrError {
163        let (success, status) = (response.status().is_success(), response.status().as_u16());
164        let headers = response.headers();
165        let body = response.body().bytes().expect("body loaded");
166        #[allow(unused_mut)]
167        let mut force_error = false;
168        ::tracing::debug!(request_id = ?::aws_types::request_id::RequestId::request_id(response));
169        let parse_result = if !success && status != 200 || force_error {
170            crate::protocol_serde::shape_create_load_balancer::de_create_load_balancer_http_error(status, headers, body)
171        } else {
172            crate::protocol_serde::shape_create_load_balancer::de_create_load_balancer_http_response(status, headers, body)
173        };
174        crate::protocol_serde::type_erase_result(parse_result)
175    }
176}
177#[derive(Debug)]
178struct CreateLoadBalancerRequestSerializer;
179impl ::aws_smithy_runtime_api::client::ser_de::SerializeRequest for CreateLoadBalancerRequestSerializer {
180    #[allow(unused_mut, clippy::let_and_return, clippy::needless_borrow, clippy::useless_conversion)]
181    fn serialize_input(
182        &self,
183        input: ::aws_smithy_runtime_api::client::interceptors::context::Input,
184        _cfg: &mut ::aws_smithy_types::config_bag::ConfigBag,
185    ) -> ::std::result::Result<::aws_smithy_runtime_api::client::orchestrator::HttpRequest, ::aws_smithy_runtime_api::box_error::BoxError> {
186        let input = input
187            .downcast::<crate::operation::create_load_balancer::CreateLoadBalancerInput>()
188            .expect("correct type");
189        let _header_serialization_settings = _cfg
190            .load::<crate::serialization_settings::HeaderSerializationSettings>()
191            .cloned()
192            .unwrap_or_default();
193        let mut request_builder = {
194            #[allow(clippy::uninlined_format_args)]
195            fn uri_base(
196                _input: &crate::operation::create_load_balancer::CreateLoadBalancerInput,
197                output: &mut ::std::string::String,
198            ) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
199                use ::std::fmt::Write as _;
200                ::std::write!(output, "/").expect("formatting should succeed");
201                ::std::result::Result::Ok(())
202            }
203            #[allow(clippy::unnecessary_wraps)]
204            fn update_http_builder(
205                input: &crate::operation::create_load_balancer::CreateLoadBalancerInput,
206                builder: ::http_1x::request::Builder,
207            ) -> ::std::result::Result<::http_1x::request::Builder, ::aws_smithy_types::error::operation::BuildError> {
208                let mut uri = ::std::string::String::new();
209                uri_base(input, &mut uri)?;
210                ::std::result::Result::Ok(builder.method("POST").uri(uri))
211            }
212            let mut builder = update_http_builder(&input, ::http_1x::request::Builder::new())?;
213            builder =
214                _header_serialization_settings.set_default_header(builder, ::http_1x::header::CONTENT_TYPE, "application/x-www-form-urlencoded");
215            builder
216        };
217        let body = ::aws_smithy_types::body::SdkBody::from(
218            crate::protocol_serde::shape_create_load_balancer_input::ser_create_load_balancer_input_input_input(&input)?,
219        );
220        if let Some(content_length) = body.content_length() {
221            let content_length = content_length.to_string();
222            request_builder = _header_serialization_settings.set_default_header(request_builder, ::http_1x::header::CONTENT_LENGTH, &content_length);
223        }
224        ::std::result::Result::Ok(request_builder.body(body).expect("valid request").try_into().unwrap())
225    }
226}
227#[derive(Debug)]
228struct CreateLoadBalancerEndpointParamsInterceptor;
229
230#[::aws_smithy_runtime_api::client::interceptors::dyn_dispatch_hint]
231impl ::aws_smithy_runtime_api::client::interceptors::Intercept for CreateLoadBalancerEndpointParamsInterceptor {
232    fn name(&self) -> &'static str {
233        "CreateLoadBalancerEndpointParamsInterceptor"
234    }
235
236    fn read_before_execution(
237        &self,
238        context: &::aws_smithy_runtime_api::client::interceptors::context::BeforeSerializationInterceptorContextRef<
239            '_,
240            ::aws_smithy_runtime_api::client::interceptors::context::Input,
241            ::aws_smithy_runtime_api::client::interceptors::context::Output,
242            ::aws_smithy_runtime_api::client::interceptors::context::Error,
243        >,
244        cfg: &mut ::aws_smithy_types::config_bag::ConfigBag,
245    ) -> ::std::result::Result<(), ::aws_smithy_runtime_api::box_error::BoxError> {
246        let _input = context
247            .input()
248            .downcast_ref::<CreateLoadBalancerInput>()
249            .ok_or("failed to downcast to CreateLoadBalancerInput")?;
250
251        let params = crate::config::endpoint::Params::builder()
252            .set_region(cfg.load::<::aws_types::region::Region>().map(|r| r.as_ref().to_owned()))
253            .set_use_dual_stack(cfg.load::<::aws_types::endpoint_config::UseDualStack>().map(|ty| ty.0))
254            .set_use_fips(cfg.load::<::aws_types::endpoint_config::UseFips>().map(|ty| ty.0))
255            .set_endpoint(cfg.load::<::aws_types::endpoint_config::EndpointUrl>().map(|ty| ty.0.clone()))
256            .build()
257            .map_err(|err| {
258                ::aws_smithy_runtime_api::client::interceptors::error::ContextAttachedError::new("endpoint params could not be built", err)
259            })?;
260        cfg.interceptor_state()
261            .store_put(::aws_smithy_runtime_api::client::endpoint::EndpointResolverParams::new(params));
262        ::std::result::Result::Ok(())
263    }
264}
265
266// The get_* functions below are generated from JMESPath expressions in the
267// operationContextParams trait. They target the operation's input shape.
268
269/// Error type for the `CreateLoadBalancerError` operation.
270#[non_exhaustive]
271#[derive(::std::fmt::Debug)]
272pub enum CreateLoadBalancerError {
273    /// <p>The specified ARN does not refer to a valid SSL certificate in AWS Identity and Access Management (IAM) or AWS Certificate Manager (ACM). Note that if you recently uploaded the certificate to IAM, this error might indicate that the certificate is not fully available yet.</p>
274    CertificateNotFoundException(crate::types::error::CertificateNotFoundException),
275    /// <p>The specified load balancer name already exists for this account.</p>
276    DuplicateAccessPointNameException(crate::types::error::DuplicateAccessPointNameException),
277    /// <p>A tag key was specified more than once.</p>
278    DuplicateTagKeysException(crate::types::error::DuplicateTagKeysException),
279    /// <p>The requested configuration change is not valid.</p>
280    InvalidConfigurationRequestException(crate::types::error::InvalidConfigurationRequestException),
281    /// <p>The specified value for the schema is not valid. You can only specify a scheme for load balancers in a VPC.</p>
282    InvalidSchemeException(crate::types::error::InvalidSchemeException),
283    /// <p>One or more of the specified security groups do not exist.</p>
284    InvalidSecurityGroupException(crate::types::error::InvalidSecurityGroupException),
285    /// <p>The specified VPC has no associated Internet gateway.</p>
286    InvalidSubnetException(crate::types::error::InvalidSubnetException),
287    /// <p>This operation is not allowed.</p>
288    OperationNotPermittedException(crate::types::error::OperationNotPermittedException),
289    /// <p>One or more of the specified subnets do not exist.</p>
290    SubnetNotFoundException(crate::types::error::SubnetNotFoundException),
291    /// <p>The quota for the number of load balancers has been reached.</p>
292    TooManyAccessPointsException(crate::types::error::TooManyAccessPointsException),
293    /// <p>The quota for the number of tags that can be assigned to a load balancer has been reached.</p>
294    TooManyTagsException(crate::types::error::TooManyTagsException),
295    /// <p>The specified protocol or signature version is not supported.</p>
296    UnsupportedProtocolException(crate::types::error::UnsupportedProtocolException),
297    /// An unexpected error occurred (e.g., invalid JSON returned by the service or an unknown error code).
298    #[deprecated(note = "Matching `Unhandled` directly is not forwards compatible. Instead, match using a \
299    variable wildcard pattern and check `.code()`:
300     \
301    &nbsp;&nbsp;&nbsp;`err if err.code() == Some(\"SpecificExceptionCode\") => { /* handle the error */ }`
302     \
303    See [`ProvideErrorMetadata`](#impl-ProvideErrorMetadata-for-CreateLoadBalancerError) for what information is available for the error.")]
304    Unhandled(crate::error::sealed_unhandled::Unhandled),
305}
306impl CreateLoadBalancerError {
307    /// Creates the `CreateLoadBalancerError::Unhandled` variant from any error type.
308    pub fn unhandled(
309        err: impl ::std::convert::Into<::std::boxed::Box<dyn ::std::error::Error + ::std::marker::Send + ::std::marker::Sync + 'static>>,
310    ) -> Self {
311        Self::Unhandled(crate::error::sealed_unhandled::Unhandled {
312            source: err.into(),
313            meta: ::std::default::Default::default(),
314        })
315    }
316
317    /// Creates the `CreateLoadBalancerError::Unhandled` variant from an [`ErrorMetadata`](::aws_smithy_types::error::ErrorMetadata).
318    pub fn generic(err: ::aws_smithy_types::error::ErrorMetadata) -> Self {
319        Self::Unhandled(crate::error::sealed_unhandled::Unhandled {
320            source: err.clone().into(),
321            meta: err,
322        })
323    }
324    ///
325    /// Returns error metadata, which includes the error code, message,
326    /// request ID, and potentially additional information.
327    ///
328    pub fn meta(&self) -> &::aws_smithy_types::error::ErrorMetadata {
329        match self {
330            Self::CertificateNotFoundException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
331            Self::DuplicateAccessPointNameException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
332            Self::DuplicateTagKeysException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
333            Self::InvalidConfigurationRequestException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
334            Self::InvalidSchemeException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
335            Self::InvalidSecurityGroupException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
336            Self::InvalidSubnetException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
337            Self::OperationNotPermittedException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
338            Self::SubnetNotFoundException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
339            Self::TooManyAccessPointsException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
340            Self::TooManyTagsException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
341            Self::UnsupportedProtocolException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
342            Self::Unhandled(e) => &e.meta,
343        }
344    }
345    /// Returns `true` if the error kind is `CreateLoadBalancerError::CertificateNotFoundException`.
346    pub fn is_certificate_not_found_exception(&self) -> bool {
347        matches!(self, Self::CertificateNotFoundException(_))
348    }
349    /// Returns `true` if the error kind is `CreateLoadBalancerError::DuplicateAccessPointNameException`.
350    pub fn is_duplicate_access_point_name_exception(&self) -> bool {
351        matches!(self, Self::DuplicateAccessPointNameException(_))
352    }
353    /// Returns `true` if the error kind is `CreateLoadBalancerError::DuplicateTagKeysException`.
354    pub fn is_duplicate_tag_keys_exception(&self) -> bool {
355        matches!(self, Self::DuplicateTagKeysException(_))
356    }
357    /// Returns `true` if the error kind is `CreateLoadBalancerError::InvalidConfigurationRequestException`.
358    pub fn is_invalid_configuration_request_exception(&self) -> bool {
359        matches!(self, Self::InvalidConfigurationRequestException(_))
360    }
361    /// Returns `true` if the error kind is `CreateLoadBalancerError::InvalidSchemeException`.
362    pub fn is_invalid_scheme_exception(&self) -> bool {
363        matches!(self, Self::InvalidSchemeException(_))
364    }
365    /// Returns `true` if the error kind is `CreateLoadBalancerError::InvalidSecurityGroupException`.
366    pub fn is_invalid_security_group_exception(&self) -> bool {
367        matches!(self, Self::InvalidSecurityGroupException(_))
368    }
369    /// Returns `true` if the error kind is `CreateLoadBalancerError::InvalidSubnetException`.
370    pub fn is_invalid_subnet_exception(&self) -> bool {
371        matches!(self, Self::InvalidSubnetException(_))
372    }
373    /// Returns `true` if the error kind is `CreateLoadBalancerError::OperationNotPermittedException`.
374    pub fn is_operation_not_permitted_exception(&self) -> bool {
375        matches!(self, Self::OperationNotPermittedException(_))
376    }
377    /// Returns `true` if the error kind is `CreateLoadBalancerError::SubnetNotFoundException`.
378    pub fn is_subnet_not_found_exception(&self) -> bool {
379        matches!(self, Self::SubnetNotFoundException(_))
380    }
381    /// Returns `true` if the error kind is `CreateLoadBalancerError::TooManyAccessPointsException`.
382    pub fn is_too_many_access_points_exception(&self) -> bool {
383        matches!(self, Self::TooManyAccessPointsException(_))
384    }
385    /// Returns `true` if the error kind is `CreateLoadBalancerError::TooManyTagsException`.
386    pub fn is_too_many_tags_exception(&self) -> bool {
387        matches!(self, Self::TooManyTagsException(_))
388    }
389    /// Returns `true` if the error kind is `CreateLoadBalancerError::UnsupportedProtocolException`.
390    pub fn is_unsupported_protocol_exception(&self) -> bool {
391        matches!(self, Self::UnsupportedProtocolException(_))
392    }
393}
394impl ::std::error::Error for CreateLoadBalancerError {
395    fn source(&self) -> ::std::option::Option<&(dyn ::std::error::Error + 'static)> {
396        match self {
397            Self::CertificateNotFoundException(_inner) => ::std::option::Option::Some(_inner),
398            Self::DuplicateAccessPointNameException(_inner) => ::std::option::Option::Some(_inner),
399            Self::DuplicateTagKeysException(_inner) => ::std::option::Option::Some(_inner),
400            Self::InvalidConfigurationRequestException(_inner) => ::std::option::Option::Some(_inner),
401            Self::InvalidSchemeException(_inner) => ::std::option::Option::Some(_inner),
402            Self::InvalidSecurityGroupException(_inner) => ::std::option::Option::Some(_inner),
403            Self::InvalidSubnetException(_inner) => ::std::option::Option::Some(_inner),
404            Self::OperationNotPermittedException(_inner) => ::std::option::Option::Some(_inner),
405            Self::SubnetNotFoundException(_inner) => ::std::option::Option::Some(_inner),
406            Self::TooManyAccessPointsException(_inner) => ::std::option::Option::Some(_inner),
407            Self::TooManyTagsException(_inner) => ::std::option::Option::Some(_inner),
408            Self::UnsupportedProtocolException(_inner) => ::std::option::Option::Some(_inner),
409            Self::Unhandled(_inner) => ::std::option::Option::Some(&*_inner.source),
410        }
411    }
412}
413impl ::std::fmt::Display for CreateLoadBalancerError {
414    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
415        match self {
416            Self::CertificateNotFoundException(_inner) => _inner.fmt(f),
417            Self::DuplicateAccessPointNameException(_inner) => _inner.fmt(f),
418            Self::DuplicateTagKeysException(_inner) => _inner.fmt(f),
419            Self::InvalidConfigurationRequestException(_inner) => _inner.fmt(f),
420            Self::InvalidSchemeException(_inner) => _inner.fmt(f),
421            Self::InvalidSecurityGroupException(_inner) => _inner.fmt(f),
422            Self::InvalidSubnetException(_inner) => _inner.fmt(f),
423            Self::OperationNotPermittedException(_inner) => _inner.fmt(f),
424            Self::SubnetNotFoundException(_inner) => _inner.fmt(f),
425            Self::TooManyAccessPointsException(_inner) => _inner.fmt(f),
426            Self::TooManyTagsException(_inner) => _inner.fmt(f),
427            Self::UnsupportedProtocolException(_inner) => _inner.fmt(f),
428            Self::Unhandled(_inner) => {
429                if let ::std::option::Option::Some(code) = ::aws_smithy_types::error::metadata::ProvideErrorMetadata::code(self) {
430                    write!(f, "unhandled error ({code})")
431                } else {
432                    f.write_str("unhandled error")
433                }
434            }
435        }
436    }
437}
438impl ::aws_smithy_types::retry::ProvideErrorKind for CreateLoadBalancerError {
439    fn code(&self) -> ::std::option::Option<&str> {
440        ::aws_smithy_types::error::metadata::ProvideErrorMetadata::code(self)
441    }
442    fn retryable_error_kind(&self) -> ::std::option::Option<::aws_smithy_types::retry::ErrorKind> {
443        ::std::option::Option::None
444    }
445}
446impl ::aws_smithy_types::error::metadata::ProvideErrorMetadata for CreateLoadBalancerError {
447    fn meta(&self) -> &::aws_smithy_types::error::ErrorMetadata {
448        match self {
449            Self::CertificateNotFoundException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
450            Self::DuplicateAccessPointNameException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
451            Self::DuplicateTagKeysException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
452            Self::InvalidConfigurationRequestException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
453            Self::InvalidSchemeException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
454            Self::InvalidSecurityGroupException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
455            Self::InvalidSubnetException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
456            Self::OperationNotPermittedException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
457            Self::SubnetNotFoundException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
458            Self::TooManyAccessPointsException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
459            Self::TooManyTagsException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
460            Self::UnsupportedProtocolException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
461            Self::Unhandled(_inner) => &_inner.meta,
462        }
463    }
464}
465impl ::aws_smithy_runtime_api::client::result::CreateUnhandledError for CreateLoadBalancerError {
466    fn create_unhandled_error(
467        source: ::std::boxed::Box<dyn ::std::error::Error + ::std::marker::Send + ::std::marker::Sync + 'static>,
468        meta: ::std::option::Option<::aws_smithy_types::error::ErrorMetadata>,
469    ) -> Self {
470        Self::Unhandled(crate::error::sealed_unhandled::Unhandled {
471            source,
472            meta: meta.unwrap_or_default(),
473        })
474    }
475}
476impl ::aws_types::request_id::RequestId for crate::operation::create_load_balancer::CreateLoadBalancerError {
477    fn request_id(&self) -> Option<&str> {
478        self.meta().request_id()
479    }
480}
481
482pub use crate::operation::create_load_balancer::_create_load_balancer_input::CreateLoadBalancerInput;
483
484pub use crate::operation::create_load_balancer::_create_load_balancer_output::CreateLoadBalancerOutput;
485
486mod _create_load_balancer_input;
487
488mod _create_load_balancer_output;
489
490/// Builders
491pub mod builders;