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}