aws_sdk_config/operation/
delete_organization_conformance_pack.rs

1// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
2/// Orchestration and serialization glue logic for `DeleteOrganizationConformancePack`.
3#[derive(::std::clone::Clone, ::std::default::Default, ::std::fmt::Debug)]
4#[non_exhaustive]
5pub struct DeleteOrganizationConformancePack;
6impl DeleteOrganizationConformancePack {
7    /// Creates a new `DeleteOrganizationConformancePack`
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::delete_organization_conformance_pack::DeleteOrganizationConformancePackInput,
14    ) -> ::std::result::Result<
15        crate::operation::delete_organization_conformance_pack::DeleteOrganizationConformancePackOutput,
16        ::aws_smithy_runtime_api::client::result::SdkError<
17            crate::operation::delete_organization_conformance_pack::DeleteOrganizationConformancePackError,
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::delete_organization_conformance_pack::DeleteOrganizationConformancePackError>()
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::delete_organization_conformance_pack::DeleteOrganizationConformancePackOutput>()
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::delete_organization_conformance_pack::DeleteOrganizationConformancePackInput,
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(
55            "Config Service",
56            "DeleteOrganizationConformancePack",
57            input,
58            runtime_plugins,
59            stop_point,
60        )
61        // Create a parent span for the entire operation. Includes a random, internal-only,
62        // seven-digit ID for the operation orchestration so that it can be correlated in the logs.
63        .instrument(::tracing::debug_span!(
64            "Config Service.DeleteOrganizationConformancePack",
65            "rpc.service" = "Config Service",
66            "rpc.method" = "DeleteOrganizationConformancePack",
67            "sdk_invocation_id" = ::fastrand::u32(1_000_000..10_000_000),
68            "rpc.system" = "aws-api",
69        ))
70        .await
71    }
72
73    pub(crate) fn operation_runtime_plugins(
74        client_runtime_plugins: ::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugins,
75        client_config: &crate::config::Config,
76        config_override: ::std::option::Option<crate::config::Builder>,
77    ) -> ::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugins {
78        let mut runtime_plugins = client_runtime_plugins.with_operation_plugin(Self::new());
79        runtime_plugins = runtime_plugins.with_client_plugin(crate::auth_plugin::DefaultAuthOptionsPlugin::new(vec![
80            ::aws_runtime::auth::sigv4::SCHEME_ID,
81        ]));
82        if let ::std::option::Option::Some(config_override) = config_override {
83            for plugin in config_override.runtime_plugins.iter().cloned() {
84                runtime_plugins = runtime_plugins.with_operation_plugin(plugin);
85            }
86            runtime_plugins = runtime_plugins.with_operation_plugin(crate::config::ConfigOverrideRuntimePlugin::new(
87                config_override,
88                client_config.config.clone(),
89                &client_config.runtime_components,
90            ));
91        }
92        runtime_plugins
93    }
94}
95impl ::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugin for DeleteOrganizationConformancePack {
96    fn config(&self) -> ::std::option::Option<::aws_smithy_types::config_bag::FrozenLayer> {
97        let mut cfg = ::aws_smithy_types::config_bag::Layer::new("DeleteOrganizationConformancePack");
98
99        cfg.store_put(::aws_smithy_runtime_api::client::ser_de::SharedRequestSerializer::new(
100            DeleteOrganizationConformancePackRequestSerializer,
101        ));
102        cfg.store_put(::aws_smithy_runtime_api::client::ser_de::SharedResponseDeserializer::new(
103            DeleteOrganizationConformancePackResponseDeserializer,
104        ));
105
106        cfg.store_put(::aws_smithy_runtime_api::client::auth::AuthSchemeOptionResolverParams::new(
107            ::aws_smithy_runtime_api::client::auth::static_resolver::StaticAuthSchemeOptionResolverParams::new(),
108        ));
109
110        cfg.store_put(::aws_smithy_runtime_api::client::orchestrator::Metadata::new(
111            "DeleteOrganizationConformancePack",
112            "Config Service",
113        ));
114        let mut signing_options = ::aws_runtime::auth::SigningOptions::default();
115        signing_options.double_uri_encode = true;
116        signing_options.content_sha256_header = false;
117        signing_options.normalize_uri_path = true;
118        signing_options.payload_override = None;
119
120        cfg.store_put(::aws_runtime::auth::SigV4OperationSigningConfig {
121            signing_options,
122            ..::std::default::Default::default()
123        });
124
125        ::std::option::Option::Some(cfg.freeze())
126    }
127
128    fn runtime_components(
129        &self,
130        _: &::aws_smithy_runtime_api::client::runtime_components::RuntimeComponentsBuilder,
131    ) -> ::std::borrow::Cow<'_, ::aws_smithy_runtime_api::client::runtime_components::RuntimeComponentsBuilder> {
132        #[allow(unused_mut)]
133        let mut rcb = ::aws_smithy_runtime_api::client::runtime_components::RuntimeComponentsBuilder::new("DeleteOrganizationConformancePack")
134            .with_interceptor(::aws_smithy_runtime::client::stalled_stream_protection::StalledStreamProtectionInterceptor::default())
135            .with_interceptor(DeleteOrganizationConformancePackEndpointParamsInterceptor)
136            .with_retry_classifier(::aws_smithy_runtime::client::retries::classifiers::TransientErrorClassifier::<
137                crate::operation::delete_organization_conformance_pack::DeleteOrganizationConformancePackError,
138            >::new())
139            .with_retry_classifier(::aws_smithy_runtime::client::retries::classifiers::ModeledAsRetryableClassifier::<
140                crate::operation::delete_organization_conformance_pack::DeleteOrganizationConformancePackError,
141            >::new())
142            .with_retry_classifier(::aws_runtime::retries::classifiers::AwsErrorCodeClassifier::<
143                crate::operation::delete_organization_conformance_pack::DeleteOrganizationConformancePackError,
144            >::new());
145
146        ::std::borrow::Cow::Owned(rcb)
147    }
148}
149
150#[derive(Debug)]
151struct DeleteOrganizationConformancePackResponseDeserializer;
152impl ::aws_smithy_runtime_api::client::ser_de::DeserializeResponse for DeleteOrganizationConformancePackResponseDeserializer {
153    fn deserialize_nonstreaming(
154        &self,
155        response: &::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
156    ) -> ::aws_smithy_runtime_api::client::interceptors::context::OutputOrError {
157        let (success, status) = (response.status().is_success(), response.status().as_u16());
158        let headers = response.headers();
159        let body = response.body().bytes().expect("body loaded");
160        #[allow(unused_mut)]
161        let mut force_error = false;
162        ::tracing::debug!(request_id = ?::aws_types::request_id::RequestId::request_id(response));
163        let parse_result = if !success && status != 200 || force_error {
164            crate::protocol_serde::shape_delete_organization_conformance_pack::de_delete_organization_conformance_pack_http_error(
165                status, headers, body,
166            )
167        } else {
168            crate::protocol_serde::shape_delete_organization_conformance_pack::de_delete_organization_conformance_pack_http_response(
169                status, headers, body,
170            )
171        };
172        crate::protocol_serde::type_erase_result(parse_result)
173    }
174}
175#[derive(Debug)]
176struct DeleteOrganizationConformancePackRequestSerializer;
177impl ::aws_smithy_runtime_api::client::ser_de::SerializeRequest for DeleteOrganizationConformancePackRequestSerializer {
178    #[allow(unused_mut, clippy::let_and_return, clippy::needless_borrow, clippy::useless_conversion)]
179    fn serialize_input(
180        &self,
181        input: ::aws_smithy_runtime_api::client::interceptors::context::Input,
182        _cfg: &mut ::aws_smithy_types::config_bag::ConfigBag,
183    ) -> ::std::result::Result<::aws_smithy_runtime_api::client::orchestrator::HttpRequest, ::aws_smithy_runtime_api::box_error::BoxError> {
184        let input = input
185            .downcast::<crate::operation::delete_organization_conformance_pack::DeleteOrganizationConformancePackInput>()
186            .expect("correct type");
187        let _header_serialization_settings = _cfg
188            .load::<crate::serialization_settings::HeaderSerializationSettings>()
189            .cloned()
190            .unwrap_or_default();
191        let mut request_builder = {
192            fn uri_base(
193                _input: &crate::operation::delete_organization_conformance_pack::DeleteOrganizationConformancePackInput,
194                output: &mut ::std::string::String,
195            ) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
196                use ::std::fmt::Write as _;
197                ::std::write!(output, "/").expect("formatting should succeed");
198                ::std::result::Result::Ok(())
199            }
200            #[allow(clippy::unnecessary_wraps)]
201            fn update_http_builder(
202                input: &crate::operation::delete_organization_conformance_pack::DeleteOrganizationConformancePackInput,
203                builder: ::http::request::Builder,
204            ) -> ::std::result::Result<::http::request::Builder, ::aws_smithy_types::error::operation::BuildError> {
205                let mut uri = ::std::string::String::new();
206                uri_base(input, &mut uri)?;
207                ::std::result::Result::Ok(builder.method("POST").uri(uri))
208            }
209            let mut builder = update_http_builder(&input, ::http::request::Builder::new())?;
210            builder = _header_serialization_settings.set_default_header(builder, ::http::header::CONTENT_TYPE, "application/x-amz-json-1.1");
211            builder = _header_serialization_settings.set_default_header(
212                builder,
213                ::http::header::HeaderName::from_static("x-amz-target"),
214                "StarlingDoveService.DeleteOrganizationConformancePack",
215            );
216            builder
217        };
218        let body = ::aws_smithy_types::body::SdkBody::from(
219            crate::protocol_serde::shape_delete_organization_conformance_pack::ser_delete_organization_conformance_pack_input(&input)?,
220        );
221        if let Some(content_length) = body.content_length() {
222            let content_length = content_length.to_string();
223            request_builder = _header_serialization_settings.set_default_header(request_builder, ::http::header::CONTENT_LENGTH, &content_length);
224        }
225        ::std::result::Result::Ok(request_builder.body(body).expect("valid request").try_into().unwrap())
226    }
227}
228#[derive(Debug)]
229struct DeleteOrganizationConformancePackEndpointParamsInterceptor;
230
231impl ::aws_smithy_runtime_api::client::interceptors::Intercept for DeleteOrganizationConformancePackEndpointParamsInterceptor {
232    fn name(&self) -> &'static str {
233        "DeleteOrganizationConformancePackEndpointParamsInterceptor"
234    }
235
236    fn read_before_execution(
237        &self,
238        context: &::aws_smithy_runtime_api::client::interceptors::context::BeforeSerializationInterceptorContextRef<
239            '_,
240            ::aws_smithy_runtime_api::client::interceptors::context::Input,
241            ::aws_smithy_runtime_api::client::interceptors::context::Output,
242            ::aws_smithy_runtime_api::client::interceptors::context::Error,
243        >,
244        cfg: &mut ::aws_smithy_types::config_bag::ConfigBag,
245    ) -> ::std::result::Result<(), ::aws_smithy_runtime_api::box_error::BoxError> {
246        let _input = context
247            .input()
248            .downcast_ref::<DeleteOrganizationConformancePackInput>()
249            .ok_or("failed to downcast to DeleteOrganizationConformancePackInput")?;
250
251        let params = crate::config::endpoint::Params::builder()
252            .set_region(cfg.load::<::aws_types::region::Region>().map(|r| r.as_ref().to_owned()))
253            .set_use_dual_stack(cfg.load::<::aws_types::endpoint_config::UseDualStack>().map(|ty| ty.0))
254            .set_use_fips(cfg.load::<::aws_types::endpoint_config::UseFips>().map(|ty| ty.0))
255            .set_endpoint(cfg.load::<::aws_types::endpoint_config::EndpointUrl>().map(|ty| ty.0.clone()))
256            .build()
257            .map_err(|err| {
258                ::aws_smithy_runtime_api::client::interceptors::error::ContextAttachedError::new("endpoint params could not be built", err)
259            })?;
260        cfg.interceptor_state()
261            .store_put(::aws_smithy_runtime_api::client::endpoint::EndpointResolverParams::new(params));
262        ::std::result::Result::Ok(())
263    }
264}
265
266// The get_* functions below are generated from JMESPath expressions in the
267// operationContextParams trait. They target the operation's input shape.
268
269/// Error type for the `DeleteOrganizationConformancePackError` operation.
270#[non_exhaustive]
271#[derive(::std::fmt::Debug)]
272pub enum DeleteOrganizationConformancePackError {
273    /// <p>Config organization conformance pack that you passed in the filter does not exist.</p>
274    /// <p>For DeleteOrganizationConformancePack, you tried to delete an organization conformance pack that does not exist.</p>
275    NoSuchOrganizationConformancePackException(crate::types::error::NoSuchOrganizationConformancePackException),
276    /// <p>For <code>PutConfigurationAggregator</code> API, you can see this exception for the following reasons:</p>
277    /// <ul>
278    /// <li>
279    /// <p>No permission to call <code>EnableAWSServiceAccess</code> API</p></li>
280    /// <li>
281    /// <p>The configuration aggregator cannot be updated because your Amazon Web Services Organization management account or the delegated administrator role changed. Delete this aggregator and create a new one with the current Amazon Web Services Organization.</p></li>
282    /// <li>
283    /// <p>The configuration aggregator is associated with a previous Amazon Web Services Organization and Config cannot aggregate data with current Amazon Web Services Organization. Delete this aggregator and create a new one with the current Amazon Web Services Organization.</p></li>
284    /// <li>
285    /// <p>You are not a registered delegated administrator for Config with permissions to call <code>ListDelegatedAdministrators</code> API. Ensure that the management account registers delagated administrator for Config service principal name before the delegated administrator creates an aggregator.</p></li>
286    /// </ul>
287    /// <p>For all <code>OrganizationConfigRule</code> and <code>OrganizationConformancePack</code> APIs, Config throws an exception if APIs are called from member accounts. All APIs must be called from organization management account.</p>
288    OrganizationAccessDeniedException(crate::types::error::OrganizationAccessDeniedException),
289    /// <p>You see this exception in the following cases:</p>
290    /// <ul>
291    /// <li>
292    /// <p>For DeleteConfigRule, Config is deleting this rule. Try your request again later.</p></li>
293    /// <li>
294    /// <p>For DeleteConfigRule, the rule is deleting your evaluation results. Try your request again later.</p></li>
295    /// <li>
296    /// <p>For DeleteConfigRule, a remediation action is associated with the rule and Config cannot delete this rule. Delete the remediation action associated with the rule before deleting the rule and try your request again later.</p></li>
297    /// <li>
298    /// <p>For PutConfigOrganizationRule, organization Config rule deletion is in progress. Try your request again later.</p></li>
299    /// <li>
300    /// <p>For DeleteOrganizationConfigRule, organization Config rule creation is in progress. Try your request again later.</p></li>
301    /// <li>
302    /// <p>For PutConformancePack and PutOrganizationConformancePack, a conformance pack creation, update, and deletion is in progress. Try your request again later.</p></li>
303    /// <li>
304    /// <p>For DeleteConformancePack, a conformance pack creation, update, and deletion is in progress. Try your request again later.</p></li>
305    /// </ul>
306    ResourceInUseException(crate::types::error::ResourceInUseException),
307    /// An unexpected error occurred (e.g., invalid JSON returned by the service or an unknown error code).
308    #[deprecated(note = "Matching `Unhandled` directly is not forwards compatible. Instead, match using a \
309    variable wildcard pattern and check `.code()`:
310     \
311    &nbsp;&nbsp;&nbsp;`err if err.code() == Some(\"SpecificExceptionCode\") => { /* handle the error */ }`
312     \
313    See [`ProvideErrorMetadata`](#impl-ProvideErrorMetadata-for-DeleteOrganizationConformancePackError) for what information is available for the error.")]
314    Unhandled(crate::error::sealed_unhandled::Unhandled),
315}
316impl DeleteOrganizationConformancePackError {
317    /// Creates the `DeleteOrganizationConformancePackError::Unhandled` variant from any error type.
318    pub fn unhandled(
319        err: impl ::std::convert::Into<::std::boxed::Box<dyn ::std::error::Error + ::std::marker::Send + ::std::marker::Sync + 'static>>,
320    ) -> Self {
321        Self::Unhandled(crate::error::sealed_unhandled::Unhandled {
322            source: err.into(),
323            meta: ::std::default::Default::default(),
324        })
325    }
326
327    /// Creates the `DeleteOrganizationConformancePackError::Unhandled` variant from an [`ErrorMetadata`](::aws_smithy_types::error::ErrorMetadata).
328    pub fn generic(err: ::aws_smithy_types::error::ErrorMetadata) -> Self {
329        Self::Unhandled(crate::error::sealed_unhandled::Unhandled {
330            source: err.clone().into(),
331            meta: err,
332        })
333    }
334    ///
335    /// Returns error metadata, which includes the error code, message,
336    /// request ID, and potentially additional information.
337    ///
338    pub fn meta(&self) -> &::aws_smithy_types::error::ErrorMetadata {
339        match self {
340            Self::NoSuchOrganizationConformancePackException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
341            Self::OrganizationAccessDeniedException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
342            Self::ResourceInUseException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
343            Self::Unhandled(e) => &e.meta,
344        }
345    }
346    /// Returns `true` if the error kind is `DeleteOrganizationConformancePackError::NoSuchOrganizationConformancePackException`.
347    pub fn is_no_such_organization_conformance_pack_exception(&self) -> bool {
348        matches!(self, Self::NoSuchOrganizationConformancePackException(_))
349    }
350    /// Returns `true` if the error kind is `DeleteOrganizationConformancePackError::OrganizationAccessDeniedException`.
351    pub fn is_organization_access_denied_exception(&self) -> bool {
352        matches!(self, Self::OrganizationAccessDeniedException(_))
353    }
354    /// Returns `true` if the error kind is `DeleteOrganizationConformancePackError::ResourceInUseException`.
355    pub fn is_resource_in_use_exception(&self) -> bool {
356        matches!(self, Self::ResourceInUseException(_))
357    }
358}
359impl ::std::error::Error for DeleteOrganizationConformancePackError {
360    fn source(&self) -> ::std::option::Option<&(dyn ::std::error::Error + 'static)> {
361        match self {
362            Self::NoSuchOrganizationConformancePackException(_inner) => ::std::option::Option::Some(_inner),
363            Self::OrganizationAccessDeniedException(_inner) => ::std::option::Option::Some(_inner),
364            Self::ResourceInUseException(_inner) => ::std::option::Option::Some(_inner),
365            Self::Unhandled(_inner) => ::std::option::Option::Some(&*_inner.source),
366        }
367    }
368}
369impl ::std::fmt::Display for DeleteOrganizationConformancePackError {
370    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
371        match self {
372            Self::NoSuchOrganizationConformancePackException(_inner) => _inner.fmt(f),
373            Self::OrganizationAccessDeniedException(_inner) => _inner.fmt(f),
374            Self::ResourceInUseException(_inner) => _inner.fmt(f),
375            Self::Unhandled(_inner) => {
376                if let ::std::option::Option::Some(code) = ::aws_smithy_types::error::metadata::ProvideErrorMetadata::code(self) {
377                    write!(f, "unhandled error ({code})")
378                } else {
379                    f.write_str("unhandled error")
380                }
381            }
382        }
383    }
384}
385impl ::aws_smithy_types::retry::ProvideErrorKind for DeleteOrganizationConformancePackError {
386    fn code(&self) -> ::std::option::Option<&str> {
387        ::aws_smithy_types::error::metadata::ProvideErrorMetadata::code(self)
388    }
389    fn retryable_error_kind(&self) -> ::std::option::Option<::aws_smithy_types::retry::ErrorKind> {
390        ::std::option::Option::None
391    }
392}
393impl ::aws_smithy_types::error::metadata::ProvideErrorMetadata for DeleteOrganizationConformancePackError {
394    fn meta(&self) -> &::aws_smithy_types::error::ErrorMetadata {
395        match self {
396            Self::NoSuchOrganizationConformancePackException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
397            Self::OrganizationAccessDeniedException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
398            Self::ResourceInUseException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
399            Self::Unhandled(_inner) => &_inner.meta,
400        }
401    }
402}
403impl ::aws_smithy_runtime_api::client::result::CreateUnhandledError for DeleteOrganizationConformancePackError {
404    fn create_unhandled_error(
405        source: ::std::boxed::Box<dyn ::std::error::Error + ::std::marker::Send + ::std::marker::Sync + 'static>,
406        meta: ::std::option::Option<::aws_smithy_types::error::ErrorMetadata>,
407    ) -> Self {
408        Self::Unhandled(crate::error::sealed_unhandled::Unhandled {
409            source,
410            meta: meta.unwrap_or_default(),
411        })
412    }
413}
414impl ::aws_types::request_id::RequestId for crate::operation::delete_organization_conformance_pack::DeleteOrganizationConformancePackError {
415    fn request_id(&self) -> Option<&str> {
416        self.meta().request_id()
417    }
418}
419
420pub use crate::operation::delete_organization_conformance_pack::_delete_organization_conformance_pack_output::DeleteOrganizationConformancePackOutput;
421
422pub use crate::operation::delete_organization_conformance_pack::_delete_organization_conformance_pack_input::DeleteOrganizationConformancePackInput;
423
424mod _delete_organization_conformance_pack_input;
425
426mod _delete_organization_conformance_pack_output;
427
428/// Builders
429pub mod builders;