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}