1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
pub use crate::operation::delete_cross_account_attachment::_delete_cross_account_attachment_output::DeleteCrossAccountAttachmentOutputBuilder;

pub use crate::operation::delete_cross_account_attachment::_delete_cross_account_attachment_input::DeleteCrossAccountAttachmentInputBuilder;

impl DeleteCrossAccountAttachmentInputBuilder {
    /// Sends a request with this input using the given client.
    pub async fn send_with(
        self,
        client: &crate::Client,
    ) -> ::std::result::Result<
        crate::operation::delete_cross_account_attachment::DeleteCrossAccountAttachmentOutput,
        ::aws_smithy_runtime_api::client::result::SdkError<
            crate::operation::delete_cross_account_attachment::DeleteCrossAccountAttachmentError,
            ::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
        >,
    > {
        let mut fluent_builder = client.delete_cross_account_attachment();
        fluent_builder.inner = self;
        fluent_builder.send().await
    }
}
/// Fluent builder constructing a request to `DeleteCrossAccountAttachment`.
///
/// <p>Delete a cross-account attachment. When you delete an attachment, Global Accelerator revokes the permission to use the resources in the attachment from all principals in the list of principals. Global Accelerator revokes the permission for specific resources by doing the following:</p>
/// <ul>
/// <li>
/// <p>If the principal is an account ID, Global Accelerator reviews every accelerator in the account and removes cross-account endpoints from all accelerators.</p></li>
/// <li>
/// <p>If the principal is an accelerator, Global Accelerator reviews just that accelerator and removes cross-account endpoints from it.</p></li>
/// </ul>
/// <p>If there are overlapping permissions provided by multiple cross-account attachments, Global Accelerator only removes endpoints if there are no current cross-account attachments that provide access permission. For example, if you delete a cross-account attachment that lists an accelerator as a principal, but another cross-account attachment includes the account ID that owns that accelerator, endpoints will not be removed from the accelerator.</p>
#[derive(::std::clone::Clone, ::std::fmt::Debug)]
pub struct DeleteCrossAccountAttachmentFluentBuilder {
    handle: ::std::sync::Arc<crate::client::Handle>,
    inner: crate::operation::delete_cross_account_attachment::builders::DeleteCrossAccountAttachmentInputBuilder,
    config_override: ::std::option::Option<crate::config::Builder>,
}
impl
    crate::client::customize::internal::CustomizableSend<
        crate::operation::delete_cross_account_attachment::DeleteCrossAccountAttachmentOutput,
        crate::operation::delete_cross_account_attachment::DeleteCrossAccountAttachmentError,
    > for DeleteCrossAccountAttachmentFluentBuilder
{
    fn send(
        self,
        config_override: crate::config::Builder,
    ) -> crate::client::customize::internal::BoxFuture<
        crate::client::customize::internal::SendResult<
            crate::operation::delete_cross_account_attachment::DeleteCrossAccountAttachmentOutput,
            crate::operation::delete_cross_account_attachment::DeleteCrossAccountAttachmentError,
        >,
    > {
        ::std::boxed::Box::pin(async move { self.config_override(config_override).send().await })
    }
}
impl DeleteCrossAccountAttachmentFluentBuilder {
    /// Creates a new `DeleteCrossAccountAttachment`.
    pub(crate) fn new(handle: ::std::sync::Arc<crate::client::Handle>) -> Self {
        Self {
            handle,
            inner: ::std::default::Default::default(),
            config_override: ::std::option::Option::None,
        }
    }
    /// Access the DeleteCrossAccountAttachment as a reference.
    pub fn as_input(&self) -> &crate::operation::delete_cross_account_attachment::builders::DeleteCrossAccountAttachmentInputBuilder {
        &self.inner
    }
    /// Sends the request and returns the response.
    ///
    /// If an error occurs, an `SdkError` will be returned with additional details that
    /// can be matched against.
    ///
    /// By default, any retryable failures will be retried twice. Retry behavior
    /// is configurable with the [RetryConfig](aws_smithy_types::retry::RetryConfig), which can be
    /// set when configuring the client.
    pub async fn send(
        self,
    ) -> ::std::result::Result<
        crate::operation::delete_cross_account_attachment::DeleteCrossAccountAttachmentOutput,
        ::aws_smithy_runtime_api::client::result::SdkError<
            crate::operation::delete_cross_account_attachment::DeleteCrossAccountAttachmentError,
            ::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
        >,
    > {
        let input = self
            .inner
            .build()
            .map_err(::aws_smithy_runtime_api::client::result::SdkError::construction_failure)?;
        let runtime_plugins = crate::operation::delete_cross_account_attachment::DeleteCrossAccountAttachment::operation_runtime_plugins(
            self.handle.runtime_plugins.clone(),
            &self.handle.conf,
            self.config_override,
        );
        crate::operation::delete_cross_account_attachment::DeleteCrossAccountAttachment::orchestrate(&runtime_plugins, input).await
    }

    /// Consumes this builder, creating a customizable operation that can be modified before being sent.
    pub fn customize(
        self,
    ) -> crate::client::customize::CustomizableOperation<
        crate::operation::delete_cross_account_attachment::DeleteCrossAccountAttachmentOutput,
        crate::operation::delete_cross_account_attachment::DeleteCrossAccountAttachmentError,
        Self,
    > {
        crate::client::customize::CustomizableOperation::new(self)
    }
    pub(crate) fn config_override(mut self, config_override: impl Into<crate::config::Builder>) -> Self {
        self.set_config_override(Some(config_override.into()));
        self
    }

    pub(crate) fn set_config_override(&mut self, config_override: Option<crate::config::Builder>) -> &mut Self {
        self.config_override = config_override;
        self
    }
    /// <p>The Amazon Resource Name (ARN) for the cross-account attachment to delete.</p>
    pub fn attachment_arn(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
        self.inner = self.inner.attachment_arn(input.into());
        self
    }
    /// <p>The Amazon Resource Name (ARN) for the cross-account attachment to delete.</p>
    pub fn set_attachment_arn(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
        self.inner = self.inner.set_attachment_arn(input);
        self
    }
    /// <p>The Amazon Resource Name (ARN) for the cross-account attachment to delete.</p>
    pub fn get_attachment_arn(&self) -> &::std::option::Option<::std::string::String> {
        self.inner.get_attachment_arn()
    }
}