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        use ::tracing::Instrument;
31        let context = Self::orchestrate_with_stop_point(runtime_plugins, input, ::aws_smithy_runtime::client::orchestrator::StopPoint::None)
32            // Create a parent span for the entire operation. Includes a random, internal-only,
33            // seven-digit ID for the operation orchestration so that it can be correlated in the logs.
34            .instrument(::tracing::debug_span!(
35                "codedeploy.CreateDeployment",
36                "rpc.service" = "codedeploy",
37                "rpc.method" = "CreateDeployment",
38                "sdk_invocation_id" = ::fastrand::u32(1_000_000..10_000_000),
39                "rpc.system" = "aws-api",
40            ))
41            .await
42            .map_err(map_err)?;
43        let output = context.finalize().map_err(map_err)?;
44        ::std::result::Result::Ok(
45            output
46                .downcast::<crate::operation::create_deployment::CreateDeploymentOutput>()
47                .expect("correct output type"),
48        )
49    }
50
51    pub(crate) async fn orchestrate_with_stop_point(
52        runtime_plugins: &::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugins,
53        input: crate::operation::create_deployment::CreateDeploymentInput,
54        stop_point: ::aws_smithy_runtime::client::orchestrator::StopPoint,
55    ) -> ::std::result::Result<
56        ::aws_smithy_runtime_api::client::interceptors::context::InterceptorContext,
57        ::aws_smithy_runtime_api::client::result::SdkError<
58            ::aws_smithy_runtime_api::client::interceptors::context::Error,
59            ::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
60        >,
61    > {
62        let input = ::aws_smithy_runtime_api::client::interceptors::context::Input::erase(input);
63        ::aws_smithy_runtime::client::orchestrator::invoke_with_stop_point("codedeploy", "CreateDeployment", input, runtime_plugins, stop_point).await
64    }
65
66    pub(crate) fn operation_runtime_plugins(
67        client_runtime_plugins: ::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugins,
68        client_config: &crate::config::Config,
69        config_override: ::std::option::Option<crate::config::Builder>,
70    ) -> ::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugins {
71        let mut runtime_plugins = client_runtime_plugins.with_operation_plugin(Self::new());
72        runtime_plugins = runtime_plugins.with_client_plugin(crate::auth_plugin::DefaultAuthOptionsPlugin::new(vec![
73            ::aws_runtime::auth::sigv4::SCHEME_ID,
74        ]));
75        if let ::std::option::Option::Some(config_override) = config_override {
76            for plugin in config_override.runtime_plugins.iter().cloned() {
77                runtime_plugins = runtime_plugins.with_operation_plugin(plugin);
78            }
79            runtime_plugins = runtime_plugins.with_operation_plugin(crate::config::ConfigOverrideRuntimePlugin::new(
80                config_override,
81                client_config.config.clone(),
82                &client_config.runtime_components,
83            ));
84        }
85        runtime_plugins
86    }
87}
88impl ::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugin for CreateDeployment {
89    fn config(&self) -> ::std::option::Option<::aws_smithy_types::config_bag::FrozenLayer> {
90        let mut cfg = ::aws_smithy_types::config_bag::Layer::new("CreateDeployment");
91
92        cfg.store_put(::aws_smithy_runtime_api::client::ser_de::SharedRequestSerializer::new(
93            CreateDeploymentRequestSerializer,
94        ));
95        cfg.store_put(::aws_smithy_runtime_api::client::ser_de::SharedResponseDeserializer::new(
96            CreateDeploymentResponseDeserializer,
97        ));
98
99        cfg.store_put(::aws_smithy_runtime_api::client::auth::AuthSchemeOptionResolverParams::new(
100            ::aws_smithy_runtime_api::client::auth::static_resolver::StaticAuthSchemeOptionResolverParams::new(),
101        ));
102
103        cfg.store_put(::aws_smithy_runtime_api::client::orchestrator::Metadata::new(
104            "CreateDeployment",
105            "codedeploy",
106        ));
107        let mut signing_options = ::aws_runtime::auth::SigningOptions::default();
108        signing_options.double_uri_encode = true;
109        signing_options.content_sha256_header = false;
110        signing_options.normalize_uri_path = true;
111        signing_options.payload_override = None;
112
113        cfg.store_put(::aws_runtime::auth::SigV4OperationSigningConfig {
114            signing_options,
115            ..::std::default::Default::default()
116        });
117
118        ::std::option::Option::Some(cfg.freeze())
119    }
120
121    fn runtime_components(
122        &self,
123        _: &::aws_smithy_runtime_api::client::runtime_components::RuntimeComponentsBuilder,
124    ) -> ::std::borrow::Cow<'_, ::aws_smithy_runtime_api::client::runtime_components::RuntimeComponentsBuilder> {
125        #[allow(unused_mut)]
126        let mut rcb = ::aws_smithy_runtime_api::client::runtime_components::RuntimeComponentsBuilder::new("CreateDeployment")
127            .with_interceptor(::aws_smithy_runtime::client::stalled_stream_protection::StalledStreamProtectionInterceptor::default())
128            .with_interceptor(CreateDeploymentEndpointParamsInterceptor)
129            .with_retry_classifier(::aws_smithy_runtime::client::retries::classifiers::TransientErrorClassifier::<
130                crate::operation::create_deployment::CreateDeploymentError,
131            >::new())
132            .with_retry_classifier(::aws_smithy_runtime::client::retries::classifiers::ModeledAsRetryableClassifier::<
133                crate::operation::create_deployment::CreateDeploymentError,
134            >::new())
135            .with_retry_classifier(::aws_runtime::retries::classifiers::AwsErrorCodeClassifier::<
136                crate::operation::create_deployment::CreateDeploymentError,
137            >::new());
138
139        ::std::borrow::Cow::Owned(rcb)
140    }
141}
142
143#[derive(Debug)]
144struct CreateDeploymentResponseDeserializer;
145impl ::aws_smithy_runtime_api::client::ser_de::DeserializeResponse for CreateDeploymentResponseDeserializer {
146    fn deserialize_nonstreaming(
147        &self,
148        response: &::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
149    ) -> ::aws_smithy_runtime_api::client::interceptors::context::OutputOrError {
150        let (success, status) = (response.status().is_success(), response.status().as_u16());
151        let headers = response.headers();
152        let body = response.body().bytes().expect("body loaded");
153        #[allow(unused_mut)]
154        let mut force_error = false;
155        ::tracing::debug!(request_id = ?::aws_types::request_id::RequestId::request_id(response));
156        let parse_result = if !success && status != 200 || force_error {
157            crate::protocol_serde::shape_create_deployment::de_create_deployment_http_error(status, headers, body)
158        } else {
159            crate::protocol_serde::shape_create_deployment::de_create_deployment_http_response(status, headers, body)
160        };
161        crate::protocol_serde::type_erase_result(parse_result)
162    }
163}
164#[derive(Debug)]
165struct CreateDeploymentRequestSerializer;
166impl ::aws_smithy_runtime_api::client::ser_de::SerializeRequest for CreateDeploymentRequestSerializer {
167    #[allow(unused_mut, clippy::let_and_return, clippy::needless_borrow, clippy::useless_conversion)]
168    fn serialize_input(
169        &self,
170        input: ::aws_smithy_runtime_api::client::interceptors::context::Input,
171        _cfg: &mut ::aws_smithy_types::config_bag::ConfigBag,
172    ) -> ::std::result::Result<::aws_smithy_runtime_api::client::orchestrator::HttpRequest, ::aws_smithy_runtime_api::box_error::BoxError> {
173        let input = input
174            .downcast::<crate::operation::create_deployment::CreateDeploymentInput>()
175            .expect("correct type");
176        let _header_serialization_settings = _cfg
177            .load::<crate::serialization_settings::HeaderSerializationSettings>()
178            .cloned()
179            .unwrap_or_default();
180        let mut request_builder = {
181            fn uri_base(
182                _input: &crate::operation::create_deployment::CreateDeploymentInput,
183                output: &mut ::std::string::String,
184            ) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
185                use ::std::fmt::Write as _;
186                ::std::write!(output, "/").expect("formatting should succeed");
187                ::std::result::Result::Ok(())
188            }
189            #[allow(clippy::unnecessary_wraps)]
190            fn update_http_builder(
191                input: &crate::operation::create_deployment::CreateDeploymentInput,
192                builder: ::http::request::Builder,
193            ) -> ::std::result::Result<::http::request::Builder, ::aws_smithy_types::error::operation::BuildError> {
194                let mut uri = ::std::string::String::new();
195                uri_base(input, &mut uri)?;
196                ::std::result::Result::Ok(builder.method("POST").uri(uri))
197            }
198            let mut builder = update_http_builder(&input, ::http::request::Builder::new())?;
199            builder = _header_serialization_settings.set_default_header(builder, ::http::header::CONTENT_TYPE, "application/x-amz-json-1.1");
200            builder = _header_serialization_settings.set_default_header(
201                builder,
202                ::http::header::HeaderName::from_static("x-amz-target"),
203                "CodeDeploy_20141006.CreateDeployment",
204            );
205            builder
206        };
207        let body = ::aws_smithy_types::body::SdkBody::from(crate::protocol_serde::shape_create_deployment::ser_create_deployment_input(&input)?);
208        if let Some(content_length) = body.content_length() {
209            let content_length = content_length.to_string();
210            request_builder = _header_serialization_settings.set_default_header(request_builder, ::http::header::CONTENT_LENGTH, &content_length);
211        }
212        ::std::result::Result::Ok(request_builder.body(body).expect("valid request").try_into().unwrap())
213    }
214}
215#[derive(Debug)]
216struct CreateDeploymentEndpointParamsInterceptor;
217
218impl ::aws_smithy_runtime_api::client::interceptors::Intercept for CreateDeploymentEndpointParamsInterceptor {
219    fn name(&self) -> &'static str {
220        "CreateDeploymentEndpointParamsInterceptor"
221    }
222
223    fn read_before_execution(
224        &self,
225        context: &::aws_smithy_runtime_api::client::interceptors::context::BeforeSerializationInterceptorContextRef<
226            '_,
227            ::aws_smithy_runtime_api::client::interceptors::context::Input,
228            ::aws_smithy_runtime_api::client::interceptors::context::Output,
229            ::aws_smithy_runtime_api::client::interceptors::context::Error,
230        >,
231        cfg: &mut ::aws_smithy_types::config_bag::ConfigBag,
232    ) -> ::std::result::Result<(), ::aws_smithy_runtime_api::box_error::BoxError> {
233        let _input = context
234            .input()
235            .downcast_ref::<CreateDeploymentInput>()
236            .ok_or("failed to downcast to CreateDeploymentInput")?;
237
238        let params = crate::config::endpoint::Params::builder()
239            .set_region(cfg.load::<::aws_types::region::Region>().map(|r| r.as_ref().to_owned()))
240            .set_use_dual_stack(cfg.load::<::aws_types::endpoint_config::UseDualStack>().map(|ty| ty.0))
241            .set_use_fips(cfg.load::<::aws_types::endpoint_config::UseFips>().map(|ty| ty.0))
242            .set_endpoint(cfg.load::<::aws_types::endpoint_config::EndpointUrl>().map(|ty| ty.0.clone()))
243            .build()
244            .map_err(|err| {
245                ::aws_smithy_runtime_api::client::interceptors::error::ContextAttachedError::new("endpoint params could not be built", err)
246            })?;
247        cfg.interceptor_state()
248            .store_put(::aws_smithy_runtime_api::client::endpoint::EndpointResolverParams::new(params));
249        ::std::result::Result::Ok(())
250    }
251}
252
253// The get_* functions below are generated from JMESPath expressions in the
254// operationContextParams trait. They target the operation's input shape.
255
256/// Error type for the `CreateDeploymentError` operation.
257#[non_exhaustive]
258#[derive(::std::fmt::Debug)]
259pub enum CreateDeploymentError {
260    /// <p>The maximum number of alarms for a deployment group (10) was exceeded.</p>
261    AlarmsLimitExceededException(crate::types::error::AlarmsLimitExceededException),
262    /// <p>The application does not exist with the user or Amazon Web Services account.</p>
263    ApplicationDoesNotExistException(crate::types::error::ApplicationDoesNotExistException),
264    /// <p>The minimum number of required application names was not specified.</p>
265    ApplicationNameRequiredException(crate::types::error::ApplicationNameRequiredException),
266    /// <p>The deployment configuration does not exist with the user or Amazon Web Services account.</p>
267    DeploymentConfigDoesNotExistException(crate::types::error::DeploymentConfigDoesNotExistException),
268    /// <p>The named deployment group with the user or Amazon Web Services account does not exist.</p>
269    DeploymentGroupDoesNotExistException(crate::types::error::DeploymentGroupDoesNotExistException),
270    /// <p>The deployment group name was not specified.</p>
271    DeploymentGroupNameRequiredException(crate::types::error::DeploymentGroupNameRequiredException),
272    /// <p>The number of allowed deployments was exceeded.</p>
273    DeploymentLimitExceededException(crate::types::error::DeploymentLimitExceededException),
274    /// <p>The description is too long.</p>
275    DescriptionTooLongException(crate::types::error::DescriptionTooLongException),
276    /// <p>The format of the alarm configuration is invalid. Possible causes include:</p>
277    /// <ul>
278    /// <li>
279    /// <p>The alarm list is null.</p></li>
280    /// <li>
281    /// <p>The alarm object is null.</p></li>
282    /// <li>
283    /// <p>The alarm name is empty or null or exceeds the limit of 255 characters.</p></li>
284    /// <li>
285    /// <p>Two alarms with the same name have been specified.</p></li>
286    /// <li>
287    /// <p>The alarm configuration is enabled, but the alarm list is empty.</p></li>
288    /// </ul>
289    InvalidAlarmConfigException(crate::types::error::InvalidAlarmConfigException),
290    /// <p>The application name was specified in an invalid format.</p>
291    InvalidApplicationNameException(crate::types::error::InvalidApplicationNameException),
292    /// <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>
293    InvalidAutoRollbackConfigException(crate::types::error::InvalidAutoRollbackConfigException),
294    /// <p>The Auto Scaling group was specified in an invalid format or does not exist.</p>
295    InvalidAutoScalingGroupException(crate::types::error::InvalidAutoScalingGroupException),
296    /// <p>The deployment configuration name was specified in an invalid format.</p>
297    InvalidDeploymentConfigNameException(crate::types::error::InvalidDeploymentConfigNameException),
298    /// <p>The deployment group name was specified in an invalid format.</p>
299    InvalidDeploymentGroupNameException(crate::types::error::InvalidDeploymentGroupNameException),
300    /// <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>
301    InvalidFileExistsBehaviorException(crate::types::error::InvalidFileExistsBehaviorException),
302    /// <p>The GitHub token is not valid.</p>
303    InvalidGitHubAccountTokenException(crate::types::error::InvalidGitHubAccountTokenException),
304    /// <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>
305    InvalidIgnoreApplicationStopFailuresValueException(crate::types::error::InvalidIgnoreApplicationStopFailuresValueException),
306    /// <p>An invalid load balancer name, or no load balancer name, was specified.</p>
307    InvalidLoadBalancerInfoException(crate::types::error::InvalidLoadBalancerInfoException),
308    /// <p>The revision was specified in an invalid format.</p>
309    InvalidRevisionException(crate::types::error::InvalidRevisionException),
310    /// <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>
311    InvalidRoleException(crate::types::error::InvalidRoleException),
312    /// <p>The target instance configuration is invalid. Possible causes include:</p>
313    /// <ul>
314    /// <li>
315    /// <p>Configuration data for target instances was entered for an in-place deployment.</p></li>
316    /// <li>
317    /// <p>The limit of 10 tags for a tag type was exceeded.</p></li>
318    /// <li>
319    /// <p>The combined length of the tag names exceeded the limit.</p></li>
320    /// <li>
321    /// <p>A specified tag is not currently applied to any instances.</p></li>
322    /// </ul>
323    InvalidTargetInstancesException(crate::types::error::InvalidTargetInstancesException),
324    /// <p>The configuration that specifies how traffic is routed during a deployment is invalid.</p>
325    InvalidTrafficRoutingConfigurationException(crate::types::error::InvalidTrafficRoutingConfigurationException),
326    /// <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>
327    InvalidUpdateOutdatedInstancesOnlyValueException(crate::types::error::InvalidUpdateOutdatedInstancesOnlyValueException),
328    /// <p>The named revision does not exist with the user or Amazon Web Services account.</p>
329    RevisionDoesNotExistException(crate::types::error::RevisionDoesNotExistException),
330    /// <p>The revision ID was not specified.</p>
331    RevisionRequiredException(crate::types::error::RevisionRequiredException),
332    /// <p>An API function was called too frequently.</p>
333    ThrottlingException(crate::types::error::ThrottlingException),
334    /// An unexpected error occurred (e.g., invalid JSON returned by the service or an unknown error code).
335    #[deprecated(note = "Matching `Unhandled` directly is not forwards compatible. Instead, match using a \
336    variable wildcard pattern and check `.code()`:
337     \
338    &nbsp;&nbsp;&nbsp;`err if err.code() == Some(\"SpecificExceptionCode\") => { /* handle the error */ }`
339     \
340    See [`ProvideErrorMetadata`](#impl-ProvideErrorMetadata-for-CreateDeploymentError) for what information is available for the error.")]
341    Unhandled(crate::error::sealed_unhandled::Unhandled),
342}
343impl CreateDeploymentError {
344    /// Creates the `CreateDeploymentError::Unhandled` variant from any error type.
345    pub fn unhandled(
346        err: impl ::std::convert::Into<::std::boxed::Box<dyn ::std::error::Error + ::std::marker::Send + ::std::marker::Sync + 'static>>,
347    ) -> Self {
348        Self::Unhandled(crate::error::sealed_unhandled::Unhandled {
349            source: err.into(),
350            meta: ::std::default::Default::default(),
351        })
352    }
353
354    /// Creates the `CreateDeploymentError::Unhandled` variant from an [`ErrorMetadata`](::aws_smithy_types::error::ErrorMetadata).
355    pub fn generic(err: ::aws_smithy_types::error::ErrorMetadata) -> Self {
356        Self::Unhandled(crate::error::sealed_unhandled::Unhandled {
357            source: err.clone().into(),
358            meta: err,
359        })
360    }
361    ///
362    /// Returns error metadata, which includes the error code, message,
363    /// request ID, and potentially additional information.
364    ///
365    pub fn meta(&self) -> &::aws_smithy_types::error::ErrorMetadata {
366        match self {
367            Self::AlarmsLimitExceededException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
368            Self::ApplicationDoesNotExistException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
369            Self::ApplicationNameRequiredException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
370            Self::DeploymentConfigDoesNotExistException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
371            Self::DeploymentGroupDoesNotExistException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
372            Self::DeploymentGroupNameRequiredException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
373            Self::DeploymentLimitExceededException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
374            Self::DescriptionTooLongException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
375            Self::InvalidAlarmConfigException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
376            Self::InvalidApplicationNameException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
377            Self::InvalidAutoRollbackConfigException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
378            Self::InvalidAutoScalingGroupException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
379            Self::InvalidDeploymentConfigNameException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
380            Self::InvalidDeploymentGroupNameException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
381            Self::InvalidFileExistsBehaviorException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
382            Self::InvalidGitHubAccountTokenException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
383            Self::InvalidIgnoreApplicationStopFailuresValueException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
384            Self::InvalidLoadBalancerInfoException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
385            Self::InvalidRevisionException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
386            Self::InvalidRoleException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
387            Self::InvalidTargetInstancesException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
388            Self::InvalidTrafficRoutingConfigurationException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
389            Self::InvalidUpdateOutdatedInstancesOnlyValueException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
390            Self::RevisionDoesNotExistException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
391            Self::RevisionRequiredException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
392            Self::ThrottlingException(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 `CreateDeploymentError::AlarmsLimitExceededException`.
397    pub fn is_alarms_limit_exceeded_exception(&self) -> bool {
398        matches!(self, Self::AlarmsLimitExceededException(_))
399    }
400    /// Returns `true` if the error kind is `CreateDeploymentError::ApplicationDoesNotExistException`.
401    pub fn is_application_does_not_exist_exception(&self) -> bool {
402        matches!(self, Self::ApplicationDoesNotExistException(_))
403    }
404    /// Returns `true` if the error kind is `CreateDeploymentError::ApplicationNameRequiredException`.
405    pub fn is_application_name_required_exception(&self) -> bool {
406        matches!(self, Self::ApplicationNameRequiredException(_))
407    }
408    /// Returns `true` if the error kind is `CreateDeploymentError::DeploymentConfigDoesNotExistException`.
409    pub fn is_deployment_config_does_not_exist_exception(&self) -> bool {
410        matches!(self, Self::DeploymentConfigDoesNotExistException(_))
411    }
412    /// Returns `true` if the error kind is `CreateDeploymentError::DeploymentGroupDoesNotExistException`.
413    pub fn is_deployment_group_does_not_exist_exception(&self) -> bool {
414        matches!(self, Self::DeploymentGroupDoesNotExistException(_))
415    }
416    /// Returns `true` if the error kind is `CreateDeploymentError::DeploymentGroupNameRequiredException`.
417    pub fn is_deployment_group_name_required_exception(&self) -> bool {
418        matches!(self, Self::DeploymentGroupNameRequiredException(_))
419    }
420    /// Returns `true` if the error kind is `CreateDeploymentError::DeploymentLimitExceededException`.
421    pub fn is_deployment_limit_exceeded_exception(&self) -> bool {
422        matches!(self, Self::DeploymentLimitExceededException(_))
423    }
424    /// Returns `true` if the error kind is `CreateDeploymentError::DescriptionTooLongException`.
425    pub fn is_description_too_long_exception(&self) -> bool {
426        matches!(self, Self::DescriptionTooLongException(_))
427    }
428    /// Returns `true` if the error kind is `CreateDeploymentError::InvalidAlarmConfigException`.
429    pub fn is_invalid_alarm_config_exception(&self) -> bool {
430        matches!(self, Self::InvalidAlarmConfigException(_))
431    }
432    /// Returns `true` if the error kind is `CreateDeploymentError::InvalidApplicationNameException`.
433    pub fn is_invalid_application_name_exception(&self) -> bool {
434        matches!(self, Self::InvalidApplicationNameException(_))
435    }
436    /// Returns `true` if the error kind is `CreateDeploymentError::InvalidAutoRollbackConfigException`.
437    pub fn is_invalid_auto_rollback_config_exception(&self) -> bool {
438        matches!(self, Self::InvalidAutoRollbackConfigException(_))
439    }
440    /// Returns `true` if the error kind is `CreateDeploymentError::InvalidAutoScalingGroupException`.
441    pub fn is_invalid_auto_scaling_group_exception(&self) -> bool {
442        matches!(self, Self::InvalidAutoScalingGroupException(_))
443    }
444    /// Returns `true` if the error kind is `CreateDeploymentError::InvalidDeploymentConfigNameException`.
445    pub fn is_invalid_deployment_config_name_exception(&self) -> bool {
446        matches!(self, Self::InvalidDeploymentConfigNameException(_))
447    }
448    /// Returns `true` if the error kind is `CreateDeploymentError::InvalidDeploymentGroupNameException`.
449    pub fn is_invalid_deployment_group_name_exception(&self) -> bool {
450        matches!(self, Self::InvalidDeploymentGroupNameException(_))
451    }
452    /// Returns `true` if the error kind is `CreateDeploymentError::InvalidFileExistsBehaviorException`.
453    pub fn is_invalid_file_exists_behavior_exception(&self) -> bool {
454        matches!(self, Self::InvalidFileExistsBehaviorException(_))
455    }
456    /// Returns `true` if the error kind is `CreateDeploymentError::InvalidGitHubAccountTokenException`.
457    pub fn is_invalid_git_hub_account_token_exception(&self) -> bool {
458        matches!(self, Self::InvalidGitHubAccountTokenException(_))
459    }
460    /// Returns `true` if the error kind is `CreateDeploymentError::InvalidIgnoreApplicationStopFailuresValueException`.
461    pub fn is_invalid_ignore_application_stop_failures_value_exception(&self) -> bool {
462        matches!(self, Self::InvalidIgnoreApplicationStopFailuresValueException(_))
463    }
464    /// Returns `true` if the error kind is `CreateDeploymentError::InvalidLoadBalancerInfoException`.
465    pub fn is_invalid_load_balancer_info_exception(&self) -> bool {
466        matches!(self, Self::InvalidLoadBalancerInfoException(_))
467    }
468    /// Returns `true` if the error kind is `CreateDeploymentError::InvalidRevisionException`.
469    pub fn is_invalid_revision_exception(&self) -> bool {
470        matches!(self, Self::InvalidRevisionException(_))
471    }
472    /// Returns `true` if the error kind is `CreateDeploymentError::InvalidRoleException`.
473    pub fn is_invalid_role_exception(&self) -> bool {
474        matches!(self, Self::InvalidRoleException(_))
475    }
476    /// Returns `true` if the error kind is `CreateDeploymentError::InvalidTargetInstancesException`.
477    pub fn is_invalid_target_instances_exception(&self) -> bool {
478        matches!(self, Self::InvalidTargetInstancesException(_))
479    }
480    /// Returns `true` if the error kind is `CreateDeploymentError::InvalidTrafficRoutingConfigurationException`.
481    pub fn is_invalid_traffic_routing_configuration_exception(&self) -> bool {
482        matches!(self, Self::InvalidTrafficRoutingConfigurationException(_))
483    }
484    /// Returns `true` if the error kind is `CreateDeploymentError::InvalidUpdateOutdatedInstancesOnlyValueException`.
485    pub fn is_invalid_update_outdated_instances_only_value_exception(&self) -> bool {
486        matches!(self, Self::InvalidUpdateOutdatedInstancesOnlyValueException(_))
487    }
488    /// Returns `true` if the error kind is `CreateDeploymentError::RevisionDoesNotExistException`.
489    pub fn is_revision_does_not_exist_exception(&self) -> bool {
490        matches!(self, Self::RevisionDoesNotExistException(_))
491    }
492    /// Returns `true` if the error kind is `CreateDeploymentError::RevisionRequiredException`.
493    pub fn is_revision_required_exception(&self) -> bool {
494        matches!(self, Self::RevisionRequiredException(_))
495    }
496    /// Returns `true` if the error kind is `CreateDeploymentError::ThrottlingException`.
497    pub fn is_throttling_exception(&self) -> bool {
498        matches!(self, Self::ThrottlingException(_))
499    }
500}
501impl ::std::error::Error for CreateDeploymentError {
502    fn source(&self) -> ::std::option::Option<&(dyn ::std::error::Error + 'static)> {
503        match self {
504            Self::AlarmsLimitExceededException(_inner) => ::std::option::Option::Some(_inner),
505            Self::ApplicationDoesNotExistException(_inner) => ::std::option::Option::Some(_inner),
506            Self::ApplicationNameRequiredException(_inner) => ::std::option::Option::Some(_inner),
507            Self::DeploymentConfigDoesNotExistException(_inner) => ::std::option::Option::Some(_inner),
508            Self::DeploymentGroupDoesNotExistException(_inner) => ::std::option::Option::Some(_inner),
509            Self::DeploymentGroupNameRequiredException(_inner) => ::std::option::Option::Some(_inner),
510            Self::DeploymentLimitExceededException(_inner) => ::std::option::Option::Some(_inner),
511            Self::DescriptionTooLongException(_inner) => ::std::option::Option::Some(_inner),
512            Self::InvalidAlarmConfigException(_inner) => ::std::option::Option::Some(_inner),
513            Self::InvalidApplicationNameException(_inner) => ::std::option::Option::Some(_inner),
514            Self::InvalidAutoRollbackConfigException(_inner) => ::std::option::Option::Some(_inner),
515            Self::InvalidAutoScalingGroupException(_inner) => ::std::option::Option::Some(_inner),
516            Self::InvalidDeploymentConfigNameException(_inner) => ::std::option::Option::Some(_inner),
517            Self::InvalidDeploymentGroupNameException(_inner) => ::std::option::Option::Some(_inner),
518            Self::InvalidFileExistsBehaviorException(_inner) => ::std::option::Option::Some(_inner),
519            Self::InvalidGitHubAccountTokenException(_inner) => ::std::option::Option::Some(_inner),
520            Self::InvalidIgnoreApplicationStopFailuresValueException(_inner) => ::std::option::Option::Some(_inner),
521            Self::InvalidLoadBalancerInfoException(_inner) => ::std::option::Option::Some(_inner),
522            Self::InvalidRevisionException(_inner) => ::std::option::Option::Some(_inner),
523            Self::InvalidRoleException(_inner) => ::std::option::Option::Some(_inner),
524            Self::InvalidTargetInstancesException(_inner) => ::std::option::Option::Some(_inner),
525            Self::InvalidTrafficRoutingConfigurationException(_inner) => ::std::option::Option::Some(_inner),
526            Self::InvalidUpdateOutdatedInstancesOnlyValueException(_inner) => ::std::option::Option::Some(_inner),
527            Self::RevisionDoesNotExistException(_inner) => ::std::option::Option::Some(_inner),
528            Self::RevisionRequiredException(_inner) => ::std::option::Option::Some(_inner),
529            Self::ThrottlingException(_inner) => ::std::option::Option::Some(_inner),
530            Self::Unhandled(_inner) => ::std::option::Option::Some(&*_inner.source),
531        }
532    }
533}
534impl ::std::fmt::Display for CreateDeploymentError {
535    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
536        match self {
537            Self::AlarmsLimitExceededException(_inner) => _inner.fmt(f),
538            Self::ApplicationDoesNotExistException(_inner) => _inner.fmt(f),
539            Self::ApplicationNameRequiredException(_inner) => _inner.fmt(f),
540            Self::DeploymentConfigDoesNotExistException(_inner) => _inner.fmt(f),
541            Self::DeploymentGroupDoesNotExistException(_inner) => _inner.fmt(f),
542            Self::DeploymentGroupNameRequiredException(_inner) => _inner.fmt(f),
543            Self::DeploymentLimitExceededException(_inner) => _inner.fmt(f),
544            Self::DescriptionTooLongException(_inner) => _inner.fmt(f),
545            Self::InvalidAlarmConfigException(_inner) => _inner.fmt(f),
546            Self::InvalidApplicationNameException(_inner) => _inner.fmt(f),
547            Self::InvalidAutoRollbackConfigException(_inner) => _inner.fmt(f),
548            Self::InvalidAutoScalingGroupException(_inner) => _inner.fmt(f),
549            Self::InvalidDeploymentConfigNameException(_inner) => _inner.fmt(f),
550            Self::InvalidDeploymentGroupNameException(_inner) => _inner.fmt(f),
551            Self::InvalidFileExistsBehaviorException(_inner) => _inner.fmt(f),
552            Self::InvalidGitHubAccountTokenException(_inner) => _inner.fmt(f),
553            Self::InvalidIgnoreApplicationStopFailuresValueException(_inner) => _inner.fmt(f),
554            Self::InvalidLoadBalancerInfoException(_inner) => _inner.fmt(f),
555            Self::InvalidRevisionException(_inner) => _inner.fmt(f),
556            Self::InvalidRoleException(_inner) => _inner.fmt(f),
557            Self::InvalidTargetInstancesException(_inner) => _inner.fmt(f),
558            Self::InvalidTrafficRoutingConfigurationException(_inner) => _inner.fmt(f),
559            Self::InvalidUpdateOutdatedInstancesOnlyValueException(_inner) => _inner.fmt(f),
560            Self::RevisionDoesNotExistException(_inner) => _inner.fmt(f),
561            Self::RevisionRequiredException(_inner) => _inner.fmt(f),
562            Self::ThrottlingException(_inner) => _inner.fmt(f),
563            Self::Unhandled(_inner) => {
564                if let ::std::option::Option::Some(code) = ::aws_smithy_types::error::metadata::ProvideErrorMetadata::code(self) {
565                    write!(f, "unhandled error ({code})")
566                } else {
567                    f.write_str("unhandled error")
568                }
569            }
570        }
571    }
572}
573impl ::aws_smithy_types::retry::ProvideErrorKind for CreateDeploymentError {
574    fn code(&self) -> ::std::option::Option<&str> {
575        ::aws_smithy_types::error::metadata::ProvideErrorMetadata::code(self)
576    }
577    fn retryable_error_kind(&self) -> ::std::option::Option<::aws_smithy_types::retry::ErrorKind> {
578        ::std::option::Option::None
579    }
580}
581impl ::aws_smithy_types::error::metadata::ProvideErrorMetadata for CreateDeploymentError {
582    fn meta(&self) -> &::aws_smithy_types::error::ErrorMetadata {
583        match self {
584            Self::AlarmsLimitExceededException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
585            Self::ApplicationDoesNotExistException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
586            Self::ApplicationNameRequiredException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
587            Self::DeploymentConfigDoesNotExistException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
588            Self::DeploymentGroupDoesNotExistException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
589            Self::DeploymentGroupNameRequiredException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
590            Self::DeploymentLimitExceededException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
591            Self::DescriptionTooLongException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
592            Self::InvalidAlarmConfigException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
593            Self::InvalidApplicationNameException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
594            Self::InvalidAutoRollbackConfigException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
595            Self::InvalidAutoScalingGroupException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
596            Self::InvalidDeploymentConfigNameException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
597            Self::InvalidDeploymentGroupNameException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
598            Self::InvalidFileExistsBehaviorException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
599            Self::InvalidGitHubAccountTokenException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
600            Self::InvalidIgnoreApplicationStopFailuresValueException(_inner) => {
601                ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner)
602            }
603            Self::InvalidLoadBalancerInfoException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
604            Self::InvalidRevisionException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
605            Self::InvalidRoleException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
606            Self::InvalidTargetInstancesException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
607            Self::InvalidTrafficRoutingConfigurationException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
608            Self::InvalidUpdateOutdatedInstancesOnlyValueException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
609            Self::RevisionDoesNotExistException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
610            Self::RevisionRequiredException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
611            Self::ThrottlingException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
612            Self::Unhandled(_inner) => &_inner.meta,
613        }
614    }
615}
616impl ::aws_smithy_runtime_api::client::result::CreateUnhandledError for CreateDeploymentError {
617    fn create_unhandled_error(
618        source: ::std::boxed::Box<dyn ::std::error::Error + ::std::marker::Send + ::std::marker::Sync + 'static>,
619        meta: ::std::option::Option<::aws_smithy_types::error::ErrorMetadata>,
620    ) -> Self {
621        Self::Unhandled(crate::error::sealed_unhandled::Unhandled {
622            source,
623            meta: meta.unwrap_or_default(),
624        })
625    }
626}
627impl ::aws_types::request_id::RequestId for crate::operation::create_deployment::CreateDeploymentError {
628    fn request_id(&self) -> Option<&str> {
629        self.meta().request_id()
630    }
631}
632
633pub use crate::operation::create_deployment::_create_deployment_output::CreateDeploymentOutput;
634
635pub use crate::operation::create_deployment::_create_deployment_input::CreateDeploymentInput;
636
637mod _create_deployment_input;
638
639mod _create_deployment_output;
640
641/// Builders
642pub mod builders;