Skip to main content

aws_sdk_eks/operation/
create_fargate_profile.rs

1// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
2/// Orchestration and serialization glue logic for `CreateFargateProfile`.
3#[derive(::std::clone::Clone, ::std::default::Default, ::std::fmt::Debug)]
4#[non_exhaustive]
5pub struct CreateFargateProfile;
6impl CreateFargateProfile {
7    /// Creates a new `CreateFargateProfile`
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_fargate_profile::CreateFargateProfileInput,
14    ) -> ::std::result::Result<
15        crate::operation::create_fargate_profile::CreateFargateProfileOutput,
16        ::aws_smithy_runtime_api::client::result::SdkError<
17            crate::operation::create_fargate_profile::CreateFargateProfileError,
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_fargate_profile::CreateFargateProfileError>()
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_fargate_profile::CreateFargateProfileOutput>()
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_fargate_profile::CreateFargateProfileInput,
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("EKS", "CreateFargateProfile", 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                "EKS.CreateFargateProfile",
59                "rpc.service" = "EKS",
60                "rpc.method" = "CreateFargateProfile",
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        runtime_plugins = runtime_plugins.with_operation_plugin(crate::client_idempotency_token::IdempotencyTokenRuntimePlugin::new(
74            |token_provider, input| {
75                let input: &mut crate::operation::create_fargate_profile::CreateFargateProfileInput = input.downcast_mut().expect("correct type");
76                if input.client_request_token.is_none() {
77                    input.client_request_token = ::std::option::Option::Some(token_provider.make_idempotency_token());
78                }
79            },
80        ));
81        if let ::std::option::Option::Some(config_override) = config_override {
82            for plugin in config_override.runtime_plugins.iter().cloned() {
83                runtime_plugins = runtime_plugins.with_operation_plugin(plugin);
84            }
85            runtime_plugins = runtime_plugins.with_operation_plugin(crate::config::ConfigOverrideRuntimePlugin::new(
86                config_override,
87                client_config.config.clone(),
88                &client_config.runtime_components,
89            ));
90        }
91        runtime_plugins
92    }
93}
94impl ::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugin for CreateFargateProfile {
95    fn config(&self) -> ::std::option::Option<::aws_smithy_types::config_bag::FrozenLayer> {
96        let mut cfg = ::aws_smithy_types::config_bag::Layer::new("CreateFargateProfile");
97
98        cfg.store_put(::aws_smithy_runtime_api::client::ser_de::SharedRequestSerializer::new(
99            CreateFargateProfileRequestSerializer,
100        ));
101        cfg.store_put(::aws_smithy_runtime_api::client::ser_de::SharedResponseDeserializer::new(
102            CreateFargateProfileResponseDeserializer,
103        ));
104
105        cfg.store_put(::aws_smithy_runtime_api::client::auth::AuthSchemeOptionResolverParams::new(
106            crate::config::auth::Params::builder()
107                .operation_name("CreateFargateProfile")
108                .build()
109                .expect("required fields set"),
110        ));
111
112        cfg.store_put(::aws_smithy_runtime_api::client::orchestrator::Metadata::new(
113            "CreateFargateProfile",
114            "EKS",
115        ));
116        let mut signing_options = ::aws_runtime::auth::SigningOptions::default();
117        signing_options.double_uri_encode = true;
118        signing_options.content_sha256_header = false;
119        signing_options.normalize_uri_path = true;
120        signing_options.payload_override = None;
121
122        cfg.store_put(::aws_runtime::auth::SigV4OperationSigningConfig {
123            signing_options,
124            ..::std::default::Default::default()
125        });
126
127        ::std::option::Option::Some(cfg.freeze())
128    }
129
130    fn runtime_components(
131        &self,
132        _: &::aws_smithy_runtime_api::client::runtime_components::RuntimeComponentsBuilder,
133    ) -> ::std::borrow::Cow<'_, ::aws_smithy_runtime_api::client::runtime_components::RuntimeComponentsBuilder> {
134        #[allow(unused_mut)]
135        let mut rcb = ::aws_smithy_runtime_api::client::runtime_components::RuntimeComponentsBuilder::new("CreateFargateProfile")
136            .with_interceptor(::aws_smithy_runtime_api::client::interceptors::SharedInterceptor::permanent(
137                ::aws_smithy_runtime::client::stalled_stream_protection::StalledStreamProtectionInterceptor::default(),
138            ))
139            .with_interceptor(::aws_smithy_runtime_api::client::interceptors::SharedInterceptor::permanent(
140                CreateFargateProfileEndpointParamsInterceptor,
141            ))
142            .with_retry_classifier(::aws_smithy_runtime::client::retries::classifiers::TransientErrorClassifier::<
143                crate::operation::create_fargate_profile::CreateFargateProfileError,
144            >::new())
145            .with_retry_classifier(::aws_smithy_runtime::client::retries::classifiers::ModeledAsRetryableClassifier::<
146                crate::operation::create_fargate_profile::CreateFargateProfileError,
147            >::new())
148            .with_retry_classifier(::aws_runtime::retries::classifiers::AwsErrorCodeClassifier::<
149                crate::operation::create_fargate_profile::CreateFargateProfileError,
150            >::new());
151
152        ::std::borrow::Cow::Owned(rcb)
153    }
154}
155
156#[derive(Debug)]
157struct CreateFargateProfileResponseDeserializer;
158impl ::aws_smithy_runtime_api::client::ser_de::DeserializeResponse for CreateFargateProfileResponseDeserializer {
159    fn deserialize_nonstreaming_with_config(
160        &self,
161        response: &::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
162        _cfg: &::aws_smithy_types::config_bag::ConfigBag,
163    ) -> ::aws_smithy_runtime_api::client::interceptors::context::OutputOrError {
164        let (success, status) = (response.status().is_success(), response.status().as_u16());
165        let headers = response.headers();
166        let body = response.body().bytes().expect("body loaded");
167        #[allow(unused_mut)]
168        let mut force_error = false;
169        ::tracing::debug!(request_id = ?::aws_types::request_id::RequestId::request_id(response));
170        let parse_result = if !success && status != 200 || force_error {
171            crate::protocol_serde::shape_create_fargate_profile::de_create_fargate_profile_http_error(status, headers, body)
172        } else {
173            crate::protocol_serde::shape_create_fargate_profile::de_create_fargate_profile_http_response(status, headers, body)
174        };
175        crate::protocol_serde::type_erase_result(parse_result)
176    }
177}
178#[derive(Debug)]
179struct CreateFargateProfileRequestSerializer;
180impl ::aws_smithy_runtime_api::client::ser_de::SerializeRequest for CreateFargateProfileRequestSerializer {
181    #[allow(unused_mut, clippy::let_and_return, clippy::needless_borrow, clippy::useless_conversion)]
182    fn serialize_input(
183        &self,
184        input: ::aws_smithy_runtime_api::client::interceptors::context::Input,
185        _cfg: &mut ::aws_smithy_types::config_bag::ConfigBag,
186    ) -> ::std::result::Result<::aws_smithy_runtime_api::client::orchestrator::HttpRequest, ::aws_smithy_runtime_api::box_error::BoxError> {
187        let input = input
188            .downcast::<crate::operation::create_fargate_profile::CreateFargateProfileInput>()
189            .expect("correct type");
190        let _header_serialization_settings = _cfg
191            .load::<crate::serialization_settings::HeaderSerializationSettings>()
192            .cloned()
193            .unwrap_or_default();
194        let mut request_builder = {
195            #[allow(clippy::uninlined_format_args)]
196            fn uri_base(
197                _input: &crate::operation::create_fargate_profile::CreateFargateProfileInput,
198                output: &mut ::std::string::String,
199            ) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
200                use ::std::fmt::Write as _;
201                let input_1 = &_input.cluster_name;
202                let input_1 = input_1
203                    .as_ref()
204                    .ok_or_else(|| ::aws_smithy_types::error::operation::BuildError::missing_field("cluster_name", "cannot be empty or unset"))?;
205                let cluster_name = ::aws_smithy_http::label::fmt_string(input_1, ::aws_smithy_http::label::EncodingStrategy::Default);
206                if cluster_name.is_empty() {
207                    return ::std::result::Result::Err(::aws_smithy_types::error::operation::BuildError::missing_field(
208                        "cluster_name",
209                        "cannot be empty or unset",
210                    ));
211                }
212                ::std::write!(output, "/clusters/{clusterName}/fargate-profiles", clusterName = cluster_name).expect("formatting should succeed");
213                ::std::result::Result::Ok(())
214            }
215            #[allow(clippy::unnecessary_wraps)]
216            fn update_http_builder(
217                input: &crate::operation::create_fargate_profile::CreateFargateProfileInput,
218                builder: ::http_1x::request::Builder,
219            ) -> ::std::result::Result<::http_1x::request::Builder, ::aws_smithy_types::error::operation::BuildError> {
220                let mut uri = ::std::string::String::new();
221                uri_base(input, &mut uri)?;
222                ::std::result::Result::Ok(builder.method("POST").uri(uri))
223            }
224            let mut builder = update_http_builder(&input, ::http_1x::request::Builder::new())?;
225            builder = _header_serialization_settings.set_default_header(builder, ::http_1x::header::CONTENT_TYPE, "application/json");
226            builder
227        };
228        let body = ::aws_smithy_types::body::SdkBody::from(crate::protocol_serde::shape_create_fargate_profile::ser_create_fargate_profile_input(
229            &input,
230        )?);
231        if let Some(content_length) = body.content_length() {
232            let content_length = content_length.to_string();
233            request_builder = _header_serialization_settings.set_default_header(request_builder, ::http_1x::header::CONTENT_LENGTH, &content_length);
234        }
235        ::std::result::Result::Ok(request_builder.body(body).expect("valid request").try_into().unwrap())
236    }
237}
238#[derive(Debug)]
239struct CreateFargateProfileEndpointParamsInterceptor;
240
241#[::aws_smithy_runtime_api::client::interceptors::dyn_dispatch_hint]
242impl ::aws_smithy_runtime_api::client::interceptors::Intercept for CreateFargateProfileEndpointParamsInterceptor {
243    fn name(&self) -> &'static str {
244        "CreateFargateProfileEndpointParamsInterceptor"
245    }
246
247    fn read_before_execution(
248        &self,
249        context: &::aws_smithy_runtime_api::client::interceptors::context::BeforeSerializationInterceptorContextRef<
250            '_,
251            ::aws_smithy_runtime_api::client::interceptors::context::Input,
252            ::aws_smithy_runtime_api::client::interceptors::context::Output,
253            ::aws_smithy_runtime_api::client::interceptors::context::Error,
254        >,
255        cfg: &mut ::aws_smithy_types::config_bag::ConfigBag,
256    ) -> ::std::result::Result<(), ::aws_smithy_runtime_api::box_error::BoxError> {
257        let _input = context
258            .input()
259            .downcast_ref::<CreateFargateProfileInput>()
260            .ok_or("failed to downcast to CreateFargateProfileInput")?;
261
262        let params = crate::config::endpoint::Params::builder()
263            .set_region(cfg.load::<::aws_types::region::Region>().map(|r| r.as_ref().to_owned()))
264            .set_use_dual_stack(cfg.load::<::aws_types::endpoint_config::UseDualStack>().map(|ty| ty.0))
265            .set_use_fips(cfg.load::<::aws_types::endpoint_config::UseFips>().map(|ty| ty.0))
266            .set_endpoint(cfg.load::<::aws_types::endpoint_config::EndpointUrl>().map(|ty| ty.0.clone()))
267            .build()
268            .map_err(|err| {
269                ::aws_smithy_runtime_api::client::interceptors::error::ContextAttachedError::new("endpoint params could not be built", err)
270            })?;
271        cfg.interceptor_state()
272            .store_put(::aws_smithy_runtime_api::client::endpoint::EndpointResolverParams::new(params));
273        ::std::result::Result::Ok(())
274    }
275}
276
277// The get_* functions below are generated from JMESPath expressions in the
278// operationContextParams trait. They target the operation's input shape.
279
280/// Error type for the `CreateFargateProfileError` operation.
281#[non_exhaustive]
282#[derive(::std::fmt::Debug)]
283pub enum CreateFargateProfileError {
284    /// <p>These errors are usually caused by a client action. Actions can include using an action or resource on behalf of an <a href="https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_terms-and-concepts.html">IAM principal</a> that doesn't have permissions to use the action or resource or specifying an identifier that is not valid.</p>
285    ClientException(crate::types::error::ClientException),
286    /// <p>The specified parameter is invalid. Review the available parameters for the API request.</p>
287    InvalidParameterException(crate::types::error::InvalidParameterException),
288    /// <p>The request is invalid given the state of the cluster. Check the state of the cluster and the associated operations.</p>
289    InvalidRequestException(crate::types::error::InvalidRequestException),
290    /// <p>You have encountered a service limit on the specified resource.</p>
291    ResourceLimitExceededException(crate::types::error::ResourceLimitExceededException),
292    /// <p>These errors are usually caused by a server-side issue.</p>
293    ServerException(crate::types::error::ServerException),
294    /// <p>At least one of your specified cluster subnets is in an Availability Zone that does not support Amazon EKS. The exception output specifies the supported Availability Zones for your account, from which you can choose subnets for your cluster.</p>
295    UnsupportedAvailabilityZoneException(crate::types::error::UnsupportedAvailabilityZoneException),
296    /// An unexpected error occurred (e.g., invalid JSON returned by the service or an unknown error code).
297    #[deprecated(note = "Matching `Unhandled` directly is not forwards compatible. Instead, match using a \
298    variable wildcard pattern and check `.code()`:
299     \
300    &nbsp;&nbsp;&nbsp;`err if err.code() == Some(\"SpecificExceptionCode\") => { /* handle the error */ }`
301     \
302    See [`ProvideErrorMetadata`](#impl-ProvideErrorMetadata-for-CreateFargateProfileError) for what information is available for the error.")]
303    Unhandled(crate::error::sealed_unhandled::Unhandled),
304}
305impl CreateFargateProfileError {
306    /// Creates the `CreateFargateProfileError::Unhandled` variant from any error type.
307    pub fn unhandled(
308        err: impl ::std::convert::Into<::std::boxed::Box<dyn ::std::error::Error + ::std::marker::Send + ::std::marker::Sync + 'static>>,
309    ) -> Self {
310        Self::Unhandled(crate::error::sealed_unhandled::Unhandled {
311            source: err.into(),
312            meta: ::std::default::Default::default(),
313        })
314    }
315
316    /// Creates the `CreateFargateProfileError::Unhandled` variant from an [`ErrorMetadata`](::aws_smithy_types::error::ErrorMetadata).
317    pub fn generic(err: ::aws_smithy_types::error::ErrorMetadata) -> Self {
318        Self::Unhandled(crate::error::sealed_unhandled::Unhandled {
319            source: err.clone().into(),
320            meta: err,
321        })
322    }
323    ///
324    /// Returns error metadata, which includes the error code, message,
325    /// request ID, and potentially additional information.
326    ///
327    pub fn meta(&self) -> &::aws_smithy_types::error::ErrorMetadata {
328        match self {
329            Self::ClientException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
330            Self::InvalidParameterException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
331            Self::InvalidRequestException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
332            Self::ResourceLimitExceededException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
333            Self::ServerException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
334            Self::UnsupportedAvailabilityZoneException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
335            Self::Unhandled(e) => &e.meta,
336        }
337    }
338    /// Returns `true` if the error kind is `CreateFargateProfileError::ClientException`.
339    pub fn is_client_exception(&self) -> bool {
340        matches!(self, Self::ClientException(_))
341    }
342    /// Returns `true` if the error kind is `CreateFargateProfileError::InvalidParameterException`.
343    pub fn is_invalid_parameter_exception(&self) -> bool {
344        matches!(self, Self::InvalidParameterException(_))
345    }
346    /// Returns `true` if the error kind is `CreateFargateProfileError::InvalidRequestException`.
347    pub fn is_invalid_request_exception(&self) -> bool {
348        matches!(self, Self::InvalidRequestException(_))
349    }
350    /// Returns `true` if the error kind is `CreateFargateProfileError::ResourceLimitExceededException`.
351    pub fn is_resource_limit_exceeded_exception(&self) -> bool {
352        matches!(self, Self::ResourceLimitExceededException(_))
353    }
354    /// Returns `true` if the error kind is `CreateFargateProfileError::ServerException`.
355    pub fn is_server_exception(&self) -> bool {
356        matches!(self, Self::ServerException(_))
357    }
358    /// Returns `true` if the error kind is `CreateFargateProfileError::UnsupportedAvailabilityZoneException`.
359    pub fn is_unsupported_availability_zone_exception(&self) -> bool {
360        matches!(self, Self::UnsupportedAvailabilityZoneException(_))
361    }
362}
363impl ::std::error::Error for CreateFargateProfileError {
364    fn source(&self) -> ::std::option::Option<&(dyn ::std::error::Error + 'static)> {
365        match self {
366            Self::ClientException(_inner) => ::std::option::Option::Some(_inner),
367            Self::InvalidParameterException(_inner) => ::std::option::Option::Some(_inner),
368            Self::InvalidRequestException(_inner) => ::std::option::Option::Some(_inner),
369            Self::ResourceLimitExceededException(_inner) => ::std::option::Option::Some(_inner),
370            Self::ServerException(_inner) => ::std::option::Option::Some(_inner),
371            Self::UnsupportedAvailabilityZoneException(_inner) => ::std::option::Option::Some(_inner),
372            Self::Unhandled(_inner) => ::std::option::Option::Some(&*_inner.source),
373        }
374    }
375}
376impl ::std::fmt::Display for CreateFargateProfileError {
377    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
378        match self {
379            Self::ClientException(_inner) => _inner.fmt(f),
380            Self::InvalidParameterException(_inner) => _inner.fmt(f),
381            Self::InvalidRequestException(_inner) => _inner.fmt(f),
382            Self::ResourceLimitExceededException(_inner) => _inner.fmt(f),
383            Self::ServerException(_inner) => _inner.fmt(f),
384            Self::UnsupportedAvailabilityZoneException(_inner) => _inner.fmt(f),
385            Self::Unhandled(_inner) => {
386                if let ::std::option::Option::Some(code) = ::aws_smithy_types::error::metadata::ProvideErrorMetadata::code(self) {
387                    write!(f, "unhandled error ({code})")
388                } else {
389                    f.write_str("unhandled error")
390                }
391            }
392        }
393    }
394}
395impl ::aws_smithy_types::retry::ProvideErrorKind for CreateFargateProfileError {
396    fn code(&self) -> ::std::option::Option<&str> {
397        ::aws_smithy_types::error::metadata::ProvideErrorMetadata::code(self)
398    }
399    fn retryable_error_kind(&self) -> ::std::option::Option<::aws_smithy_types::retry::ErrorKind> {
400        ::std::option::Option::None
401    }
402}
403impl ::aws_smithy_types::error::metadata::ProvideErrorMetadata for CreateFargateProfileError {
404    fn meta(&self) -> &::aws_smithy_types::error::ErrorMetadata {
405        match self {
406            Self::ClientException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
407            Self::InvalidParameterException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
408            Self::InvalidRequestException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
409            Self::ResourceLimitExceededException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
410            Self::ServerException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
411            Self::UnsupportedAvailabilityZoneException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
412            Self::Unhandled(_inner) => &_inner.meta,
413        }
414    }
415}
416impl ::aws_smithy_runtime_api::client::result::CreateUnhandledError for CreateFargateProfileError {
417    fn create_unhandled_error(
418        source: ::std::boxed::Box<dyn ::std::error::Error + ::std::marker::Send + ::std::marker::Sync + 'static>,
419        meta: ::std::option::Option<::aws_smithy_types::error::ErrorMetadata>,
420    ) -> Self {
421        Self::Unhandled(crate::error::sealed_unhandled::Unhandled {
422            source,
423            meta: meta.unwrap_or_default(),
424        })
425    }
426}
427impl ::aws_types::request_id::RequestId for crate::operation::create_fargate_profile::CreateFargateProfileError {
428    fn request_id(&self) -> Option<&str> {
429        self.meta().request_id()
430    }
431}
432
433pub use crate::operation::create_fargate_profile::_create_fargate_profile_input::CreateFargateProfileInput;
434
435pub use crate::operation::create_fargate_profile::_create_fargate_profile_output::CreateFargateProfileOutput;
436
437mod _create_fargate_profile_input;
438
439mod _create_fargate_profile_output;
440
441/// Builders
442pub mod builders;