aws_sdk_fsx/operation/create_data_repository_association/
builders.rs

1// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
2pub use crate::operation::create_data_repository_association::_create_data_repository_association_output::CreateDataRepositoryAssociationOutputBuilder;
3
4pub use crate::operation::create_data_repository_association::_create_data_repository_association_input::CreateDataRepositoryAssociationInputBuilder;
5
6impl crate::operation::create_data_repository_association::builders::CreateDataRepositoryAssociationInputBuilder {
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::create_data_repository_association::CreateDataRepositoryAssociationOutput,
13        ::aws_smithy_runtime_api::client::result::SdkError<
14            crate::operation::create_data_repository_association::CreateDataRepositoryAssociationError,
15            ::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
16        >,
17    > {
18        let mut fluent_builder = client.create_data_repository_association();
19        fluent_builder.inner = self;
20        fluent_builder.send().await
21    }
22}
23/// Fluent builder constructing a request to `CreateDataRepositoryAssociation`.
24///
25/// <p>Creates an Amazon FSx for Lustre data repository association (DRA). A data repository association is a link between a directory on the file system and an Amazon S3 bucket or prefix. You can have a maximum of 8 data repository associations on a file system. Data repository associations are supported on all FSx for Lustre 2.12 and 2.15 file systems, excluding <code>scratch_1</code> deployment type.</p>
26/// <p>Each data repository association must have a unique Amazon FSx file system directory and a unique S3 bucket or prefix associated with it. You can configure a data repository association for automatic import only, for automatic export only, or for both. To learn more about linking a data repository to your file system, see <a href="https://docs.aws.amazon.com/fsx/latest/LustreGuide/create-dra-linked-data-repo.html">Linking your file system to an S3 bucket</a>.</p><note>
27/// <p><code>CreateDataRepositoryAssociation</code> isn't supported on Amazon File Cache resources. To create a DRA on Amazon File Cache, use the <code>CreateFileCache</code> operation.</p>
28/// </note>
29#[derive(::std::clone::Clone, ::std::fmt::Debug)]
30pub struct CreateDataRepositoryAssociationFluentBuilder {
31    handle: ::std::sync::Arc<crate::client::Handle>,
32    inner: crate::operation::create_data_repository_association::builders::CreateDataRepositoryAssociationInputBuilder,
33    config_override: ::std::option::Option<crate::config::Builder>,
34}
35impl
36    crate::client::customize::internal::CustomizableSend<
37        crate::operation::create_data_repository_association::CreateDataRepositoryAssociationOutput,
38        crate::operation::create_data_repository_association::CreateDataRepositoryAssociationError,
39    > for CreateDataRepositoryAssociationFluentBuilder
40{
41    fn send(
42        self,
43        config_override: crate::config::Builder,
44    ) -> crate::client::customize::internal::BoxFuture<
45        crate::client::customize::internal::SendResult<
46            crate::operation::create_data_repository_association::CreateDataRepositoryAssociationOutput,
47            crate::operation::create_data_repository_association::CreateDataRepositoryAssociationError,
48        >,
49    > {
50        ::std::boxed::Box::pin(async move { self.config_override(config_override).send().await })
51    }
52}
53impl CreateDataRepositoryAssociationFluentBuilder {
54    /// Creates a new `CreateDataRepositoryAssociationFluentBuilder`.
55    pub(crate) fn new(handle: ::std::sync::Arc<crate::client::Handle>) -> Self {
56        Self {
57            handle,
58            inner: ::std::default::Default::default(),
59            config_override: ::std::option::Option::None,
60        }
61    }
62    /// Access the CreateDataRepositoryAssociation as a reference.
63    pub fn as_input(&self) -> &crate::operation::create_data_repository_association::builders::CreateDataRepositoryAssociationInputBuilder {
64        &self.inner
65    }
66    /// Sends the request and returns the response.
67    ///
68    /// If an error occurs, an `SdkError` will be returned with additional details that
69    /// can be matched against.
70    ///
71    /// By default, any retryable failures will be retried twice. Retry behavior
72    /// is configurable with the [RetryConfig](aws_smithy_types::retry::RetryConfig), which can be
73    /// set when configuring the client.
74    pub async fn send(
75        self,
76    ) -> ::std::result::Result<
77        crate::operation::create_data_repository_association::CreateDataRepositoryAssociationOutput,
78        ::aws_smithy_runtime_api::client::result::SdkError<
79            crate::operation::create_data_repository_association::CreateDataRepositoryAssociationError,
80            ::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
81        >,
82    > {
83        let input = self
84            .inner
85            .build()
86            .map_err(::aws_smithy_runtime_api::client::result::SdkError::construction_failure)?;
87        let runtime_plugins = crate::operation::create_data_repository_association::CreateDataRepositoryAssociation::operation_runtime_plugins(
88            self.handle.runtime_plugins.clone(),
89            &self.handle.conf,
90            self.config_override,
91        );
92        crate::operation::create_data_repository_association::CreateDataRepositoryAssociation::orchestrate(&runtime_plugins, input).await
93    }
94
95    /// Consumes this builder, creating a customizable operation that can be modified before being sent.
96    pub fn customize(
97        self,
98    ) -> crate::client::customize::CustomizableOperation<
99        crate::operation::create_data_repository_association::CreateDataRepositoryAssociationOutput,
100        crate::operation::create_data_repository_association::CreateDataRepositoryAssociationError,
101        Self,
102    > {
103        crate::client::customize::CustomizableOperation::new(self)
104    }
105    pub(crate) fn config_override(mut self, config_override: impl ::std::convert::Into<crate::config::Builder>) -> Self {
106        self.set_config_override(::std::option::Option::Some(config_override.into()));
107        self
108    }
109
110    pub(crate) fn set_config_override(&mut self, config_override: ::std::option::Option<crate::config::Builder>) -> &mut Self {
111        self.config_override = config_override;
112        self
113    }
114    /// <p>The globally unique ID of the file system, assigned by Amazon FSx.</p>
115    pub fn file_system_id(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
116        self.inner = self.inner.file_system_id(input.into());
117        self
118    }
119    /// <p>The globally unique ID of the file system, assigned by Amazon FSx.</p>
120    pub fn set_file_system_id(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
121        self.inner = self.inner.set_file_system_id(input);
122        self
123    }
124    /// <p>The globally unique ID of the file system, assigned by Amazon FSx.</p>
125    pub fn get_file_system_id(&self) -> &::std::option::Option<::std::string::String> {
126        self.inner.get_file_system_id()
127    }
128    /// <p>A path on the file system that points to a high-level directory (such as <code>/ns1/</code>) or subdirectory (such as <code>/ns1/subdir/</code>) that will be mapped 1-1 with <code>DataRepositoryPath</code>. The leading forward slash in the name is required. Two data repository associations cannot have overlapping file system paths. For example, if a data repository is associated with file system path <code>/ns1/</code>, then you cannot link another data repository with file system path <code>/ns1/ns2</code>.</p>
129    /// <p>This path specifies where in your file system files will be exported from or imported to. This file system directory can be linked to only one Amazon S3 bucket, and no other S3 bucket can be linked to the directory.</p><note>
130    /// <p>If you specify only a forward slash (<code>/</code>) as the file system path, you can link only one data repository to the file system. You can only specify "/" as the file system path for the first data repository associated with a file system.</p>
131    /// </note>
132    pub fn file_system_path(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
133        self.inner = self.inner.file_system_path(input.into());
134        self
135    }
136    /// <p>A path on the file system that points to a high-level directory (such as <code>/ns1/</code>) or subdirectory (such as <code>/ns1/subdir/</code>) that will be mapped 1-1 with <code>DataRepositoryPath</code>. The leading forward slash in the name is required. Two data repository associations cannot have overlapping file system paths. For example, if a data repository is associated with file system path <code>/ns1/</code>, then you cannot link another data repository with file system path <code>/ns1/ns2</code>.</p>
137    /// <p>This path specifies where in your file system files will be exported from or imported to. This file system directory can be linked to only one Amazon S3 bucket, and no other S3 bucket can be linked to the directory.</p><note>
138    /// <p>If you specify only a forward slash (<code>/</code>) as the file system path, you can link only one data repository to the file system. You can only specify "/" as the file system path for the first data repository associated with a file system.</p>
139    /// </note>
140    pub fn set_file_system_path(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
141        self.inner = self.inner.set_file_system_path(input);
142        self
143    }
144    /// <p>A path on the file system that points to a high-level directory (such as <code>/ns1/</code>) or subdirectory (such as <code>/ns1/subdir/</code>) that will be mapped 1-1 with <code>DataRepositoryPath</code>. The leading forward slash in the name is required. Two data repository associations cannot have overlapping file system paths. For example, if a data repository is associated with file system path <code>/ns1/</code>, then you cannot link another data repository with file system path <code>/ns1/ns2</code>.</p>
145    /// <p>This path specifies where in your file system files will be exported from or imported to. This file system directory can be linked to only one Amazon S3 bucket, and no other S3 bucket can be linked to the directory.</p><note>
146    /// <p>If you specify only a forward slash (<code>/</code>) as the file system path, you can link only one data repository to the file system. You can only specify "/" as the file system path for the first data repository associated with a file system.</p>
147    /// </note>
148    pub fn get_file_system_path(&self) -> &::std::option::Option<::std::string::String> {
149        self.inner.get_file_system_path()
150    }
151    /// <p>The path to the Amazon S3 data repository that will be linked to the file system. The path can be an S3 bucket or prefix in the format <code>s3://bucket-name/prefix/</code> (where <code>prefix</code> is optional). This path specifies where in the S3 data repository files will be imported from or exported to.</p>
152    pub fn data_repository_path(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
153        self.inner = self.inner.data_repository_path(input.into());
154        self
155    }
156    /// <p>The path to the Amazon S3 data repository that will be linked to the file system. The path can be an S3 bucket or prefix in the format <code>s3://bucket-name/prefix/</code> (where <code>prefix</code> is optional). This path specifies where in the S3 data repository files will be imported from or exported to.</p>
157    pub fn set_data_repository_path(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
158        self.inner = self.inner.set_data_repository_path(input);
159        self
160    }
161    /// <p>The path to the Amazon S3 data repository that will be linked to the file system. The path can be an S3 bucket or prefix in the format <code>s3://bucket-name/prefix/</code> (where <code>prefix</code> is optional). This path specifies where in the S3 data repository files will be imported from or exported to.</p>
162    pub fn get_data_repository_path(&self) -> &::std::option::Option<::std::string::String> {
163        self.inner.get_data_repository_path()
164    }
165    /// <p>Set to <code>true</code> to run an import data repository task to import metadata from the data repository to the file system after the data repository association is created. Default is <code>false</code>.</p>
166    pub fn batch_import_meta_data_on_create(mut self, input: bool) -> Self {
167        self.inner = self.inner.batch_import_meta_data_on_create(input);
168        self
169    }
170    /// <p>Set to <code>true</code> to run an import data repository task to import metadata from the data repository to the file system after the data repository association is created. Default is <code>false</code>.</p>
171    pub fn set_batch_import_meta_data_on_create(mut self, input: ::std::option::Option<bool>) -> Self {
172        self.inner = self.inner.set_batch_import_meta_data_on_create(input);
173        self
174    }
175    /// <p>Set to <code>true</code> to run an import data repository task to import metadata from the data repository to the file system after the data repository association is created. Default is <code>false</code>.</p>
176    pub fn get_batch_import_meta_data_on_create(&self) -> &::std::option::Option<bool> {
177        self.inner.get_batch_import_meta_data_on_create()
178    }
179    /// <p>For files imported from a data repository, this value determines the stripe count and maximum amount of data per file (in MiB) stored on a single physical disk. The maximum number of disks that a single file can be striped across is limited by the total number of disks that make up the file system.</p>
180    /// <p>The default chunk size is 1,024 MiB (1 GiB) and can go as high as 512,000 MiB (500 GiB). Amazon S3 objects have a maximum size of 5 TB.</p>
181    pub fn imported_file_chunk_size(mut self, input: i32) -> Self {
182        self.inner = self.inner.imported_file_chunk_size(input);
183        self
184    }
185    /// <p>For files imported from a data repository, this value determines the stripe count and maximum amount of data per file (in MiB) stored on a single physical disk. The maximum number of disks that a single file can be striped across is limited by the total number of disks that make up the file system.</p>
186    /// <p>The default chunk size is 1,024 MiB (1 GiB) and can go as high as 512,000 MiB (500 GiB). Amazon S3 objects have a maximum size of 5 TB.</p>
187    pub fn set_imported_file_chunk_size(mut self, input: ::std::option::Option<i32>) -> Self {
188        self.inner = self.inner.set_imported_file_chunk_size(input);
189        self
190    }
191    /// <p>For files imported from a data repository, this value determines the stripe count and maximum amount of data per file (in MiB) stored on a single physical disk. The maximum number of disks that a single file can be striped across is limited by the total number of disks that make up the file system.</p>
192    /// <p>The default chunk size is 1,024 MiB (1 GiB) and can go as high as 512,000 MiB (500 GiB). Amazon S3 objects have a maximum size of 5 TB.</p>
193    pub fn get_imported_file_chunk_size(&self) -> &::std::option::Option<i32> {
194        self.inner.get_imported_file_chunk_size()
195    }
196    /// <p>The configuration for an Amazon S3 data repository linked to an Amazon FSx Lustre file system with a data repository association. The configuration defines which file events (new, changed, or deleted files or directories) are automatically imported from the linked data repository to the file system or automatically exported from the file system to the data repository.</p>
197    pub fn s3(mut self, input: crate::types::S3DataRepositoryConfiguration) -> Self {
198        self.inner = self.inner.s3(input);
199        self
200    }
201    /// <p>The configuration for an Amazon S3 data repository linked to an Amazon FSx Lustre file system with a data repository association. The configuration defines which file events (new, changed, or deleted files or directories) are automatically imported from the linked data repository to the file system or automatically exported from the file system to the data repository.</p>
202    pub fn set_s3(mut self, input: ::std::option::Option<crate::types::S3DataRepositoryConfiguration>) -> Self {
203        self.inner = self.inner.set_s3(input);
204        self
205    }
206    /// <p>The configuration for an Amazon S3 data repository linked to an Amazon FSx Lustre file system with a data repository association. The configuration defines which file events (new, changed, or deleted files or directories) are automatically imported from the linked data repository to the file system or automatically exported from the file system to the data repository.</p>
207    pub fn get_s3(&self) -> &::std::option::Option<crate::types::S3DataRepositoryConfiguration> {
208        self.inner.get_s3()
209    }
210    /// <p>(Optional) An idempotency token for resource creation, in a string of up to 63 ASCII characters. This token is automatically filled on your behalf when you use the Command Line Interface (CLI) or an Amazon Web Services SDK.</p>
211    pub fn client_request_token(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
212        self.inner = self.inner.client_request_token(input.into());
213        self
214    }
215    /// <p>(Optional) An idempotency token for resource creation, in a string of up to 63 ASCII characters. This token is automatically filled on your behalf when you use the Command Line Interface (CLI) or an Amazon Web Services SDK.</p>
216    pub fn set_client_request_token(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
217        self.inner = self.inner.set_client_request_token(input);
218        self
219    }
220    /// <p>(Optional) An idempotency token for resource creation, in a string of up to 63 ASCII characters. This token is automatically filled on your behalf when you use the Command Line Interface (CLI) or an Amazon Web Services SDK.</p>
221    pub fn get_client_request_token(&self) -> &::std::option::Option<::std::string::String> {
222        self.inner.get_client_request_token()
223    }
224    ///
225    /// Appends an item to `Tags`.
226    ///
227    /// To override the contents of this collection use [`set_tags`](Self::set_tags).
228    ///
229    /// <p>A list of <code>Tag</code> values, with a maximum of 50 elements.</p>
230    pub fn tags(mut self, input: crate::types::Tag) -> Self {
231        self.inner = self.inner.tags(input);
232        self
233    }
234    /// <p>A list of <code>Tag</code> values, with a maximum of 50 elements.</p>
235    pub fn set_tags(mut self, input: ::std::option::Option<::std::vec::Vec<crate::types::Tag>>) -> Self {
236        self.inner = self.inner.set_tags(input);
237        self
238    }
239    /// <p>A list of <code>Tag</code> values, with a maximum of 50 elements.</p>
240    pub fn get_tags(&self) -> &::std::option::Option<::std::vec::Vec<crate::types::Tag>> {
241        self.inner.get_tags()
242    }
243}