Skip to main content

aws_sdk_redshift/operation/
create_integration.rs

1// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
2/// Orchestration and serialization glue logic for `CreateIntegration`.
3#[derive(::std::clone::Clone, ::std::default::Default, ::std::fmt::Debug)]
4#[non_exhaustive]
5pub struct CreateIntegration;
6impl CreateIntegration {
7    /// Creates a new `CreateIntegration`
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_integration::CreateIntegrationInput,
14    ) -> ::std::result::Result<
15        crate::operation::create_integration::CreateIntegrationOutput,
16        ::aws_smithy_runtime_api::client::result::SdkError<
17            crate::operation::create_integration::CreateIntegrationError,
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_integration::CreateIntegrationError>()
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_integration::CreateIntegrationOutput>()
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_integration::CreateIntegrationInput,
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("Redshift", "CreateIntegration", 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                "Redshift.CreateIntegration",
59                "rpc.service" = "Redshift",
60                "rpc.method" = "CreateIntegration",
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 CreateIntegration {
88    fn config(&self) -> ::std::option::Option<::aws_smithy_types::config_bag::FrozenLayer> {
89        let mut cfg = ::aws_smithy_types::config_bag::Layer::new("CreateIntegration");
90
91        cfg.store_put(::aws_smithy_runtime_api::client::ser_de::SharedRequestSerializer::new(
92            CreateIntegrationRequestSerializer,
93        ));
94        cfg.store_put(::aws_smithy_runtime_api::client::ser_de::SharedResponseDeserializer::new(
95            CreateIntegrationResponseDeserializer,
96        ));
97
98        cfg.store_put(::aws_smithy_runtime_api::client::auth::AuthSchemeOptionResolverParams::new(
99            crate::config::auth::Params::builder()
100                .operation_name("CreateIntegration")
101                .build()
102                .expect("required fields set"),
103        ));
104
105        cfg.store_put(::aws_smithy_runtime_api::client::orchestrator::Metadata::new(
106            "CreateIntegration",
107            "Redshift",
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("CreateIntegration")
129            .with_interceptor(::aws_smithy_runtime_api::client::interceptors::SharedInterceptor::permanent(
130                CreateIntegrationTelemetryInputCaptureInterceptor,
131            ))
132            .with_interceptor(::aws_smithy_runtime_api::client::interceptors::SharedInterceptor::permanent(
133                ::aws_smithy_runtime::client::stalled_stream_protection::StalledStreamProtectionInterceptor::default(),
134            ))
135            .with_interceptor(::aws_smithy_runtime_api::client::interceptors::SharedInterceptor::permanent(
136                CreateIntegrationEndpointParamsInterceptor,
137            ))
138            .with_retry_classifier(::aws_smithy_runtime::client::retries::classifiers::TransientErrorClassifier::<
139                crate::operation::create_integration::CreateIntegrationError,
140            >::new())
141            .with_retry_classifier(::aws_smithy_runtime::client::retries::classifiers::ModeledAsRetryableClassifier::<
142                crate::operation::create_integration::CreateIntegrationError,
143            >::new())
144            .with_retry_classifier(::aws_runtime::retries::classifiers::AwsErrorCodeClassifier::<
145                crate::operation::create_integration::CreateIntegrationError,
146            >::new());
147
148        ::std::borrow::Cow::Owned(rcb)
149    }
150}
151
152#[derive(Debug)]
153struct CreateIntegrationTelemetryInputCaptureInterceptor;
154
155#[::aws_smithy_runtime_api::client::interceptors::dyn_dispatch_hint]
156impl ::aws_smithy_runtime_api::client::interceptors::Intercept for CreateIntegrationTelemetryInputCaptureInterceptor {
157    fn name(&self) -> &'static str {
158        "CreateIntegrationTelemetryInputCaptureInterceptor"
159    }
160
161    fn read_before_execution(
162        &self,
163        context: &::aws_smithy_runtime_api::client::interceptors::context::BeforeSerializationInterceptorContextRef<
164            '_,
165            ::aws_smithy_runtime_api::client::interceptors::context::Input,
166            ::aws_smithy_runtime_api::client::interceptors::context::Output,
167            ::aws_smithy_runtime_api::client::interceptors::context::Error,
168        >,
169        cfg: &mut ::aws_smithy_types::config_bag::ConfigBag,
170    ) -> ::std::result::Result<(), ::aws_smithy_runtime_api::box_error::BoxError> {
171        // Nothing to do unless the customer opted in by naming members to record.
172        let ::std::option::Option::Some(requested) = cfg
173            .load::<::aws_smithy_types::telemetry::RequestedTelemetryAttributes>()
174            .filter(|r| !r.is_empty())
175        else {
176            return ::std::result::Result::Ok(());
177        };
178
179        let ::std::option::Option::Some(input) = context.input().downcast_ref::<CreateIntegrationInput>() else {
180            // A mismatched input is not this interceptor's concern; skip quietly.
181            return ::std::result::Result::Ok(());
182        };
183
184        let mut captured = ::aws_smithy_types::telemetry::CapturedTelemetryAttributes::default();
185        if requested.should_capture("SourceArn") {
186            if let ::std::option::Option::Some(value) = input.source_arn.as_deref() {
187                captured.insert("SourceArn", value);
188            }
189        }
190        if requested.should_capture("TargetArn") {
191            if let ::std::option::Option::Some(value) = input.target_arn.as_deref() {
192                captured.insert("TargetArn", value);
193            }
194        }
195        if requested.should_capture("IntegrationName") {
196            if let ::std::option::Option::Some(value) = input.integration_name.as_deref() {
197                captured.insert("IntegrationName", value);
198            }
199        }
200        if requested.should_capture("KMSKeyId") {
201            if let ::std::option::Option::Some(value) = input.kms_key_id.as_deref() {
202                captured.insert("KMSKeyId", value);
203            }
204        }
205        if requested.should_capture("Description") {
206            if let ::std::option::Option::Some(value) = input.description.as_deref() {
207                captured.insert("Description", value);
208            }
209        }
210
211        cfg.interceptor_state().store_put(captured);
212        ::std::result::Result::Ok(())
213    }
214}
215#[derive(Debug)]
216struct CreateIntegrationResponseDeserializer;
217impl ::aws_smithy_runtime_api::client::ser_de::DeserializeResponse for CreateIntegrationResponseDeserializer {
218    fn deserialize_nonstreaming_with_config(
219        &self,
220        response: &::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
221        _cfg: &::aws_smithy_types::config_bag::ConfigBag,
222    ) -> ::aws_smithy_runtime_api::client::interceptors::context::OutputOrError {
223        let (success, status) = (response.status().is_success(), response.status().as_u16());
224        let headers = response.headers();
225        let body = response.body().bytes().expect("body loaded");
226        #[allow(unused_mut)]
227        let mut force_error = false;
228        ::tracing::debug!(request_id = ?::aws_types::request_id::RequestId::request_id(response));
229        let parse_result = if !success && status != 200 || force_error {
230            crate::protocol_serde::shape_create_integration::de_create_integration_http_error(status, headers, body)
231        } else {
232            crate::protocol_serde::shape_create_integration::de_create_integration_http_response(status, headers, body)
233        };
234        crate::protocol_serde::type_erase_result(parse_result)
235    }
236}
237#[derive(Debug)]
238struct CreateIntegrationRequestSerializer;
239impl ::aws_smithy_runtime_api::client::ser_de::SerializeRequest for CreateIntegrationRequestSerializer {
240    #[allow(unused_mut, clippy::let_and_return, clippy::needless_borrow, clippy::useless_conversion)]
241    fn serialize_input(
242        &self,
243        input: ::aws_smithy_runtime_api::client::interceptors::context::Input,
244        _cfg: &mut ::aws_smithy_types::config_bag::ConfigBag,
245    ) -> ::std::result::Result<::aws_smithy_runtime_api::client::orchestrator::HttpRequest, ::aws_smithy_runtime_api::box_error::BoxError> {
246        let input = input
247            .downcast::<crate::operation::create_integration::CreateIntegrationInput>()
248            .expect("correct type");
249        let _header_serialization_settings = _cfg
250            .load::<crate::serialization_settings::HeaderSerializationSettings>()
251            .cloned()
252            .unwrap_or_default();
253        let mut request_builder = {
254            #[allow(clippy::uninlined_format_args)]
255            fn uri_base(
256                _input: &crate::operation::create_integration::CreateIntegrationInput,
257                output: &mut ::std::string::String,
258            ) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
259                use ::std::fmt::Write as _;
260                ::std::write!(output, "/").expect("formatting should succeed");
261                ::std::result::Result::Ok(())
262            }
263            #[allow(clippy::unnecessary_wraps)]
264            fn update_http_builder(
265                input: &crate::operation::create_integration::CreateIntegrationInput,
266                builder: ::http_1x::request::Builder,
267            ) -> ::std::result::Result<::http_1x::request::Builder, ::aws_smithy_types::error::operation::BuildError> {
268                let mut uri = ::std::string::String::new();
269                uri_base(input, &mut uri)?;
270                ::std::result::Result::Ok(builder.method("POST").uri(uri))
271            }
272            let mut builder = update_http_builder(&input, ::http_1x::request::Builder::new())?;
273            builder =
274                _header_serialization_settings.set_default_header(builder, ::http_1x::header::CONTENT_TYPE, "application/x-www-form-urlencoded");
275            builder
276        };
277        let body = ::aws_smithy_types::body::SdkBody::from(
278            crate::protocol_serde::shape_create_integration_input::ser_create_integration_input_input_input(&input)?,
279        );
280        if let Some(content_length) = body.content_length() {
281            let content_length = content_length.to_string();
282            request_builder = _header_serialization_settings.set_default_header(request_builder, ::http_1x::header::CONTENT_LENGTH, &content_length);
283        }
284        ::std::result::Result::Ok(request_builder.body(body).expect("valid request").try_into().unwrap())
285    }
286}
287#[derive(Debug)]
288struct CreateIntegrationEndpointParamsInterceptor;
289
290#[::aws_smithy_runtime_api::client::interceptors::dyn_dispatch_hint]
291impl ::aws_smithy_runtime_api::client::interceptors::Intercept for CreateIntegrationEndpointParamsInterceptor {
292    fn name(&self) -> &'static str {
293        "CreateIntegrationEndpointParamsInterceptor"
294    }
295
296    fn read_before_execution(
297        &self,
298        context: &::aws_smithy_runtime_api::client::interceptors::context::BeforeSerializationInterceptorContextRef<
299            '_,
300            ::aws_smithy_runtime_api::client::interceptors::context::Input,
301            ::aws_smithy_runtime_api::client::interceptors::context::Output,
302            ::aws_smithy_runtime_api::client::interceptors::context::Error,
303        >,
304        cfg: &mut ::aws_smithy_types::config_bag::ConfigBag,
305    ) -> ::std::result::Result<(), ::aws_smithy_runtime_api::box_error::BoxError> {
306        let _input = context
307            .input()
308            .downcast_ref::<CreateIntegrationInput>()
309            .ok_or("failed to downcast to CreateIntegrationInput")?;
310
311        let params = crate::config::endpoint::Params::builder()
312            .set_region(cfg.load::<::aws_types::region::Region>().map(|r| r.as_ref().to_owned()))
313            .set_use_dual_stack(cfg.load::<::aws_types::endpoint_config::UseDualStack>().map(|ty| ty.0))
314            .set_use_fips(cfg.load::<::aws_types::endpoint_config::UseFips>().map(|ty| ty.0))
315            .set_endpoint(cfg.load::<::aws_types::endpoint_config::EndpointUrl>().map(|ty| ty.0.clone()))
316            .build()
317            .map_err(|err| {
318                ::aws_smithy_runtime_api::client::interceptors::error::ContextAttachedError::new("endpoint params could not be built", err)
319            })?;
320        cfg.interceptor_state()
321            .store_put(::aws_smithy_runtime_api::client::endpoint::EndpointResolverParams::new(params));
322        ::std::result::Result::Ok(())
323    }
324}
325
326// The get_* functions below are generated from JMESPath expressions in the
327// operationContextParams trait. They target the operation's input shape.
328
329/// Error type for the `CreateIntegrationError` operation.
330#[non_exhaustive]
331#[derive(::std::fmt::Debug)]
332pub enum CreateIntegrationError {
333    /// <p>The integration you are trying to create already exists.</p>
334    IntegrationAlreadyExistsFault(crate::types::error::IntegrationAlreadyExistsFault),
335    /// <p>A conflicting conditional operation is currently in progress against this resource. This typically occurs when there are multiple requests being made to the same resource at the same time, and these requests conflict with each other.</p>
336    IntegrationConflictOperationFault(crate::types::error::IntegrationConflictOperationFault),
337    /// <p>You can't create any more zero-ETL or S3 event integrations because the quota has been reached.</p>
338    IntegrationQuotaExceededFault(crate::types::error::IntegrationQuotaExceededFault),
339    /// <p>The specified integration source can't be found.</p>
340    IntegrationSourceNotFoundFault(crate::types::error::IntegrationSourceNotFoundFault),
341    /// <p>The specified integration target can't be found.</p>
342    IntegrationTargetNotFoundFault(crate::types::error::IntegrationTargetNotFoundFault),
343    /// <p>The specified cluster is not in the <code>available</code> state.</p>
344    InvalidClusterStateFault(crate::types::error::InvalidClusterStateFault),
345    /// <p>The tag is invalid.</p>
346    InvalidTagFault(crate::types::error::InvalidTagFault),
347    /// <p>You have exceeded the number of tags allowed.</p>
348    TagLimitExceededFault(crate::types::error::TagLimitExceededFault),
349    /// <p>The requested operation isn't supported.</p>
350    UnsupportedOperationFault(crate::types::error::UnsupportedOperationFault),
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-CreateIntegrationError) for what information is available for the error.")]
358    Unhandled(crate::error::sealed_unhandled::Unhandled),
359}
360impl CreateIntegrationError {
361    /// Creates the `CreateIntegrationError::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 `CreateIntegrationError::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::IntegrationAlreadyExistsFault(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
385            Self::IntegrationConflictOperationFault(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
386            Self::IntegrationQuotaExceededFault(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
387            Self::IntegrationSourceNotFoundFault(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
388            Self::IntegrationTargetNotFoundFault(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
389            Self::InvalidClusterStateFault(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
390            Self::InvalidTagFault(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
391            Self::TagLimitExceededFault(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
392            Self::UnsupportedOperationFault(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
393            Self::Unhandled(e) => &e.meta,
394        }
395    }
396    /// Returns `true` if the error kind is `CreateIntegrationError::IntegrationAlreadyExistsFault`.
397    pub fn is_integration_already_exists_fault(&self) -> bool {
398        matches!(self, Self::IntegrationAlreadyExistsFault(_))
399    }
400    /// Returns `true` if the error kind is `CreateIntegrationError::IntegrationConflictOperationFault`.
401    pub fn is_integration_conflict_operation_fault(&self) -> bool {
402        matches!(self, Self::IntegrationConflictOperationFault(_))
403    }
404    /// Returns `true` if the error kind is `CreateIntegrationError::IntegrationQuotaExceededFault`.
405    pub fn is_integration_quota_exceeded_fault(&self) -> bool {
406        matches!(self, Self::IntegrationQuotaExceededFault(_))
407    }
408    /// Returns `true` if the error kind is `CreateIntegrationError::IntegrationSourceNotFoundFault`.
409    pub fn is_integration_source_not_found_fault(&self) -> bool {
410        matches!(self, Self::IntegrationSourceNotFoundFault(_))
411    }
412    /// Returns `true` if the error kind is `CreateIntegrationError::IntegrationTargetNotFoundFault`.
413    pub fn is_integration_target_not_found_fault(&self) -> bool {
414        matches!(self, Self::IntegrationTargetNotFoundFault(_))
415    }
416    /// Returns `true` if the error kind is `CreateIntegrationError::InvalidClusterStateFault`.
417    pub fn is_invalid_cluster_state_fault(&self) -> bool {
418        matches!(self, Self::InvalidClusterStateFault(_))
419    }
420    /// Returns `true` if the error kind is `CreateIntegrationError::InvalidTagFault`.
421    pub fn is_invalid_tag_fault(&self) -> bool {
422        matches!(self, Self::InvalidTagFault(_))
423    }
424    /// Returns `true` if the error kind is `CreateIntegrationError::TagLimitExceededFault`.
425    pub fn is_tag_limit_exceeded_fault(&self) -> bool {
426        matches!(self, Self::TagLimitExceededFault(_))
427    }
428    /// Returns `true` if the error kind is `CreateIntegrationError::UnsupportedOperationFault`.
429    pub fn is_unsupported_operation_fault(&self) -> bool {
430        matches!(self, Self::UnsupportedOperationFault(_))
431    }
432}
433impl ::std::error::Error for CreateIntegrationError {
434    fn source(&self) -> ::std::option::Option<&(dyn ::std::error::Error + 'static)> {
435        match self {
436            Self::IntegrationAlreadyExistsFault(_inner) => ::std::option::Option::Some(_inner),
437            Self::IntegrationConflictOperationFault(_inner) => ::std::option::Option::Some(_inner),
438            Self::IntegrationQuotaExceededFault(_inner) => ::std::option::Option::Some(_inner),
439            Self::IntegrationSourceNotFoundFault(_inner) => ::std::option::Option::Some(_inner),
440            Self::IntegrationTargetNotFoundFault(_inner) => ::std::option::Option::Some(_inner),
441            Self::InvalidClusterStateFault(_inner) => ::std::option::Option::Some(_inner),
442            Self::InvalidTagFault(_inner) => ::std::option::Option::Some(_inner),
443            Self::TagLimitExceededFault(_inner) => ::std::option::Option::Some(_inner),
444            Self::UnsupportedOperationFault(_inner) => ::std::option::Option::Some(_inner),
445            Self::Unhandled(_inner) => ::std::option::Option::Some(&*_inner.source),
446        }
447    }
448}
449impl ::std::fmt::Display for CreateIntegrationError {
450    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
451        match self {
452            Self::IntegrationAlreadyExistsFault(_inner) => _inner.fmt(f),
453            Self::IntegrationConflictOperationFault(_inner) => _inner.fmt(f),
454            Self::IntegrationQuotaExceededFault(_inner) => _inner.fmt(f),
455            Self::IntegrationSourceNotFoundFault(_inner) => _inner.fmt(f),
456            Self::IntegrationTargetNotFoundFault(_inner) => _inner.fmt(f),
457            Self::InvalidClusterStateFault(_inner) => _inner.fmt(f),
458            Self::InvalidTagFault(_inner) => _inner.fmt(f),
459            Self::TagLimitExceededFault(_inner) => _inner.fmt(f),
460            Self::UnsupportedOperationFault(_inner) => _inner.fmt(f),
461            Self::Unhandled(_inner) => {
462                if let ::std::option::Option::Some(code) = ::aws_smithy_types::error::metadata::ProvideErrorMetadata::code(self) {
463                    write!(f, "unhandled error ({code})")
464                } else {
465                    f.write_str("unhandled error")
466                }
467            }
468        }
469    }
470}
471impl ::aws_smithy_types::retry::ProvideErrorKind for CreateIntegrationError {
472    fn code(&self) -> ::std::option::Option<&str> {
473        ::aws_smithy_types::error::metadata::ProvideErrorMetadata::code(self)
474    }
475    fn retryable_error_kind(&self) -> ::std::option::Option<::aws_smithy_types::retry::ErrorKind> {
476        ::std::option::Option::None
477    }
478}
479impl ::aws_smithy_types::error::metadata::ProvideErrorMetadata for CreateIntegrationError {
480    fn meta(&self) -> &::aws_smithy_types::error::ErrorMetadata {
481        match self {
482            Self::IntegrationAlreadyExistsFault(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
483            Self::IntegrationConflictOperationFault(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
484            Self::IntegrationQuotaExceededFault(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
485            Self::IntegrationSourceNotFoundFault(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
486            Self::IntegrationTargetNotFoundFault(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
487            Self::InvalidClusterStateFault(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
488            Self::InvalidTagFault(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
489            Self::TagLimitExceededFault(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
490            Self::UnsupportedOperationFault(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
491            Self::Unhandled(_inner) => &_inner.meta,
492        }
493    }
494}
495impl ::aws_smithy_runtime_api::client::result::CreateUnhandledError for CreateIntegrationError {
496    fn create_unhandled_error(
497        source: ::std::boxed::Box<dyn ::std::error::Error + ::std::marker::Send + ::std::marker::Sync + 'static>,
498        meta: ::std::option::Option<::aws_smithy_types::error::ErrorMetadata>,
499    ) -> Self {
500        Self::Unhandled(crate::error::sealed_unhandled::Unhandled {
501            source,
502            meta: meta.unwrap_or_default(),
503        })
504    }
505}
506impl ::aws_types::request_id::RequestId for crate::operation::create_integration::CreateIntegrationError {
507    fn request_id(&self) -> Option<&str> {
508        self.meta().request_id()
509    }
510}
511
512pub use crate::operation::create_integration::_create_integration_input::CreateIntegrationInput;
513
514pub use crate::operation::create_integration::_create_integration_output::CreateIntegrationOutput;
515
516mod _create_integration_input;
517
518mod _create_integration_output;
519
520/// Builders
521pub mod builders;