Skip to main content

aws_sdk_codecatalyst/operation/
create_dev_environment.rs

1// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
2/// Orchestration and serialization glue logic for `CreateDevEnvironment`.
3#[derive(::std::clone::Clone, ::std::default::Default, ::std::fmt::Debug)]
4#[non_exhaustive]
5pub struct CreateDevEnvironment;
6impl CreateDevEnvironment {
7    /// Creates a new `CreateDevEnvironment`
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_dev_environment::CreateDevEnvironmentInput,
14    ) -> ::std::result::Result<
15        crate::operation::create_dev_environment::CreateDevEnvironmentOutput,
16        ::aws_smithy_runtime_api::client::result::SdkError<
17            crate::operation::create_dev_environment::CreateDevEnvironmentError,
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_dev_environment::CreateDevEnvironmentError>()
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_dev_environment::CreateDevEnvironmentOutput>()
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_dev_environment::CreateDevEnvironmentInput,
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("CodeCatalyst", "CreateDevEnvironment", 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                "CodeCatalyst.CreateDevEnvironment",
59                "rpc.service" = "CodeCatalyst",
60                "rpc.method" = "CreateDevEnvironment",
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 CreateDevEnvironment {
88    fn config(&self) -> ::std::option::Option<::aws_smithy_types::config_bag::FrozenLayer> {
89        let mut cfg = ::aws_smithy_types::config_bag::Layer::new("CreateDevEnvironment");
90
91        cfg.store_put(::aws_smithy_runtime_api::client::ser_de::SharedRequestSerializer::new(
92            CreateDevEnvironmentRequestSerializer,
93        ));
94        cfg.store_put(::aws_smithy_runtime_api::client::ser_de::SharedResponseDeserializer::new(
95            CreateDevEnvironmentResponseDeserializer,
96        ));
97
98        cfg.store_put(::aws_smithy_runtime_api::client::auth::AuthSchemeOptionResolverParams::new(
99            crate::config::auth::Params::builder()
100                .operation_name("CreateDevEnvironment")
101                .build()
102                .expect("required fields set"),
103        ));
104
105        cfg.store_put(::aws_smithy_runtime_api::client::orchestrator::Metadata::new(
106            "CreateDevEnvironment",
107            "CodeCatalyst",
108        ));
109
110        ::std::option::Option::Some(cfg.freeze())
111    }
112
113    fn runtime_components(
114        &self,
115        _: &::aws_smithy_runtime_api::client::runtime_components::RuntimeComponentsBuilder,
116    ) -> ::std::borrow::Cow<'_, ::aws_smithy_runtime_api::client::runtime_components::RuntimeComponentsBuilder> {
117        #[allow(unused_mut)]
118        let mut rcb = ::aws_smithy_runtime_api::client::runtime_components::RuntimeComponentsBuilder::new("CreateDevEnvironment")
119            .with_interceptor(::aws_smithy_runtime_api::client::interceptors::SharedInterceptor::permanent(
120                CreateDevEnvironmentTelemetryInputCaptureInterceptor,
121            ))
122            .with_interceptor(::aws_smithy_runtime_api::client::interceptors::SharedInterceptor::permanent(
123                ::aws_smithy_runtime::client::stalled_stream_protection::StalledStreamProtectionInterceptor::default(),
124            ))
125            .with_interceptor(::aws_smithy_runtime_api::client::interceptors::SharedInterceptor::permanent(
126                CreateDevEnvironmentEndpointParamsInterceptor,
127            ))
128            .with_retry_classifier(::aws_smithy_runtime::client::retries::classifiers::TransientErrorClassifier::<
129                crate::operation::create_dev_environment::CreateDevEnvironmentError,
130            >::new())
131            .with_retry_classifier(::aws_smithy_runtime::client::retries::classifiers::ModeledAsRetryableClassifier::<
132                crate::operation::create_dev_environment::CreateDevEnvironmentError,
133            >::new())
134            .with_retry_classifier(::aws_runtime::retries::classifiers::AwsErrorCodeClassifier::<
135                crate::operation::create_dev_environment::CreateDevEnvironmentError,
136            >::new())
137            .with_retry_classifier(::aws_runtime::service_clock_skew::ServiceClockSkewClassifier::<
138                crate::operation::create_dev_environment::CreateDevEnvironmentError,
139            >::new());
140
141        ::std::borrow::Cow::Owned(rcb)
142    }
143}
144
145#[derive(Debug)]
146struct CreateDevEnvironmentTelemetryInputCaptureInterceptor;
147
148#[::aws_smithy_runtime_api::client::interceptors::dyn_dispatch_hint]
149impl ::aws_smithy_runtime_api::client::interceptors::Intercept for CreateDevEnvironmentTelemetryInputCaptureInterceptor {
150    fn name(&self) -> &'static str {
151        "CreateDevEnvironmentTelemetryInputCaptureInterceptor"
152    }
153
154    fn read_before_execution(
155        &self,
156        context: &::aws_smithy_runtime_api::client::interceptors::context::BeforeSerializationInterceptorContextRef<
157            '_,
158            ::aws_smithy_runtime_api::client::interceptors::context::Input,
159            ::aws_smithy_runtime_api::client::interceptors::context::Output,
160            ::aws_smithy_runtime_api::client::interceptors::context::Error,
161        >,
162        cfg: &mut ::aws_smithy_types::config_bag::ConfigBag,
163    ) -> ::std::result::Result<(), ::aws_smithy_runtime_api::box_error::BoxError> {
164        // Nothing to do unless the customer opted in by naming members to record.
165        let ::std::option::Option::Some(requested) = cfg
166            .load::<::aws_smithy_types::telemetry::RequestedTelemetryAttributes>()
167            .filter(|r| !r.is_empty())
168        else {
169            return ::std::result::Result::Ok(());
170        };
171
172        let ::std::option::Option::Some(input) = context.input().downcast_ref::<CreateDevEnvironmentInput>() else {
173            // A mismatched input is not this interceptor's concern; skip quietly.
174            return ::std::result::Result::Ok(());
175        };
176
177        let mut captured = ::aws_smithy_types::telemetry::CapturedTelemetryAttributes::default();
178        if requested.should_capture("spaceName") {
179            if let ::std::option::Option::Some(value) = input.space_name.as_deref() {
180                captured.insert("spaceName", value);
181            }
182        }
183        if requested.should_capture("projectName") {
184            if let ::std::option::Option::Some(value) = input.project_name.as_deref() {
185                captured.insert("projectName", value);
186            }
187        }
188        if requested.should_capture("clientToken") {
189            if let ::std::option::Option::Some(value) = input.client_token.as_deref() {
190                captured.insert("clientToken", value);
191            }
192        }
193        if requested.should_capture("alias") {
194            if let ::std::option::Option::Some(value) = input.alias.as_deref() {
195                captured.insert("alias", value);
196            }
197        }
198        if requested.should_capture("vpcConnectionName") {
199            if let ::std::option::Option::Some(value) = input.vpc_connection_name.as_deref() {
200                captured.insert("vpcConnectionName", value);
201            }
202        }
203
204        cfg.interceptor_state().store_put(captured);
205        ::std::result::Result::Ok(())
206    }
207}
208#[derive(Debug)]
209struct CreateDevEnvironmentResponseDeserializer;
210impl ::aws_smithy_runtime_api::client::ser_de::DeserializeResponse for CreateDevEnvironmentResponseDeserializer {
211    fn deserialize_nonstreaming_with_config(
212        &self,
213        response: &::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
214        _cfg: &::aws_smithy_types::config_bag::ConfigBag,
215    ) -> ::aws_smithy_runtime_api::client::interceptors::context::OutputOrError {
216        let (success, status) = (response.status().is_success(), response.status().as_u16());
217        let headers = response.headers();
218        let body = response.body().bytes().expect("body loaded");
219        #[allow(unused_mut)]
220        let mut force_error = false;
221        ::tracing::debug!(request_id = ?::aws_types::request_id::RequestId::request_id(response));
222        let parse_result = if !success && status != 201 || force_error {
223            crate::protocol_serde::shape_create_dev_environment::de_create_dev_environment_http_error(status, headers, body)
224        } else {
225            crate::protocol_serde::shape_create_dev_environment::de_create_dev_environment_http_response(status, headers, body)
226        };
227        crate::protocol_serde::type_erase_result(parse_result)
228    }
229}
230#[derive(Debug)]
231struct CreateDevEnvironmentRequestSerializer;
232impl ::aws_smithy_runtime_api::client::ser_de::SerializeRequest for CreateDevEnvironmentRequestSerializer {
233    #[allow(unused_mut, clippy::let_and_return, clippy::needless_borrow, clippy::useless_conversion)]
234    fn serialize_input(
235        &self,
236        input: ::aws_smithy_runtime_api::client::interceptors::context::Input,
237        _cfg: &mut ::aws_smithy_types::config_bag::ConfigBag,
238    ) -> ::std::result::Result<::aws_smithy_runtime_api::client::orchestrator::HttpRequest, ::aws_smithy_runtime_api::box_error::BoxError> {
239        let input = input
240            .downcast::<crate::operation::create_dev_environment::CreateDevEnvironmentInput>()
241            .expect("correct type");
242        let _header_serialization_settings = _cfg
243            .load::<crate::serialization_settings::HeaderSerializationSettings>()
244            .cloned()
245            .unwrap_or_default();
246        let mut request_builder = {
247            #[allow(clippy::uninlined_format_args)]
248            fn uri_base(
249                _input: &crate::operation::create_dev_environment::CreateDevEnvironmentInput,
250                output: &mut ::std::string::String,
251            ) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
252                use ::std::fmt::Write as _;
253                let input_1 = &_input.space_name;
254                let input_1 = input_1
255                    .as_ref()
256                    .ok_or_else(|| ::aws_smithy_types::error::operation::BuildError::missing_field("space_name", "cannot be empty or unset"))?;
257                let space_name = ::aws_smithy_http::label::fmt_string(input_1, ::aws_smithy_http::label::EncodingStrategy::Default);
258                if space_name.is_empty() {
259                    return ::std::result::Result::Err(::aws_smithy_types::error::operation::BuildError::missing_field(
260                        "space_name",
261                        "cannot be empty or unset",
262                    ));
263                }
264                let input_2 = &_input.project_name;
265                let input_2 = input_2
266                    .as_ref()
267                    .ok_or_else(|| ::aws_smithy_types::error::operation::BuildError::missing_field("project_name", "cannot be empty or unset"))?;
268                let project_name = ::aws_smithy_http::label::fmt_string(input_2, ::aws_smithy_http::label::EncodingStrategy::Default);
269                if project_name.is_empty() {
270                    return ::std::result::Result::Err(::aws_smithy_types::error::operation::BuildError::missing_field(
271                        "project_name",
272                        "cannot be empty or unset",
273                    ));
274                }
275                ::std::write!(
276                    output,
277                    "/v1/spaces/{spaceName}/projects/{projectName}/devEnvironments",
278                    spaceName = space_name,
279                    projectName = project_name
280                )
281                .expect("formatting should succeed");
282                ::std::result::Result::Ok(())
283            }
284            #[allow(clippy::unnecessary_wraps)]
285            fn update_http_builder(
286                input: &crate::operation::create_dev_environment::CreateDevEnvironmentInput,
287                builder: ::http_1x::request::Builder,
288            ) -> ::std::result::Result<::http_1x::request::Builder, ::aws_smithy_types::error::operation::BuildError> {
289                let mut uri = ::std::string::String::new();
290                uri_base(input, &mut uri)?;
291                ::std::result::Result::Ok(builder.method("PUT").uri(uri))
292            }
293            let mut builder = update_http_builder(&input, ::http_1x::request::Builder::new())?;
294            builder = _header_serialization_settings.set_default_header(builder, ::http_1x::header::CONTENT_TYPE, "application/json");
295            builder
296        };
297        let body = ::aws_smithy_types::body::SdkBody::from(crate::protocol_serde::shape_create_dev_environment::ser_create_dev_environment_input(
298            &input,
299        )?);
300        if let Some(content_length) = body.content_length() {
301            let content_length = content_length.to_string();
302            request_builder = _header_serialization_settings.set_default_header(request_builder, ::http_1x::header::CONTENT_LENGTH, &content_length);
303        }
304        ::std::result::Result::Ok(request_builder.body(body).expect("valid request").try_into().unwrap())
305    }
306}
307#[derive(Debug)]
308struct CreateDevEnvironmentEndpointParamsInterceptor;
309
310#[::aws_smithy_runtime_api::client::interceptors::dyn_dispatch_hint]
311impl ::aws_smithy_runtime_api::client::interceptors::Intercept for CreateDevEnvironmentEndpointParamsInterceptor {
312    fn name(&self) -> &'static str {
313        "CreateDevEnvironmentEndpointParamsInterceptor"
314    }
315
316    fn read_before_execution(
317        &self,
318        context: &::aws_smithy_runtime_api::client::interceptors::context::BeforeSerializationInterceptorContextRef<
319            '_,
320            ::aws_smithy_runtime_api::client::interceptors::context::Input,
321            ::aws_smithy_runtime_api::client::interceptors::context::Output,
322            ::aws_smithy_runtime_api::client::interceptors::context::Error,
323        >,
324        cfg: &mut ::aws_smithy_types::config_bag::ConfigBag,
325    ) -> ::std::result::Result<(), ::aws_smithy_runtime_api::box_error::BoxError> {
326        let _input = context
327            .input()
328            .downcast_ref::<CreateDevEnvironmentInput>()
329            .ok_or("failed to downcast to CreateDevEnvironmentInput")?;
330
331        let params = crate::config::endpoint::Params::builder()
332            .set_use_fips(cfg.load::<::aws_types::endpoint_config::UseFips>().map(|ty| ty.0))
333            .set_region(cfg.load::<::aws_types::region::Region>().map(|r| r.as_ref().to_owned()))
334            .set_endpoint(cfg.load::<::aws_types::endpoint_config::EndpointUrl>().map(|ty| ty.0.clone()))
335            .build()
336            .map_err(|err| {
337                ::aws_smithy_runtime_api::client::interceptors::error::ContextAttachedError::new("endpoint params could not be built", err)
338            })?;
339        cfg.interceptor_state()
340            .store_put(::aws_smithy_runtime_api::client::endpoint::EndpointResolverParams::new(params));
341        ::std::result::Result::Ok(())
342    }
343}
344
345// The get_* functions below are generated from JMESPath expressions in the
346// operationContextParams trait. They target the operation's input shape.
347
348/// Error type for the `CreateDevEnvironmentError` operation.
349#[non_exhaustive]
350#[derive(::std::fmt::Debug)]
351pub enum CreateDevEnvironmentError {
352    /// <p>The request was denied because you don't have sufficient access to perform this action. Verify that you are a member of a role that allows this action.</p>
353    AccessDeniedException(crate::types::error::AccessDeniedException),
354    /// <p>The request was denied because the requested operation would cause a conflict with the current state of a service resource associated with the request. Another user might have updated the resource. Reload, make sure you have the latest data, and then try again.</p>
355    ConflictException(crate::types::error::ConflictException),
356    /// <p>The request was denied because the specified resource was not found. Verify that the spelling is correct and that you have access to the resource.</p>
357    ResourceNotFoundException(crate::types::error::ResourceNotFoundException),
358    /// <p>The request was denied because one or more resources has reached its limits for the tier the space belongs to. Either reduce the number of resources, or change the tier if applicable.</p>
359    ServiceQuotaExceededException(crate::types::error::ServiceQuotaExceededException),
360    /// <p>The request was denied due to request throttling.</p>
361    ThrottlingException(crate::types::error::ThrottlingException),
362    /// <p>The request was denied because an input failed to satisfy the constraints specified by the service. Check the spelling and input requirements, and then try again.</p>
363    ValidationException(crate::types::error::ValidationException),
364    /// An unexpected error occurred (e.g., invalid JSON returned by the service or an unknown error code).
365    #[deprecated(note = "Matching `Unhandled` directly is not forwards compatible. Instead, match using a \
366    variable wildcard pattern and check `.code()`:
367     \
368    &nbsp;&nbsp;&nbsp;`err if err.code() == Some(\"SpecificExceptionCode\") => { /* handle the error */ }`
369     \
370    See [`ProvideErrorMetadata`](#impl-ProvideErrorMetadata-for-CreateDevEnvironmentError) for what information is available for the error.")]
371    Unhandled(crate::error::sealed_unhandled::Unhandled),
372}
373impl CreateDevEnvironmentError {
374    /// Creates the `CreateDevEnvironmentError::Unhandled` variant from any error type.
375    pub fn unhandled(
376        err: impl ::std::convert::Into<::std::boxed::Box<dyn ::std::error::Error + ::std::marker::Send + ::std::marker::Sync + 'static>>,
377    ) -> Self {
378        Self::Unhandled(crate::error::sealed_unhandled::Unhandled {
379            source: err.into(),
380            meta: ::std::default::Default::default(),
381        })
382    }
383
384    /// Creates the `CreateDevEnvironmentError::Unhandled` variant from an [`ErrorMetadata`](::aws_smithy_types::error::ErrorMetadata).
385    pub fn generic(err: ::aws_smithy_types::error::ErrorMetadata) -> Self {
386        Self::Unhandled(crate::error::sealed_unhandled::Unhandled {
387            source: err.clone().into(),
388            meta: err,
389        })
390    }
391    ///
392    /// Returns error metadata, which includes the error code, message,
393    /// request ID, and potentially additional information.
394    ///
395    pub fn meta(&self) -> &::aws_smithy_types::error::ErrorMetadata {
396        match self {
397            Self::AccessDeniedException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
398            Self::ConflictException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
399            Self::ResourceNotFoundException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
400            Self::ServiceQuotaExceededException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
401            Self::ThrottlingException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
402            Self::ValidationException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
403            Self::Unhandled(e) => &e.meta,
404        }
405    }
406    /// Returns `true` if the error kind is `CreateDevEnvironmentError::AccessDeniedException`.
407    pub fn is_access_denied_exception(&self) -> bool {
408        matches!(self, Self::AccessDeniedException(_))
409    }
410    /// Returns `true` if the error kind is `CreateDevEnvironmentError::ConflictException`.
411    pub fn is_conflict_exception(&self) -> bool {
412        matches!(self, Self::ConflictException(_))
413    }
414    /// Returns `true` if the error kind is `CreateDevEnvironmentError::ResourceNotFoundException`.
415    pub fn is_resource_not_found_exception(&self) -> bool {
416        matches!(self, Self::ResourceNotFoundException(_))
417    }
418    /// Returns `true` if the error kind is `CreateDevEnvironmentError::ServiceQuotaExceededException`.
419    pub fn is_service_quota_exceeded_exception(&self) -> bool {
420        matches!(self, Self::ServiceQuotaExceededException(_))
421    }
422    /// Returns `true` if the error kind is `CreateDevEnvironmentError::ThrottlingException`.
423    pub fn is_throttling_exception(&self) -> bool {
424        matches!(self, Self::ThrottlingException(_))
425    }
426    /// Returns `true` if the error kind is `CreateDevEnvironmentError::ValidationException`.
427    pub fn is_validation_exception(&self) -> bool {
428        matches!(self, Self::ValidationException(_))
429    }
430}
431impl ::std::error::Error for CreateDevEnvironmentError {
432    fn source(&self) -> ::std::option::Option<&(dyn ::std::error::Error + 'static)> {
433        match self {
434            Self::AccessDeniedException(_inner) => ::std::option::Option::Some(_inner),
435            Self::ConflictException(_inner) => ::std::option::Option::Some(_inner),
436            Self::ResourceNotFoundException(_inner) => ::std::option::Option::Some(_inner),
437            Self::ServiceQuotaExceededException(_inner) => ::std::option::Option::Some(_inner),
438            Self::ThrottlingException(_inner) => ::std::option::Option::Some(_inner),
439            Self::ValidationException(_inner) => ::std::option::Option::Some(_inner),
440            Self::Unhandled(_inner) => ::std::option::Option::Some(&*_inner.source),
441        }
442    }
443}
444impl ::std::fmt::Display for CreateDevEnvironmentError {
445    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
446        match self {
447            Self::AccessDeniedException(_inner) => _inner.fmt(f),
448            Self::ConflictException(_inner) => _inner.fmt(f),
449            Self::ResourceNotFoundException(_inner) => _inner.fmt(f),
450            Self::ServiceQuotaExceededException(_inner) => _inner.fmt(f),
451            Self::ThrottlingException(_inner) => _inner.fmt(f),
452            Self::ValidationException(_inner) => _inner.fmt(f),
453            Self::Unhandled(_inner) => {
454                if let ::std::option::Option::Some(code) = ::aws_smithy_types::error::metadata::ProvideErrorMetadata::code(self) {
455                    write!(f, "unhandled error ({code})")
456                } else {
457                    f.write_str("unhandled error")
458                }
459            }
460        }
461    }
462}
463impl ::aws_smithy_types::retry::ProvideErrorKind for CreateDevEnvironmentError {
464    fn code(&self) -> ::std::option::Option<&str> {
465        ::aws_smithy_types::error::metadata::ProvideErrorMetadata::code(self)
466    }
467    fn retryable_error_kind(&self) -> ::std::option::Option<::aws_smithy_types::retry::ErrorKind> {
468        match self {
469            Self::ThrottlingException(inner) => ::std::option::Option::Some(inner.retryable_error_kind()),
470            _ => ::std::option::Option::None,
471        }
472    }
473}
474impl ::aws_smithy_types::error::metadata::ProvideErrorMetadata for CreateDevEnvironmentError {
475    fn meta(&self) -> &::aws_smithy_types::error::ErrorMetadata {
476        match self {
477            Self::AccessDeniedException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
478            Self::ConflictException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
479            Self::ResourceNotFoundException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
480            Self::ServiceQuotaExceededException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
481            Self::ThrottlingException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
482            Self::ValidationException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
483            Self::Unhandled(_inner) => &_inner.meta,
484        }
485    }
486}
487impl ::aws_smithy_runtime_api::client::result::CreateUnhandledError for CreateDevEnvironmentError {
488    fn create_unhandled_error(
489        source: ::std::boxed::Box<dyn ::std::error::Error + ::std::marker::Send + ::std::marker::Sync + 'static>,
490        meta: ::std::option::Option<::aws_smithy_types::error::ErrorMetadata>,
491    ) -> Self {
492        Self::Unhandled(crate::error::sealed_unhandled::Unhandled {
493            source,
494            meta: meta.unwrap_or_default(),
495        })
496    }
497}
498impl ::aws_types::request_id::RequestId for crate::operation::create_dev_environment::CreateDevEnvironmentError {
499    fn request_id(&self) -> Option<&str> {
500        self.meta().request_id()
501    }
502}
503
504pub use crate::operation::create_dev_environment::_create_dev_environment_input::CreateDevEnvironmentInput;
505
506pub use crate::operation::create_dev_environment::_create_dev_environment_output::CreateDevEnvironmentOutput;
507
508mod _create_dev_environment_input;
509
510mod _create_dev_environment_output;
511
512/// Builders
513pub mod builders;