aws_sdk_licensemanager/operation/create_license_configuration/
builders.rs

1// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
2pub use crate::operation::create_license_configuration::_create_license_configuration_output::CreateLicenseConfigurationOutputBuilder;
3
4pub use crate::operation::create_license_configuration::_create_license_configuration_input::CreateLicenseConfigurationInputBuilder;
5
6impl crate::operation::create_license_configuration::builders::CreateLicenseConfigurationInputBuilder {
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_license_configuration::CreateLicenseConfigurationOutput,
13        ::aws_smithy_runtime_api::client::result::SdkError<
14            crate::operation::create_license_configuration::CreateLicenseConfigurationError,
15            ::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
16        >,
17    > {
18        let mut fluent_builder = client.create_license_configuration();
19        fluent_builder.inner = self;
20        fluent_builder.send().await
21    }
22}
23/// Fluent builder constructing a request to `CreateLicenseConfiguration`.
24///
25/// <p>Creates a license configuration.</p>
26/// <p>A license configuration is an abstraction of a customer license agreement that can be consumed and enforced by License Manager. Components include specifications for the license type (licensing by instance, socket, CPU, or vCPU), allowed tenancy (shared tenancy, Dedicated Instance, Dedicated Host, or all of these), license affinity to host (how long a license must be associated with a host), and the number of licenses purchased and used.</p>
27#[derive(::std::clone::Clone, ::std::fmt::Debug)]
28pub struct CreateLicenseConfigurationFluentBuilder {
29    handle: ::std::sync::Arc<crate::client::Handle>,
30    inner: crate::operation::create_license_configuration::builders::CreateLicenseConfigurationInputBuilder,
31    config_override: ::std::option::Option<crate::config::Builder>,
32}
33impl
34    crate::client::customize::internal::CustomizableSend<
35        crate::operation::create_license_configuration::CreateLicenseConfigurationOutput,
36        crate::operation::create_license_configuration::CreateLicenseConfigurationError,
37    > for CreateLicenseConfigurationFluentBuilder
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::create_license_configuration::CreateLicenseConfigurationOutput,
45            crate::operation::create_license_configuration::CreateLicenseConfigurationError,
46        >,
47    > {
48        ::std::boxed::Box::pin(async move { self.config_override(config_override).send().await })
49    }
50}
51impl CreateLicenseConfigurationFluentBuilder {
52    /// Creates a new `CreateLicenseConfigurationFluentBuilder`.
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 CreateLicenseConfiguration as a reference.
61    pub fn as_input(&self) -> &crate::operation::create_license_configuration::builders::CreateLicenseConfigurationInputBuilder {
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::create_license_configuration::CreateLicenseConfigurationOutput,
76        ::aws_smithy_runtime_api::client::result::SdkError<
77            crate::operation::create_license_configuration::CreateLicenseConfigurationError,
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::create_license_configuration::CreateLicenseConfiguration::operation_runtime_plugins(
86            self.handle.runtime_plugins.clone(),
87            &self.handle.conf,
88            self.config_override,
89        );
90        crate::operation::create_license_configuration::CreateLicenseConfiguration::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::create_license_configuration::CreateLicenseConfigurationOutput,
98        crate::operation::create_license_configuration::CreateLicenseConfigurationError,
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>Name of the license configuration.</p>
113    pub fn name(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
114        self.inner = self.inner.name(input.into());
115        self
116    }
117    /// <p>Name of the license configuration.</p>
118    pub fn set_name(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
119        self.inner = self.inner.set_name(input);
120        self
121    }
122    /// <p>Name of the license configuration.</p>
123    pub fn get_name(&self) -> &::std::option::Option<::std::string::String> {
124        self.inner.get_name()
125    }
126    /// <p>Description of the license configuration.</p>
127    pub fn description(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
128        self.inner = self.inner.description(input.into());
129        self
130    }
131    /// <p>Description of the license configuration.</p>
132    pub fn set_description(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
133        self.inner = self.inner.set_description(input);
134        self
135    }
136    /// <p>Description of the license configuration.</p>
137    pub fn get_description(&self) -> &::std::option::Option<::std::string::String> {
138        self.inner.get_description()
139    }
140    /// <p>Dimension used to track the license inventory.</p>
141    pub fn license_counting_type(mut self, input: crate::types::LicenseCountingType) -> Self {
142        self.inner = self.inner.license_counting_type(input);
143        self
144    }
145    /// <p>Dimension used to track the license inventory.</p>
146    pub fn set_license_counting_type(mut self, input: ::std::option::Option<crate::types::LicenseCountingType>) -> Self {
147        self.inner = self.inner.set_license_counting_type(input);
148        self
149    }
150    /// <p>Dimension used to track the license inventory.</p>
151    pub fn get_license_counting_type(&self) -> &::std::option::Option<crate::types::LicenseCountingType> {
152        self.inner.get_license_counting_type()
153    }
154    /// <p>Number of licenses managed by the license configuration.</p>
155    pub fn license_count(mut self, input: i64) -> Self {
156        self.inner = self.inner.license_count(input);
157        self
158    }
159    /// <p>Number of licenses managed by the license configuration.</p>
160    pub fn set_license_count(mut self, input: ::std::option::Option<i64>) -> Self {
161        self.inner = self.inner.set_license_count(input);
162        self
163    }
164    /// <p>Number of licenses managed by the license configuration.</p>
165    pub fn get_license_count(&self) -> &::std::option::Option<i64> {
166        self.inner.get_license_count()
167    }
168    /// <p>Indicates whether hard or soft license enforcement is used. Exceeding a hard limit blocks the launch of new instances.</p>
169    pub fn license_count_hard_limit(mut self, input: bool) -> Self {
170        self.inner = self.inner.license_count_hard_limit(input);
171        self
172    }
173    /// <p>Indicates whether hard or soft license enforcement is used. Exceeding a hard limit blocks the launch of new instances.</p>
174    pub fn set_license_count_hard_limit(mut self, input: ::std::option::Option<bool>) -> Self {
175        self.inner = self.inner.set_license_count_hard_limit(input);
176        self
177    }
178    /// <p>Indicates whether hard or soft license enforcement is used. Exceeding a hard limit blocks the launch of new instances.</p>
179    pub fn get_license_count_hard_limit(&self) -> &::std::option::Option<bool> {
180        self.inner.get_license_count_hard_limit()
181    }
182    ///
183    /// Appends an item to `LicenseRules`.
184    ///
185    /// To override the contents of this collection use [`set_license_rules`](Self::set_license_rules).
186    ///
187    /// <p>License rules. The syntax is #name=value (for example, #allowedTenancy=EC2-DedicatedHost). The available rules vary by dimension, as follows.</p>
188    /// <ul>
189    /// <li>
190    /// <p><code>Cores</code> dimension: <code>allowedTenancy</code> | <code>licenseAffinityToHost</code> | <code>maximumCores</code> | <code>minimumCores</code></p></li>
191    /// <li>
192    /// <p><code>Instances</code> dimension: <code>allowedTenancy</code> | <code>maximumVcpus</code> | <code>minimumVcpus</code></p></li>
193    /// <li>
194    /// <p><code>Sockets</code> dimension: <code>allowedTenancy</code> | <code>licenseAffinityToHost</code> | <code>maximumSockets</code> | <code>minimumSockets</code></p></li>
195    /// <li>
196    /// <p><code>vCPUs</code> dimension: <code>allowedTenancy</code> | <code>honorVcpuOptimization</code> | <code>maximumVcpus</code> | <code>minimumVcpus</code></p></li>
197    /// </ul>
198    /// <p>The unit for <code>licenseAffinityToHost</code> is days and the range is 1 to 180. The possible values for <code>allowedTenancy</code> are <code>EC2-Default</code>, <code>EC2-DedicatedHost</code>, and <code>EC2-DedicatedInstance</code>. The possible values for <code>honorVcpuOptimization</code> are <code>True</code> and <code>False</code>.</p>
199    pub fn license_rules(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
200        self.inner = self.inner.license_rules(input.into());
201        self
202    }
203    /// <p>License rules. The syntax is #name=value (for example, #allowedTenancy=EC2-DedicatedHost). The available rules vary by dimension, as follows.</p>
204    /// <ul>
205    /// <li>
206    /// <p><code>Cores</code> dimension: <code>allowedTenancy</code> | <code>licenseAffinityToHost</code> | <code>maximumCores</code> | <code>minimumCores</code></p></li>
207    /// <li>
208    /// <p><code>Instances</code> dimension: <code>allowedTenancy</code> | <code>maximumVcpus</code> | <code>minimumVcpus</code></p></li>
209    /// <li>
210    /// <p><code>Sockets</code> dimension: <code>allowedTenancy</code> | <code>licenseAffinityToHost</code> | <code>maximumSockets</code> | <code>minimumSockets</code></p></li>
211    /// <li>
212    /// <p><code>vCPUs</code> dimension: <code>allowedTenancy</code> | <code>honorVcpuOptimization</code> | <code>maximumVcpus</code> | <code>minimumVcpus</code></p></li>
213    /// </ul>
214    /// <p>The unit for <code>licenseAffinityToHost</code> is days and the range is 1 to 180. The possible values for <code>allowedTenancy</code> are <code>EC2-Default</code>, <code>EC2-DedicatedHost</code>, and <code>EC2-DedicatedInstance</code>. The possible values for <code>honorVcpuOptimization</code> are <code>True</code> and <code>False</code>.</p>
215    pub fn set_license_rules(mut self, input: ::std::option::Option<::std::vec::Vec<::std::string::String>>) -> Self {
216        self.inner = self.inner.set_license_rules(input);
217        self
218    }
219    /// <p>License rules. The syntax is #name=value (for example, #allowedTenancy=EC2-DedicatedHost). The available rules vary by dimension, as follows.</p>
220    /// <ul>
221    /// <li>
222    /// <p><code>Cores</code> dimension: <code>allowedTenancy</code> | <code>licenseAffinityToHost</code> | <code>maximumCores</code> | <code>minimumCores</code></p></li>
223    /// <li>
224    /// <p><code>Instances</code> dimension: <code>allowedTenancy</code> | <code>maximumVcpus</code> | <code>minimumVcpus</code></p></li>
225    /// <li>
226    /// <p><code>Sockets</code> dimension: <code>allowedTenancy</code> | <code>licenseAffinityToHost</code> | <code>maximumSockets</code> | <code>minimumSockets</code></p></li>
227    /// <li>
228    /// <p><code>vCPUs</code> dimension: <code>allowedTenancy</code> | <code>honorVcpuOptimization</code> | <code>maximumVcpus</code> | <code>minimumVcpus</code></p></li>
229    /// </ul>
230    /// <p>The unit for <code>licenseAffinityToHost</code> is days and the range is 1 to 180. The possible values for <code>allowedTenancy</code> are <code>EC2-Default</code>, <code>EC2-DedicatedHost</code>, and <code>EC2-DedicatedInstance</code>. The possible values for <code>honorVcpuOptimization</code> are <code>True</code> and <code>False</code>.</p>
231    pub fn get_license_rules(&self) -> &::std::option::Option<::std::vec::Vec<::std::string::String>> {
232        self.inner.get_license_rules()
233    }
234    ///
235    /// Appends an item to `Tags`.
236    ///
237    /// To override the contents of this collection use [`set_tags`](Self::set_tags).
238    ///
239    /// <p>Tags to add to the license configuration.</p>
240    pub fn tags(mut self, input: crate::types::Tag) -> Self {
241        self.inner = self.inner.tags(input);
242        self
243    }
244    /// <p>Tags to add to the license configuration.</p>
245    pub fn set_tags(mut self, input: ::std::option::Option<::std::vec::Vec<crate::types::Tag>>) -> Self {
246        self.inner = self.inner.set_tags(input);
247        self
248    }
249    /// <p>Tags to add to the license configuration.</p>
250    pub fn get_tags(&self) -> &::std::option::Option<::std::vec::Vec<crate::types::Tag>> {
251        self.inner.get_tags()
252    }
253    /// <p>When true, disassociates a resource when software is uninstalled.</p>
254    pub fn disassociate_when_not_found(mut self, input: bool) -> Self {
255        self.inner = self.inner.disassociate_when_not_found(input);
256        self
257    }
258    /// <p>When true, disassociates a resource when software is uninstalled.</p>
259    pub fn set_disassociate_when_not_found(mut self, input: ::std::option::Option<bool>) -> Self {
260        self.inner = self.inner.set_disassociate_when_not_found(input);
261        self
262    }
263    /// <p>When true, disassociates a resource when software is uninstalled.</p>
264    pub fn get_disassociate_when_not_found(&self) -> &::std::option::Option<bool> {
265        self.inner.get_disassociate_when_not_found()
266    }
267    ///
268    /// Appends an item to `ProductInformationList`.
269    ///
270    /// To override the contents of this collection use [`set_product_information_list`](Self::set_product_information_list).
271    ///
272    /// <p>Product information.</p>
273    pub fn product_information_list(mut self, input: crate::types::ProductInformation) -> Self {
274        self.inner = self.inner.product_information_list(input);
275        self
276    }
277    /// <p>Product information.</p>
278    pub fn set_product_information_list(mut self, input: ::std::option::Option<::std::vec::Vec<crate::types::ProductInformation>>) -> Self {
279        self.inner = self.inner.set_product_information_list(input);
280        self
281    }
282    /// <p>Product information.</p>
283    pub fn get_product_information_list(&self) -> &::std::option::Option<::std::vec::Vec<crate::types::ProductInformation>> {
284        self.inner.get_product_information_list()
285    }
286}