aws_sdk_globalaccelerator/operation/update_cross_account_attachment/
builders.rs

1// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
2pub use crate::operation::update_cross_account_attachment::_update_cross_account_attachment_output::UpdateCrossAccountAttachmentOutputBuilder;
3
4pub use crate::operation::update_cross_account_attachment::_update_cross_account_attachment_input::UpdateCrossAccountAttachmentInputBuilder;
5
6impl crate::operation::update_cross_account_attachment::builders::UpdateCrossAccountAttachmentInputBuilder {
7    /// Sends a request with this input using the given client.
8    pub async fn send_with(
9        self,
10        client: &crate::Client,
11    ) -> ::std::result::Result<
12        crate::operation::update_cross_account_attachment::UpdateCrossAccountAttachmentOutput,
13        ::aws_smithy_runtime_api::client::result::SdkError<
14            crate::operation::update_cross_account_attachment::UpdateCrossAccountAttachmentError,
15            ::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
16        >,
17    > {
18        let mut fluent_builder = client.update_cross_account_attachment();
19        fluent_builder.inner = self;
20        fluent_builder.send().await
21    }
22}
23/// Fluent builder constructing a request to `UpdateCrossAccountAttachment`.
24///
25/// <p>Update a cross-account attachment to add or remove principals or resources. When you update an attachment to remove a principal (account ID or accelerator) or a resource, Global Accelerator revokes the permission for specific resources.</p>
26/// <p>For more information, see <a href="https://docs.aws.amazon.com/global-accelerator/latest/dg/cross-account-resources.html"> Working with cross-account attachments and resources in Global Accelerator</a> in the <i> Global Accelerator Developer Guide</i>.</p>
27#[derive(::std::clone::Clone, ::std::fmt::Debug)]
28pub struct UpdateCrossAccountAttachmentFluentBuilder {
29    handle: ::std::sync::Arc<crate::client::Handle>,
30    inner: crate::operation::update_cross_account_attachment::builders::UpdateCrossAccountAttachmentInputBuilder,
31    config_override: ::std::option::Option<crate::config::Builder>,
32}
33impl
34    crate::client::customize::internal::CustomizableSend<
35        crate::operation::update_cross_account_attachment::UpdateCrossAccountAttachmentOutput,
36        crate::operation::update_cross_account_attachment::UpdateCrossAccountAttachmentError,
37    > for UpdateCrossAccountAttachmentFluentBuilder
38{
39    fn send(
40        self,
41        config_override: crate::config::Builder,
42    ) -> crate::client::customize::internal::BoxFuture<
43        crate::client::customize::internal::SendResult<
44            crate::operation::update_cross_account_attachment::UpdateCrossAccountAttachmentOutput,
45            crate::operation::update_cross_account_attachment::UpdateCrossAccountAttachmentError,
46        >,
47    > {
48        ::std::boxed::Box::pin(async move { self.config_override(config_override).send().await })
49    }
50}
51impl UpdateCrossAccountAttachmentFluentBuilder {
52    /// Creates a new `UpdateCrossAccountAttachmentFluentBuilder`.
53    pub(crate) fn new(handle: ::std::sync::Arc<crate::client::Handle>) -> Self {
54        Self {
55            handle,
56            inner: ::std::default::Default::default(),
57            config_override: ::std::option::Option::None,
58        }
59    }
60    /// Access the UpdateCrossAccountAttachment as a reference.
61    pub fn as_input(&self) -> &crate::operation::update_cross_account_attachment::builders::UpdateCrossAccountAttachmentInputBuilder {
62        &self.inner
63    }
64    /// Sends the request and returns the response.
65    ///
66    /// If an error occurs, an `SdkError` will be returned with additional details that
67    /// can be matched against.
68    ///
69    /// By default, any retryable failures will be retried twice. Retry behavior
70    /// is configurable with the [RetryConfig](aws_smithy_types::retry::RetryConfig), which can be
71    /// set when configuring the client.
72    pub async fn send(
73        self,
74    ) -> ::std::result::Result<
75        crate::operation::update_cross_account_attachment::UpdateCrossAccountAttachmentOutput,
76        ::aws_smithy_runtime_api::client::result::SdkError<
77            crate::operation::update_cross_account_attachment::UpdateCrossAccountAttachmentError,
78            ::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
79        >,
80    > {
81        let input = self
82            .inner
83            .build()
84            .map_err(::aws_smithy_runtime_api::client::result::SdkError::construction_failure)?;
85        let runtime_plugins = crate::operation::update_cross_account_attachment::UpdateCrossAccountAttachment::operation_runtime_plugins(
86            self.handle.runtime_plugins.clone(),
87            &self.handle.conf,
88            self.config_override,
89        );
90        crate::operation::update_cross_account_attachment::UpdateCrossAccountAttachment::orchestrate(&runtime_plugins, input).await
91    }
92
93    /// Consumes this builder, creating a customizable operation that can be modified before being sent.
94    pub fn customize(
95        self,
96    ) -> crate::client::customize::CustomizableOperation<
97        crate::operation::update_cross_account_attachment::UpdateCrossAccountAttachmentOutput,
98        crate::operation::update_cross_account_attachment::UpdateCrossAccountAttachmentError,
99        Self,
100    > {
101        crate::client::customize::CustomizableOperation::new(self)
102    }
103    pub(crate) fn config_override(mut self, config_override: impl ::std::convert::Into<crate::config::Builder>) -> Self {
104        self.set_config_override(::std::option::Option::Some(config_override.into()));
105        self
106    }
107
108    pub(crate) fn set_config_override(&mut self, config_override: ::std::option::Option<crate::config::Builder>) -> &mut Self {
109        self.config_override = config_override;
110        self
111    }
112    /// <p>The Amazon Resource Name (ARN) of the cross-account attachment to update.</p>
113    pub fn attachment_arn(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
114        self.inner = self.inner.attachment_arn(input.into());
115        self
116    }
117    /// <p>The Amazon Resource Name (ARN) of the cross-account attachment to update.</p>
118    pub fn set_attachment_arn(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
119        self.inner = self.inner.set_attachment_arn(input);
120        self
121    }
122    /// <p>The Amazon Resource Name (ARN) of the cross-account attachment to update.</p>
123    pub fn get_attachment_arn(&self) -> &::std::option::Option<::std::string::String> {
124        self.inner.get_attachment_arn()
125    }
126    /// <p>The name of the cross-account attachment.</p>
127    pub fn name(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
128        self.inner = self.inner.name(input.into());
129        self
130    }
131    /// <p>The name of the cross-account attachment.</p>
132    pub fn set_name(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
133        self.inner = self.inner.set_name(input);
134        self
135    }
136    /// <p>The name of the cross-account attachment.</p>
137    pub fn get_name(&self) -> &::std::option::Option<::std::string::String> {
138        self.inner.get_name()
139    }
140    ///
141    /// Appends an item to `AddPrincipals`.
142    ///
143    /// To override the contents of this collection use [`set_add_principals`](Self::set_add_principals).
144    ///
145    /// <p>The principals to add to the cross-account attachment. A principal is an account or the Amazon Resource Name (ARN) of an accelerator that the attachment gives permission to work with resources from another account. The resources are also listed in the attachment.</p>
146    /// <p>To add more than one principal, separate the account numbers or accelerator ARNs, or both, with commas.</p>
147    pub fn add_principals(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
148        self.inner = self.inner.add_principals(input.into());
149        self
150    }
151    /// <p>The principals to add to the cross-account attachment. A principal is an account or the Amazon Resource Name (ARN) of an accelerator that the attachment gives permission to work with resources from another account. The resources are also listed in the attachment.</p>
152    /// <p>To add more than one principal, separate the account numbers or accelerator ARNs, or both, with commas.</p>
153    pub fn set_add_principals(mut self, input: ::std::option::Option<::std::vec::Vec<::std::string::String>>) -> Self {
154        self.inner = self.inner.set_add_principals(input);
155        self
156    }
157    /// <p>The principals to add to the cross-account attachment. A principal is an account or the Amazon Resource Name (ARN) of an accelerator that the attachment gives permission to work with resources from another account. The resources are also listed in the attachment.</p>
158    /// <p>To add more than one principal, separate the account numbers or accelerator ARNs, or both, with commas.</p>
159    pub fn get_add_principals(&self) -> &::std::option::Option<::std::vec::Vec<::std::string::String>> {
160        self.inner.get_add_principals()
161    }
162    ///
163    /// Appends an item to `RemovePrincipals`.
164    ///
165    /// To override the contents of this collection use [`set_remove_principals`](Self::set_remove_principals).
166    ///
167    /// <p>The principals to remove from the cross-account attachment. A principal is an account or the Amazon Resource Name (ARN) of an accelerator that the attachment gives permission to work with resources from another account. The resources are also listed in the attachment.</p>
168    /// <p>To remove more than one principal, separate the account numbers or accelerator ARNs, or both, with commas.</p>
169    pub fn remove_principals(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
170        self.inner = self.inner.remove_principals(input.into());
171        self
172    }
173    /// <p>The principals to remove from the cross-account attachment. A principal is an account or the Amazon Resource Name (ARN) of an accelerator that the attachment gives permission to work with resources from another account. The resources are also listed in the attachment.</p>
174    /// <p>To remove more than one principal, separate the account numbers or accelerator ARNs, or both, with commas.</p>
175    pub fn set_remove_principals(mut self, input: ::std::option::Option<::std::vec::Vec<::std::string::String>>) -> Self {
176        self.inner = self.inner.set_remove_principals(input);
177        self
178    }
179    /// <p>The principals to remove from the cross-account attachment. A principal is an account or the Amazon Resource Name (ARN) of an accelerator that the attachment gives permission to work with resources from another account. The resources are also listed in the attachment.</p>
180    /// <p>To remove more than one principal, separate the account numbers or accelerator ARNs, or both, with commas.</p>
181    pub fn get_remove_principals(&self) -> &::std::option::Option<::std::vec::Vec<::std::string::String>> {
182        self.inner.get_remove_principals()
183    }
184    ///
185    /// Appends an item to `AddResources`.
186    ///
187    /// To override the contents of this collection use [`set_add_resources`](Self::set_add_resources).
188    ///
189    /// <p>The resources to add to the cross-account attachment. A resource listed in a cross-account attachment can be used with an accelerator by the principals that are listed in the attachment.</p>
190    /// <p>To add more than one resource, separate the resource ARNs with commas.</p>
191    pub fn add_resources(mut self, input: crate::types::Resource) -> Self {
192        self.inner = self.inner.add_resources(input);
193        self
194    }
195    /// <p>The resources to add to the cross-account attachment. A resource listed in a cross-account attachment can be used with an accelerator by the principals that are listed in the attachment.</p>
196    /// <p>To add more than one resource, separate the resource ARNs with commas.</p>
197    pub fn set_add_resources(mut self, input: ::std::option::Option<::std::vec::Vec<crate::types::Resource>>) -> Self {
198        self.inner = self.inner.set_add_resources(input);
199        self
200    }
201    /// <p>The resources to add to the cross-account attachment. A resource listed in a cross-account attachment can be used with an accelerator by the principals that are listed in the attachment.</p>
202    /// <p>To add more than one resource, separate the resource ARNs with commas.</p>
203    pub fn get_add_resources(&self) -> &::std::option::Option<::std::vec::Vec<crate::types::Resource>> {
204        self.inner.get_add_resources()
205    }
206    ///
207    /// Appends an item to `RemoveResources`.
208    ///
209    /// To override the contents of this collection use [`set_remove_resources`](Self::set_remove_resources).
210    ///
211    /// <p>The resources to remove from the cross-account attachment. A resource listed in a cross-account attachment can be used with an accelerator by the principals that are listed in the attachment.</p>
212    /// <p>To remove more than one resource, separate the resource ARNs with commas.</p>
213    pub fn remove_resources(mut self, input: crate::types::Resource) -> Self {
214        self.inner = self.inner.remove_resources(input);
215        self
216    }
217    /// <p>The resources to remove from the cross-account attachment. A resource listed in a cross-account attachment can be used with an accelerator by the principals that are listed in the attachment.</p>
218    /// <p>To remove more than one resource, separate the resource ARNs with commas.</p>
219    pub fn set_remove_resources(mut self, input: ::std::option::Option<::std::vec::Vec<crate::types::Resource>>) -> Self {
220        self.inner = self.inner.set_remove_resources(input);
221        self
222    }
223    /// <p>The resources to remove from the cross-account attachment. A resource listed in a cross-account attachment can be used with an accelerator by the principals that are listed in the attachment.</p>
224    /// <p>To remove more than one resource, separate the resource ARNs with commas.</p>
225    pub fn get_remove_resources(&self) -> &::std::option::Option<::std::vec::Vec<crate::types::Resource>> {
226        self.inner.get_remove_resources()
227    }
228}