aws-sdk-globalaccelerator 1.95.0

AWS SDK for AWS Global Accelerator
Documentation
// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
pub use crate::operation::update_cross_account_attachment::_update_cross_account_attachment_output::UpdateCrossAccountAttachmentOutputBuilder;

pub use crate::operation::update_cross_account_attachment::_update_cross_account_attachment_input::UpdateCrossAccountAttachmentInputBuilder;

impl crate::operation::update_cross_account_attachment::builders::UpdateCrossAccountAttachmentInputBuilder {
    /// Sends a request with this input using the given client.
    pub async fn send_with(
        self,
        client: &crate::Client,
    ) -> ::std::result::Result<
        crate::operation::update_cross_account_attachment::UpdateCrossAccountAttachmentOutput,
        ::aws_smithy_runtime_api::client::result::SdkError<
            crate::operation::update_cross_account_attachment::UpdateCrossAccountAttachmentError,
            ::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
        >,
    > {
        let mut fluent_builder = client.update_cross_account_attachment();
        fluent_builder.inner = self;
        fluent_builder.send().await
    }
}
/// Fluent builder constructing a request to `UpdateCrossAccountAttachment`.
///
/// <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>
/// <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>
#[derive(::std::clone::Clone, ::std::fmt::Debug)]
pub struct UpdateCrossAccountAttachmentFluentBuilder {
    handle: ::std::sync::Arc<crate::client::Handle>,
    inner: crate::operation::update_cross_account_attachment::builders::UpdateCrossAccountAttachmentInputBuilder,
    config_override: ::std::option::Option<crate::config::Builder>,
}
impl
    crate::client::customize::internal::CustomizableSend<
        crate::operation::update_cross_account_attachment::UpdateCrossAccountAttachmentOutput,
        crate::operation::update_cross_account_attachment::UpdateCrossAccountAttachmentError,
    > for UpdateCrossAccountAttachmentFluentBuilder
{
    fn send(
        self,
        config_override: crate::config::Builder,
    ) -> crate::client::customize::internal::BoxFuture<
        crate::client::customize::internal::SendResult<
            crate::operation::update_cross_account_attachment::UpdateCrossAccountAttachmentOutput,
            crate::operation::update_cross_account_attachment::UpdateCrossAccountAttachmentError,
        >,
    > {
        ::std::boxed::Box::pin(async move { self.config_override(config_override).send().await })
    }
}
impl UpdateCrossAccountAttachmentFluentBuilder {
    /// Creates a new `UpdateCrossAccountAttachmentFluentBuilder`.
    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 UpdateCrossAccountAttachment as a reference.
    pub fn as_input(&self) -> &crate::operation::update_cross_account_attachment::builders::UpdateCrossAccountAttachmentInputBuilder {
        &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::update_cross_account_attachment::UpdateCrossAccountAttachmentOutput,
        ::aws_smithy_runtime_api::client::result::SdkError<
            crate::operation::update_cross_account_attachment::UpdateCrossAccountAttachmentError,
            ::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::update_cross_account_attachment::UpdateCrossAccountAttachment::operation_runtime_plugins(
            self.handle.runtime_plugins.clone(),
            &self.handle.conf,
            self.config_override,
        );
        crate::operation::update_cross_account_attachment::UpdateCrossAccountAttachment::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::update_cross_account_attachment::UpdateCrossAccountAttachmentOutput,
        crate::operation::update_cross_account_attachment::UpdateCrossAccountAttachmentError,
        Self,
    > {
        crate::client::customize::CustomizableOperation::new(self)
    }
    pub(crate) fn config_override(mut self, config_override: impl ::std::convert::Into<crate::config::Builder>) -> Self {
        self.set_config_override(::std::option::Option::Some(config_override.into()));
        self
    }

    pub(crate) fn set_config_override(&mut self, config_override: ::std::option::Option<crate::config::Builder>) -> &mut Self {
        self.config_override = config_override;
        self
    }
    /// <p>The Amazon Resource Name (ARN) of the cross-account attachment to update.</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) of the cross-account attachment to update.</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) of the cross-account attachment to update.</p>
    pub fn get_attachment_arn(&self) -> &::std::option::Option<::std::string::String> {
        self.inner.get_attachment_arn()
    }
    /// <p>The name of the cross-account attachment.</p>
    pub fn name(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
        self.inner = self.inner.name(input.into());
        self
    }
    /// <p>The name of the cross-account attachment.</p>
    pub fn set_name(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
        self.inner = self.inner.set_name(input);
        self
    }
    /// <p>The name of the cross-account attachment.</p>
    pub fn get_name(&self) -> &::std::option::Option<::std::string::String> {
        self.inner.get_name()
    }
    ///
    /// Appends an item to `AddPrincipals`.
    ///
    /// To override the contents of this collection use [`set_add_principals`](Self::set_add_principals).
    ///
    /// <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>
    /// <p>To add more than one principal, separate the account numbers or accelerator ARNs, or both, with commas.</p>
    pub fn add_principals(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
        self.inner = self.inner.add_principals(input.into());
        self
    }
    /// <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>
    /// <p>To add more than one principal, separate the account numbers or accelerator ARNs, or both, with commas.</p>
    pub fn set_add_principals(mut self, input: ::std::option::Option<::std::vec::Vec<::std::string::String>>) -> Self {
        self.inner = self.inner.set_add_principals(input);
        self
    }
    /// <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>
    /// <p>To add more than one principal, separate the account numbers or accelerator ARNs, or both, with commas.</p>
    pub fn get_add_principals(&self) -> &::std::option::Option<::std::vec::Vec<::std::string::String>> {
        self.inner.get_add_principals()
    }
    ///
    /// Appends an item to `RemovePrincipals`.
    ///
    /// To override the contents of this collection use [`set_remove_principals`](Self::set_remove_principals).
    ///
    /// <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>
    /// <p>To remove more than one principal, separate the account numbers or accelerator ARNs, or both, with commas.</p>
    pub fn remove_principals(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
        self.inner = self.inner.remove_principals(input.into());
        self
    }
    /// <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>
    /// <p>To remove more than one principal, separate the account numbers or accelerator ARNs, or both, with commas.</p>
    pub fn set_remove_principals(mut self, input: ::std::option::Option<::std::vec::Vec<::std::string::String>>) -> Self {
        self.inner = self.inner.set_remove_principals(input);
        self
    }
    /// <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>
    /// <p>To remove more than one principal, separate the account numbers or accelerator ARNs, or both, with commas.</p>
    pub fn get_remove_principals(&self) -> &::std::option::Option<::std::vec::Vec<::std::string::String>> {
        self.inner.get_remove_principals()
    }
    ///
    /// Appends an item to `AddResources`.
    ///
    /// To override the contents of this collection use [`set_add_resources`](Self::set_add_resources).
    ///
    /// <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>
    /// <p>To add more than one resource, separate the resource ARNs with commas.</p>
    pub fn add_resources(mut self, input: crate::types::Resource) -> Self {
        self.inner = self.inner.add_resources(input);
        self
    }
    /// <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>
    /// <p>To add more than one resource, separate the resource ARNs with commas.</p>
    pub fn set_add_resources(mut self, input: ::std::option::Option<::std::vec::Vec<crate::types::Resource>>) -> Self {
        self.inner = self.inner.set_add_resources(input);
        self
    }
    /// <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>
    /// <p>To add more than one resource, separate the resource ARNs with commas.</p>
    pub fn get_add_resources(&self) -> &::std::option::Option<::std::vec::Vec<crate::types::Resource>> {
        self.inner.get_add_resources()
    }
    ///
    /// Appends an item to `RemoveResources`.
    ///
    /// To override the contents of this collection use [`set_remove_resources`](Self::set_remove_resources).
    ///
    /// <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>
    /// <p>To remove more than one resource, separate the resource ARNs with commas.</p>
    pub fn remove_resources(mut self, input: crate::types::Resource) -> Self {
        self.inner = self.inner.remove_resources(input);
        self
    }
    /// <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>
    /// <p>To remove more than one resource, separate the resource ARNs with commas.</p>
    pub fn set_remove_resources(mut self, input: ::std::option::Option<::std::vec::Vec<crate::types::Resource>>) -> Self {
        self.inner = self.inner.set_remove_resources(input);
        self
    }
    /// <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>
    /// <p>To remove more than one resource, separate the resource ARNs with commas.</p>
    pub fn get_remove_resources(&self) -> &::std::option::Option<::std::vec::Vec<crate::types::Resource>> {
        self.inner.get_remove_resources()
    }
}