Skip to main content

aws_sdk_codedeploy/operation/
create_deployment.rs

1// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
2/// Orchestration and serialization glue logic for `CreateDeployment`.
3#[derive(::std::clone::Clone, ::std::default::Default, ::std::fmt::Debug)]
4#[non_exhaustive]
5pub struct CreateDeployment;
6impl CreateDeployment {
7    /// Creates a new `CreateDeployment`
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_deployment::CreateDeploymentInput,
14    ) -> ::std::result::Result<
15        crate::operation::create_deployment::CreateDeploymentOutput,
16        ::aws_smithy_runtime_api::client::result::SdkError<
17            crate::operation::create_deployment::CreateDeploymentError,
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_deployment::CreateDeploymentError>()
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_deployment::CreateDeploymentOutput>()
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_deployment::CreateDeploymentInput,
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("CodeDeploy", "CreateDeployment", 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                "CodeDeploy.CreateDeployment",
59                "rpc.service" = "CodeDeploy",
60                "rpc.method" = "CreateDeployment",
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 CreateDeployment {
88    fn config(&self) -> ::std::option::Option<::aws_smithy_types::config_bag::FrozenLayer> {
89        let mut cfg = ::aws_smithy_types::config_bag::Layer::new("CreateDeployment");
90
91        cfg.store_put(::aws_smithy_runtime_api::client::ser_de::SharedRequestSerializer::new(
92            CreateDeploymentRequestSerializer,
93        ));
94        cfg.store_put(::aws_smithy_runtime_api::client::ser_de::SharedResponseDeserializer::new(
95            CreateDeploymentResponseDeserializer,
96        ));
97
98        cfg.store_put(::aws_smithy_runtime_api::client::auth::AuthSchemeOptionResolverParams::new(
99            crate::config::auth::Params::builder()
100                .operation_name("CreateDeployment")
101                .build()
102                .expect("required fields set"),
103        ));
104
105        cfg.store_put(::aws_smithy_runtime_api::client::orchestrator::Metadata::new(
106            "CreateDeployment",
107            "CodeDeploy",
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("CreateDeployment")
129            .with_interceptor(::aws_smithy_runtime_api::client::interceptors::SharedInterceptor::permanent(
130                CreateDeploymentTelemetryInputCaptureInterceptor,
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                CreateDeploymentEndpointParamsInterceptor,
137            ))
138            .with_retry_classifier(::aws_smithy_runtime::client::retries::classifiers::TransientErrorClassifier::<
139                crate::operation::create_deployment::CreateDeploymentError,
140            >::new())
141            .with_retry_classifier(::aws_smithy_runtime::client::retries::classifiers::ModeledAsRetryableClassifier::<
142                crate::operation::create_deployment::CreateDeploymentError,
143            >::new())
144            .with_retry_classifier(::aws_runtime::retries::classifiers::AwsErrorCodeClassifier::<
145                crate::operation::create_deployment::CreateDeploymentError,
146            >::new());
147
148        ::std::borrow::Cow::Owned(rcb)
149    }
150}
151
152#[derive(Debug)]
153struct CreateDeploymentTelemetryInputCaptureInterceptor;
154
155#[::aws_smithy_runtime_api::client::interceptors::dyn_dispatch_hint]
156impl ::aws_smithy_runtime_api::client::interceptors::Intercept for CreateDeploymentTelemetryInputCaptureInterceptor {
157    fn name(&self) -> &'static str {
158        "CreateDeploymentTelemetryInputCaptureInterceptor"
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::<CreateDeploymentInput>() 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("applicationName") {
186            if let ::std::option::Option::Some(value) = input.application_name.as_deref() {
187                captured.insert("applicationName", value);
188            }
189        }
190        if requested.should_capture("deploymentGroupName") {
191            if let ::std::option::Option::Some(value) = input.deployment_group_name.as_deref() {
192                captured.insert("deploymentGroupName", value);
193            }
194        }
195        if requested.should_capture("deploymentConfigName") {
196            if let ::std::option::Option::Some(value) = input.deployment_config_name.as_deref() {
197                captured.insert("deploymentConfigName", value);
198            }
199        }
200        if requested.should_capture("description") {
201            if let ::std::option::Option::Some(value) = input.description.as_deref() {
202                captured.insert("description", value);
203            }
204        }
205
206        cfg.interceptor_state().store_put(captured);
207        ::std::result::Result::Ok(())
208    }
209}
210#[derive(Debug)]
211struct CreateDeploymentResponseDeserializer;
212impl ::aws_smithy_runtime_api::client::ser_de::DeserializeResponse for CreateDeploymentResponseDeserializer {
213    fn deserialize_nonstreaming_with_config(
214        &self,
215        response: &::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
216        _cfg: &::aws_smithy_types::config_bag::ConfigBag,
217    ) -> ::aws_smithy_runtime_api::client::interceptors::context::OutputOrError {
218        let (success, status) = (response.status().is_success(), response.status().as_u16());
219        let headers = response.headers();
220        let body = response.body().bytes().expect("body loaded");
221        #[allow(unused_mut)]
222        let mut force_error = false;
223        ::tracing::debug!(request_id = ?::aws_types::request_id::RequestId::request_id(response));
224        let parse_result = if !success && status != 200 || force_error {
225            crate::protocol_serde::shape_create_deployment::de_create_deployment_http_error(status, headers, body)
226        } else {
227            crate::protocol_serde::shape_create_deployment::de_create_deployment_http_response(status, headers, body)
228        };
229        crate::protocol_serde::type_erase_result(parse_result)
230    }
231}
232#[derive(Debug)]
233struct CreateDeploymentRequestSerializer;
234impl ::aws_smithy_runtime_api::client::ser_de::SerializeRequest for CreateDeploymentRequestSerializer {
235    #[allow(unused_mut, clippy::let_and_return, clippy::needless_borrow, clippy::useless_conversion)]
236    fn serialize_input(
237        &self,
238        input: ::aws_smithy_runtime_api::client::interceptors::context::Input,
239        _cfg: &mut ::aws_smithy_types::config_bag::ConfigBag,
240    ) -> ::std::result::Result<::aws_smithy_runtime_api::client::orchestrator::HttpRequest, ::aws_smithy_runtime_api::box_error::BoxError> {
241        let input = input
242            .downcast::<crate::operation::create_deployment::CreateDeploymentInput>()
243            .expect("correct type");
244        let _header_serialization_settings = _cfg
245            .load::<crate::serialization_settings::HeaderSerializationSettings>()
246            .cloned()
247            .unwrap_or_default();
248        let mut request_builder = {
249            #[allow(clippy::uninlined_format_args)]
250            fn uri_base(
251                _input: &crate::operation::create_deployment::CreateDeploymentInput,
252                output: &mut ::std::string::String,
253            ) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
254                use ::std::fmt::Write as _;
255                ::std::write!(output, "/").expect("formatting should succeed");
256                ::std::result::Result::Ok(())
257            }
258            #[allow(clippy::unnecessary_wraps)]
259            fn update_http_builder(
260                input: &crate::operation::create_deployment::CreateDeploymentInput,
261                builder: ::http_1x::request::Builder,
262            ) -> ::std::result::Result<::http_1x::request::Builder, ::aws_smithy_types::error::operation::BuildError> {
263                let mut uri = ::std::string::String::new();
264                uri_base(input, &mut uri)?;
265                ::std::result::Result::Ok(builder.method("POST").uri(uri))
266            }
267            let mut builder = update_http_builder(&input, ::http_1x::request::Builder::new())?;
268            builder = _header_serialization_settings.set_default_header(builder, ::http_1x::header::CONTENT_TYPE, "application/x-amz-json-1.1");
269            builder = _header_serialization_settings.set_default_header(
270                builder,
271                ::http_1x::header::HeaderName::from_static("x-amz-target"),
272                "CodeDeploy_20141006.CreateDeployment",
273            );
274            builder
275        };
276        let body = ::aws_smithy_types::body::SdkBody::from(crate::protocol_serde::shape_create_deployment::ser_create_deployment_input(&input)?);
277        if let Some(content_length) = body.content_length() {
278            let content_length = content_length.to_string();
279            request_builder = _header_serialization_settings.set_default_header(request_builder, ::http_1x::header::CONTENT_LENGTH, &content_length);
280        }
281        ::std::result::Result::Ok(request_builder.body(body).expect("valid request").try_into().unwrap())
282    }
283}
284#[derive(Debug)]
285struct CreateDeploymentEndpointParamsInterceptor;
286
287#[::aws_smithy_runtime_api::client::interceptors::dyn_dispatch_hint]
288impl ::aws_smithy_runtime_api::client::interceptors::Intercept for CreateDeploymentEndpointParamsInterceptor {
289    fn name(&self) -> &'static str {
290        "CreateDeploymentEndpointParamsInterceptor"
291    }
292
293    fn read_before_execution(
294        &self,
295        context: &::aws_smithy_runtime_api::client::interceptors::context::BeforeSerializationInterceptorContextRef<
296            '_,
297            ::aws_smithy_runtime_api::client::interceptors::context::Input,
298            ::aws_smithy_runtime_api::client::interceptors::context::Output,
299            ::aws_smithy_runtime_api::client::interceptors::context::Error,
300        >,
301        cfg: &mut ::aws_smithy_types::config_bag::ConfigBag,
302    ) -> ::std::result::Result<(), ::aws_smithy_runtime_api::box_error::BoxError> {
303        let _input = context
304            .input()
305            .downcast_ref::<CreateDeploymentInput>()
306            .ok_or("failed to downcast to CreateDeploymentInput")?;
307
308        let params = crate::config::endpoint::Params::builder()
309            .set_region(cfg.load::<::aws_types::region::Region>().map(|r| r.as_ref().to_owned()))
310            .set_use_dual_stack(cfg.load::<::aws_types::endpoint_config::UseDualStack>().map(|ty| ty.0))
311            .set_use_fips(cfg.load::<::aws_types::endpoint_config::UseFips>().map(|ty| ty.0))
312            .set_endpoint(cfg.load::<::aws_types::endpoint_config::EndpointUrl>().map(|ty| ty.0.clone()))
313            .build()
314            .map_err(|err| {
315                ::aws_smithy_runtime_api::client::interceptors::error::ContextAttachedError::new("endpoint params could not be built", err)
316            })?;
317        cfg.interceptor_state()
318            .store_put(::aws_smithy_runtime_api::client::endpoint::EndpointResolverParams::new(params));
319        ::std::result::Result::Ok(())
320    }
321}
322
323// The get_* functions below are generated from JMESPath expressions in the
324// operationContextParams trait. They target the operation's input shape.
325
326/// Error type for the `CreateDeploymentError` operation.
327#[non_exhaustive]
328#[derive(::std::fmt::Debug)]
329pub enum CreateDeploymentError {
330    /// <p>The maximum number of alarms for a deployment group (10) was exceeded.</p>
331    AlarmsLimitExceededException(crate::types::error::AlarmsLimitExceededException),
332    /// <p>The application does not exist with the user or Amazon Web Services account.</p>
333    ApplicationDoesNotExistException(crate::types::error::ApplicationDoesNotExistException),
334    /// <p>The minimum number of required application names was not specified.</p>
335    ApplicationNameRequiredException(crate::types::error::ApplicationNameRequiredException),
336    /// <p>The deployment configuration does not exist with the user or Amazon Web Services account.</p>
337    DeploymentConfigDoesNotExistException(crate::types::error::DeploymentConfigDoesNotExistException),
338    /// <p>The named deployment group with the user or Amazon Web Services account does not exist.</p>
339    DeploymentGroupDoesNotExistException(crate::types::error::DeploymentGroupDoesNotExistException),
340    /// <p>The deployment group name was not specified.</p>
341    DeploymentGroupNameRequiredException(crate::types::error::DeploymentGroupNameRequiredException),
342    /// <p>The number of allowed deployments was exceeded.</p>
343    DeploymentLimitExceededException(crate::types::error::DeploymentLimitExceededException),
344    /// <p>The description is too long.</p>
345    DescriptionTooLongException(crate::types::error::DescriptionTooLongException),
346    /// <p>The format of the alarm configuration is invalid. Possible causes include:</p>
347    /// <ul>
348    /// <li>
349    /// <p>The alarm list is null.</p></li>
350    /// <li>
351    /// <p>The alarm object is null.</p></li>
352    /// <li>
353    /// <p>The alarm name is empty or null or exceeds the limit of 255 characters.</p></li>
354    /// <li>
355    /// <p>Two alarms with the same name have been specified.</p></li>
356    /// <li>
357    /// <p>The alarm configuration is enabled, but the alarm list is empty.</p></li>
358    /// </ul>
359    InvalidAlarmConfigException(crate::types::error::InvalidAlarmConfigException),
360    /// <p>The application name was specified in an invalid format.</p>
361    InvalidApplicationNameException(crate::types::error::InvalidApplicationNameException),
362    /// <p>The automatic rollback configuration was specified in an invalid format. For example, automatic rollback is enabled, but an invalid triggering event type or no event types were listed.</p>
363    InvalidAutoRollbackConfigException(crate::types::error::InvalidAutoRollbackConfigException),
364    /// <p>The Auto Scaling group was specified in an invalid format or does not exist.</p>
365    InvalidAutoScalingGroupException(crate::types::error::InvalidAutoScalingGroupException),
366    /// <p>The computePlatform is invalid. The computePlatform should be <code>Lambda</code>, <code>Server</code>, or <code>ECS</code>.</p>
367    InvalidComputePlatformException(crate::types::error::InvalidComputePlatformException),
368    /// <p>The deployment configuration name was specified in an invalid format.</p>
369    InvalidDeploymentConfigNameException(crate::types::error::InvalidDeploymentConfigNameException),
370    /// <p>The deployment group name was specified in an invalid format.</p>
371    InvalidDeploymentGroupNameException(crate::types::error::InvalidDeploymentGroupNameException),
372    /// <p>The Amazon ECS service identifier is not valid.</p>
373    InvalidEcsServiceException(crate::types::error::InvalidEcsServiceException),
374    /// <p>An invalid fileExistsBehavior option was specified to determine how CodeDeploy handles files or directories that already exist in a deployment target location, but weren't part of the previous successful deployment. Valid values include "DISALLOW," "OVERWRITE," and "RETAIN."</p>
375    InvalidFileExistsBehaviorException(crate::types::error::InvalidFileExistsBehaviorException),
376    /// <p>The GitHub token is not valid.</p>
377    InvalidGitHubAccountTokenException(crate::types::error::InvalidGitHubAccountTokenException),
378    /// <p>The IgnoreApplicationStopFailures value is invalid. For Lambda deployments, <code>false</code> is expected. For EC2/On-premises deployments, <code>true</code> or <code>false</code> is expected.</p>
379    InvalidIgnoreApplicationStopFailuresValueException(crate::types::error::InvalidIgnoreApplicationStopFailuresValueException),
380    /// <p>The input was specified in an invalid format.</p>
381    InvalidInputException(crate::types::error::InvalidInputException),
382    /// <p>An invalid load balancer name, or no load balancer name, was specified.</p>
383    InvalidLoadBalancerInfoException(crate::types::error::InvalidLoadBalancerInfoException),
384    /// <p>The revision was specified in an invalid format.</p>
385    InvalidRevisionException(crate::types::error::InvalidRevisionException),
386    /// <p>The service role ARN was specified in an invalid format. Or, if an Auto Scaling group was specified, the specified service role does not grant the appropriate permissions to Amazon EC2 Auto Scaling.</p>
387    InvalidRoleException(crate::types::error::InvalidRoleException),
388    /// <p>The target instance configuration is invalid. Possible causes include:</p>
389    /// <ul>
390    /// <li>
391    /// <p>Configuration data for target instances was entered for an in-place deployment.</p></li>
392    /// <li>
393    /// <p>The limit of 10 tags for a tag type was exceeded.</p></li>
394    /// <li>
395    /// <p>The combined length of the tag names exceeded the limit.</p></li>
396    /// <li>
397    /// <p>A specified tag is not currently applied to any instances.</p></li>
398    /// </ul>
399    InvalidTargetInstancesException(crate::types::error::InvalidTargetInstancesException),
400    /// <p>The configuration that specifies how traffic is routed during a deployment is invalid.</p>
401    InvalidTrafficRoutingConfigurationException(crate::types::error::InvalidTrafficRoutingConfigurationException),
402    /// <p>The UpdateOutdatedInstancesOnly value is invalid. For Lambda deployments, <code>false</code> is expected. For EC2/On-premises deployments, <code>true</code> or <code>false</code> is expected.</p>
403    InvalidUpdateOutdatedInstancesOnlyValueException(crate::types::error::InvalidUpdateOutdatedInstancesOnlyValueException),
404    /// <p>The named revision does not exist with the user or Amazon Web Services account.</p>
405    RevisionDoesNotExistException(crate::types::error::RevisionDoesNotExistException),
406    /// <p>The revision ID was not specified.</p>
407    RevisionRequiredException(crate::types::error::RevisionRequiredException),
408    /// <p>An API function was called too frequently.</p>
409    ThrottlingException(crate::types::error::ThrottlingException),
410    /// An unexpected error occurred (e.g., invalid JSON returned by the service or an unknown error code).
411    #[deprecated(note = "Matching `Unhandled` directly is not forwards compatible. Instead, match using a \
412    variable wildcard pattern and check `.code()`:
413     \
414    &nbsp;&nbsp;&nbsp;`err if err.code() == Some(\"SpecificExceptionCode\") => { /* handle the error */ }`
415     \
416    See [`ProvideErrorMetadata`](#impl-ProvideErrorMetadata-for-CreateDeploymentError) for what information is available for the error.")]
417    Unhandled(crate::error::sealed_unhandled::Unhandled),
418}
419impl CreateDeploymentError {
420    /// Creates the `CreateDeploymentError::Unhandled` variant from any error type.
421    pub fn unhandled(
422        err: impl ::std::convert::Into<::std::boxed::Box<dyn ::std::error::Error + ::std::marker::Send + ::std::marker::Sync + 'static>>,
423    ) -> Self {
424        Self::Unhandled(crate::error::sealed_unhandled::Unhandled {
425            source: err.into(),
426            meta: ::std::default::Default::default(),
427        })
428    }
429
430    /// Creates the `CreateDeploymentError::Unhandled` variant from an [`ErrorMetadata`](::aws_smithy_types::error::ErrorMetadata).
431    pub fn generic(err: ::aws_smithy_types::error::ErrorMetadata) -> Self {
432        Self::Unhandled(crate::error::sealed_unhandled::Unhandled {
433            source: err.clone().into(),
434            meta: err,
435        })
436    }
437    ///
438    /// Returns error metadata, which includes the error code, message,
439    /// request ID, and potentially additional information.
440    ///
441    pub fn meta(&self) -> &::aws_smithy_types::error::ErrorMetadata {
442        match self {
443            Self::AlarmsLimitExceededException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
444            Self::ApplicationDoesNotExistException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
445            Self::ApplicationNameRequiredException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
446            Self::DeploymentConfigDoesNotExistException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
447            Self::DeploymentGroupDoesNotExistException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
448            Self::DeploymentGroupNameRequiredException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
449            Self::DeploymentLimitExceededException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
450            Self::DescriptionTooLongException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
451            Self::InvalidAlarmConfigException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
452            Self::InvalidApplicationNameException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
453            Self::InvalidAutoRollbackConfigException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
454            Self::InvalidAutoScalingGroupException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
455            Self::InvalidComputePlatformException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
456            Self::InvalidDeploymentConfigNameException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
457            Self::InvalidDeploymentGroupNameException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
458            Self::InvalidEcsServiceException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
459            Self::InvalidFileExistsBehaviorException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
460            Self::InvalidGitHubAccountTokenException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
461            Self::InvalidIgnoreApplicationStopFailuresValueException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
462            Self::InvalidInputException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
463            Self::InvalidLoadBalancerInfoException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
464            Self::InvalidRevisionException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
465            Self::InvalidRoleException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
466            Self::InvalidTargetInstancesException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
467            Self::InvalidTrafficRoutingConfigurationException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
468            Self::InvalidUpdateOutdatedInstancesOnlyValueException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
469            Self::RevisionDoesNotExistException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
470            Self::RevisionRequiredException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
471            Self::ThrottlingException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
472            Self::Unhandled(e) => &e.meta,
473        }
474    }
475    /// Returns `true` if the error kind is `CreateDeploymentError::AlarmsLimitExceededException`.
476    pub fn is_alarms_limit_exceeded_exception(&self) -> bool {
477        matches!(self, Self::AlarmsLimitExceededException(_))
478    }
479    /// Returns `true` if the error kind is `CreateDeploymentError::ApplicationDoesNotExistException`.
480    pub fn is_application_does_not_exist_exception(&self) -> bool {
481        matches!(self, Self::ApplicationDoesNotExistException(_))
482    }
483    /// Returns `true` if the error kind is `CreateDeploymentError::ApplicationNameRequiredException`.
484    pub fn is_application_name_required_exception(&self) -> bool {
485        matches!(self, Self::ApplicationNameRequiredException(_))
486    }
487    /// Returns `true` if the error kind is `CreateDeploymentError::DeploymentConfigDoesNotExistException`.
488    pub fn is_deployment_config_does_not_exist_exception(&self) -> bool {
489        matches!(self, Self::DeploymentConfigDoesNotExistException(_))
490    }
491    /// Returns `true` if the error kind is `CreateDeploymentError::DeploymentGroupDoesNotExistException`.
492    pub fn is_deployment_group_does_not_exist_exception(&self) -> bool {
493        matches!(self, Self::DeploymentGroupDoesNotExistException(_))
494    }
495    /// Returns `true` if the error kind is `CreateDeploymentError::DeploymentGroupNameRequiredException`.
496    pub fn is_deployment_group_name_required_exception(&self) -> bool {
497        matches!(self, Self::DeploymentGroupNameRequiredException(_))
498    }
499    /// Returns `true` if the error kind is `CreateDeploymentError::DeploymentLimitExceededException`.
500    pub fn is_deployment_limit_exceeded_exception(&self) -> bool {
501        matches!(self, Self::DeploymentLimitExceededException(_))
502    }
503    /// Returns `true` if the error kind is `CreateDeploymentError::DescriptionTooLongException`.
504    pub fn is_description_too_long_exception(&self) -> bool {
505        matches!(self, Self::DescriptionTooLongException(_))
506    }
507    /// Returns `true` if the error kind is `CreateDeploymentError::InvalidAlarmConfigException`.
508    pub fn is_invalid_alarm_config_exception(&self) -> bool {
509        matches!(self, Self::InvalidAlarmConfigException(_))
510    }
511    /// Returns `true` if the error kind is `CreateDeploymentError::InvalidApplicationNameException`.
512    pub fn is_invalid_application_name_exception(&self) -> bool {
513        matches!(self, Self::InvalidApplicationNameException(_))
514    }
515    /// Returns `true` if the error kind is `CreateDeploymentError::InvalidAutoRollbackConfigException`.
516    pub fn is_invalid_auto_rollback_config_exception(&self) -> bool {
517        matches!(self, Self::InvalidAutoRollbackConfigException(_))
518    }
519    /// Returns `true` if the error kind is `CreateDeploymentError::InvalidAutoScalingGroupException`.
520    pub fn is_invalid_auto_scaling_group_exception(&self) -> bool {
521        matches!(self, Self::InvalidAutoScalingGroupException(_))
522    }
523    /// Returns `true` if the error kind is `CreateDeploymentError::InvalidComputePlatformException`.
524    pub fn is_invalid_compute_platform_exception(&self) -> bool {
525        matches!(self, Self::InvalidComputePlatformException(_))
526    }
527    /// Returns `true` if the error kind is `CreateDeploymentError::InvalidDeploymentConfigNameException`.
528    pub fn is_invalid_deployment_config_name_exception(&self) -> bool {
529        matches!(self, Self::InvalidDeploymentConfigNameException(_))
530    }
531    /// Returns `true` if the error kind is `CreateDeploymentError::InvalidDeploymentGroupNameException`.
532    pub fn is_invalid_deployment_group_name_exception(&self) -> bool {
533        matches!(self, Self::InvalidDeploymentGroupNameException(_))
534    }
535    /// Returns `true` if the error kind is `CreateDeploymentError::InvalidEcsServiceException`.
536    pub fn is_invalid_ecs_service_exception(&self) -> bool {
537        matches!(self, Self::InvalidEcsServiceException(_))
538    }
539    /// Returns `true` if the error kind is `CreateDeploymentError::InvalidFileExistsBehaviorException`.
540    pub fn is_invalid_file_exists_behavior_exception(&self) -> bool {
541        matches!(self, Self::InvalidFileExistsBehaviorException(_))
542    }
543    /// Returns `true` if the error kind is `CreateDeploymentError::InvalidGitHubAccountTokenException`.
544    pub fn is_invalid_git_hub_account_token_exception(&self) -> bool {
545        matches!(self, Self::InvalidGitHubAccountTokenException(_))
546    }
547    /// Returns `true` if the error kind is `CreateDeploymentError::InvalidIgnoreApplicationStopFailuresValueException`.
548    pub fn is_invalid_ignore_application_stop_failures_value_exception(&self) -> bool {
549        matches!(self, Self::InvalidIgnoreApplicationStopFailuresValueException(_))
550    }
551    /// Returns `true` if the error kind is `CreateDeploymentError::InvalidInputException`.
552    pub fn is_invalid_input_exception(&self) -> bool {
553        matches!(self, Self::InvalidInputException(_))
554    }
555    /// Returns `true` if the error kind is `CreateDeploymentError::InvalidLoadBalancerInfoException`.
556    pub fn is_invalid_load_balancer_info_exception(&self) -> bool {
557        matches!(self, Self::InvalidLoadBalancerInfoException(_))
558    }
559    /// Returns `true` if the error kind is `CreateDeploymentError::InvalidRevisionException`.
560    pub fn is_invalid_revision_exception(&self) -> bool {
561        matches!(self, Self::InvalidRevisionException(_))
562    }
563    /// Returns `true` if the error kind is `CreateDeploymentError::InvalidRoleException`.
564    pub fn is_invalid_role_exception(&self) -> bool {
565        matches!(self, Self::InvalidRoleException(_))
566    }
567    /// Returns `true` if the error kind is `CreateDeploymentError::InvalidTargetInstancesException`.
568    pub fn is_invalid_target_instances_exception(&self) -> bool {
569        matches!(self, Self::InvalidTargetInstancesException(_))
570    }
571    /// Returns `true` if the error kind is `CreateDeploymentError::InvalidTrafficRoutingConfigurationException`.
572    pub fn is_invalid_traffic_routing_configuration_exception(&self) -> bool {
573        matches!(self, Self::InvalidTrafficRoutingConfigurationException(_))
574    }
575    /// Returns `true` if the error kind is `CreateDeploymentError::InvalidUpdateOutdatedInstancesOnlyValueException`.
576    pub fn is_invalid_update_outdated_instances_only_value_exception(&self) -> bool {
577        matches!(self, Self::InvalidUpdateOutdatedInstancesOnlyValueException(_))
578    }
579    /// Returns `true` if the error kind is `CreateDeploymentError::RevisionDoesNotExistException`.
580    pub fn is_revision_does_not_exist_exception(&self) -> bool {
581        matches!(self, Self::RevisionDoesNotExistException(_))
582    }
583    /// Returns `true` if the error kind is `CreateDeploymentError::RevisionRequiredException`.
584    pub fn is_revision_required_exception(&self) -> bool {
585        matches!(self, Self::RevisionRequiredException(_))
586    }
587    /// Returns `true` if the error kind is `CreateDeploymentError::ThrottlingException`.
588    pub fn is_throttling_exception(&self) -> bool {
589        matches!(self, Self::ThrottlingException(_))
590    }
591}
592impl ::std::error::Error for CreateDeploymentError {
593    fn source(&self) -> ::std::option::Option<&(dyn ::std::error::Error + 'static)> {
594        match self {
595            Self::AlarmsLimitExceededException(_inner) => ::std::option::Option::Some(_inner),
596            Self::ApplicationDoesNotExistException(_inner) => ::std::option::Option::Some(_inner),
597            Self::ApplicationNameRequiredException(_inner) => ::std::option::Option::Some(_inner),
598            Self::DeploymentConfigDoesNotExistException(_inner) => ::std::option::Option::Some(_inner),
599            Self::DeploymentGroupDoesNotExistException(_inner) => ::std::option::Option::Some(_inner),
600            Self::DeploymentGroupNameRequiredException(_inner) => ::std::option::Option::Some(_inner),
601            Self::DeploymentLimitExceededException(_inner) => ::std::option::Option::Some(_inner),
602            Self::DescriptionTooLongException(_inner) => ::std::option::Option::Some(_inner),
603            Self::InvalidAlarmConfigException(_inner) => ::std::option::Option::Some(_inner),
604            Self::InvalidApplicationNameException(_inner) => ::std::option::Option::Some(_inner),
605            Self::InvalidAutoRollbackConfigException(_inner) => ::std::option::Option::Some(_inner),
606            Self::InvalidAutoScalingGroupException(_inner) => ::std::option::Option::Some(_inner),
607            Self::InvalidComputePlatformException(_inner) => ::std::option::Option::Some(_inner),
608            Self::InvalidDeploymentConfigNameException(_inner) => ::std::option::Option::Some(_inner),
609            Self::InvalidDeploymentGroupNameException(_inner) => ::std::option::Option::Some(_inner),
610            Self::InvalidEcsServiceException(_inner) => ::std::option::Option::Some(_inner),
611            Self::InvalidFileExistsBehaviorException(_inner) => ::std::option::Option::Some(_inner),
612            Self::InvalidGitHubAccountTokenException(_inner) => ::std::option::Option::Some(_inner),
613            Self::InvalidIgnoreApplicationStopFailuresValueException(_inner) => ::std::option::Option::Some(_inner),
614            Self::InvalidInputException(_inner) => ::std::option::Option::Some(_inner),
615            Self::InvalidLoadBalancerInfoException(_inner) => ::std::option::Option::Some(_inner),
616            Self::InvalidRevisionException(_inner) => ::std::option::Option::Some(_inner),
617            Self::InvalidRoleException(_inner) => ::std::option::Option::Some(_inner),
618            Self::InvalidTargetInstancesException(_inner) => ::std::option::Option::Some(_inner),
619            Self::InvalidTrafficRoutingConfigurationException(_inner) => ::std::option::Option::Some(_inner),
620            Self::InvalidUpdateOutdatedInstancesOnlyValueException(_inner) => ::std::option::Option::Some(_inner),
621            Self::RevisionDoesNotExistException(_inner) => ::std::option::Option::Some(_inner),
622            Self::RevisionRequiredException(_inner) => ::std::option::Option::Some(_inner),
623            Self::ThrottlingException(_inner) => ::std::option::Option::Some(_inner),
624            Self::Unhandled(_inner) => ::std::option::Option::Some(&*_inner.source),
625        }
626    }
627}
628impl ::std::fmt::Display for CreateDeploymentError {
629    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
630        match self {
631            Self::AlarmsLimitExceededException(_inner) => _inner.fmt(f),
632            Self::ApplicationDoesNotExistException(_inner) => _inner.fmt(f),
633            Self::ApplicationNameRequiredException(_inner) => _inner.fmt(f),
634            Self::DeploymentConfigDoesNotExistException(_inner) => _inner.fmt(f),
635            Self::DeploymentGroupDoesNotExistException(_inner) => _inner.fmt(f),
636            Self::DeploymentGroupNameRequiredException(_inner) => _inner.fmt(f),
637            Self::DeploymentLimitExceededException(_inner) => _inner.fmt(f),
638            Self::DescriptionTooLongException(_inner) => _inner.fmt(f),
639            Self::InvalidAlarmConfigException(_inner) => _inner.fmt(f),
640            Self::InvalidApplicationNameException(_inner) => _inner.fmt(f),
641            Self::InvalidAutoRollbackConfigException(_inner) => _inner.fmt(f),
642            Self::InvalidAutoScalingGroupException(_inner) => _inner.fmt(f),
643            Self::InvalidComputePlatformException(_inner) => _inner.fmt(f),
644            Self::InvalidDeploymentConfigNameException(_inner) => _inner.fmt(f),
645            Self::InvalidDeploymentGroupNameException(_inner) => _inner.fmt(f),
646            Self::InvalidEcsServiceException(_inner) => _inner.fmt(f),
647            Self::InvalidFileExistsBehaviorException(_inner) => _inner.fmt(f),
648            Self::InvalidGitHubAccountTokenException(_inner) => _inner.fmt(f),
649            Self::InvalidIgnoreApplicationStopFailuresValueException(_inner) => _inner.fmt(f),
650            Self::InvalidInputException(_inner) => _inner.fmt(f),
651            Self::InvalidLoadBalancerInfoException(_inner) => _inner.fmt(f),
652            Self::InvalidRevisionException(_inner) => _inner.fmt(f),
653            Self::InvalidRoleException(_inner) => _inner.fmt(f),
654            Self::InvalidTargetInstancesException(_inner) => _inner.fmt(f),
655            Self::InvalidTrafficRoutingConfigurationException(_inner) => _inner.fmt(f),
656            Self::InvalidUpdateOutdatedInstancesOnlyValueException(_inner) => _inner.fmt(f),
657            Self::RevisionDoesNotExistException(_inner) => _inner.fmt(f),
658            Self::RevisionRequiredException(_inner) => _inner.fmt(f),
659            Self::ThrottlingException(_inner) => _inner.fmt(f),
660            Self::Unhandled(_inner) => {
661                if let ::std::option::Option::Some(code) = ::aws_smithy_types::error::metadata::ProvideErrorMetadata::code(self) {
662                    write!(f, "unhandled error ({code})")
663                } else {
664                    f.write_str("unhandled error")
665                }
666            }
667        }
668    }
669}
670impl ::aws_smithy_types::retry::ProvideErrorKind for CreateDeploymentError {
671    fn code(&self) -> ::std::option::Option<&str> {
672        ::aws_smithy_types::error::metadata::ProvideErrorMetadata::code(self)
673    }
674    fn retryable_error_kind(&self) -> ::std::option::Option<::aws_smithy_types::retry::ErrorKind> {
675        ::std::option::Option::None
676    }
677}
678impl ::aws_smithy_types::error::metadata::ProvideErrorMetadata for CreateDeploymentError {
679    fn meta(&self) -> &::aws_smithy_types::error::ErrorMetadata {
680        match self {
681            Self::AlarmsLimitExceededException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
682            Self::ApplicationDoesNotExistException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
683            Self::ApplicationNameRequiredException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
684            Self::DeploymentConfigDoesNotExistException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
685            Self::DeploymentGroupDoesNotExistException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
686            Self::DeploymentGroupNameRequiredException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
687            Self::DeploymentLimitExceededException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
688            Self::DescriptionTooLongException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
689            Self::InvalidAlarmConfigException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
690            Self::InvalidApplicationNameException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
691            Self::InvalidAutoRollbackConfigException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
692            Self::InvalidAutoScalingGroupException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
693            Self::InvalidComputePlatformException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
694            Self::InvalidDeploymentConfigNameException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
695            Self::InvalidDeploymentGroupNameException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
696            Self::InvalidEcsServiceException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
697            Self::InvalidFileExistsBehaviorException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
698            Self::InvalidGitHubAccountTokenException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
699            Self::InvalidIgnoreApplicationStopFailuresValueException(_inner) => {
700                ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner)
701            }
702            Self::InvalidInputException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
703            Self::InvalidLoadBalancerInfoException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
704            Self::InvalidRevisionException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
705            Self::InvalidRoleException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
706            Self::InvalidTargetInstancesException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
707            Self::InvalidTrafficRoutingConfigurationException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
708            Self::InvalidUpdateOutdatedInstancesOnlyValueException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
709            Self::RevisionDoesNotExistException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
710            Self::RevisionRequiredException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
711            Self::ThrottlingException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
712            Self::Unhandled(_inner) => &_inner.meta,
713        }
714    }
715}
716impl ::aws_smithy_runtime_api::client::result::CreateUnhandledError for CreateDeploymentError {
717    fn create_unhandled_error(
718        source: ::std::boxed::Box<dyn ::std::error::Error + ::std::marker::Send + ::std::marker::Sync + 'static>,
719        meta: ::std::option::Option<::aws_smithy_types::error::ErrorMetadata>,
720    ) -> Self {
721        Self::Unhandled(crate::error::sealed_unhandled::Unhandled {
722            source,
723            meta: meta.unwrap_or_default(),
724        })
725    }
726}
727impl ::aws_types::request_id::RequestId for crate::operation::create_deployment::CreateDeploymentError {
728    fn request_id(&self) -> Option<&str> {
729        self.meta().request_id()
730    }
731}
732
733pub use crate::operation::create_deployment::_create_deployment_input::CreateDeploymentInput;
734
735pub use crate::operation::create_deployment::_create_deployment_output::CreateDeploymentOutput;
736
737mod _create_deployment_input;
738
739mod _create_deployment_output;
740
741/// Builders
742pub mod builders;