aws_sdk_imagebuilder/operation/create_component/
builders.rs

1// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
2pub use crate::operation::create_component::_create_component_output::CreateComponentOutputBuilder;
3
4pub use crate::operation::create_component::_create_component_input::CreateComponentInputBuilder;
5
6impl crate::operation::create_component::builders::CreateComponentInputBuilder {
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_component::CreateComponentOutput,
13        ::aws_smithy_runtime_api::client::result::SdkError<
14            crate::operation::create_component::CreateComponentError,
15            ::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
16        >,
17    > {
18        let mut fluent_builder = client.create_component();
19        fluent_builder.inner = self;
20        fluent_builder.send().await
21    }
22}
23/// Fluent builder constructing a request to `CreateComponent`.
24///
25/// <p>Creates a new component that can be used to build, validate, test, and assess your image. The component is based on a YAML document that you specify using exactly one of the following methods:</p>
26/// <ul>
27/// <li>
28/// <p>Inline, using the <code>data</code> property in the request body.</p></li>
29/// <li>
30/// <p>A URL that points to a YAML document file stored in Amazon S3, using the <code>uri</code> property in the request body.</p></li>
31/// </ul>
32#[derive(::std::clone::Clone, ::std::fmt::Debug)]
33pub struct CreateComponentFluentBuilder {
34    handle: ::std::sync::Arc<crate::client::Handle>,
35    inner: crate::operation::create_component::builders::CreateComponentInputBuilder,
36    config_override: ::std::option::Option<crate::config::Builder>,
37}
38impl
39    crate::client::customize::internal::CustomizableSend<
40        crate::operation::create_component::CreateComponentOutput,
41        crate::operation::create_component::CreateComponentError,
42    > for CreateComponentFluentBuilder
43{
44    fn send(
45        self,
46        config_override: crate::config::Builder,
47    ) -> crate::client::customize::internal::BoxFuture<
48        crate::client::customize::internal::SendResult<
49            crate::operation::create_component::CreateComponentOutput,
50            crate::operation::create_component::CreateComponentError,
51        >,
52    > {
53        ::std::boxed::Box::pin(async move { self.config_override(config_override).send().await })
54    }
55}
56impl CreateComponentFluentBuilder {
57    /// Creates a new `CreateComponentFluentBuilder`.
58    pub(crate) fn new(handle: ::std::sync::Arc<crate::client::Handle>) -> Self {
59        Self {
60            handle,
61            inner: ::std::default::Default::default(),
62            config_override: ::std::option::Option::None,
63        }
64    }
65    /// Access the CreateComponent as a reference.
66    pub fn as_input(&self) -> &crate::operation::create_component::builders::CreateComponentInputBuilder {
67        &self.inner
68    }
69    /// Sends the request and returns the response.
70    ///
71    /// If an error occurs, an `SdkError` will be returned with additional details that
72    /// can be matched against.
73    ///
74    /// By default, any retryable failures will be retried twice. Retry behavior
75    /// is configurable with the [RetryConfig](aws_smithy_types::retry::RetryConfig), which can be
76    /// set when configuring the client.
77    pub async fn send(
78        self,
79    ) -> ::std::result::Result<
80        crate::operation::create_component::CreateComponentOutput,
81        ::aws_smithy_runtime_api::client::result::SdkError<
82            crate::operation::create_component::CreateComponentError,
83            ::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
84        >,
85    > {
86        let input = self
87            .inner
88            .build()
89            .map_err(::aws_smithy_runtime_api::client::result::SdkError::construction_failure)?;
90        let runtime_plugins = crate::operation::create_component::CreateComponent::operation_runtime_plugins(
91            self.handle.runtime_plugins.clone(),
92            &self.handle.conf,
93            self.config_override,
94        );
95        crate::operation::create_component::CreateComponent::orchestrate(&runtime_plugins, input).await
96    }
97
98    /// Consumes this builder, creating a customizable operation that can be modified before being sent.
99    pub fn customize(
100        self,
101    ) -> crate::client::customize::CustomizableOperation<
102        crate::operation::create_component::CreateComponentOutput,
103        crate::operation::create_component::CreateComponentError,
104        Self,
105    > {
106        crate::client::customize::CustomizableOperation::new(self)
107    }
108    pub(crate) fn config_override(mut self, config_override: impl ::std::convert::Into<crate::config::Builder>) -> Self {
109        self.set_config_override(::std::option::Option::Some(config_override.into()));
110        self
111    }
112
113    pub(crate) fn set_config_override(&mut self, config_override: ::std::option::Option<crate::config::Builder>) -> &mut Self {
114        self.config_override = config_override;
115        self
116    }
117    /// <p>The name of the component.</p>
118    pub fn name(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
119        self.inner = self.inner.name(input.into());
120        self
121    }
122    /// <p>The name of the component.</p>
123    pub fn set_name(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
124        self.inner = self.inner.set_name(input);
125        self
126    }
127    /// <p>The name of the component.</p>
128    pub fn get_name(&self) -> &::std::option::Option<::std::string::String> {
129        self.inner.get_name()
130    }
131    /// <p>The semantic version of the component. This version follows the semantic version syntax.</p><note>
132    /// <p>The semantic version has four nodes: <major>
133    /// .
134    /// <minor>
135    /// .
136    /// <patch>
137    /// /
138    /// <build>
139    /// . You can assign values for the first three, and can filter on all of them.
140    /// </build>
141    /// </patch>
142    /// </minor>
143    /// </major></p>
144    /// <p><b>Assignment:</b> For the first three nodes you can assign any positive integer value, including zero, with an upper limit of 2^30-1, or 1073741823 for each node. Image Builder automatically assigns the build number to the fourth node.</p>
145    /// <p><b>Patterns:</b> You can use any numeric pattern that adheres to the assignment requirements for the nodes that you can assign. For example, you might choose a software version pattern, such as 1.0.0, or a date, such as 2021.01.01.</p>
146    /// </note>
147    pub fn semantic_version(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
148        self.inner = self.inner.semantic_version(input.into());
149        self
150    }
151    /// <p>The semantic version of the component. This version follows the semantic version syntax.</p><note>
152    /// <p>The semantic version has four nodes: <major>
153    /// .
154    /// <minor>
155    /// .
156    /// <patch>
157    /// /
158    /// <build>
159    /// . You can assign values for the first three, and can filter on all of them.
160    /// </build>
161    /// </patch>
162    /// </minor>
163    /// </major></p>
164    /// <p><b>Assignment:</b> For the first three nodes you can assign any positive integer value, including zero, with an upper limit of 2^30-1, or 1073741823 for each node. Image Builder automatically assigns the build number to the fourth node.</p>
165    /// <p><b>Patterns:</b> You can use any numeric pattern that adheres to the assignment requirements for the nodes that you can assign. For example, you might choose a software version pattern, such as 1.0.0, or a date, such as 2021.01.01.</p>
166    /// </note>
167    pub fn set_semantic_version(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
168        self.inner = self.inner.set_semantic_version(input);
169        self
170    }
171    /// <p>The semantic version of the component. This version follows the semantic version syntax.</p><note>
172    /// <p>The semantic version has four nodes: <major>
173    /// .
174    /// <minor>
175    /// .
176    /// <patch>
177    /// /
178    /// <build>
179    /// . You can assign values for the first three, and can filter on all of them.
180    /// </build>
181    /// </patch>
182    /// </minor>
183    /// </major></p>
184    /// <p><b>Assignment:</b> For the first three nodes you can assign any positive integer value, including zero, with an upper limit of 2^30-1, or 1073741823 for each node. Image Builder automatically assigns the build number to the fourth node.</p>
185    /// <p><b>Patterns:</b> You can use any numeric pattern that adheres to the assignment requirements for the nodes that you can assign. For example, you might choose a software version pattern, such as 1.0.0, or a date, such as 2021.01.01.</p>
186    /// </note>
187    pub fn get_semantic_version(&self) -> &::std::option::Option<::std::string::String> {
188        self.inner.get_semantic_version()
189    }
190    /// <p>Describes the contents of the component.</p>
191    pub fn description(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
192        self.inner = self.inner.description(input.into());
193        self
194    }
195    /// <p>Describes the contents of the component.</p>
196    pub fn set_description(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
197        self.inner = self.inner.set_description(input);
198        self
199    }
200    /// <p>Describes the contents of the component.</p>
201    pub fn get_description(&self) -> &::std::option::Option<::std::string::String> {
202        self.inner.get_description()
203    }
204    /// <p>The change description of the component. Describes what change has been made in this version, or what makes this version different from other versions of the component.</p>
205    pub fn change_description(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
206        self.inner = self.inner.change_description(input.into());
207        self
208    }
209    /// <p>The change description of the component. Describes what change has been made in this version, or what makes this version different from other versions of the component.</p>
210    pub fn set_change_description(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
211        self.inner = self.inner.set_change_description(input);
212        self
213    }
214    /// <p>The change description of the component. Describes what change has been made in this version, or what makes this version different from other versions of the component.</p>
215    pub fn get_change_description(&self) -> &::std::option::Option<::std::string::String> {
216        self.inner.get_change_description()
217    }
218    /// <p>The operating system platform of the component.</p>
219    pub fn platform(mut self, input: crate::types::Platform) -> Self {
220        self.inner = self.inner.platform(input);
221        self
222    }
223    /// <p>The operating system platform of the component.</p>
224    pub fn set_platform(mut self, input: ::std::option::Option<crate::types::Platform>) -> Self {
225        self.inner = self.inner.set_platform(input);
226        self
227    }
228    /// <p>The operating system platform of the component.</p>
229    pub fn get_platform(&self) -> &::std::option::Option<crate::types::Platform> {
230        self.inner.get_platform()
231    }
232    ///
233    /// Appends an item to `supportedOsVersions`.
234    ///
235    /// To override the contents of this collection use [`set_supported_os_versions`](Self::set_supported_os_versions).
236    ///
237    /// <p>The operating system (OS) version supported by the component. If the OS information is available, a prefix match is performed against the base image OS version during image recipe creation.</p>
238    pub fn supported_os_versions(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
239        self.inner = self.inner.supported_os_versions(input.into());
240        self
241    }
242    /// <p>The operating system (OS) version supported by the component. If the OS information is available, a prefix match is performed against the base image OS version during image recipe creation.</p>
243    pub fn set_supported_os_versions(mut self, input: ::std::option::Option<::std::vec::Vec<::std::string::String>>) -> Self {
244        self.inner = self.inner.set_supported_os_versions(input);
245        self
246    }
247    /// <p>The operating system (OS) version supported by the component. If the OS information is available, a prefix match is performed against the base image OS version during image recipe creation.</p>
248    pub fn get_supported_os_versions(&self) -> &::std::option::Option<::std::vec::Vec<::std::string::String>> {
249        self.inner.get_supported_os_versions()
250    }
251    /// <p>Component <code>data</code> contains inline YAML document content for the component. Alternatively, you can specify the <code>uri</code> of a YAML document file stored in Amazon S3. However, you cannot specify both properties.</p>
252    pub fn data(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
253        self.inner = self.inner.data(input.into());
254        self
255    }
256    /// <p>Component <code>data</code> contains inline YAML document content for the component. Alternatively, you can specify the <code>uri</code> of a YAML document file stored in Amazon S3. However, you cannot specify both properties.</p>
257    pub fn set_data(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
258        self.inner = self.inner.set_data(input);
259        self
260    }
261    /// <p>Component <code>data</code> contains inline YAML document content for the component. Alternatively, you can specify the <code>uri</code> of a YAML document file stored in Amazon S3. However, you cannot specify both properties.</p>
262    pub fn get_data(&self) -> &::std::option::Option<::std::string::String> {
263        self.inner.get_data()
264    }
265    /// <p>The <code>uri</code> of a YAML component document file. This must be an S3 URL (<code>s3://bucket/key</code>), and the requester must have permission to access the S3 bucket it points to. If you use Amazon S3, you can specify component content up to your service quota.</p>
266    /// <p>Alternatively, you can specify the YAML document inline, using the component <code>data</code> property. You cannot specify both properties.</p>
267    pub fn uri(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
268        self.inner = self.inner.uri(input.into());
269        self
270    }
271    /// <p>The <code>uri</code> of a YAML component document file. This must be an S3 URL (<code>s3://bucket/key</code>), and the requester must have permission to access the S3 bucket it points to. If you use Amazon S3, you can specify component content up to your service quota.</p>
272    /// <p>Alternatively, you can specify the YAML document inline, using the component <code>data</code> property. You cannot specify both properties.</p>
273    pub fn set_uri(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
274        self.inner = self.inner.set_uri(input);
275        self
276    }
277    /// <p>The <code>uri</code> of a YAML component document file. This must be an S3 URL (<code>s3://bucket/key</code>), and the requester must have permission to access the S3 bucket it points to. If you use Amazon S3, you can specify component content up to your service quota.</p>
278    /// <p>Alternatively, you can specify the YAML document inline, using the component <code>data</code> property. You cannot specify both properties.</p>
279    pub fn get_uri(&self) -> &::std::option::Option<::std::string::String> {
280        self.inner.get_uri()
281    }
282    /// <p>The Amazon Resource Name (ARN) that uniquely identifies the KMS key used to encrypt this component. This can be either the Key ARN or the Alias ARN. For more information, see <a href="https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#key-id-key-ARN">Key identifiers (KeyId)</a> in the <i>Key Management Service Developer Guide</i>.</p>
283    pub fn kms_key_id(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
284        self.inner = self.inner.kms_key_id(input.into());
285        self
286    }
287    /// <p>The Amazon Resource Name (ARN) that uniquely identifies the KMS key used to encrypt this component. This can be either the Key ARN or the Alias ARN. For more information, see <a href="https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#key-id-key-ARN">Key identifiers (KeyId)</a> in the <i>Key Management Service Developer Guide</i>.</p>
288    pub fn set_kms_key_id(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
289        self.inner = self.inner.set_kms_key_id(input);
290        self
291    }
292    /// <p>The Amazon Resource Name (ARN) that uniquely identifies the KMS key used to encrypt this component. This can be either the Key ARN or the Alias ARN. For more information, see <a href="https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#key-id-key-ARN">Key identifiers (KeyId)</a> in the <i>Key Management Service Developer Guide</i>.</p>
293    pub fn get_kms_key_id(&self) -> &::std::option::Option<::std::string::String> {
294        self.inner.get_kms_key_id()
295    }
296    ///
297    /// Adds a key-value pair to `tags`.
298    ///
299    /// To override the contents of this collection use [`set_tags`](Self::set_tags).
300    ///
301    /// <p>The tags that apply to the component.</p>
302    pub fn tags(mut self, k: impl ::std::convert::Into<::std::string::String>, v: impl ::std::convert::Into<::std::string::String>) -> Self {
303        self.inner = self.inner.tags(k.into(), v.into());
304        self
305    }
306    /// <p>The tags that apply to the component.</p>
307    pub fn set_tags(mut self, input: ::std::option::Option<::std::collections::HashMap<::std::string::String, ::std::string::String>>) -> Self {
308        self.inner = self.inner.set_tags(input);
309        self
310    }
311    /// <p>The tags that apply to the component.</p>
312    pub fn get_tags(&self) -> &::std::option::Option<::std::collections::HashMap<::std::string::String, ::std::string::String>> {
313        self.inner.get_tags()
314    }
315    /// <p>Unique, case-sensitive identifier you provide to ensure idempotency of the request. For more information, see <a href="https://docs.aws.amazon.com/AWSEC2/latest/APIReference/Run_Instance_Idempotency.html">Ensuring idempotency</a> in the <i>Amazon EC2 API Reference</i>.</p>
316    pub fn client_token(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
317        self.inner = self.inner.client_token(input.into());
318        self
319    }
320    /// <p>Unique, case-sensitive identifier you provide to ensure idempotency of the request. For more information, see <a href="https://docs.aws.amazon.com/AWSEC2/latest/APIReference/Run_Instance_Idempotency.html">Ensuring idempotency</a> in the <i>Amazon EC2 API Reference</i>.</p>
321    pub fn set_client_token(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
322        self.inner = self.inner.set_client_token(input);
323        self
324    }
325    /// <p>Unique, case-sensitive identifier you provide to ensure idempotency of the request. For more information, see <a href="https://docs.aws.amazon.com/AWSEC2/latest/APIReference/Run_Instance_Idempotency.html">Ensuring idempotency</a> in the <i>Amazon EC2 API Reference</i>.</p>
326    pub fn get_client_token(&self) -> &::std::option::Option<::std::string::String> {
327        self.inner.get_client_token()
328    }
329}