aws_sdk_config/operation/
delete_config_rule.rs

1// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
2/// Orchestration and serialization glue logic for `DeleteConfigRule`.
3#[derive(::std::clone::Clone, ::std::default::Default, ::std::fmt::Debug)]
4#[non_exhaustive]
5pub struct DeleteConfigRule;
6impl DeleteConfigRule {
7    /// Creates a new `DeleteConfigRule`
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_config_rule::DeleteConfigRuleInput,
14    ) -> ::std::result::Result<
15        crate::operation::delete_config_rule::DeleteConfigRuleOutput,
16        ::aws_smithy_runtime_api::client::result::SdkError<
17            crate::operation::delete_config_rule::DeleteConfigRuleError,
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_config_rule::DeleteConfigRuleError>()
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_config_rule::DeleteConfigRuleOutput>()
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_config_rule::DeleteConfigRuleInput,
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("Config Service", "DeleteConfigRule", 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                "Config Service.DeleteConfigRule",
59                "rpc.service" = "Config Service",
60                "rpc.method" = "DeleteConfigRule",
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 DeleteConfigRule {
88    fn config(&self) -> ::std::option::Option<::aws_smithy_types::config_bag::FrozenLayer> {
89        let mut cfg = ::aws_smithy_types::config_bag::Layer::new("DeleteConfigRule");
90
91        cfg.store_put(::aws_smithy_runtime_api::client::ser_de::SharedRequestSerializer::new(
92            DeleteConfigRuleRequestSerializer,
93        ));
94        cfg.store_put(::aws_smithy_runtime_api::client::ser_de::SharedResponseDeserializer::new(
95            DeleteConfigRuleResponseDeserializer,
96        ));
97
98        cfg.store_put(::aws_smithy_runtime_api::client::auth::AuthSchemeOptionResolverParams::new(
99            crate::config::auth::Params::builder()
100                .operation_name("DeleteConfigRule")
101                .build()
102                .expect("required fields set"),
103        ));
104
105        cfg.store_put(::aws_smithy_runtime_api::client::orchestrator::Metadata::new(
106            "DeleteConfigRule",
107            "Config Service",
108        ));
109        let mut signing_options = ::aws_runtime::auth::SigningOptions::default();
110        signing_options.double_uri_encode = true;
111        signing_options.content_sha256_header = false;
112        signing_options.normalize_uri_path = true;
113        signing_options.payload_override = None;
114
115        cfg.store_put(::aws_runtime::auth::SigV4OperationSigningConfig {
116            signing_options,
117            ..::std::default::Default::default()
118        });
119
120        ::std::option::Option::Some(cfg.freeze())
121    }
122
123    fn runtime_components(
124        &self,
125        _: &::aws_smithy_runtime_api::client::runtime_components::RuntimeComponentsBuilder,
126    ) -> ::std::borrow::Cow<'_, ::aws_smithy_runtime_api::client::runtime_components::RuntimeComponentsBuilder> {
127        #[allow(unused_mut)]
128        let mut rcb = ::aws_smithy_runtime_api::client::runtime_components::RuntimeComponentsBuilder::new("DeleteConfigRule")
129            .with_interceptor(::aws_smithy_runtime::client::stalled_stream_protection::StalledStreamProtectionInterceptor::default())
130            .with_interceptor(DeleteConfigRuleEndpointParamsInterceptor)
131            .with_retry_classifier(::aws_smithy_runtime::client::retries::classifiers::TransientErrorClassifier::<
132                crate::operation::delete_config_rule::DeleteConfigRuleError,
133            >::new())
134            .with_retry_classifier(::aws_smithy_runtime::client::retries::classifiers::ModeledAsRetryableClassifier::<
135                crate::operation::delete_config_rule::DeleteConfigRuleError,
136            >::new())
137            .with_retry_classifier(::aws_runtime::retries::classifiers::AwsErrorCodeClassifier::<
138                crate::operation::delete_config_rule::DeleteConfigRuleError,
139            >::new());
140
141        ::std::borrow::Cow::Owned(rcb)
142    }
143}
144
145#[derive(Debug)]
146struct DeleteConfigRuleResponseDeserializer;
147impl ::aws_smithy_runtime_api::client::ser_de::DeserializeResponse for DeleteConfigRuleResponseDeserializer {
148    fn deserialize_nonstreaming(
149        &self,
150        response: &::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
151    ) -> ::aws_smithy_runtime_api::client::interceptors::context::OutputOrError {
152        let (success, status) = (response.status().is_success(), response.status().as_u16());
153        let headers = response.headers();
154        let body = response.body().bytes().expect("body loaded");
155        #[allow(unused_mut)]
156        let mut force_error = false;
157        ::tracing::debug!(request_id = ?::aws_types::request_id::RequestId::request_id(response));
158        let parse_result = if !success && status != 200 || force_error {
159            crate::protocol_serde::shape_delete_config_rule::de_delete_config_rule_http_error(status, headers, body)
160        } else {
161            crate::protocol_serde::shape_delete_config_rule::de_delete_config_rule_http_response(status, headers, body)
162        };
163        crate::protocol_serde::type_erase_result(parse_result)
164    }
165}
166#[derive(Debug)]
167struct DeleteConfigRuleRequestSerializer;
168impl ::aws_smithy_runtime_api::client::ser_de::SerializeRequest for DeleteConfigRuleRequestSerializer {
169    #[allow(unused_mut, clippy::let_and_return, clippy::needless_borrow, clippy::useless_conversion)]
170    fn serialize_input(
171        &self,
172        input: ::aws_smithy_runtime_api::client::interceptors::context::Input,
173        _cfg: &mut ::aws_smithy_types::config_bag::ConfigBag,
174    ) -> ::std::result::Result<::aws_smithy_runtime_api::client::orchestrator::HttpRequest, ::aws_smithy_runtime_api::box_error::BoxError> {
175        let input = input
176            .downcast::<crate::operation::delete_config_rule::DeleteConfigRuleInput>()
177            .expect("correct type");
178        let _header_serialization_settings = _cfg
179            .load::<crate::serialization_settings::HeaderSerializationSettings>()
180            .cloned()
181            .unwrap_or_default();
182        let mut request_builder = {
183            #[allow(clippy::uninlined_format_args)]
184            fn uri_base(
185                _input: &crate::operation::delete_config_rule::DeleteConfigRuleInput,
186                output: &mut ::std::string::String,
187            ) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
188                use ::std::fmt::Write as _;
189                ::std::write!(output, "/").expect("formatting should succeed");
190                ::std::result::Result::Ok(())
191            }
192            #[allow(clippy::unnecessary_wraps)]
193            fn update_http_builder(
194                input: &crate::operation::delete_config_rule::DeleteConfigRuleInput,
195                builder: ::http::request::Builder,
196            ) -> ::std::result::Result<::http::request::Builder, ::aws_smithy_types::error::operation::BuildError> {
197                let mut uri = ::std::string::String::new();
198                uri_base(input, &mut uri)?;
199                ::std::result::Result::Ok(builder.method("POST").uri(uri))
200            }
201            let mut builder = update_http_builder(&input, ::http::request::Builder::new())?;
202            builder = _header_serialization_settings.set_default_header(builder, ::http::header::CONTENT_TYPE, "application/x-amz-json-1.1");
203            builder = _header_serialization_settings.set_default_header(
204                builder,
205                ::http::header::HeaderName::from_static("x-amz-target"),
206                "StarlingDoveService.DeleteConfigRule",
207            );
208            builder
209        };
210        let body = ::aws_smithy_types::body::SdkBody::from(crate::protocol_serde::shape_delete_config_rule::ser_delete_config_rule_input(&input)?);
211        if let Some(content_length) = body.content_length() {
212            let content_length = content_length.to_string();
213            request_builder = _header_serialization_settings.set_default_header(request_builder, ::http::header::CONTENT_LENGTH, &content_length);
214        }
215        ::std::result::Result::Ok(request_builder.body(body).expect("valid request").try_into().unwrap())
216    }
217}
218#[derive(Debug)]
219struct DeleteConfigRuleEndpointParamsInterceptor;
220
221impl ::aws_smithy_runtime_api::client::interceptors::Intercept for DeleteConfigRuleEndpointParamsInterceptor {
222    fn name(&self) -> &'static str {
223        "DeleteConfigRuleEndpointParamsInterceptor"
224    }
225
226    fn read_before_execution(
227        &self,
228        context: &::aws_smithy_runtime_api::client::interceptors::context::BeforeSerializationInterceptorContextRef<
229            '_,
230            ::aws_smithy_runtime_api::client::interceptors::context::Input,
231            ::aws_smithy_runtime_api::client::interceptors::context::Output,
232            ::aws_smithy_runtime_api::client::interceptors::context::Error,
233        >,
234        cfg: &mut ::aws_smithy_types::config_bag::ConfigBag,
235    ) -> ::std::result::Result<(), ::aws_smithy_runtime_api::box_error::BoxError> {
236        let _input = context
237            .input()
238            .downcast_ref::<DeleteConfigRuleInput>()
239            .ok_or("failed to downcast to DeleteConfigRuleInput")?;
240
241        let params = crate::config::endpoint::Params::builder()
242            .set_region(cfg.load::<::aws_types::region::Region>().map(|r| r.as_ref().to_owned()))
243            .set_use_dual_stack(cfg.load::<::aws_types::endpoint_config::UseDualStack>().map(|ty| ty.0))
244            .set_use_fips(cfg.load::<::aws_types::endpoint_config::UseFips>().map(|ty| ty.0))
245            .set_endpoint(cfg.load::<::aws_types::endpoint_config::EndpointUrl>().map(|ty| ty.0.clone()))
246            .build()
247            .map_err(|err| {
248                ::aws_smithy_runtime_api::client::interceptors::error::ContextAttachedError::new("endpoint params could not be built", err)
249            })?;
250        cfg.interceptor_state()
251            .store_put(::aws_smithy_runtime_api::client::endpoint::EndpointResolverParams::new(params));
252        ::std::result::Result::Ok(())
253    }
254}
255
256// The get_* functions below are generated from JMESPath expressions in the
257// operationContextParams trait. They target the operation's input shape.
258
259/// Error type for the `DeleteConfigRuleError` operation.
260#[non_exhaustive]
261#[derive(::std::fmt::Debug)]
262pub enum DeleteConfigRuleError {
263    /// <p>The Config rule in the request is not valid. Verify that the rule is an Config Process Check rule, that the rule name is correct, and that valid Amazon Resouce Names (ARNs) are used before trying again.</p>
264    NoSuchConfigRuleException(crate::types::error::NoSuchConfigRuleException),
265    /// <p>You see this exception in the following cases:</p>
266    /// <ul>
267    /// <li>
268    /// <p>For DeleteConfigRule, Config is deleting this rule. Try your request again later.</p></li>
269    /// <li>
270    /// <p>For DeleteConfigRule, the rule is deleting your evaluation results. Try your request again later.</p></li>
271    /// <li>
272    /// <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>
273    /// <li>
274    /// <p>For PutConfigOrganizationRule, organization Config rule deletion is in progress. Try your request again later.</p></li>
275    /// <li>
276    /// <p>For DeleteOrganizationConfigRule, organization Config rule creation is in progress. Try your request again later.</p></li>
277    /// <li>
278    /// <p>For PutConformancePack and PutOrganizationConformancePack, a conformance pack creation, update, and deletion is in progress. Try your request again later.</p></li>
279    /// <li>
280    /// <p>For DeleteConformancePack, a conformance pack creation, update, and deletion is in progress. Try your request again later.</p></li>
281    /// </ul>
282    ResourceInUseException(crate::types::error::ResourceInUseException),
283    /// An unexpected error occurred (e.g., invalid JSON returned by the service or an unknown error code).
284    #[deprecated(note = "Matching `Unhandled` directly is not forwards compatible. Instead, match using a \
285    variable wildcard pattern and check `.code()`:
286     \
287    &nbsp;&nbsp;&nbsp;`err if err.code() == Some(\"SpecificExceptionCode\") => { /* handle the error */ }`
288     \
289    See [`ProvideErrorMetadata`](#impl-ProvideErrorMetadata-for-DeleteConfigRuleError) for what information is available for the error.")]
290    Unhandled(crate::error::sealed_unhandled::Unhandled),
291}
292impl DeleteConfigRuleError {
293    /// Creates the `DeleteConfigRuleError::Unhandled` variant from any error type.
294    pub fn unhandled(
295        err: impl ::std::convert::Into<::std::boxed::Box<dyn ::std::error::Error + ::std::marker::Send + ::std::marker::Sync + 'static>>,
296    ) -> Self {
297        Self::Unhandled(crate::error::sealed_unhandled::Unhandled {
298            source: err.into(),
299            meta: ::std::default::Default::default(),
300        })
301    }
302
303    /// Creates the `DeleteConfigRuleError::Unhandled` variant from an [`ErrorMetadata`](::aws_smithy_types::error::ErrorMetadata).
304    pub fn generic(err: ::aws_smithy_types::error::ErrorMetadata) -> Self {
305        Self::Unhandled(crate::error::sealed_unhandled::Unhandled {
306            source: err.clone().into(),
307            meta: err,
308        })
309    }
310    ///
311    /// Returns error metadata, which includes the error code, message,
312    /// request ID, and potentially additional information.
313    ///
314    pub fn meta(&self) -> &::aws_smithy_types::error::ErrorMetadata {
315        match self {
316            Self::NoSuchConfigRuleException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
317            Self::ResourceInUseException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
318            Self::Unhandled(e) => &e.meta,
319        }
320    }
321    /// Returns `true` if the error kind is `DeleteConfigRuleError::NoSuchConfigRuleException`.
322    pub fn is_no_such_config_rule_exception(&self) -> bool {
323        matches!(self, Self::NoSuchConfigRuleException(_))
324    }
325    /// Returns `true` if the error kind is `DeleteConfigRuleError::ResourceInUseException`.
326    pub fn is_resource_in_use_exception(&self) -> bool {
327        matches!(self, Self::ResourceInUseException(_))
328    }
329}
330impl ::std::error::Error for DeleteConfigRuleError {
331    fn source(&self) -> ::std::option::Option<&(dyn ::std::error::Error + 'static)> {
332        match self {
333            Self::NoSuchConfigRuleException(_inner) => ::std::option::Option::Some(_inner),
334            Self::ResourceInUseException(_inner) => ::std::option::Option::Some(_inner),
335            Self::Unhandled(_inner) => ::std::option::Option::Some(&*_inner.source),
336        }
337    }
338}
339impl ::std::fmt::Display for DeleteConfigRuleError {
340    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
341        match self {
342            Self::NoSuchConfigRuleException(_inner) => _inner.fmt(f),
343            Self::ResourceInUseException(_inner) => _inner.fmt(f),
344            Self::Unhandled(_inner) => {
345                if let ::std::option::Option::Some(code) = ::aws_smithy_types::error::metadata::ProvideErrorMetadata::code(self) {
346                    write!(f, "unhandled error ({code})")
347                } else {
348                    f.write_str("unhandled error")
349                }
350            }
351        }
352    }
353}
354impl ::aws_smithy_types::retry::ProvideErrorKind for DeleteConfigRuleError {
355    fn code(&self) -> ::std::option::Option<&str> {
356        ::aws_smithy_types::error::metadata::ProvideErrorMetadata::code(self)
357    }
358    fn retryable_error_kind(&self) -> ::std::option::Option<::aws_smithy_types::retry::ErrorKind> {
359        ::std::option::Option::None
360    }
361}
362impl ::aws_smithy_types::error::metadata::ProvideErrorMetadata for DeleteConfigRuleError {
363    fn meta(&self) -> &::aws_smithy_types::error::ErrorMetadata {
364        match self {
365            Self::NoSuchConfigRuleException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
366            Self::ResourceInUseException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
367            Self::Unhandled(_inner) => &_inner.meta,
368        }
369    }
370}
371impl ::aws_smithy_runtime_api::client::result::CreateUnhandledError for DeleteConfigRuleError {
372    fn create_unhandled_error(
373        source: ::std::boxed::Box<dyn ::std::error::Error + ::std::marker::Send + ::std::marker::Sync + 'static>,
374        meta: ::std::option::Option<::aws_smithy_types::error::ErrorMetadata>,
375    ) -> Self {
376        Self::Unhandled(crate::error::sealed_unhandled::Unhandled {
377            source,
378            meta: meta.unwrap_or_default(),
379        })
380    }
381}
382impl ::aws_types::request_id::RequestId for crate::operation::delete_config_rule::DeleteConfigRuleError {
383    fn request_id(&self) -> Option<&str> {
384        self.meta().request_id()
385    }
386}
387
388pub use crate::operation::delete_config_rule::_delete_config_rule_output::DeleteConfigRuleOutput;
389
390pub use crate::operation::delete_config_rule::_delete_config_rule_input::DeleteConfigRuleInput;
391
392mod _delete_config_rule_input;
393
394mod _delete_config_rule_output;
395
396/// Builders
397pub mod builders;