aws_sdk_cloudformation/types/
_stack_set.rs

1// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
2
3/// <p>A structure that contains information about a stack set. A stack set enables you to provision stacks into Amazon Web Services accounts and across Regions by using a single CloudFormation template. In the stack set, you specify the template to use, in addition to any parameters and capabilities that the template requires.</p>
4#[non_exhaustive]
5#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::fmt::Debug)]
6pub struct StackSet {
7    /// <p>The name that's associated with the stack set.</p>
8    pub stack_set_name: ::std::option::Option<::std::string::String>,
9    /// <p>The ID of the stack set.</p>
10    pub stack_set_id: ::std::option::Option<::std::string::String>,
11    /// <p>A description of the stack set that you specify when the stack set is created or updated.</p>
12    pub description: ::std::option::Option<::std::string::String>,
13    /// <p>The status of the stack set.</p>
14    pub status: ::std::option::Option<crate::types::StackSetStatus>,
15    /// <p>The structure that contains the body of the template that was used to create or update the stack set.</p>
16    pub template_body: ::std::option::Option<::std::string::String>,
17    /// <p>A list of input parameters for a stack set.</p>
18    pub parameters: ::std::option::Option<::std::vec::Vec<crate::types::Parameter>>,
19    /// <p>The capabilities that are allowed in the stack set. Some stack set templates might include resources that can affect permissions in your Amazon Web Services account—for example, by creating new Identity and Access Management (IAM) users. For more information, see <a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/control-access-with-iam.html#using-iam-capabilities">Acknowledging IAM resources in CloudFormation templates</a>.</p>
20    pub capabilities: ::std::option::Option<::std::vec::Vec<crate::types::Capability>>,
21    /// <p>A list of tags that specify information about the stack set. A maximum number of 50 tags can be specified.</p>
22    pub tags: ::std::option::Option<::std::vec::Vec<crate::types::Tag>>,
23    /// <p>The Amazon Resource Name (ARN) of the stack set.</p>
24    pub stack_set_arn: ::std::option::Option<::std::string::String>,
25    /// <p>The Amazon Resource Name (ARN) of the IAM role used to create or update the stack set.</p>
26    /// <p>Use customized administrator roles to control which users or groups can manage specific stack sets within the same administrator account. For more information, see <a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/stacksets-prereqs.html">Prerequisites for using CloudFormation StackSets</a> in the <i>CloudFormation User Guide</i>.</p>
27    pub administration_role_arn: ::std::option::Option<::std::string::String>,
28    /// <p>The name of the IAM execution role used to create or update the stack set.</p>
29    /// <p>Use customized execution roles to control which stack resources users and groups can include in their stack sets.</p>
30    pub execution_role_name: ::std::option::Option<::std::string::String>,
31    /// <p>Detailed information about the drift status of the stack set.</p>
32    /// <p>For stack sets, contains information about the last <i>completed</i> drift operation performed on the stack set. Information about drift operations currently in progress isn't included.</p>
33    pub stack_set_drift_detection_details: ::std::option::Option<crate::types::StackSetDriftDetectionDetails>,
34    /// <p>\[Service-managed permissions\] Describes whether StackSets automatically deploys to Organizations accounts that are added to a target organization or organizational unit (OU).</p>
35    pub auto_deployment: ::std::option::Option<crate::types::AutoDeployment>,
36    /// <p>Describes how the IAM roles required for stack set operations are created.</p>
37    /// <ul>
38    /// <li>
39    /// <p>With <code>self-managed</code> permissions, you must create the administrator and execution roles required to deploy to target accounts. For more information, see <a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/stacksets-prereqs-self-managed.html">Grant self-managed permissions</a>.</p></li>
40    /// <li>
41    /// <p>With <code>service-managed</code> permissions, StackSets automatically creates the IAM roles required to deploy to accounts managed by Organizations. For more information, see <a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/stacksets-orgs-activate-trusted-access.html">Activate trusted access for stack sets with Organizations</a>.</p></li>
42    /// </ul>
43    pub permission_model: ::std::option::Option<crate::types::PermissionModels>,
44    /// <p>\[Service-managed permissions\] The organization root ID or organizational unit (OU) IDs that you specified for DeploymentTargets.</p>
45    pub organizational_unit_ids: ::std::option::Option<::std::vec::Vec<::std::string::String>>,
46    /// <p>Describes whether StackSets performs non-conflicting operations concurrently and queues conflicting operations.</p>
47    pub managed_execution: ::std::option::Option<crate::types::ManagedExecution>,
48    /// <p>Returns a list of all Amazon Web Services Regions the given StackSet has stack instances deployed in. The Amazon Web Services Regions list output is in no particular order.</p>
49    pub regions: ::std::option::Option<::std::vec::Vec<::std::string::String>>,
50}
51impl StackSet {
52    /// <p>The name that's associated with the stack set.</p>
53    pub fn stack_set_name(&self) -> ::std::option::Option<&str> {
54        self.stack_set_name.as_deref()
55    }
56    /// <p>The ID of the stack set.</p>
57    pub fn stack_set_id(&self) -> ::std::option::Option<&str> {
58        self.stack_set_id.as_deref()
59    }
60    /// <p>A description of the stack set that you specify when the stack set is created or updated.</p>
61    pub fn description(&self) -> ::std::option::Option<&str> {
62        self.description.as_deref()
63    }
64    /// <p>The status of the stack set.</p>
65    pub fn status(&self) -> ::std::option::Option<&crate::types::StackSetStatus> {
66        self.status.as_ref()
67    }
68    /// <p>The structure that contains the body of the template that was used to create or update the stack set.</p>
69    pub fn template_body(&self) -> ::std::option::Option<&str> {
70        self.template_body.as_deref()
71    }
72    /// <p>A list of input parameters for a stack set.</p>
73    ///
74    /// If no value was sent for this field, a default will be set. If you want to determine if no value was sent, use `.parameters.is_none()`.
75    pub fn parameters(&self) -> &[crate::types::Parameter] {
76        self.parameters.as_deref().unwrap_or_default()
77    }
78    /// <p>The capabilities that are allowed in the stack set. Some stack set templates might include resources that can affect permissions in your Amazon Web Services account—for example, by creating new Identity and Access Management (IAM) users. For more information, see <a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/control-access-with-iam.html#using-iam-capabilities">Acknowledging IAM resources in CloudFormation templates</a>.</p>
79    ///
80    /// If no value was sent for this field, a default will be set. If you want to determine if no value was sent, use `.capabilities.is_none()`.
81    pub fn capabilities(&self) -> &[crate::types::Capability] {
82        self.capabilities.as_deref().unwrap_or_default()
83    }
84    /// <p>A list of tags that specify information about the stack set. A maximum number of 50 tags can be specified.</p>
85    ///
86    /// If no value was sent for this field, a default will be set. If you want to determine if no value was sent, use `.tags.is_none()`.
87    pub fn tags(&self) -> &[crate::types::Tag] {
88        self.tags.as_deref().unwrap_or_default()
89    }
90    /// <p>The Amazon Resource Name (ARN) of the stack set.</p>
91    pub fn stack_set_arn(&self) -> ::std::option::Option<&str> {
92        self.stack_set_arn.as_deref()
93    }
94    /// <p>The Amazon Resource Name (ARN) of the IAM role used to create or update the stack set.</p>
95    /// <p>Use customized administrator roles to control which users or groups can manage specific stack sets within the same administrator account. For more information, see <a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/stacksets-prereqs.html">Prerequisites for using CloudFormation StackSets</a> in the <i>CloudFormation User Guide</i>.</p>
96    pub fn administration_role_arn(&self) -> ::std::option::Option<&str> {
97        self.administration_role_arn.as_deref()
98    }
99    /// <p>The name of the IAM execution role used to create or update the stack set.</p>
100    /// <p>Use customized execution roles to control which stack resources users and groups can include in their stack sets.</p>
101    pub fn execution_role_name(&self) -> ::std::option::Option<&str> {
102        self.execution_role_name.as_deref()
103    }
104    /// <p>Detailed information about the drift status of the stack set.</p>
105    /// <p>For stack sets, contains information about the last <i>completed</i> drift operation performed on the stack set. Information about drift operations currently in progress isn't included.</p>
106    pub fn stack_set_drift_detection_details(&self) -> ::std::option::Option<&crate::types::StackSetDriftDetectionDetails> {
107        self.stack_set_drift_detection_details.as_ref()
108    }
109    /// <p>\[Service-managed permissions\] Describes whether StackSets automatically deploys to Organizations accounts that are added to a target organization or organizational unit (OU).</p>
110    pub fn auto_deployment(&self) -> ::std::option::Option<&crate::types::AutoDeployment> {
111        self.auto_deployment.as_ref()
112    }
113    /// <p>Describes how the IAM roles required for stack set operations are created.</p>
114    /// <ul>
115    /// <li>
116    /// <p>With <code>self-managed</code> permissions, you must create the administrator and execution roles required to deploy to target accounts. For more information, see <a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/stacksets-prereqs-self-managed.html">Grant self-managed permissions</a>.</p></li>
117    /// <li>
118    /// <p>With <code>service-managed</code> permissions, StackSets automatically creates the IAM roles required to deploy to accounts managed by Organizations. For more information, see <a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/stacksets-orgs-activate-trusted-access.html">Activate trusted access for stack sets with Organizations</a>.</p></li>
119    /// </ul>
120    pub fn permission_model(&self) -> ::std::option::Option<&crate::types::PermissionModels> {
121        self.permission_model.as_ref()
122    }
123    /// <p>\[Service-managed permissions\] The organization root ID or organizational unit (OU) IDs that you specified for DeploymentTargets.</p>
124    ///
125    /// If no value was sent for this field, a default will be set. If you want to determine if no value was sent, use `.organizational_unit_ids.is_none()`.
126    pub fn organizational_unit_ids(&self) -> &[::std::string::String] {
127        self.organizational_unit_ids.as_deref().unwrap_or_default()
128    }
129    /// <p>Describes whether StackSets performs non-conflicting operations concurrently and queues conflicting operations.</p>
130    pub fn managed_execution(&self) -> ::std::option::Option<&crate::types::ManagedExecution> {
131        self.managed_execution.as_ref()
132    }
133    /// <p>Returns a list of all Amazon Web Services Regions the given StackSet has stack instances deployed in. The Amazon Web Services Regions list output is in no particular order.</p>
134    ///
135    /// If no value was sent for this field, a default will be set. If you want to determine if no value was sent, use `.regions.is_none()`.
136    pub fn regions(&self) -> &[::std::string::String] {
137        self.regions.as_deref().unwrap_or_default()
138    }
139}
140impl StackSet {
141    /// Creates a new builder-style object to manufacture [`StackSet`](crate::types::StackSet).
142    pub fn builder() -> crate::types::builders::StackSetBuilder {
143        crate::types::builders::StackSetBuilder::default()
144    }
145}
146
147/// A builder for [`StackSet`](crate::types::StackSet).
148#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::default::Default, ::std::fmt::Debug)]
149#[non_exhaustive]
150pub struct StackSetBuilder {
151    pub(crate) stack_set_name: ::std::option::Option<::std::string::String>,
152    pub(crate) stack_set_id: ::std::option::Option<::std::string::String>,
153    pub(crate) description: ::std::option::Option<::std::string::String>,
154    pub(crate) status: ::std::option::Option<crate::types::StackSetStatus>,
155    pub(crate) template_body: ::std::option::Option<::std::string::String>,
156    pub(crate) parameters: ::std::option::Option<::std::vec::Vec<crate::types::Parameter>>,
157    pub(crate) capabilities: ::std::option::Option<::std::vec::Vec<crate::types::Capability>>,
158    pub(crate) tags: ::std::option::Option<::std::vec::Vec<crate::types::Tag>>,
159    pub(crate) stack_set_arn: ::std::option::Option<::std::string::String>,
160    pub(crate) administration_role_arn: ::std::option::Option<::std::string::String>,
161    pub(crate) execution_role_name: ::std::option::Option<::std::string::String>,
162    pub(crate) stack_set_drift_detection_details: ::std::option::Option<crate::types::StackSetDriftDetectionDetails>,
163    pub(crate) auto_deployment: ::std::option::Option<crate::types::AutoDeployment>,
164    pub(crate) permission_model: ::std::option::Option<crate::types::PermissionModels>,
165    pub(crate) organizational_unit_ids: ::std::option::Option<::std::vec::Vec<::std::string::String>>,
166    pub(crate) managed_execution: ::std::option::Option<crate::types::ManagedExecution>,
167    pub(crate) regions: ::std::option::Option<::std::vec::Vec<::std::string::String>>,
168}
169impl StackSetBuilder {
170    /// <p>The name that's associated with the stack set.</p>
171    pub fn stack_set_name(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
172        self.stack_set_name = ::std::option::Option::Some(input.into());
173        self
174    }
175    /// <p>The name that's associated with the stack set.</p>
176    pub fn set_stack_set_name(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
177        self.stack_set_name = input;
178        self
179    }
180    /// <p>The name that's associated with the stack set.</p>
181    pub fn get_stack_set_name(&self) -> &::std::option::Option<::std::string::String> {
182        &self.stack_set_name
183    }
184    /// <p>The ID of the stack set.</p>
185    pub fn stack_set_id(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
186        self.stack_set_id = ::std::option::Option::Some(input.into());
187        self
188    }
189    /// <p>The ID of the stack set.</p>
190    pub fn set_stack_set_id(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
191        self.stack_set_id = input;
192        self
193    }
194    /// <p>The ID of the stack set.</p>
195    pub fn get_stack_set_id(&self) -> &::std::option::Option<::std::string::String> {
196        &self.stack_set_id
197    }
198    /// <p>A description of the stack set that you specify when the stack set is created or updated.</p>
199    pub fn description(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
200        self.description = ::std::option::Option::Some(input.into());
201        self
202    }
203    /// <p>A description of the stack set that you specify when the stack set is created or updated.</p>
204    pub fn set_description(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
205        self.description = input;
206        self
207    }
208    /// <p>A description of the stack set that you specify when the stack set is created or updated.</p>
209    pub fn get_description(&self) -> &::std::option::Option<::std::string::String> {
210        &self.description
211    }
212    /// <p>The status of the stack set.</p>
213    pub fn status(mut self, input: crate::types::StackSetStatus) -> Self {
214        self.status = ::std::option::Option::Some(input);
215        self
216    }
217    /// <p>The status of the stack set.</p>
218    pub fn set_status(mut self, input: ::std::option::Option<crate::types::StackSetStatus>) -> Self {
219        self.status = input;
220        self
221    }
222    /// <p>The status of the stack set.</p>
223    pub fn get_status(&self) -> &::std::option::Option<crate::types::StackSetStatus> {
224        &self.status
225    }
226    /// <p>The structure that contains the body of the template that was used to create or update the stack set.</p>
227    pub fn template_body(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
228        self.template_body = ::std::option::Option::Some(input.into());
229        self
230    }
231    /// <p>The structure that contains the body of the template that was used to create or update the stack set.</p>
232    pub fn set_template_body(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
233        self.template_body = input;
234        self
235    }
236    /// <p>The structure that contains the body of the template that was used to create or update the stack set.</p>
237    pub fn get_template_body(&self) -> &::std::option::Option<::std::string::String> {
238        &self.template_body
239    }
240    /// Appends an item to `parameters`.
241    ///
242    /// To override the contents of this collection use [`set_parameters`](Self::set_parameters).
243    ///
244    /// <p>A list of input parameters for a stack set.</p>
245    pub fn parameters(mut self, input: crate::types::Parameter) -> Self {
246        let mut v = self.parameters.unwrap_or_default();
247        v.push(input);
248        self.parameters = ::std::option::Option::Some(v);
249        self
250    }
251    /// <p>A list of input parameters for a stack set.</p>
252    pub fn set_parameters(mut self, input: ::std::option::Option<::std::vec::Vec<crate::types::Parameter>>) -> Self {
253        self.parameters = input;
254        self
255    }
256    /// <p>A list of input parameters for a stack set.</p>
257    pub fn get_parameters(&self) -> &::std::option::Option<::std::vec::Vec<crate::types::Parameter>> {
258        &self.parameters
259    }
260    /// Appends an item to `capabilities`.
261    ///
262    /// To override the contents of this collection use [`set_capabilities`](Self::set_capabilities).
263    ///
264    /// <p>The capabilities that are allowed in the stack set. Some stack set templates might include resources that can affect permissions in your Amazon Web Services account—for example, by creating new Identity and Access Management (IAM) users. For more information, see <a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/control-access-with-iam.html#using-iam-capabilities">Acknowledging IAM resources in CloudFormation templates</a>.</p>
265    pub fn capabilities(mut self, input: crate::types::Capability) -> Self {
266        let mut v = self.capabilities.unwrap_or_default();
267        v.push(input);
268        self.capabilities = ::std::option::Option::Some(v);
269        self
270    }
271    /// <p>The capabilities that are allowed in the stack set. Some stack set templates might include resources that can affect permissions in your Amazon Web Services account—for example, by creating new Identity and Access Management (IAM) users. For more information, see <a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/control-access-with-iam.html#using-iam-capabilities">Acknowledging IAM resources in CloudFormation templates</a>.</p>
272    pub fn set_capabilities(mut self, input: ::std::option::Option<::std::vec::Vec<crate::types::Capability>>) -> Self {
273        self.capabilities = input;
274        self
275    }
276    /// <p>The capabilities that are allowed in the stack set. Some stack set templates might include resources that can affect permissions in your Amazon Web Services account—for example, by creating new Identity and Access Management (IAM) users. For more information, see <a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/control-access-with-iam.html#using-iam-capabilities">Acknowledging IAM resources in CloudFormation templates</a>.</p>
277    pub fn get_capabilities(&self) -> &::std::option::Option<::std::vec::Vec<crate::types::Capability>> {
278        &self.capabilities
279    }
280    /// Appends an item to `tags`.
281    ///
282    /// To override the contents of this collection use [`set_tags`](Self::set_tags).
283    ///
284    /// <p>A list of tags that specify information about the stack set. A maximum number of 50 tags can be specified.</p>
285    pub fn tags(mut self, input: crate::types::Tag) -> Self {
286        let mut v = self.tags.unwrap_or_default();
287        v.push(input);
288        self.tags = ::std::option::Option::Some(v);
289        self
290    }
291    /// <p>A list of tags that specify information about the stack set. A maximum number of 50 tags can be specified.</p>
292    pub fn set_tags(mut self, input: ::std::option::Option<::std::vec::Vec<crate::types::Tag>>) -> Self {
293        self.tags = input;
294        self
295    }
296    /// <p>A list of tags that specify information about the stack set. A maximum number of 50 tags can be specified.</p>
297    pub fn get_tags(&self) -> &::std::option::Option<::std::vec::Vec<crate::types::Tag>> {
298        &self.tags
299    }
300    /// <p>The Amazon Resource Name (ARN) of the stack set.</p>
301    pub fn stack_set_arn(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
302        self.stack_set_arn = ::std::option::Option::Some(input.into());
303        self
304    }
305    /// <p>The Amazon Resource Name (ARN) of the stack set.</p>
306    pub fn set_stack_set_arn(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
307        self.stack_set_arn = input;
308        self
309    }
310    /// <p>The Amazon Resource Name (ARN) of the stack set.</p>
311    pub fn get_stack_set_arn(&self) -> &::std::option::Option<::std::string::String> {
312        &self.stack_set_arn
313    }
314    /// <p>The Amazon Resource Name (ARN) of the IAM role used to create or update the stack set.</p>
315    /// <p>Use customized administrator roles to control which users or groups can manage specific stack sets within the same administrator account. For more information, see <a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/stacksets-prereqs.html">Prerequisites for using CloudFormation StackSets</a> in the <i>CloudFormation User Guide</i>.</p>
316    pub fn administration_role_arn(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
317        self.administration_role_arn = ::std::option::Option::Some(input.into());
318        self
319    }
320    /// <p>The Amazon Resource Name (ARN) of the IAM role used to create or update the stack set.</p>
321    /// <p>Use customized administrator roles to control which users or groups can manage specific stack sets within the same administrator account. For more information, see <a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/stacksets-prereqs.html">Prerequisites for using CloudFormation StackSets</a> in the <i>CloudFormation User Guide</i>.</p>
322    pub fn set_administration_role_arn(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
323        self.administration_role_arn = input;
324        self
325    }
326    /// <p>The Amazon Resource Name (ARN) of the IAM role used to create or update the stack set.</p>
327    /// <p>Use customized administrator roles to control which users or groups can manage specific stack sets within the same administrator account. For more information, see <a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/stacksets-prereqs.html">Prerequisites for using CloudFormation StackSets</a> in the <i>CloudFormation User Guide</i>.</p>
328    pub fn get_administration_role_arn(&self) -> &::std::option::Option<::std::string::String> {
329        &self.administration_role_arn
330    }
331    /// <p>The name of the IAM execution role used to create or update the stack set.</p>
332    /// <p>Use customized execution roles to control which stack resources users and groups can include in their stack sets.</p>
333    pub fn execution_role_name(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
334        self.execution_role_name = ::std::option::Option::Some(input.into());
335        self
336    }
337    /// <p>The name of the IAM execution role used to create or update the stack set.</p>
338    /// <p>Use customized execution roles to control which stack resources users and groups can include in their stack sets.</p>
339    pub fn set_execution_role_name(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
340        self.execution_role_name = input;
341        self
342    }
343    /// <p>The name of the IAM execution role used to create or update the stack set.</p>
344    /// <p>Use customized execution roles to control which stack resources users and groups can include in their stack sets.</p>
345    pub fn get_execution_role_name(&self) -> &::std::option::Option<::std::string::String> {
346        &self.execution_role_name
347    }
348    /// <p>Detailed information about the drift status of the stack set.</p>
349    /// <p>For stack sets, contains information about the last <i>completed</i> drift operation performed on the stack set. Information about drift operations currently in progress isn't included.</p>
350    pub fn stack_set_drift_detection_details(mut self, input: crate::types::StackSetDriftDetectionDetails) -> Self {
351        self.stack_set_drift_detection_details = ::std::option::Option::Some(input);
352        self
353    }
354    /// <p>Detailed information about the drift status of the stack set.</p>
355    /// <p>For stack sets, contains information about the last <i>completed</i> drift operation performed on the stack set. Information about drift operations currently in progress isn't included.</p>
356    pub fn set_stack_set_drift_detection_details(mut self, input: ::std::option::Option<crate::types::StackSetDriftDetectionDetails>) -> Self {
357        self.stack_set_drift_detection_details = input;
358        self
359    }
360    /// <p>Detailed information about the drift status of the stack set.</p>
361    /// <p>For stack sets, contains information about the last <i>completed</i> drift operation performed on the stack set. Information about drift operations currently in progress isn't included.</p>
362    pub fn get_stack_set_drift_detection_details(&self) -> &::std::option::Option<crate::types::StackSetDriftDetectionDetails> {
363        &self.stack_set_drift_detection_details
364    }
365    /// <p>\[Service-managed permissions\] Describes whether StackSets automatically deploys to Organizations accounts that are added to a target organization or organizational unit (OU).</p>
366    pub fn auto_deployment(mut self, input: crate::types::AutoDeployment) -> Self {
367        self.auto_deployment = ::std::option::Option::Some(input);
368        self
369    }
370    /// <p>\[Service-managed permissions\] Describes whether StackSets automatically deploys to Organizations accounts that are added to a target organization or organizational unit (OU).</p>
371    pub fn set_auto_deployment(mut self, input: ::std::option::Option<crate::types::AutoDeployment>) -> Self {
372        self.auto_deployment = input;
373        self
374    }
375    /// <p>\[Service-managed permissions\] Describes whether StackSets automatically deploys to Organizations accounts that are added to a target organization or organizational unit (OU).</p>
376    pub fn get_auto_deployment(&self) -> &::std::option::Option<crate::types::AutoDeployment> {
377        &self.auto_deployment
378    }
379    /// <p>Describes how the IAM roles required for stack set operations are created.</p>
380    /// <ul>
381    /// <li>
382    /// <p>With <code>self-managed</code> permissions, you must create the administrator and execution roles required to deploy to target accounts. For more information, see <a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/stacksets-prereqs-self-managed.html">Grant self-managed permissions</a>.</p></li>
383    /// <li>
384    /// <p>With <code>service-managed</code> permissions, StackSets automatically creates the IAM roles required to deploy to accounts managed by Organizations. For more information, see <a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/stacksets-orgs-activate-trusted-access.html">Activate trusted access for stack sets with Organizations</a>.</p></li>
385    /// </ul>
386    pub fn permission_model(mut self, input: crate::types::PermissionModels) -> Self {
387        self.permission_model = ::std::option::Option::Some(input);
388        self
389    }
390    /// <p>Describes how the IAM roles required for stack set operations are created.</p>
391    /// <ul>
392    /// <li>
393    /// <p>With <code>self-managed</code> permissions, you must create the administrator and execution roles required to deploy to target accounts. For more information, see <a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/stacksets-prereqs-self-managed.html">Grant self-managed permissions</a>.</p></li>
394    /// <li>
395    /// <p>With <code>service-managed</code> permissions, StackSets automatically creates the IAM roles required to deploy to accounts managed by Organizations. For more information, see <a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/stacksets-orgs-activate-trusted-access.html">Activate trusted access for stack sets with Organizations</a>.</p></li>
396    /// </ul>
397    pub fn set_permission_model(mut self, input: ::std::option::Option<crate::types::PermissionModels>) -> Self {
398        self.permission_model = input;
399        self
400    }
401    /// <p>Describes how the IAM roles required for stack set operations are created.</p>
402    /// <ul>
403    /// <li>
404    /// <p>With <code>self-managed</code> permissions, you must create the administrator and execution roles required to deploy to target accounts. For more information, see <a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/stacksets-prereqs-self-managed.html">Grant self-managed permissions</a>.</p></li>
405    /// <li>
406    /// <p>With <code>service-managed</code> permissions, StackSets automatically creates the IAM roles required to deploy to accounts managed by Organizations. For more information, see <a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/stacksets-orgs-activate-trusted-access.html">Activate trusted access for stack sets with Organizations</a>.</p></li>
407    /// </ul>
408    pub fn get_permission_model(&self) -> &::std::option::Option<crate::types::PermissionModels> {
409        &self.permission_model
410    }
411    /// Appends an item to `organizational_unit_ids`.
412    ///
413    /// To override the contents of this collection use [`set_organizational_unit_ids`](Self::set_organizational_unit_ids).
414    ///
415    /// <p>\[Service-managed permissions\] The organization root ID or organizational unit (OU) IDs that you specified for DeploymentTargets.</p>
416    pub fn organizational_unit_ids(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
417        let mut v = self.organizational_unit_ids.unwrap_or_default();
418        v.push(input.into());
419        self.organizational_unit_ids = ::std::option::Option::Some(v);
420        self
421    }
422    /// <p>\[Service-managed permissions\] The organization root ID or organizational unit (OU) IDs that you specified for DeploymentTargets.</p>
423    pub fn set_organizational_unit_ids(mut self, input: ::std::option::Option<::std::vec::Vec<::std::string::String>>) -> Self {
424        self.organizational_unit_ids = input;
425        self
426    }
427    /// <p>\[Service-managed permissions\] The organization root ID or organizational unit (OU) IDs that you specified for DeploymentTargets.</p>
428    pub fn get_organizational_unit_ids(&self) -> &::std::option::Option<::std::vec::Vec<::std::string::String>> {
429        &self.organizational_unit_ids
430    }
431    /// <p>Describes whether StackSets performs non-conflicting operations concurrently and queues conflicting operations.</p>
432    pub fn managed_execution(mut self, input: crate::types::ManagedExecution) -> Self {
433        self.managed_execution = ::std::option::Option::Some(input);
434        self
435    }
436    /// <p>Describes whether StackSets performs non-conflicting operations concurrently and queues conflicting operations.</p>
437    pub fn set_managed_execution(mut self, input: ::std::option::Option<crate::types::ManagedExecution>) -> Self {
438        self.managed_execution = input;
439        self
440    }
441    /// <p>Describes whether StackSets performs non-conflicting operations concurrently and queues conflicting operations.</p>
442    pub fn get_managed_execution(&self) -> &::std::option::Option<crate::types::ManagedExecution> {
443        &self.managed_execution
444    }
445    /// Appends an item to `regions`.
446    ///
447    /// To override the contents of this collection use [`set_regions`](Self::set_regions).
448    ///
449    /// <p>Returns a list of all Amazon Web Services Regions the given StackSet has stack instances deployed in. The Amazon Web Services Regions list output is in no particular order.</p>
450    pub fn regions(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
451        let mut v = self.regions.unwrap_or_default();
452        v.push(input.into());
453        self.regions = ::std::option::Option::Some(v);
454        self
455    }
456    /// <p>Returns a list of all Amazon Web Services Regions the given StackSet has stack instances deployed in. The Amazon Web Services Regions list output is in no particular order.</p>
457    pub fn set_regions(mut self, input: ::std::option::Option<::std::vec::Vec<::std::string::String>>) -> Self {
458        self.regions = input;
459        self
460    }
461    /// <p>Returns a list of all Amazon Web Services Regions the given StackSet has stack instances deployed in. The Amazon Web Services Regions list output is in no particular order.</p>
462    pub fn get_regions(&self) -> &::std::option::Option<::std::vec::Vec<::std::string::String>> {
463        &self.regions
464    }
465    /// Consumes the builder and constructs a [`StackSet`](crate::types::StackSet).
466    pub fn build(self) -> crate::types::StackSet {
467        crate::types::StackSet {
468            stack_set_name: self.stack_set_name,
469            stack_set_id: self.stack_set_id,
470            description: self.description,
471            status: self.status,
472            template_body: self.template_body,
473            parameters: self.parameters,
474            capabilities: self.capabilities,
475            tags: self.tags,
476            stack_set_arn: self.stack_set_arn,
477            administration_role_arn: self.administration_role_arn,
478            execution_role_name: self.execution_role_name,
479            stack_set_drift_detection_details: self.stack_set_drift_detection_details,
480            auto_deployment: self.auto_deployment,
481            permission_model: self.permission_model,
482            organizational_unit_ids: self.organizational_unit_ids,
483            managed_execution: self.managed_execution,
484            regions: self.regions,
485        }
486    }
487}