aws_sdk_appstream/operation/update_fleet/
builders.rs

1// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
2pub use crate::operation::update_fleet::_update_fleet_output::UpdateFleetOutputBuilder;
3
4pub use crate::operation::update_fleet::_update_fleet_input::UpdateFleetInputBuilder;
5
6impl crate::operation::update_fleet::builders::UpdateFleetInputBuilder {
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::update_fleet::UpdateFleetOutput,
13        ::aws_smithy_runtime_api::client::result::SdkError<
14            crate::operation::update_fleet::UpdateFleetError,
15            ::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
16        >,
17    > {
18        let mut fluent_builder = client.update_fleet();
19        fluent_builder.inner = self;
20        fluent_builder.send().await
21    }
22}
23/// Fluent builder constructing a request to `UpdateFleet`.
24///
25/// <p>Updates the specified fleet.</p>
26/// <p>If the fleet is in the <code>STOPPED</code> state, you can update any attribute except the fleet name.</p>
27/// <p>If the fleet is in the <code>RUNNING</code> state, you can update the following based on the fleet type:</p>
28/// <ul>
29/// <li>
30/// <p>Always-On and On-Demand fleet types</p>
31/// <p>You can update the <code>DisplayName</code>, <code>ComputeCapacity</code>, <code>ImageARN</code>, <code>ImageName</code>, <code>IdleDisconnectTimeoutInSeconds</code>, and <code>DisconnectTimeoutInSeconds</code> attributes.</p></li>
32/// <li>
33/// <p>Elastic fleet type</p>
34/// <p>You can update the <code>DisplayName</code>, <code>IdleDisconnectTimeoutInSeconds</code>, <code>DisconnectTimeoutInSeconds</code>, <code>MaxConcurrentSessions</code>, <code>SessionScriptS3Location</code> and <code>UsbDeviceFilterStrings</code> attributes.</p></li>
35/// </ul>
36/// <p>If the fleet is in the <code>STARTING</code> or <code>STOPPED</code> state, you can't update it.</p>
37#[derive(::std::clone::Clone, ::std::fmt::Debug)]
38pub struct UpdateFleetFluentBuilder {
39    handle: ::std::sync::Arc<crate::client::Handle>,
40    inner: crate::operation::update_fleet::builders::UpdateFleetInputBuilder,
41    config_override: ::std::option::Option<crate::config::Builder>,
42}
43impl
44    crate::client::customize::internal::CustomizableSend<
45        crate::operation::update_fleet::UpdateFleetOutput,
46        crate::operation::update_fleet::UpdateFleetError,
47    > for UpdateFleetFluentBuilder
48{
49    fn send(
50        self,
51        config_override: crate::config::Builder,
52    ) -> crate::client::customize::internal::BoxFuture<
53        crate::client::customize::internal::SendResult<
54            crate::operation::update_fleet::UpdateFleetOutput,
55            crate::operation::update_fleet::UpdateFleetError,
56        >,
57    > {
58        ::std::boxed::Box::pin(async move { self.config_override(config_override).send().await })
59    }
60}
61impl UpdateFleetFluentBuilder {
62    /// Creates a new `UpdateFleetFluentBuilder`.
63    pub(crate) fn new(handle: ::std::sync::Arc<crate::client::Handle>) -> Self {
64        Self {
65            handle,
66            inner: ::std::default::Default::default(),
67            config_override: ::std::option::Option::None,
68        }
69    }
70    /// Access the UpdateFleet as a reference.
71    pub fn as_input(&self) -> &crate::operation::update_fleet::builders::UpdateFleetInputBuilder {
72        &self.inner
73    }
74    /// Sends the request and returns the response.
75    ///
76    /// If an error occurs, an `SdkError` will be returned with additional details that
77    /// can be matched against.
78    ///
79    /// By default, any retryable failures will be retried twice. Retry behavior
80    /// is configurable with the [RetryConfig](aws_smithy_types::retry::RetryConfig), which can be
81    /// set when configuring the client.
82    pub async fn send(
83        self,
84    ) -> ::std::result::Result<
85        crate::operation::update_fleet::UpdateFleetOutput,
86        ::aws_smithy_runtime_api::client::result::SdkError<
87            crate::operation::update_fleet::UpdateFleetError,
88            ::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
89        >,
90    > {
91        let input = self
92            .inner
93            .build()
94            .map_err(::aws_smithy_runtime_api::client::result::SdkError::construction_failure)?;
95        let runtime_plugins = crate::operation::update_fleet::UpdateFleet::operation_runtime_plugins(
96            self.handle.runtime_plugins.clone(),
97            &self.handle.conf,
98            self.config_override,
99        );
100        crate::operation::update_fleet::UpdateFleet::orchestrate(&runtime_plugins, input).await
101    }
102
103    /// Consumes this builder, creating a customizable operation that can be modified before being sent.
104    pub fn customize(
105        self,
106    ) -> crate::client::customize::CustomizableOperation<
107        crate::operation::update_fleet::UpdateFleetOutput,
108        crate::operation::update_fleet::UpdateFleetError,
109        Self,
110    > {
111        crate::client::customize::CustomizableOperation::new(self)
112    }
113    pub(crate) fn config_override(mut self, config_override: impl ::std::convert::Into<crate::config::Builder>) -> Self {
114        self.set_config_override(::std::option::Option::Some(config_override.into()));
115        self
116    }
117
118    pub(crate) fn set_config_override(&mut self, config_override: ::std::option::Option<crate::config::Builder>) -> &mut Self {
119        self.config_override = config_override;
120        self
121    }
122    /// <p>The name of the image used to create the fleet.</p>
123    pub fn image_name(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
124        self.inner = self.inner.image_name(input.into());
125        self
126    }
127    /// <p>The name of the image used to create the fleet.</p>
128    pub fn set_image_name(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
129        self.inner = self.inner.set_image_name(input);
130        self
131    }
132    /// <p>The name of the image used to create the fleet.</p>
133    pub fn get_image_name(&self) -> &::std::option::Option<::std::string::String> {
134        self.inner.get_image_name()
135    }
136    /// <p>The ARN of the public, private, or shared image to use.</p>
137    pub fn image_arn(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
138        self.inner = self.inner.image_arn(input.into());
139        self
140    }
141    /// <p>The ARN of the public, private, or shared image to use.</p>
142    pub fn set_image_arn(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
143        self.inner = self.inner.set_image_arn(input);
144        self
145    }
146    /// <p>The ARN of the public, private, or shared image to use.</p>
147    pub fn get_image_arn(&self) -> &::std::option::Option<::std::string::String> {
148        self.inner.get_image_arn()
149    }
150    /// <p>A unique name for the fleet.</p>
151    pub fn name(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
152        self.inner = self.inner.name(input.into());
153        self
154    }
155    /// <p>A unique name for the fleet.</p>
156    pub fn set_name(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
157        self.inner = self.inner.set_name(input);
158        self
159    }
160    /// <p>A unique name for the fleet.</p>
161    pub fn get_name(&self) -> &::std::option::Option<::std::string::String> {
162        self.inner.get_name()
163    }
164    /// <p>The instance type to use when launching fleet instances. The following instance types are available:</p>
165    /// <ul>
166    /// <li>
167    /// <p>stream.standard.small</p></li>
168    /// <li>
169    /// <p>stream.standard.medium</p></li>
170    /// <li>
171    /// <p>stream.standard.large</p></li>
172    /// <li>
173    /// <p>stream.standard.xlarge</p></li>
174    /// <li>
175    /// <p>stream.standard.2xlarge</p></li>
176    /// <li>
177    /// <p>stream.compute.large</p></li>
178    /// <li>
179    /// <p>stream.compute.xlarge</p></li>
180    /// <li>
181    /// <p>stream.compute.2xlarge</p></li>
182    /// <li>
183    /// <p>stream.compute.4xlarge</p></li>
184    /// <li>
185    /// <p>stream.compute.8xlarge</p></li>
186    /// <li>
187    /// <p>stream.memory.large</p></li>
188    /// <li>
189    /// <p>stream.memory.xlarge</p></li>
190    /// <li>
191    /// <p>stream.memory.2xlarge</p></li>
192    /// <li>
193    /// <p>stream.memory.4xlarge</p></li>
194    /// <li>
195    /// <p>stream.memory.8xlarge</p></li>
196    /// <li>
197    /// <p>stream.memory.z1d.large</p></li>
198    /// <li>
199    /// <p>stream.memory.z1d.xlarge</p></li>
200    /// <li>
201    /// <p>stream.memory.z1d.2xlarge</p></li>
202    /// <li>
203    /// <p>stream.memory.z1d.3xlarge</p></li>
204    /// <li>
205    /// <p>stream.memory.z1d.6xlarge</p></li>
206    /// <li>
207    /// <p>stream.memory.z1d.12xlarge</p></li>
208    /// <li>
209    /// <p>stream.graphics-design.large</p></li>
210    /// <li>
211    /// <p>stream.graphics-design.xlarge</p></li>
212    /// <li>
213    /// <p>stream.graphics-design.2xlarge</p></li>
214    /// <li>
215    /// <p>stream.graphics-design.4xlarge</p></li>
216    /// <li>
217    /// <p>stream.graphics-desktop.2xlarge</p></li>
218    /// <li>
219    /// <p>stream.graphics.g4dn.xlarge</p></li>
220    /// <li>
221    /// <p>stream.graphics.g4dn.2xlarge</p></li>
222    /// <li>
223    /// <p>stream.graphics.g4dn.4xlarge</p></li>
224    /// <li>
225    /// <p>stream.graphics.g4dn.8xlarge</p></li>
226    /// <li>
227    /// <p>stream.graphics.g4dn.12xlarge</p></li>
228    /// <li>
229    /// <p>stream.graphics.g4dn.16xlarge</p></li>
230    /// <li>
231    /// <p>stream.graphics-pro.4xlarge</p></li>
232    /// <li>
233    /// <p>stream.graphics-pro.8xlarge</p></li>
234    /// <li>
235    /// <p>stream.graphics-pro.16xlarge</p></li>
236    /// <li>
237    /// <p>stream.graphics.g5.xlarge</p></li>
238    /// <li>
239    /// <p>stream.graphics.g5.2xlarge</p></li>
240    /// <li>
241    /// <p>stream.graphics.g5.4xlarge</p></li>
242    /// <li>
243    /// <p>stream.graphics.g5.8xlarge</p></li>
244    /// <li>
245    /// <p>stream.graphics.g5.16xlarge</p></li>
246    /// <li>
247    /// <p>stream.graphics.g5.12xlarge</p></li>
248    /// <li>
249    /// <p>stream.graphics.g5.24xlarge</p></li>
250    /// <li>
251    /// <p>stream.graphics.g6.xlarge</p></li>
252    /// <li>
253    /// <p>stream.graphics.g6.2xlarge</p></li>
254    /// <li>
255    /// <p>stream.graphics.g6.4xlarge</p></li>
256    /// <li>
257    /// <p>stream.graphics.g6.8xlarge</p></li>
258    /// <li>
259    /// <p>stream.graphics.g6.16xlarge</p></li>
260    /// <li>
261    /// <p>stream.graphics.g6.12xlarge</p></li>
262    /// <li>
263    /// <p>stream.graphics.g6.24xlarge</p></li>
264    /// <li>
265    /// <p>stream.graphics.gr6.4xlarge</p></li>
266    /// <li>
267    /// <p>stream.graphics.gr6.8xlarge</p></li>
268    /// <li>
269    /// <p>stream.graphics.g6f.large</p></li>
270    /// <li>
271    /// <p>stream.graphics.g6f.xlarge</p></li>
272    /// <li>
273    /// <p>stream.graphics.g6f.2xlarge</p></li>
274    /// <li>
275    /// <p>stream.graphics.g6f.4xlarge</p></li>
276    /// <li>
277    /// <p>stream.graphics.gr6f.4xlarge</p></li>
278    /// </ul>
279    /// <p>The following instance types are available for Elastic fleets:</p>
280    /// <ul>
281    /// <li>
282    /// <p>stream.standard.small</p></li>
283    /// <li>
284    /// <p>stream.standard.medium</p></li>
285    /// <li>
286    /// <p>stream.standard.large</p></li>
287    /// <li>
288    /// <p>stream.standard.xlarge</p></li>
289    /// <li>
290    /// <p>stream.standard.2xlarge</p></li>
291    /// </ul>
292    pub fn instance_type(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
293        self.inner = self.inner.instance_type(input.into());
294        self
295    }
296    /// <p>The instance type to use when launching fleet instances. The following instance types are available:</p>
297    /// <ul>
298    /// <li>
299    /// <p>stream.standard.small</p></li>
300    /// <li>
301    /// <p>stream.standard.medium</p></li>
302    /// <li>
303    /// <p>stream.standard.large</p></li>
304    /// <li>
305    /// <p>stream.standard.xlarge</p></li>
306    /// <li>
307    /// <p>stream.standard.2xlarge</p></li>
308    /// <li>
309    /// <p>stream.compute.large</p></li>
310    /// <li>
311    /// <p>stream.compute.xlarge</p></li>
312    /// <li>
313    /// <p>stream.compute.2xlarge</p></li>
314    /// <li>
315    /// <p>stream.compute.4xlarge</p></li>
316    /// <li>
317    /// <p>stream.compute.8xlarge</p></li>
318    /// <li>
319    /// <p>stream.memory.large</p></li>
320    /// <li>
321    /// <p>stream.memory.xlarge</p></li>
322    /// <li>
323    /// <p>stream.memory.2xlarge</p></li>
324    /// <li>
325    /// <p>stream.memory.4xlarge</p></li>
326    /// <li>
327    /// <p>stream.memory.8xlarge</p></li>
328    /// <li>
329    /// <p>stream.memory.z1d.large</p></li>
330    /// <li>
331    /// <p>stream.memory.z1d.xlarge</p></li>
332    /// <li>
333    /// <p>stream.memory.z1d.2xlarge</p></li>
334    /// <li>
335    /// <p>stream.memory.z1d.3xlarge</p></li>
336    /// <li>
337    /// <p>stream.memory.z1d.6xlarge</p></li>
338    /// <li>
339    /// <p>stream.memory.z1d.12xlarge</p></li>
340    /// <li>
341    /// <p>stream.graphics-design.large</p></li>
342    /// <li>
343    /// <p>stream.graphics-design.xlarge</p></li>
344    /// <li>
345    /// <p>stream.graphics-design.2xlarge</p></li>
346    /// <li>
347    /// <p>stream.graphics-design.4xlarge</p></li>
348    /// <li>
349    /// <p>stream.graphics-desktop.2xlarge</p></li>
350    /// <li>
351    /// <p>stream.graphics.g4dn.xlarge</p></li>
352    /// <li>
353    /// <p>stream.graphics.g4dn.2xlarge</p></li>
354    /// <li>
355    /// <p>stream.graphics.g4dn.4xlarge</p></li>
356    /// <li>
357    /// <p>stream.graphics.g4dn.8xlarge</p></li>
358    /// <li>
359    /// <p>stream.graphics.g4dn.12xlarge</p></li>
360    /// <li>
361    /// <p>stream.graphics.g4dn.16xlarge</p></li>
362    /// <li>
363    /// <p>stream.graphics-pro.4xlarge</p></li>
364    /// <li>
365    /// <p>stream.graphics-pro.8xlarge</p></li>
366    /// <li>
367    /// <p>stream.graphics-pro.16xlarge</p></li>
368    /// <li>
369    /// <p>stream.graphics.g5.xlarge</p></li>
370    /// <li>
371    /// <p>stream.graphics.g5.2xlarge</p></li>
372    /// <li>
373    /// <p>stream.graphics.g5.4xlarge</p></li>
374    /// <li>
375    /// <p>stream.graphics.g5.8xlarge</p></li>
376    /// <li>
377    /// <p>stream.graphics.g5.16xlarge</p></li>
378    /// <li>
379    /// <p>stream.graphics.g5.12xlarge</p></li>
380    /// <li>
381    /// <p>stream.graphics.g5.24xlarge</p></li>
382    /// <li>
383    /// <p>stream.graphics.g6.xlarge</p></li>
384    /// <li>
385    /// <p>stream.graphics.g6.2xlarge</p></li>
386    /// <li>
387    /// <p>stream.graphics.g6.4xlarge</p></li>
388    /// <li>
389    /// <p>stream.graphics.g6.8xlarge</p></li>
390    /// <li>
391    /// <p>stream.graphics.g6.16xlarge</p></li>
392    /// <li>
393    /// <p>stream.graphics.g6.12xlarge</p></li>
394    /// <li>
395    /// <p>stream.graphics.g6.24xlarge</p></li>
396    /// <li>
397    /// <p>stream.graphics.gr6.4xlarge</p></li>
398    /// <li>
399    /// <p>stream.graphics.gr6.8xlarge</p></li>
400    /// <li>
401    /// <p>stream.graphics.g6f.large</p></li>
402    /// <li>
403    /// <p>stream.graphics.g6f.xlarge</p></li>
404    /// <li>
405    /// <p>stream.graphics.g6f.2xlarge</p></li>
406    /// <li>
407    /// <p>stream.graphics.g6f.4xlarge</p></li>
408    /// <li>
409    /// <p>stream.graphics.gr6f.4xlarge</p></li>
410    /// </ul>
411    /// <p>The following instance types are available for Elastic fleets:</p>
412    /// <ul>
413    /// <li>
414    /// <p>stream.standard.small</p></li>
415    /// <li>
416    /// <p>stream.standard.medium</p></li>
417    /// <li>
418    /// <p>stream.standard.large</p></li>
419    /// <li>
420    /// <p>stream.standard.xlarge</p></li>
421    /// <li>
422    /// <p>stream.standard.2xlarge</p></li>
423    /// </ul>
424    pub fn set_instance_type(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
425        self.inner = self.inner.set_instance_type(input);
426        self
427    }
428    /// <p>The instance type to use when launching fleet instances. The following instance types are available:</p>
429    /// <ul>
430    /// <li>
431    /// <p>stream.standard.small</p></li>
432    /// <li>
433    /// <p>stream.standard.medium</p></li>
434    /// <li>
435    /// <p>stream.standard.large</p></li>
436    /// <li>
437    /// <p>stream.standard.xlarge</p></li>
438    /// <li>
439    /// <p>stream.standard.2xlarge</p></li>
440    /// <li>
441    /// <p>stream.compute.large</p></li>
442    /// <li>
443    /// <p>stream.compute.xlarge</p></li>
444    /// <li>
445    /// <p>stream.compute.2xlarge</p></li>
446    /// <li>
447    /// <p>stream.compute.4xlarge</p></li>
448    /// <li>
449    /// <p>stream.compute.8xlarge</p></li>
450    /// <li>
451    /// <p>stream.memory.large</p></li>
452    /// <li>
453    /// <p>stream.memory.xlarge</p></li>
454    /// <li>
455    /// <p>stream.memory.2xlarge</p></li>
456    /// <li>
457    /// <p>stream.memory.4xlarge</p></li>
458    /// <li>
459    /// <p>stream.memory.8xlarge</p></li>
460    /// <li>
461    /// <p>stream.memory.z1d.large</p></li>
462    /// <li>
463    /// <p>stream.memory.z1d.xlarge</p></li>
464    /// <li>
465    /// <p>stream.memory.z1d.2xlarge</p></li>
466    /// <li>
467    /// <p>stream.memory.z1d.3xlarge</p></li>
468    /// <li>
469    /// <p>stream.memory.z1d.6xlarge</p></li>
470    /// <li>
471    /// <p>stream.memory.z1d.12xlarge</p></li>
472    /// <li>
473    /// <p>stream.graphics-design.large</p></li>
474    /// <li>
475    /// <p>stream.graphics-design.xlarge</p></li>
476    /// <li>
477    /// <p>stream.graphics-design.2xlarge</p></li>
478    /// <li>
479    /// <p>stream.graphics-design.4xlarge</p></li>
480    /// <li>
481    /// <p>stream.graphics-desktop.2xlarge</p></li>
482    /// <li>
483    /// <p>stream.graphics.g4dn.xlarge</p></li>
484    /// <li>
485    /// <p>stream.graphics.g4dn.2xlarge</p></li>
486    /// <li>
487    /// <p>stream.graphics.g4dn.4xlarge</p></li>
488    /// <li>
489    /// <p>stream.graphics.g4dn.8xlarge</p></li>
490    /// <li>
491    /// <p>stream.graphics.g4dn.12xlarge</p></li>
492    /// <li>
493    /// <p>stream.graphics.g4dn.16xlarge</p></li>
494    /// <li>
495    /// <p>stream.graphics-pro.4xlarge</p></li>
496    /// <li>
497    /// <p>stream.graphics-pro.8xlarge</p></li>
498    /// <li>
499    /// <p>stream.graphics-pro.16xlarge</p></li>
500    /// <li>
501    /// <p>stream.graphics.g5.xlarge</p></li>
502    /// <li>
503    /// <p>stream.graphics.g5.2xlarge</p></li>
504    /// <li>
505    /// <p>stream.graphics.g5.4xlarge</p></li>
506    /// <li>
507    /// <p>stream.graphics.g5.8xlarge</p></li>
508    /// <li>
509    /// <p>stream.graphics.g5.16xlarge</p></li>
510    /// <li>
511    /// <p>stream.graphics.g5.12xlarge</p></li>
512    /// <li>
513    /// <p>stream.graphics.g5.24xlarge</p></li>
514    /// <li>
515    /// <p>stream.graphics.g6.xlarge</p></li>
516    /// <li>
517    /// <p>stream.graphics.g6.2xlarge</p></li>
518    /// <li>
519    /// <p>stream.graphics.g6.4xlarge</p></li>
520    /// <li>
521    /// <p>stream.graphics.g6.8xlarge</p></li>
522    /// <li>
523    /// <p>stream.graphics.g6.16xlarge</p></li>
524    /// <li>
525    /// <p>stream.graphics.g6.12xlarge</p></li>
526    /// <li>
527    /// <p>stream.graphics.g6.24xlarge</p></li>
528    /// <li>
529    /// <p>stream.graphics.gr6.4xlarge</p></li>
530    /// <li>
531    /// <p>stream.graphics.gr6.8xlarge</p></li>
532    /// <li>
533    /// <p>stream.graphics.g6f.large</p></li>
534    /// <li>
535    /// <p>stream.graphics.g6f.xlarge</p></li>
536    /// <li>
537    /// <p>stream.graphics.g6f.2xlarge</p></li>
538    /// <li>
539    /// <p>stream.graphics.g6f.4xlarge</p></li>
540    /// <li>
541    /// <p>stream.graphics.gr6f.4xlarge</p></li>
542    /// </ul>
543    /// <p>The following instance types are available for Elastic fleets:</p>
544    /// <ul>
545    /// <li>
546    /// <p>stream.standard.small</p></li>
547    /// <li>
548    /// <p>stream.standard.medium</p></li>
549    /// <li>
550    /// <p>stream.standard.large</p></li>
551    /// <li>
552    /// <p>stream.standard.xlarge</p></li>
553    /// <li>
554    /// <p>stream.standard.2xlarge</p></li>
555    /// </ul>
556    pub fn get_instance_type(&self) -> &::std::option::Option<::std::string::String> {
557        self.inner.get_instance_type()
558    }
559    /// <p>The desired capacity for the fleet. This is not allowed for Elastic fleets.</p>
560    pub fn compute_capacity(mut self, input: crate::types::ComputeCapacity) -> Self {
561        self.inner = self.inner.compute_capacity(input);
562        self
563    }
564    /// <p>The desired capacity for the fleet. This is not allowed for Elastic fleets.</p>
565    pub fn set_compute_capacity(mut self, input: ::std::option::Option<crate::types::ComputeCapacity>) -> Self {
566        self.inner = self.inner.set_compute_capacity(input);
567        self
568    }
569    /// <p>The desired capacity for the fleet. This is not allowed for Elastic fleets.</p>
570    pub fn get_compute_capacity(&self) -> &::std::option::Option<crate::types::ComputeCapacity> {
571        self.inner.get_compute_capacity()
572    }
573    /// <p>The VPC configuration for the fleet. This is required for Elastic fleets, but not required for other fleet types. Elastic fleets require that you specify at least two subnets in different availability zones.</p>
574    pub fn vpc_config(mut self, input: crate::types::VpcConfig) -> Self {
575        self.inner = self.inner.vpc_config(input);
576        self
577    }
578    /// <p>The VPC configuration for the fleet. This is required for Elastic fleets, but not required for other fleet types. Elastic fleets require that you specify at least two subnets in different availability zones.</p>
579    pub fn set_vpc_config(mut self, input: ::std::option::Option<crate::types::VpcConfig>) -> Self {
580        self.inner = self.inner.set_vpc_config(input);
581        self
582    }
583    /// <p>The VPC configuration for the fleet. This is required for Elastic fleets, but not required for other fleet types. Elastic fleets require that you specify at least two subnets in different availability zones.</p>
584    pub fn get_vpc_config(&self) -> &::std::option::Option<crate::types::VpcConfig> {
585        self.inner.get_vpc_config()
586    }
587    /// <p>The maximum amount of time that a streaming session can remain active, in seconds. If users are still connected to a streaming instance five minutes before this limit is reached, they are prompted to save any open documents before being disconnected. After this time elapses, the instance is terminated and replaced by a new instance.</p>
588    /// <p>Specify a value between 600 and 432000.</p>
589    pub fn max_user_duration_in_seconds(mut self, input: i32) -> Self {
590        self.inner = self.inner.max_user_duration_in_seconds(input);
591        self
592    }
593    /// <p>The maximum amount of time that a streaming session can remain active, in seconds. If users are still connected to a streaming instance five minutes before this limit is reached, they are prompted to save any open documents before being disconnected. After this time elapses, the instance is terminated and replaced by a new instance.</p>
594    /// <p>Specify a value between 600 and 432000.</p>
595    pub fn set_max_user_duration_in_seconds(mut self, input: ::std::option::Option<i32>) -> Self {
596        self.inner = self.inner.set_max_user_duration_in_seconds(input);
597        self
598    }
599    /// <p>The maximum amount of time that a streaming session can remain active, in seconds. If users are still connected to a streaming instance five minutes before this limit is reached, they are prompted to save any open documents before being disconnected. After this time elapses, the instance is terminated and replaced by a new instance.</p>
600    /// <p>Specify a value between 600 and 432000.</p>
601    pub fn get_max_user_duration_in_seconds(&self) -> &::std::option::Option<i32> {
602        self.inner.get_max_user_duration_in_seconds()
603    }
604    /// <p>The amount of time that a streaming session remains active after users disconnect. If users try to reconnect to the streaming session after a disconnection or network interruption within this time interval, they are connected to their previous session. Otherwise, they are connected to a new session with a new streaming instance.</p>
605    /// <p>Specify a value between 60 and 36000.</p>
606    pub fn disconnect_timeout_in_seconds(mut self, input: i32) -> Self {
607        self.inner = self.inner.disconnect_timeout_in_seconds(input);
608        self
609    }
610    /// <p>The amount of time that a streaming session remains active after users disconnect. If users try to reconnect to the streaming session after a disconnection or network interruption within this time interval, they are connected to their previous session. Otherwise, they are connected to a new session with a new streaming instance.</p>
611    /// <p>Specify a value between 60 and 36000.</p>
612    pub fn set_disconnect_timeout_in_seconds(mut self, input: ::std::option::Option<i32>) -> Self {
613        self.inner = self.inner.set_disconnect_timeout_in_seconds(input);
614        self
615    }
616    /// <p>The amount of time that a streaming session remains active after users disconnect. If users try to reconnect to the streaming session after a disconnection or network interruption within this time interval, they are connected to their previous session. Otherwise, they are connected to a new session with a new streaming instance.</p>
617    /// <p>Specify a value between 60 and 36000.</p>
618    pub fn get_disconnect_timeout_in_seconds(&self) -> &::std::option::Option<i32> {
619        self.inner.get_disconnect_timeout_in_seconds()
620    }
621    /// <p>Deletes the VPC association for the specified fleet.</p>
622    #[deprecated]
623    pub fn delete_vpc_config(mut self, input: bool) -> Self {
624        self.inner = self.inner.delete_vpc_config(input);
625        self
626    }
627    /// <p>Deletes the VPC association for the specified fleet.</p>
628    #[deprecated]
629    pub fn set_delete_vpc_config(mut self, input: ::std::option::Option<bool>) -> Self {
630        self.inner = self.inner.set_delete_vpc_config(input);
631        self
632    }
633    /// <p>Deletes the VPC association for the specified fleet.</p>
634    #[deprecated]
635    pub fn get_delete_vpc_config(&self) -> &::std::option::Option<bool> {
636        self.inner.get_delete_vpc_config()
637    }
638    /// <p>The description to display.</p>
639    pub fn description(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
640        self.inner = self.inner.description(input.into());
641        self
642    }
643    /// <p>The description to display.</p>
644    pub fn set_description(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
645        self.inner = self.inner.set_description(input);
646        self
647    }
648    /// <p>The description to display.</p>
649    pub fn get_description(&self) -> &::std::option::Option<::std::string::String> {
650        self.inner.get_description()
651    }
652    /// <p>The fleet name to display.</p>
653    pub fn display_name(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
654        self.inner = self.inner.display_name(input.into());
655        self
656    }
657    /// <p>The fleet name to display.</p>
658    pub fn set_display_name(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
659        self.inner = self.inner.set_display_name(input);
660        self
661    }
662    /// <p>The fleet name to display.</p>
663    pub fn get_display_name(&self) -> &::std::option::Option<::std::string::String> {
664        self.inner.get_display_name()
665    }
666    /// <p>Enables or disables default internet access for the fleet.</p>
667    pub fn enable_default_internet_access(mut self, input: bool) -> Self {
668        self.inner = self.inner.enable_default_internet_access(input);
669        self
670    }
671    /// <p>Enables or disables default internet access for the fleet.</p>
672    pub fn set_enable_default_internet_access(mut self, input: ::std::option::Option<bool>) -> Self {
673        self.inner = self.inner.set_enable_default_internet_access(input);
674        self
675    }
676    /// <p>Enables or disables default internet access for the fleet.</p>
677    pub fn get_enable_default_internet_access(&self) -> &::std::option::Option<bool> {
678        self.inner.get_enable_default_internet_access()
679    }
680    /// <p>The name of the directory and organizational unit (OU) to use to join the fleet to a Microsoft Active Directory domain.</p>
681    pub fn domain_join_info(mut self, input: crate::types::DomainJoinInfo) -> Self {
682        self.inner = self.inner.domain_join_info(input);
683        self
684    }
685    /// <p>The name of the directory and organizational unit (OU) to use to join the fleet to a Microsoft Active Directory domain.</p>
686    pub fn set_domain_join_info(mut self, input: ::std::option::Option<crate::types::DomainJoinInfo>) -> Self {
687        self.inner = self.inner.set_domain_join_info(input);
688        self
689    }
690    /// <p>The name of the directory and organizational unit (OU) to use to join the fleet to a Microsoft Active Directory domain.</p>
691    pub fn get_domain_join_info(&self) -> &::std::option::Option<crate::types::DomainJoinInfo> {
692        self.inner.get_domain_join_info()
693    }
694    /// <p>The amount of time that users can be idle (inactive) before they are disconnected from their streaming session and the <code>DisconnectTimeoutInSeconds</code> time interval begins. Users are notified before they are disconnected due to inactivity. If users try to reconnect to the streaming session before the time interval specified in <code>DisconnectTimeoutInSeconds</code> elapses, they are connected to their previous session. Users are considered idle when they stop providing keyboard or mouse input during their streaming session. File uploads and downloads, audio in, audio out, and pixels changing do not qualify as user activity. If users continue to be idle after the time interval in <code>IdleDisconnectTimeoutInSeconds</code> elapses, they are disconnected.</p>
695    /// <p>To prevent users from being disconnected due to inactivity, specify a value of 0. Otherwise, specify a value between 60 and 36000. The default value is 0.</p><note>
696    /// <p>If you enable this feature, we recommend that you specify a value that corresponds exactly to a whole number of minutes (for example, 60, 120, and 180). If you don't do this, the value is rounded to the nearest minute. For example, if you specify a value of 70, users are disconnected after 1 minute of inactivity. If you specify a value that is at the midpoint between two different minutes, the value is rounded up. For example, if you specify a value of 90, users are disconnected after 2 minutes of inactivity.</p>
697    /// </note>
698    pub fn idle_disconnect_timeout_in_seconds(mut self, input: i32) -> Self {
699        self.inner = self.inner.idle_disconnect_timeout_in_seconds(input);
700        self
701    }
702    /// <p>The amount of time that users can be idle (inactive) before they are disconnected from their streaming session and the <code>DisconnectTimeoutInSeconds</code> time interval begins. Users are notified before they are disconnected due to inactivity. If users try to reconnect to the streaming session before the time interval specified in <code>DisconnectTimeoutInSeconds</code> elapses, they are connected to their previous session. Users are considered idle when they stop providing keyboard or mouse input during their streaming session. File uploads and downloads, audio in, audio out, and pixels changing do not qualify as user activity. If users continue to be idle after the time interval in <code>IdleDisconnectTimeoutInSeconds</code> elapses, they are disconnected.</p>
703    /// <p>To prevent users from being disconnected due to inactivity, specify a value of 0. Otherwise, specify a value between 60 and 36000. The default value is 0.</p><note>
704    /// <p>If you enable this feature, we recommend that you specify a value that corresponds exactly to a whole number of minutes (for example, 60, 120, and 180). If you don't do this, the value is rounded to the nearest minute. For example, if you specify a value of 70, users are disconnected after 1 minute of inactivity. If you specify a value that is at the midpoint between two different minutes, the value is rounded up. For example, if you specify a value of 90, users are disconnected after 2 minutes of inactivity.</p>
705    /// </note>
706    pub fn set_idle_disconnect_timeout_in_seconds(mut self, input: ::std::option::Option<i32>) -> Self {
707        self.inner = self.inner.set_idle_disconnect_timeout_in_seconds(input);
708        self
709    }
710    /// <p>The amount of time that users can be idle (inactive) before they are disconnected from their streaming session and the <code>DisconnectTimeoutInSeconds</code> time interval begins. Users are notified before they are disconnected due to inactivity. If users try to reconnect to the streaming session before the time interval specified in <code>DisconnectTimeoutInSeconds</code> elapses, they are connected to their previous session. Users are considered idle when they stop providing keyboard or mouse input during their streaming session. File uploads and downloads, audio in, audio out, and pixels changing do not qualify as user activity. If users continue to be idle after the time interval in <code>IdleDisconnectTimeoutInSeconds</code> elapses, they are disconnected.</p>
711    /// <p>To prevent users from being disconnected due to inactivity, specify a value of 0. Otherwise, specify a value between 60 and 36000. The default value is 0.</p><note>
712    /// <p>If you enable this feature, we recommend that you specify a value that corresponds exactly to a whole number of minutes (for example, 60, 120, and 180). If you don't do this, the value is rounded to the nearest minute. For example, if you specify a value of 70, users are disconnected after 1 minute of inactivity. If you specify a value that is at the midpoint between two different minutes, the value is rounded up. For example, if you specify a value of 90, users are disconnected after 2 minutes of inactivity.</p>
713    /// </note>
714    pub fn get_idle_disconnect_timeout_in_seconds(&self) -> &::std::option::Option<i32> {
715        self.inner.get_idle_disconnect_timeout_in_seconds()
716    }
717    ///
718    /// Appends an item to `AttributesToDelete`.
719    ///
720    /// To override the contents of this collection use [`set_attributes_to_delete`](Self::set_attributes_to_delete).
721    ///
722    /// <p>The fleet attributes to delete.</p>
723    pub fn attributes_to_delete(mut self, input: crate::types::FleetAttribute) -> Self {
724        self.inner = self.inner.attributes_to_delete(input);
725        self
726    }
727    /// <p>The fleet attributes to delete.</p>
728    pub fn set_attributes_to_delete(mut self, input: ::std::option::Option<::std::vec::Vec<crate::types::FleetAttribute>>) -> Self {
729        self.inner = self.inner.set_attributes_to_delete(input);
730        self
731    }
732    /// <p>The fleet attributes to delete.</p>
733    pub fn get_attributes_to_delete(&self) -> &::std::option::Option<::std::vec::Vec<crate::types::FleetAttribute>> {
734        self.inner.get_attributes_to_delete()
735    }
736    /// <p>The Amazon Resource Name (ARN) of the IAM role to apply to the fleet. To assume a role, a fleet instance calls the AWS Security Token Service (STS) <code>AssumeRole</code> API operation and passes the ARN of the role to use. The operation creates a new session with temporary credentials. AppStream 2.0 retrieves the temporary credentials and creates the <b>appstream_machine_role</b> credential profile on the instance.</p>
737    /// <p>For more information, see <a href="https://docs.aws.amazon.com/appstream2/latest/developerguide/using-iam-roles-to-grant-permissions-to-applications-scripts-streaming-instances.html">Using an IAM Role to Grant Permissions to Applications and Scripts Running on AppStream 2.0 Streaming Instances</a> in the <i>Amazon AppStream 2.0 Administration Guide</i>.</p>
738    pub fn iam_role_arn(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
739        self.inner = self.inner.iam_role_arn(input.into());
740        self
741    }
742    /// <p>The Amazon Resource Name (ARN) of the IAM role to apply to the fleet. To assume a role, a fleet instance calls the AWS Security Token Service (STS) <code>AssumeRole</code> API operation and passes the ARN of the role to use. The operation creates a new session with temporary credentials. AppStream 2.0 retrieves the temporary credentials and creates the <b>appstream_machine_role</b> credential profile on the instance.</p>
743    /// <p>For more information, see <a href="https://docs.aws.amazon.com/appstream2/latest/developerguide/using-iam-roles-to-grant-permissions-to-applications-scripts-streaming-instances.html">Using an IAM Role to Grant Permissions to Applications and Scripts Running on AppStream 2.0 Streaming Instances</a> in the <i>Amazon AppStream 2.0 Administration Guide</i>.</p>
744    pub fn set_iam_role_arn(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
745        self.inner = self.inner.set_iam_role_arn(input);
746        self
747    }
748    /// <p>The Amazon Resource Name (ARN) of the IAM role to apply to the fleet. To assume a role, a fleet instance calls the AWS Security Token Service (STS) <code>AssumeRole</code> API operation and passes the ARN of the role to use. The operation creates a new session with temporary credentials. AppStream 2.0 retrieves the temporary credentials and creates the <b>appstream_machine_role</b> credential profile on the instance.</p>
749    /// <p>For more information, see <a href="https://docs.aws.amazon.com/appstream2/latest/developerguide/using-iam-roles-to-grant-permissions-to-applications-scripts-streaming-instances.html">Using an IAM Role to Grant Permissions to Applications and Scripts Running on AppStream 2.0 Streaming Instances</a> in the <i>Amazon AppStream 2.0 Administration Guide</i>.</p>
750    pub fn get_iam_role_arn(&self) -> &::std::option::Option<::std::string::String> {
751        self.inner.get_iam_role_arn()
752    }
753    /// <p>The AppStream 2.0 view that is displayed to your users when they stream from the fleet. When <code>APP</code> is specified, only the windows of applications opened by users display. When <code>DESKTOP</code> is specified, the standard desktop that is provided by the operating system displays.</p>
754    /// <p>The default value is <code>APP</code>.</p>
755    pub fn stream_view(mut self, input: crate::types::StreamView) -> Self {
756        self.inner = self.inner.stream_view(input);
757        self
758    }
759    /// <p>The AppStream 2.0 view that is displayed to your users when they stream from the fleet. When <code>APP</code> is specified, only the windows of applications opened by users display. When <code>DESKTOP</code> is specified, the standard desktop that is provided by the operating system displays.</p>
760    /// <p>The default value is <code>APP</code>.</p>
761    pub fn set_stream_view(mut self, input: ::std::option::Option<crate::types::StreamView>) -> Self {
762        self.inner = self.inner.set_stream_view(input);
763        self
764    }
765    /// <p>The AppStream 2.0 view that is displayed to your users when they stream from the fleet. When <code>APP</code> is specified, only the windows of applications opened by users display. When <code>DESKTOP</code> is specified, the standard desktop that is provided by the operating system displays.</p>
766    /// <p>The default value is <code>APP</code>.</p>
767    pub fn get_stream_view(&self) -> &::std::option::Option<crate::types::StreamView> {
768        self.inner.get_stream_view()
769    }
770    /// <p>The platform of the fleet. WINDOWS_SERVER_2019 and AMAZON_LINUX2 are supported for Elastic fleets.</p>
771    pub fn platform(mut self, input: crate::types::PlatformType) -> Self {
772        self.inner = self.inner.platform(input);
773        self
774    }
775    /// <p>The platform of the fleet. WINDOWS_SERVER_2019 and AMAZON_LINUX2 are supported for Elastic fleets.</p>
776    pub fn set_platform(mut self, input: ::std::option::Option<crate::types::PlatformType>) -> Self {
777        self.inner = self.inner.set_platform(input);
778        self
779    }
780    /// <p>The platform of the fleet. WINDOWS_SERVER_2019 and AMAZON_LINUX2 are supported for Elastic fleets.</p>
781    pub fn get_platform(&self) -> &::std::option::Option<crate::types::PlatformType> {
782        self.inner.get_platform()
783    }
784    /// <p>The maximum number of concurrent sessions for a fleet.</p>
785    pub fn max_concurrent_sessions(mut self, input: i32) -> Self {
786        self.inner = self.inner.max_concurrent_sessions(input);
787        self
788    }
789    /// <p>The maximum number of concurrent sessions for a fleet.</p>
790    pub fn set_max_concurrent_sessions(mut self, input: ::std::option::Option<i32>) -> Self {
791        self.inner = self.inner.set_max_concurrent_sessions(input);
792        self
793    }
794    /// <p>The maximum number of concurrent sessions for a fleet.</p>
795    pub fn get_max_concurrent_sessions(&self) -> &::std::option::Option<i32> {
796        self.inner.get_max_concurrent_sessions()
797    }
798    ///
799    /// Appends an item to `UsbDeviceFilterStrings`.
800    ///
801    /// To override the contents of this collection use [`set_usb_device_filter_strings`](Self::set_usb_device_filter_strings).
802    ///
803    /// <p>The USB device filter strings that specify which USB devices a user can redirect to the fleet streaming session, when using the Windows native client. This is allowed but not required for Elastic fleets.</p>
804    pub fn usb_device_filter_strings(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
805        self.inner = self.inner.usb_device_filter_strings(input.into());
806        self
807    }
808    /// <p>The USB device filter strings that specify which USB devices a user can redirect to the fleet streaming session, when using the Windows native client. This is allowed but not required for Elastic fleets.</p>
809    pub fn set_usb_device_filter_strings(mut self, input: ::std::option::Option<::std::vec::Vec<::std::string::String>>) -> Self {
810        self.inner = self.inner.set_usb_device_filter_strings(input);
811        self
812    }
813    /// <p>The USB device filter strings that specify which USB devices a user can redirect to the fleet streaming session, when using the Windows native client. This is allowed but not required for Elastic fleets.</p>
814    pub fn get_usb_device_filter_strings(&self) -> &::std::option::Option<::std::vec::Vec<::std::string::String>> {
815        self.inner.get_usb_device_filter_strings()
816    }
817    /// <p>The S3 location of the session scripts configuration zip file. This only applies to Elastic fleets.</p>
818    pub fn session_script_s3_location(mut self, input: crate::types::S3Location) -> Self {
819        self.inner = self.inner.session_script_s3_location(input);
820        self
821    }
822    /// <p>The S3 location of the session scripts configuration zip file. This only applies to Elastic fleets.</p>
823    pub fn set_session_script_s3_location(mut self, input: ::std::option::Option<crate::types::S3Location>) -> Self {
824        self.inner = self.inner.set_session_script_s3_location(input);
825        self
826    }
827    /// <p>The S3 location of the session scripts configuration zip file. This only applies to Elastic fleets.</p>
828    pub fn get_session_script_s3_location(&self) -> &::std::option::Option<crate::types::S3Location> {
829        self.inner.get_session_script_s3_location()
830    }
831    /// <p>The maximum number of user sessions on an instance. This only applies to multi-session fleets.</p>
832    pub fn max_sessions_per_instance(mut self, input: i32) -> Self {
833        self.inner = self.inner.max_sessions_per_instance(input);
834        self
835    }
836    /// <p>The maximum number of user sessions on an instance. This only applies to multi-session fleets.</p>
837    pub fn set_max_sessions_per_instance(mut self, input: ::std::option::Option<i32>) -> Self {
838        self.inner = self.inner.set_max_sessions_per_instance(input);
839        self
840    }
841    /// <p>The maximum number of user sessions on an instance. This only applies to multi-session fleets.</p>
842    pub fn get_max_sessions_per_instance(&self) -> &::std::option::Option<i32> {
843        self.inner.get_max_sessions_per_instance()
844    }
845}