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}