aws_sdk_autoscaling/operation/enable_metrics_collection/
builders.rs

1// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
2pub use crate::operation::enable_metrics_collection::_enable_metrics_collection_output::EnableMetricsCollectionOutputBuilder;
3
4pub use crate::operation::enable_metrics_collection::_enable_metrics_collection_input::EnableMetricsCollectionInputBuilder;
5
6impl crate::operation::enable_metrics_collection::builders::EnableMetricsCollectionInputBuilder {
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::enable_metrics_collection::EnableMetricsCollectionOutput,
13        ::aws_smithy_runtime_api::client::result::SdkError<
14            crate::operation::enable_metrics_collection::EnableMetricsCollectionError,
15            ::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
16        >,
17    > {
18        let mut fluent_builder = client.enable_metrics_collection();
19        fluent_builder.inner = self;
20        fluent_builder.send().await
21    }
22}
23/// Fluent builder constructing a request to `EnableMetricsCollection`.
24///
25/// <p>Enables group metrics collection for the specified Auto Scaling group.</p>
26/// <p>You can use these metrics to track changes in an Auto Scaling group and to set alarms on threshold values. You can view group metrics using the Amazon EC2 Auto Scaling console or the CloudWatch console. For more information, see <a href="https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-cloudwatch-monitoring.html">Monitor CloudWatch metrics for your Auto Scaling groups and instances</a> in the <i>Amazon EC2 Auto Scaling User Guide</i>.</p>
27#[derive(::std::clone::Clone, ::std::fmt::Debug)]
28pub struct EnableMetricsCollectionFluentBuilder {
29    handle: ::std::sync::Arc<crate::client::Handle>,
30    inner: crate::operation::enable_metrics_collection::builders::EnableMetricsCollectionInputBuilder,
31    config_override: ::std::option::Option<crate::config::Builder>,
32}
33impl
34    crate::client::customize::internal::CustomizableSend<
35        crate::operation::enable_metrics_collection::EnableMetricsCollectionOutput,
36        crate::operation::enable_metrics_collection::EnableMetricsCollectionError,
37    > for EnableMetricsCollectionFluentBuilder
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::enable_metrics_collection::EnableMetricsCollectionOutput,
45            crate::operation::enable_metrics_collection::EnableMetricsCollectionError,
46        >,
47    > {
48        ::std::boxed::Box::pin(async move { self.config_override(config_override).send().await })
49    }
50}
51impl EnableMetricsCollectionFluentBuilder {
52    /// Creates a new `EnableMetricsCollectionFluentBuilder`.
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 EnableMetricsCollection as a reference.
61    pub fn as_input(&self) -> &crate::operation::enable_metrics_collection::builders::EnableMetricsCollectionInputBuilder {
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::enable_metrics_collection::EnableMetricsCollectionOutput,
76        ::aws_smithy_runtime_api::client::result::SdkError<
77            crate::operation::enable_metrics_collection::EnableMetricsCollectionError,
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::enable_metrics_collection::EnableMetricsCollection::operation_runtime_plugins(
86            self.handle.runtime_plugins.clone(),
87            &self.handle.conf,
88            self.config_override,
89        );
90        crate::operation::enable_metrics_collection::EnableMetricsCollection::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::enable_metrics_collection::EnableMetricsCollectionOutput,
98        crate::operation::enable_metrics_collection::EnableMetricsCollectionError,
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>The name of the Auto Scaling group.</p>
113    pub fn auto_scaling_group_name(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
114        self.inner = self.inner.auto_scaling_group_name(input.into());
115        self
116    }
117    /// <p>The name of the Auto Scaling group.</p>
118    pub fn set_auto_scaling_group_name(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
119        self.inner = self.inner.set_auto_scaling_group_name(input);
120        self
121    }
122    /// <p>The name of the Auto Scaling group.</p>
123    pub fn get_auto_scaling_group_name(&self) -> &::std::option::Option<::std::string::String> {
124        self.inner.get_auto_scaling_group_name()
125    }
126    ///
127    /// Appends an item to `Metrics`.
128    ///
129    /// To override the contents of this collection use [`set_metrics`](Self::set_metrics).
130    ///
131    /// <p>Identifies the metrics to enable.</p>
132    /// <p>You can specify one or more of the following metrics:</p>
133    /// <ul>
134    /// <li>
135    /// <p><code>GroupMinSize</code></p></li>
136    /// <li>
137    /// <p><code>GroupMaxSize</code></p></li>
138    /// <li>
139    /// <p><code>GroupDesiredCapacity</code></p></li>
140    /// <li>
141    /// <p><code>GroupInServiceInstances</code></p></li>
142    /// <li>
143    /// <p><code>GroupPendingInstances</code></p></li>
144    /// <li>
145    /// <p><code>GroupStandbyInstances</code></p></li>
146    /// <li>
147    /// <p><code>GroupTerminatingInstances</code></p></li>
148    /// <li>
149    /// <p><code>GroupTotalInstances</code></p></li>
150    /// <li>
151    /// <p><code>GroupInServiceCapacity</code></p></li>
152    /// <li>
153    /// <p><code>GroupPendingCapacity</code></p></li>
154    /// <li>
155    /// <p><code>GroupStandbyCapacity</code></p></li>
156    /// <li>
157    /// <p><code>GroupTerminatingCapacity</code></p></li>
158    /// <li>
159    /// <p><code>GroupTotalCapacity</code></p></li>
160    /// <li>
161    /// <p><code>WarmPoolDesiredCapacity</code></p></li>
162    /// <li>
163    /// <p><code>WarmPoolWarmedCapacity</code></p></li>
164    /// <li>
165    /// <p><code>WarmPoolPendingCapacity</code></p></li>
166    /// <li>
167    /// <p><code>WarmPoolTerminatingCapacity</code></p></li>
168    /// <li>
169    /// <p><code>WarmPoolTotalCapacity</code></p></li>
170    /// <li>
171    /// <p><code>GroupAndWarmPoolDesiredCapacity</code></p></li>
172    /// <li>
173    /// <p><code>GroupAndWarmPoolTotalCapacity</code></p></li>
174    /// </ul>
175    /// <p>If you specify <code>Granularity</code> and don't specify any metrics, all metrics are enabled.</p>
176    /// <p>For more information, see <a href="https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-metrics.html">Amazon CloudWatch metrics for Amazon EC2 Auto Scaling</a> in the <i>Amazon EC2 Auto Scaling User Guide</i>.</p>
177    pub fn metrics(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
178        self.inner = self.inner.metrics(input.into());
179        self
180    }
181    /// <p>Identifies the metrics to enable.</p>
182    /// <p>You can specify one or more of the following metrics:</p>
183    /// <ul>
184    /// <li>
185    /// <p><code>GroupMinSize</code></p></li>
186    /// <li>
187    /// <p><code>GroupMaxSize</code></p></li>
188    /// <li>
189    /// <p><code>GroupDesiredCapacity</code></p></li>
190    /// <li>
191    /// <p><code>GroupInServiceInstances</code></p></li>
192    /// <li>
193    /// <p><code>GroupPendingInstances</code></p></li>
194    /// <li>
195    /// <p><code>GroupStandbyInstances</code></p></li>
196    /// <li>
197    /// <p><code>GroupTerminatingInstances</code></p></li>
198    /// <li>
199    /// <p><code>GroupTotalInstances</code></p></li>
200    /// <li>
201    /// <p><code>GroupInServiceCapacity</code></p></li>
202    /// <li>
203    /// <p><code>GroupPendingCapacity</code></p></li>
204    /// <li>
205    /// <p><code>GroupStandbyCapacity</code></p></li>
206    /// <li>
207    /// <p><code>GroupTerminatingCapacity</code></p></li>
208    /// <li>
209    /// <p><code>GroupTotalCapacity</code></p></li>
210    /// <li>
211    /// <p><code>WarmPoolDesiredCapacity</code></p></li>
212    /// <li>
213    /// <p><code>WarmPoolWarmedCapacity</code></p></li>
214    /// <li>
215    /// <p><code>WarmPoolPendingCapacity</code></p></li>
216    /// <li>
217    /// <p><code>WarmPoolTerminatingCapacity</code></p></li>
218    /// <li>
219    /// <p><code>WarmPoolTotalCapacity</code></p></li>
220    /// <li>
221    /// <p><code>GroupAndWarmPoolDesiredCapacity</code></p></li>
222    /// <li>
223    /// <p><code>GroupAndWarmPoolTotalCapacity</code></p></li>
224    /// </ul>
225    /// <p>If you specify <code>Granularity</code> and don't specify any metrics, all metrics are enabled.</p>
226    /// <p>For more information, see <a href="https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-metrics.html">Amazon CloudWatch metrics for Amazon EC2 Auto Scaling</a> in the <i>Amazon EC2 Auto Scaling User Guide</i>.</p>
227    pub fn set_metrics(mut self, input: ::std::option::Option<::std::vec::Vec<::std::string::String>>) -> Self {
228        self.inner = self.inner.set_metrics(input);
229        self
230    }
231    /// <p>Identifies the metrics to enable.</p>
232    /// <p>You can specify one or more of the following metrics:</p>
233    /// <ul>
234    /// <li>
235    /// <p><code>GroupMinSize</code></p></li>
236    /// <li>
237    /// <p><code>GroupMaxSize</code></p></li>
238    /// <li>
239    /// <p><code>GroupDesiredCapacity</code></p></li>
240    /// <li>
241    /// <p><code>GroupInServiceInstances</code></p></li>
242    /// <li>
243    /// <p><code>GroupPendingInstances</code></p></li>
244    /// <li>
245    /// <p><code>GroupStandbyInstances</code></p></li>
246    /// <li>
247    /// <p><code>GroupTerminatingInstances</code></p></li>
248    /// <li>
249    /// <p><code>GroupTotalInstances</code></p></li>
250    /// <li>
251    /// <p><code>GroupInServiceCapacity</code></p></li>
252    /// <li>
253    /// <p><code>GroupPendingCapacity</code></p></li>
254    /// <li>
255    /// <p><code>GroupStandbyCapacity</code></p></li>
256    /// <li>
257    /// <p><code>GroupTerminatingCapacity</code></p></li>
258    /// <li>
259    /// <p><code>GroupTotalCapacity</code></p></li>
260    /// <li>
261    /// <p><code>WarmPoolDesiredCapacity</code></p></li>
262    /// <li>
263    /// <p><code>WarmPoolWarmedCapacity</code></p></li>
264    /// <li>
265    /// <p><code>WarmPoolPendingCapacity</code></p></li>
266    /// <li>
267    /// <p><code>WarmPoolTerminatingCapacity</code></p></li>
268    /// <li>
269    /// <p><code>WarmPoolTotalCapacity</code></p></li>
270    /// <li>
271    /// <p><code>GroupAndWarmPoolDesiredCapacity</code></p></li>
272    /// <li>
273    /// <p><code>GroupAndWarmPoolTotalCapacity</code></p></li>
274    /// </ul>
275    /// <p>If you specify <code>Granularity</code> and don't specify any metrics, all metrics are enabled.</p>
276    /// <p>For more information, see <a href="https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-metrics.html">Amazon CloudWatch metrics for Amazon EC2 Auto Scaling</a> in the <i>Amazon EC2 Auto Scaling User Guide</i>.</p>
277    pub fn get_metrics(&self) -> &::std::option::Option<::std::vec::Vec<::std::string::String>> {
278        self.inner.get_metrics()
279    }
280    /// <p>The frequency at which Amazon EC2 Auto Scaling sends aggregated data to CloudWatch. The only valid value is <code>1Minute</code>.</p>
281    pub fn granularity(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
282        self.inner = self.inner.granularity(input.into());
283        self
284    }
285    /// <p>The frequency at which Amazon EC2 Auto Scaling sends aggregated data to CloudWatch. The only valid value is <code>1Minute</code>.</p>
286    pub fn set_granularity(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
287        self.inner = self.inner.set_granularity(input);
288        self
289    }
290    /// <p>The frequency at which Amazon EC2 Auto Scaling sends aggregated data to CloudWatch. The only valid value is <code>1Minute</code>.</p>
291    pub fn get_granularity(&self) -> &::std::option::Option<::std::string::String> {
292        self.inner.get_granularity()
293    }
294}