1 /**
2  * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
3  * SPDX-License-Identifier: Apache-2.0.
4  */
5 
6 #pragma once
7 #include <aws/cloudformation/CloudFormation_EXPORTS.h>
8 #include <aws/core/utils/memory/stl/AWSStreamFwd.h>
9 #include <aws/core/utils/memory/stl/AWSString.h>
10 #include <aws/cloudformation/model/StackSetOperationAction.h>
11 #include <aws/cloudformation/model/StackSetOperationStatus.h>
12 #include <aws/cloudformation/model/StackSetOperationPreferences.h>
13 #include <aws/core/utils/DateTime.h>
14 #include <aws/cloudformation/model/DeploymentTargets.h>
15 #include <aws/cloudformation/model/StackSetDriftDetectionDetails.h>
16 #include <utility>
17 
18 namespace Aws
19 {
20 namespace Utils
21 {
22 namespace Xml
23 {
24   class XmlNode;
25 } // namespace Xml
26 } // namespace Utils
27 namespace CloudFormation
28 {
29 namespace Model
30 {
31 
32   /**
33    * <p>The structure that contains information about a stack set operation.
34    * </p><p><h3>See Also:</h3>   <a
35    * href="http://docs.aws.amazon.com/goto/WebAPI/cloudformation-2010-05-15/StackSetOperation">AWS
36    * API Reference</a></p>
37    */
38   class AWS_CLOUDFORMATION_API StackSetOperation
39   {
40   public:
41     StackSetOperation();
42     StackSetOperation(const Aws::Utils::Xml::XmlNode& xmlNode);
43     StackSetOperation& operator=(const Aws::Utils::Xml::XmlNode& xmlNode);
44 
45     void OutputToStream(Aws::OStream& ostream, const char* location, unsigned index, const char* locationValue) const;
46     void OutputToStream(Aws::OStream& oStream, const char* location) const;
47 
48 
49     /**
50      * <p>The unique ID of a stack set operation.</p>
51      */
GetOperationId()52     inline const Aws::String& GetOperationId() const{ return m_operationId; }
53 
54     /**
55      * <p>The unique ID of a stack set operation.</p>
56      */
OperationIdHasBeenSet()57     inline bool OperationIdHasBeenSet() const { return m_operationIdHasBeenSet; }
58 
59     /**
60      * <p>The unique ID of a stack set operation.</p>
61      */
SetOperationId(const Aws::String & value)62     inline void SetOperationId(const Aws::String& value) { m_operationIdHasBeenSet = true; m_operationId = value; }
63 
64     /**
65      * <p>The unique ID of a stack set operation.</p>
66      */
SetOperationId(Aws::String && value)67     inline void SetOperationId(Aws::String&& value) { m_operationIdHasBeenSet = true; m_operationId = std::move(value); }
68 
69     /**
70      * <p>The unique ID of a stack set operation.</p>
71      */
SetOperationId(const char * value)72     inline void SetOperationId(const char* value) { m_operationIdHasBeenSet = true; m_operationId.assign(value); }
73 
74     /**
75      * <p>The unique ID of a stack set operation.</p>
76      */
WithOperationId(const Aws::String & value)77     inline StackSetOperation& WithOperationId(const Aws::String& value) { SetOperationId(value); return *this;}
78 
79     /**
80      * <p>The unique ID of a stack set operation.</p>
81      */
WithOperationId(Aws::String && value)82     inline StackSetOperation& WithOperationId(Aws::String&& value) { SetOperationId(std::move(value)); return *this;}
83 
84     /**
85      * <p>The unique ID of a stack set operation.</p>
86      */
WithOperationId(const char * value)87     inline StackSetOperation& WithOperationId(const char* value) { SetOperationId(value); return *this;}
88 
89 
90     /**
91      * <p>The ID of the stack set.</p>
92      */
GetStackSetId()93     inline const Aws::String& GetStackSetId() const{ return m_stackSetId; }
94 
95     /**
96      * <p>The ID of the stack set.</p>
97      */
StackSetIdHasBeenSet()98     inline bool StackSetIdHasBeenSet() const { return m_stackSetIdHasBeenSet; }
99 
100     /**
101      * <p>The ID of the stack set.</p>
102      */
SetStackSetId(const Aws::String & value)103     inline void SetStackSetId(const Aws::String& value) { m_stackSetIdHasBeenSet = true; m_stackSetId = value; }
104 
105     /**
106      * <p>The ID of the stack set.</p>
107      */
SetStackSetId(Aws::String && value)108     inline void SetStackSetId(Aws::String&& value) { m_stackSetIdHasBeenSet = true; m_stackSetId = std::move(value); }
109 
110     /**
111      * <p>The ID of the stack set.</p>
112      */
SetStackSetId(const char * value)113     inline void SetStackSetId(const char* value) { m_stackSetIdHasBeenSet = true; m_stackSetId.assign(value); }
114 
115     /**
116      * <p>The ID of the stack set.</p>
117      */
WithStackSetId(const Aws::String & value)118     inline StackSetOperation& WithStackSetId(const Aws::String& value) { SetStackSetId(value); return *this;}
119 
120     /**
121      * <p>The ID of the stack set.</p>
122      */
WithStackSetId(Aws::String && value)123     inline StackSetOperation& WithStackSetId(Aws::String&& value) { SetStackSetId(std::move(value)); return *this;}
124 
125     /**
126      * <p>The ID of the stack set.</p>
127      */
WithStackSetId(const char * value)128     inline StackSetOperation& WithStackSetId(const char* value) { SetStackSetId(value); return *this;}
129 
130 
131     /**
132      * <p>The type of stack set operation: <code>CREATE</code>, <code>UPDATE</code>, or
133      * <code>DELETE</code>. Create and delete operations affect only the specified
134      * stack set instances that are associated with the specified stack set. Update
135      * operations affect both the stack set itself, as well as <i>all</i> associated
136      * stack set instances.</p>
137      */
GetAction()138     inline const StackSetOperationAction& GetAction() const{ return m_action; }
139 
140     /**
141      * <p>The type of stack set operation: <code>CREATE</code>, <code>UPDATE</code>, or
142      * <code>DELETE</code>. Create and delete operations affect only the specified
143      * stack set instances that are associated with the specified stack set. Update
144      * operations affect both the stack set itself, as well as <i>all</i> associated
145      * stack set instances.</p>
146      */
ActionHasBeenSet()147     inline bool ActionHasBeenSet() const { return m_actionHasBeenSet; }
148 
149     /**
150      * <p>The type of stack set operation: <code>CREATE</code>, <code>UPDATE</code>, or
151      * <code>DELETE</code>. Create and delete operations affect only the specified
152      * stack set instances that are associated with the specified stack set. Update
153      * operations affect both the stack set itself, as well as <i>all</i> associated
154      * stack set instances.</p>
155      */
SetAction(const StackSetOperationAction & value)156     inline void SetAction(const StackSetOperationAction& value) { m_actionHasBeenSet = true; m_action = value; }
157 
158     /**
159      * <p>The type of stack set operation: <code>CREATE</code>, <code>UPDATE</code>, or
160      * <code>DELETE</code>. Create and delete operations affect only the specified
161      * stack set instances that are associated with the specified stack set. Update
162      * operations affect both the stack set itself, as well as <i>all</i> associated
163      * stack set instances.</p>
164      */
SetAction(StackSetOperationAction && value)165     inline void SetAction(StackSetOperationAction&& value) { m_actionHasBeenSet = true; m_action = std::move(value); }
166 
167     /**
168      * <p>The type of stack set operation: <code>CREATE</code>, <code>UPDATE</code>, or
169      * <code>DELETE</code>. Create and delete operations affect only the specified
170      * stack set instances that are associated with the specified stack set. Update
171      * operations affect both the stack set itself, as well as <i>all</i> associated
172      * stack set instances.</p>
173      */
WithAction(const StackSetOperationAction & value)174     inline StackSetOperation& WithAction(const StackSetOperationAction& value) { SetAction(value); return *this;}
175 
176     /**
177      * <p>The type of stack set operation: <code>CREATE</code>, <code>UPDATE</code>, or
178      * <code>DELETE</code>. Create and delete operations affect only the specified
179      * stack set instances that are associated with the specified stack set. Update
180      * operations affect both the stack set itself, as well as <i>all</i> associated
181      * stack set instances.</p>
182      */
WithAction(StackSetOperationAction && value)183     inline StackSetOperation& WithAction(StackSetOperationAction&& value) { SetAction(std::move(value)); return *this;}
184 
185 
186     /**
187      * <p>The status of the operation. </p> <ul> <li> <p> <code>FAILED</code>: The
188      * operation exceeded the specified failure tolerance. The failure tolerance value
189      * that you've set for an operation is applied for each Region during stack create
190      * and update operations. If the number of failed stacks within a Region exceeds
191      * the failure tolerance, the status of the operation in the Region is set to
192      * <code>FAILED</code>. This in turn sets the status of the operation as a whole to
193      * <code>FAILED</code>, and CloudFormation cancels the operation in any remaining
194      * Regions.</p> </li> <li> <p> <code>QUEUED</code>: [Service-managed permissions]
195      * For automatic deployments that require a sequence of operations, the operation
196      * is queued to be performed. For more information, see the <a
197      * href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/stacksets-concepts.html#stackset-status-codes">stack
198      * set operation status codes</a> in the CloudFormation User Guide.</p> </li> <li>
199      * <p> <code>RUNNING</code>: The operation is currently being performed.</p> </li>
200      * <li> <p> <code>STOPPED</code>: The user has cancelled the operation.</p> </li>
201      * <li> <p> <code>STOPPING</code>: The operation is in the process of stopping, at
202      * user request. </p> </li> <li> <p> <code>SUCCEEDED</code>: The operation
203      * completed creating or updating all the specified stacks without exceeding the
204      * failure tolerance for the operation.</p> </li> </ul>
205      */
GetStatus()206     inline const StackSetOperationStatus& GetStatus() const{ return m_status; }
207 
208     /**
209      * <p>The status of the operation. </p> <ul> <li> <p> <code>FAILED</code>: The
210      * operation exceeded the specified failure tolerance. The failure tolerance value
211      * that you've set for an operation is applied for each Region during stack create
212      * and update operations. If the number of failed stacks within a Region exceeds
213      * the failure tolerance, the status of the operation in the Region is set to
214      * <code>FAILED</code>. This in turn sets the status of the operation as a whole to
215      * <code>FAILED</code>, and CloudFormation cancels the operation in any remaining
216      * Regions.</p> </li> <li> <p> <code>QUEUED</code>: [Service-managed permissions]
217      * For automatic deployments that require a sequence of operations, the operation
218      * is queued to be performed. For more information, see the <a
219      * href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/stacksets-concepts.html#stackset-status-codes">stack
220      * set operation status codes</a> in the CloudFormation User Guide.</p> </li> <li>
221      * <p> <code>RUNNING</code>: The operation is currently being performed.</p> </li>
222      * <li> <p> <code>STOPPED</code>: The user has cancelled the operation.</p> </li>
223      * <li> <p> <code>STOPPING</code>: The operation is in the process of stopping, at
224      * user request. </p> </li> <li> <p> <code>SUCCEEDED</code>: The operation
225      * completed creating or updating all the specified stacks without exceeding the
226      * failure tolerance for the operation.</p> </li> </ul>
227      */
StatusHasBeenSet()228     inline bool StatusHasBeenSet() const { return m_statusHasBeenSet; }
229 
230     /**
231      * <p>The status of the operation. </p> <ul> <li> <p> <code>FAILED</code>: The
232      * operation exceeded the specified failure tolerance. The failure tolerance value
233      * that you've set for an operation is applied for each Region during stack create
234      * and update operations. If the number of failed stacks within a Region exceeds
235      * the failure tolerance, the status of the operation in the Region is set to
236      * <code>FAILED</code>. This in turn sets the status of the operation as a whole to
237      * <code>FAILED</code>, and CloudFormation cancels the operation in any remaining
238      * Regions.</p> </li> <li> <p> <code>QUEUED</code>: [Service-managed permissions]
239      * For automatic deployments that require a sequence of operations, the operation
240      * is queued to be performed. For more information, see the <a
241      * href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/stacksets-concepts.html#stackset-status-codes">stack
242      * set operation status codes</a> in the CloudFormation User Guide.</p> </li> <li>
243      * <p> <code>RUNNING</code>: The operation is currently being performed.</p> </li>
244      * <li> <p> <code>STOPPED</code>: The user has cancelled the operation.</p> </li>
245      * <li> <p> <code>STOPPING</code>: The operation is in the process of stopping, at
246      * user request. </p> </li> <li> <p> <code>SUCCEEDED</code>: The operation
247      * completed creating or updating all the specified stacks without exceeding the
248      * failure tolerance for the operation.</p> </li> </ul>
249      */
SetStatus(const StackSetOperationStatus & value)250     inline void SetStatus(const StackSetOperationStatus& value) { m_statusHasBeenSet = true; m_status = value; }
251 
252     /**
253      * <p>The status of the operation. </p> <ul> <li> <p> <code>FAILED</code>: The
254      * operation exceeded the specified failure tolerance. The failure tolerance value
255      * that you've set for an operation is applied for each Region during stack create
256      * and update operations. If the number of failed stacks within a Region exceeds
257      * the failure tolerance, the status of the operation in the Region is set to
258      * <code>FAILED</code>. This in turn sets the status of the operation as a whole to
259      * <code>FAILED</code>, and CloudFormation cancels the operation in any remaining
260      * Regions.</p> </li> <li> <p> <code>QUEUED</code>: [Service-managed permissions]
261      * For automatic deployments that require a sequence of operations, the operation
262      * is queued to be performed. For more information, see the <a
263      * href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/stacksets-concepts.html#stackset-status-codes">stack
264      * set operation status codes</a> in the CloudFormation User Guide.</p> </li> <li>
265      * <p> <code>RUNNING</code>: The operation is currently being performed.</p> </li>
266      * <li> <p> <code>STOPPED</code>: The user has cancelled the operation.</p> </li>
267      * <li> <p> <code>STOPPING</code>: The operation is in the process of stopping, at
268      * user request. </p> </li> <li> <p> <code>SUCCEEDED</code>: The operation
269      * completed creating or updating all the specified stacks without exceeding the
270      * failure tolerance for the operation.</p> </li> </ul>
271      */
SetStatus(StackSetOperationStatus && value)272     inline void SetStatus(StackSetOperationStatus&& value) { m_statusHasBeenSet = true; m_status = std::move(value); }
273 
274     /**
275      * <p>The status of the operation. </p> <ul> <li> <p> <code>FAILED</code>: The
276      * operation exceeded the specified failure tolerance. The failure tolerance value
277      * that you've set for an operation is applied for each Region during stack create
278      * and update operations. If the number of failed stacks within a Region exceeds
279      * the failure tolerance, the status of the operation in the Region is set to
280      * <code>FAILED</code>. This in turn sets the status of the operation as a whole to
281      * <code>FAILED</code>, and CloudFormation cancels the operation in any remaining
282      * Regions.</p> </li> <li> <p> <code>QUEUED</code>: [Service-managed permissions]
283      * For automatic deployments that require a sequence of operations, the operation
284      * is queued to be performed. For more information, see the <a
285      * href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/stacksets-concepts.html#stackset-status-codes">stack
286      * set operation status codes</a> in the CloudFormation User Guide.</p> </li> <li>
287      * <p> <code>RUNNING</code>: The operation is currently being performed.</p> </li>
288      * <li> <p> <code>STOPPED</code>: The user has cancelled the operation.</p> </li>
289      * <li> <p> <code>STOPPING</code>: The operation is in the process of stopping, at
290      * user request. </p> </li> <li> <p> <code>SUCCEEDED</code>: The operation
291      * completed creating or updating all the specified stacks without exceeding the
292      * failure tolerance for the operation.</p> </li> </ul>
293      */
WithStatus(const StackSetOperationStatus & value)294     inline StackSetOperation& WithStatus(const StackSetOperationStatus& value) { SetStatus(value); return *this;}
295 
296     /**
297      * <p>The status of the operation. </p> <ul> <li> <p> <code>FAILED</code>: The
298      * operation exceeded the specified failure tolerance. The failure tolerance value
299      * that you've set for an operation is applied for each Region during stack create
300      * and update operations. If the number of failed stacks within a Region exceeds
301      * the failure tolerance, the status of the operation in the Region is set to
302      * <code>FAILED</code>. This in turn sets the status of the operation as a whole to
303      * <code>FAILED</code>, and CloudFormation cancels the operation in any remaining
304      * Regions.</p> </li> <li> <p> <code>QUEUED</code>: [Service-managed permissions]
305      * For automatic deployments that require a sequence of operations, the operation
306      * is queued to be performed. For more information, see the <a
307      * href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/stacksets-concepts.html#stackset-status-codes">stack
308      * set operation status codes</a> in the CloudFormation User Guide.</p> </li> <li>
309      * <p> <code>RUNNING</code>: The operation is currently being performed.</p> </li>
310      * <li> <p> <code>STOPPED</code>: The user has cancelled the operation.</p> </li>
311      * <li> <p> <code>STOPPING</code>: The operation is in the process of stopping, at
312      * user request. </p> </li> <li> <p> <code>SUCCEEDED</code>: The operation
313      * completed creating or updating all the specified stacks without exceeding the
314      * failure tolerance for the operation.</p> </li> </ul>
315      */
WithStatus(StackSetOperationStatus && value)316     inline StackSetOperation& WithStatus(StackSetOperationStatus&& value) { SetStatus(std::move(value)); return *this;}
317 
318 
319     /**
320      * <p>The preferences for how CloudFormation performs this stack set operation.</p>
321      */
GetOperationPreferences()322     inline const StackSetOperationPreferences& GetOperationPreferences() const{ return m_operationPreferences; }
323 
324     /**
325      * <p>The preferences for how CloudFormation performs this stack set operation.</p>
326      */
OperationPreferencesHasBeenSet()327     inline bool OperationPreferencesHasBeenSet() const { return m_operationPreferencesHasBeenSet; }
328 
329     /**
330      * <p>The preferences for how CloudFormation performs this stack set operation.</p>
331      */
SetOperationPreferences(const StackSetOperationPreferences & value)332     inline void SetOperationPreferences(const StackSetOperationPreferences& value) { m_operationPreferencesHasBeenSet = true; m_operationPreferences = value; }
333 
334     /**
335      * <p>The preferences for how CloudFormation performs this stack set operation.</p>
336      */
SetOperationPreferences(StackSetOperationPreferences && value)337     inline void SetOperationPreferences(StackSetOperationPreferences&& value) { m_operationPreferencesHasBeenSet = true; m_operationPreferences = std::move(value); }
338 
339     /**
340      * <p>The preferences for how CloudFormation performs this stack set operation.</p>
341      */
WithOperationPreferences(const StackSetOperationPreferences & value)342     inline StackSetOperation& WithOperationPreferences(const StackSetOperationPreferences& value) { SetOperationPreferences(value); return *this;}
343 
344     /**
345      * <p>The preferences for how CloudFormation performs this stack set operation.</p>
346      */
WithOperationPreferences(StackSetOperationPreferences && value)347     inline StackSetOperation& WithOperationPreferences(StackSetOperationPreferences&& value) { SetOperationPreferences(std::move(value)); return *this;}
348 
349 
350     /**
351      * <p>For stack set operations of action type <code>DELETE</code>, specifies
352      * whether to remove the stack instances from the specified stack set, but doesn't
353      * delete the stacks. You can't reassociate a retained stack, or add an existing,
354      * saved stack to a new stack set.</p>
355      */
GetRetainStacks()356     inline bool GetRetainStacks() const{ return m_retainStacks; }
357 
358     /**
359      * <p>For stack set operations of action type <code>DELETE</code>, specifies
360      * whether to remove the stack instances from the specified stack set, but doesn't
361      * delete the stacks. You can't reassociate a retained stack, or add an existing,
362      * saved stack to a new stack set.</p>
363      */
RetainStacksHasBeenSet()364     inline bool RetainStacksHasBeenSet() const { return m_retainStacksHasBeenSet; }
365 
366     /**
367      * <p>For stack set operations of action type <code>DELETE</code>, specifies
368      * whether to remove the stack instances from the specified stack set, but doesn't
369      * delete the stacks. You can't reassociate a retained stack, or add an existing,
370      * saved stack to a new stack set.</p>
371      */
SetRetainStacks(bool value)372     inline void SetRetainStacks(bool value) { m_retainStacksHasBeenSet = true; m_retainStacks = value; }
373 
374     /**
375      * <p>For stack set operations of action type <code>DELETE</code>, specifies
376      * whether to remove the stack instances from the specified stack set, but doesn't
377      * delete the stacks. You can't reassociate a retained stack, or add an existing,
378      * saved stack to a new stack set.</p>
379      */
WithRetainStacks(bool value)380     inline StackSetOperation& WithRetainStacks(bool value) { SetRetainStacks(value); return *this;}
381 
382 
383     /**
384      * <p>The Amazon Resource Number (ARN) of the IAM role used to perform this stack
385      * set operation. </p> <p>Use customized administrator roles to control which users
386      * or groups can manage specific stack sets within the same administrator account.
387      * For more information, see <a
388      * href="http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/stacksets-prereqs.html">Define
389      * Permissions for Multiple Administrators</a> in the <i>CloudFormation User
390      * Guide</i>.</p>
391      */
GetAdministrationRoleARN()392     inline const Aws::String& GetAdministrationRoleARN() const{ return m_administrationRoleARN; }
393 
394     /**
395      * <p>The Amazon Resource Number (ARN) of the IAM role used to perform this stack
396      * set operation. </p> <p>Use customized administrator roles to control which users
397      * or groups can manage specific stack sets within the same administrator account.
398      * For more information, see <a
399      * href="http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/stacksets-prereqs.html">Define
400      * Permissions for Multiple Administrators</a> in the <i>CloudFormation User
401      * Guide</i>.</p>
402      */
AdministrationRoleARNHasBeenSet()403     inline bool AdministrationRoleARNHasBeenSet() const { return m_administrationRoleARNHasBeenSet; }
404 
405     /**
406      * <p>The Amazon Resource Number (ARN) of the IAM role used to perform this stack
407      * set operation. </p> <p>Use customized administrator roles to control which users
408      * or groups can manage specific stack sets within the same administrator account.
409      * For more information, see <a
410      * href="http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/stacksets-prereqs.html">Define
411      * Permissions for Multiple Administrators</a> in the <i>CloudFormation User
412      * Guide</i>.</p>
413      */
SetAdministrationRoleARN(const Aws::String & value)414     inline void SetAdministrationRoleARN(const Aws::String& value) { m_administrationRoleARNHasBeenSet = true; m_administrationRoleARN = value; }
415 
416     /**
417      * <p>The Amazon Resource Number (ARN) of the IAM role used to perform this stack
418      * set operation. </p> <p>Use customized administrator roles to control which users
419      * or groups can manage specific stack sets within the same administrator account.
420      * For more information, see <a
421      * href="http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/stacksets-prereqs.html">Define
422      * Permissions for Multiple Administrators</a> in the <i>CloudFormation User
423      * Guide</i>.</p>
424      */
SetAdministrationRoleARN(Aws::String && value)425     inline void SetAdministrationRoleARN(Aws::String&& value) { m_administrationRoleARNHasBeenSet = true; m_administrationRoleARN = std::move(value); }
426 
427     /**
428      * <p>The Amazon Resource Number (ARN) of the IAM role used to perform this stack
429      * set operation. </p> <p>Use customized administrator roles to control which users
430      * or groups can manage specific stack sets within the same administrator account.
431      * For more information, see <a
432      * href="http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/stacksets-prereqs.html">Define
433      * Permissions for Multiple Administrators</a> in the <i>CloudFormation User
434      * Guide</i>.</p>
435      */
SetAdministrationRoleARN(const char * value)436     inline void SetAdministrationRoleARN(const char* value) { m_administrationRoleARNHasBeenSet = true; m_administrationRoleARN.assign(value); }
437 
438     /**
439      * <p>The Amazon Resource Number (ARN) of the IAM role used to perform this stack
440      * set operation. </p> <p>Use customized administrator roles to control which users
441      * or groups can manage specific stack sets within the same administrator account.
442      * For more information, see <a
443      * href="http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/stacksets-prereqs.html">Define
444      * Permissions for Multiple Administrators</a> in the <i>CloudFormation User
445      * Guide</i>.</p>
446      */
WithAdministrationRoleARN(const Aws::String & value)447     inline StackSetOperation& WithAdministrationRoleARN(const Aws::String& value) { SetAdministrationRoleARN(value); return *this;}
448 
449     /**
450      * <p>The Amazon Resource Number (ARN) of the IAM role used to perform this stack
451      * set operation. </p> <p>Use customized administrator roles to control which users
452      * or groups can manage specific stack sets within the same administrator account.
453      * For more information, see <a
454      * href="http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/stacksets-prereqs.html">Define
455      * Permissions for Multiple Administrators</a> in the <i>CloudFormation User
456      * Guide</i>.</p>
457      */
WithAdministrationRoleARN(Aws::String && value)458     inline StackSetOperation& WithAdministrationRoleARN(Aws::String&& value) { SetAdministrationRoleARN(std::move(value)); return *this;}
459 
460     /**
461      * <p>The Amazon Resource Number (ARN) of the IAM role used to perform this stack
462      * set operation. </p> <p>Use customized administrator roles to control which users
463      * or groups can manage specific stack sets within the same administrator account.
464      * For more information, see <a
465      * href="http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/stacksets-prereqs.html">Define
466      * Permissions for Multiple Administrators</a> in the <i>CloudFormation User
467      * Guide</i>.</p>
468      */
WithAdministrationRoleARN(const char * value)469     inline StackSetOperation& WithAdministrationRoleARN(const char* value) { SetAdministrationRoleARN(value); return *this;}
470 
471 
472     /**
473      * <p>The name of the IAM execution role used to create or update the stack
474      * set.</p> <p>Use customized execution roles to control which stack resources
475      * users and groups can include in their stack sets. </p>
476      */
GetExecutionRoleName()477     inline const Aws::String& GetExecutionRoleName() const{ return m_executionRoleName; }
478 
479     /**
480      * <p>The name of the IAM execution role used to create or update the stack
481      * set.</p> <p>Use customized execution roles to control which stack resources
482      * users and groups can include in their stack sets. </p>
483      */
ExecutionRoleNameHasBeenSet()484     inline bool ExecutionRoleNameHasBeenSet() const { return m_executionRoleNameHasBeenSet; }
485 
486     /**
487      * <p>The name of the IAM execution role used to create or update the stack
488      * set.</p> <p>Use customized execution roles to control which stack resources
489      * users and groups can include in their stack sets. </p>
490      */
SetExecutionRoleName(const Aws::String & value)491     inline void SetExecutionRoleName(const Aws::String& value) { m_executionRoleNameHasBeenSet = true; m_executionRoleName = value; }
492 
493     /**
494      * <p>The name of the IAM execution role used to create or update the stack
495      * set.</p> <p>Use customized execution roles to control which stack resources
496      * users and groups can include in their stack sets. </p>
497      */
SetExecutionRoleName(Aws::String && value)498     inline void SetExecutionRoleName(Aws::String&& value) { m_executionRoleNameHasBeenSet = true; m_executionRoleName = std::move(value); }
499 
500     /**
501      * <p>The name of the IAM execution role used to create or update the stack
502      * set.</p> <p>Use customized execution roles to control which stack resources
503      * users and groups can include in their stack sets. </p>
504      */
SetExecutionRoleName(const char * value)505     inline void SetExecutionRoleName(const char* value) { m_executionRoleNameHasBeenSet = true; m_executionRoleName.assign(value); }
506 
507     /**
508      * <p>The name of the IAM execution role used to create or update the stack
509      * set.</p> <p>Use customized execution roles to control which stack resources
510      * users and groups can include in their stack sets. </p>
511      */
WithExecutionRoleName(const Aws::String & value)512     inline StackSetOperation& WithExecutionRoleName(const Aws::String& value) { SetExecutionRoleName(value); return *this;}
513 
514     /**
515      * <p>The name of the IAM execution role used to create or update the stack
516      * set.</p> <p>Use customized execution roles to control which stack resources
517      * users and groups can include in their stack sets. </p>
518      */
WithExecutionRoleName(Aws::String && value)519     inline StackSetOperation& WithExecutionRoleName(Aws::String&& value) { SetExecutionRoleName(std::move(value)); return *this;}
520 
521     /**
522      * <p>The name of the IAM execution role used to create or update the stack
523      * set.</p> <p>Use customized execution roles to control which stack resources
524      * users and groups can include in their stack sets. </p>
525      */
WithExecutionRoleName(const char * value)526     inline StackSetOperation& WithExecutionRoleName(const char* value) { SetExecutionRoleName(value); return *this;}
527 
528 
529     /**
530      * <p>The time at which the operation was initiated. Note that the creation times
531      * for the stack set operation might differ from the creation time of the
532      * individual stacks themselves. This is because CloudFormation needs to perform
533      * preparatory work for the operation, such as dispatching the work to the
534      * requested Regions, before actually creating the first stacks.</p>
535      */
GetCreationTimestamp()536     inline const Aws::Utils::DateTime& GetCreationTimestamp() const{ return m_creationTimestamp; }
537 
538     /**
539      * <p>The time at which the operation was initiated. Note that the creation times
540      * for the stack set operation might differ from the creation time of the
541      * individual stacks themselves. This is because CloudFormation needs to perform
542      * preparatory work for the operation, such as dispatching the work to the
543      * requested Regions, before actually creating the first stacks.</p>
544      */
CreationTimestampHasBeenSet()545     inline bool CreationTimestampHasBeenSet() const { return m_creationTimestampHasBeenSet; }
546 
547     /**
548      * <p>The time at which the operation was initiated. Note that the creation times
549      * for the stack set operation might differ from the creation time of the
550      * individual stacks themselves. This is because CloudFormation needs to perform
551      * preparatory work for the operation, such as dispatching the work to the
552      * requested Regions, before actually creating the first stacks.</p>
553      */
SetCreationTimestamp(const Aws::Utils::DateTime & value)554     inline void SetCreationTimestamp(const Aws::Utils::DateTime& value) { m_creationTimestampHasBeenSet = true; m_creationTimestamp = value; }
555 
556     /**
557      * <p>The time at which the operation was initiated. Note that the creation times
558      * for the stack set operation might differ from the creation time of the
559      * individual stacks themselves. This is because CloudFormation needs to perform
560      * preparatory work for the operation, such as dispatching the work to the
561      * requested Regions, before actually creating the first stacks.</p>
562      */
SetCreationTimestamp(Aws::Utils::DateTime && value)563     inline void SetCreationTimestamp(Aws::Utils::DateTime&& value) { m_creationTimestampHasBeenSet = true; m_creationTimestamp = std::move(value); }
564 
565     /**
566      * <p>The time at which the operation was initiated. Note that the creation times
567      * for the stack set operation might differ from the creation time of the
568      * individual stacks themselves. This is because CloudFormation needs to perform
569      * preparatory work for the operation, such as dispatching the work to the
570      * requested Regions, before actually creating the first stacks.</p>
571      */
WithCreationTimestamp(const Aws::Utils::DateTime & value)572     inline StackSetOperation& WithCreationTimestamp(const Aws::Utils::DateTime& value) { SetCreationTimestamp(value); return *this;}
573 
574     /**
575      * <p>The time at which the operation was initiated. Note that the creation times
576      * for the stack set operation might differ from the creation time of the
577      * individual stacks themselves. This is because CloudFormation needs to perform
578      * preparatory work for the operation, such as dispatching the work to the
579      * requested Regions, before actually creating the first stacks.</p>
580      */
WithCreationTimestamp(Aws::Utils::DateTime && value)581     inline StackSetOperation& WithCreationTimestamp(Aws::Utils::DateTime&& value) { SetCreationTimestamp(std::move(value)); return *this;}
582 
583 
584     /**
585      * <p>The time at which the stack set operation ended, across all accounts and
586      * Regions specified. Note that this doesn't necessarily mean that the stack set
587      * operation was successful, or even attempted, in each account or Region.</p>
588      */
GetEndTimestamp()589     inline const Aws::Utils::DateTime& GetEndTimestamp() const{ return m_endTimestamp; }
590 
591     /**
592      * <p>The time at which the stack set operation ended, across all accounts and
593      * Regions specified. Note that this doesn't necessarily mean that the stack set
594      * operation was successful, or even attempted, in each account or Region.</p>
595      */
EndTimestampHasBeenSet()596     inline bool EndTimestampHasBeenSet() const { return m_endTimestampHasBeenSet; }
597 
598     /**
599      * <p>The time at which the stack set operation ended, across all accounts and
600      * Regions specified. Note that this doesn't necessarily mean that the stack set
601      * operation was successful, or even attempted, in each account or Region.</p>
602      */
SetEndTimestamp(const Aws::Utils::DateTime & value)603     inline void SetEndTimestamp(const Aws::Utils::DateTime& value) { m_endTimestampHasBeenSet = true; m_endTimestamp = value; }
604 
605     /**
606      * <p>The time at which the stack set operation ended, across all accounts and
607      * Regions specified. Note that this doesn't necessarily mean that the stack set
608      * operation was successful, or even attempted, in each account or Region.</p>
609      */
SetEndTimestamp(Aws::Utils::DateTime && value)610     inline void SetEndTimestamp(Aws::Utils::DateTime&& value) { m_endTimestampHasBeenSet = true; m_endTimestamp = std::move(value); }
611 
612     /**
613      * <p>The time at which the stack set operation ended, across all accounts and
614      * Regions specified. Note that this doesn't necessarily mean that the stack set
615      * operation was successful, or even attempted, in each account or Region.</p>
616      */
WithEndTimestamp(const Aws::Utils::DateTime & value)617     inline StackSetOperation& WithEndTimestamp(const Aws::Utils::DateTime& value) { SetEndTimestamp(value); return *this;}
618 
619     /**
620      * <p>The time at which the stack set operation ended, across all accounts and
621      * Regions specified. Note that this doesn't necessarily mean that the stack set
622      * operation was successful, or even attempted, in each account or Region.</p>
623      */
WithEndTimestamp(Aws::Utils::DateTime && value)624     inline StackSetOperation& WithEndTimestamp(Aws::Utils::DateTime&& value) { SetEndTimestamp(std::move(value)); return *this;}
625 
626 
627     /**
628      * <p>[Service-managed permissions] The Organizations accounts affected by the
629      * stack operation.</p>
630      */
GetDeploymentTargets()631     inline const DeploymentTargets& GetDeploymentTargets() const{ return m_deploymentTargets; }
632 
633     /**
634      * <p>[Service-managed permissions] The Organizations accounts affected by the
635      * stack operation.</p>
636      */
DeploymentTargetsHasBeenSet()637     inline bool DeploymentTargetsHasBeenSet() const { return m_deploymentTargetsHasBeenSet; }
638 
639     /**
640      * <p>[Service-managed permissions] The Organizations accounts affected by the
641      * stack operation.</p>
642      */
SetDeploymentTargets(const DeploymentTargets & value)643     inline void SetDeploymentTargets(const DeploymentTargets& value) { m_deploymentTargetsHasBeenSet = true; m_deploymentTargets = value; }
644 
645     /**
646      * <p>[Service-managed permissions] The Organizations accounts affected by the
647      * stack operation.</p>
648      */
SetDeploymentTargets(DeploymentTargets && value)649     inline void SetDeploymentTargets(DeploymentTargets&& value) { m_deploymentTargetsHasBeenSet = true; m_deploymentTargets = std::move(value); }
650 
651     /**
652      * <p>[Service-managed permissions] The Organizations accounts affected by the
653      * stack operation.</p>
654      */
WithDeploymentTargets(const DeploymentTargets & value)655     inline StackSetOperation& WithDeploymentTargets(const DeploymentTargets& value) { SetDeploymentTargets(value); return *this;}
656 
657     /**
658      * <p>[Service-managed permissions] The Organizations accounts affected by the
659      * stack operation.</p>
660      */
WithDeploymentTargets(DeploymentTargets && value)661     inline StackSetOperation& WithDeploymentTargets(DeploymentTargets&& value) { SetDeploymentTargets(std::move(value)); return *this;}
662 
663 
664     /**
665      * <p>Detailed information about the drift status of the stack set. This includes
666      * information about drift operations currently being performed on the stack
667      * set.</p> <p>this information will only be present for stack set operations whose
668      * <code>Action</code> type is <code>DETECT_DRIFT</code>.</p> <p>For more
669      * information, see <a
670      * href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/stacksets-drift.html">Detecting
671      * Unmanaged Changes in Stack Sets</a> in the CloudFormation User Guide.</p>
672      */
GetStackSetDriftDetectionDetails()673     inline const StackSetDriftDetectionDetails& GetStackSetDriftDetectionDetails() const{ return m_stackSetDriftDetectionDetails; }
674 
675     /**
676      * <p>Detailed information about the drift status of the stack set. This includes
677      * information about drift operations currently being performed on the stack
678      * set.</p> <p>this information will only be present for stack set operations whose
679      * <code>Action</code> type is <code>DETECT_DRIFT</code>.</p> <p>For more
680      * information, see <a
681      * href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/stacksets-drift.html">Detecting
682      * Unmanaged Changes in Stack Sets</a> in the CloudFormation User Guide.</p>
683      */
StackSetDriftDetectionDetailsHasBeenSet()684     inline bool StackSetDriftDetectionDetailsHasBeenSet() const { return m_stackSetDriftDetectionDetailsHasBeenSet; }
685 
686     /**
687      * <p>Detailed information about the drift status of the stack set. This includes
688      * information about drift operations currently being performed on the stack
689      * set.</p> <p>this information will only be present for stack set operations whose
690      * <code>Action</code> type is <code>DETECT_DRIFT</code>.</p> <p>For more
691      * information, see <a
692      * href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/stacksets-drift.html">Detecting
693      * Unmanaged Changes in Stack Sets</a> in the CloudFormation User Guide.</p>
694      */
SetStackSetDriftDetectionDetails(const StackSetDriftDetectionDetails & value)695     inline void SetStackSetDriftDetectionDetails(const StackSetDriftDetectionDetails& value) { m_stackSetDriftDetectionDetailsHasBeenSet = true; m_stackSetDriftDetectionDetails = value; }
696 
697     /**
698      * <p>Detailed information about the drift status of the stack set. This includes
699      * information about drift operations currently being performed on the stack
700      * set.</p> <p>this information will only be present for stack set operations whose
701      * <code>Action</code> type is <code>DETECT_DRIFT</code>.</p> <p>For more
702      * information, see <a
703      * href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/stacksets-drift.html">Detecting
704      * Unmanaged Changes in Stack Sets</a> in the CloudFormation User Guide.</p>
705      */
SetStackSetDriftDetectionDetails(StackSetDriftDetectionDetails && value)706     inline void SetStackSetDriftDetectionDetails(StackSetDriftDetectionDetails&& value) { m_stackSetDriftDetectionDetailsHasBeenSet = true; m_stackSetDriftDetectionDetails = std::move(value); }
707 
708     /**
709      * <p>Detailed information about the drift status of the stack set. This includes
710      * information about drift operations currently being performed on the stack
711      * set.</p> <p>this information will only be present for stack set operations whose
712      * <code>Action</code> type is <code>DETECT_DRIFT</code>.</p> <p>For more
713      * information, see <a
714      * href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/stacksets-drift.html">Detecting
715      * Unmanaged Changes in Stack Sets</a> in the CloudFormation User Guide.</p>
716      */
WithStackSetDriftDetectionDetails(const StackSetDriftDetectionDetails & value)717     inline StackSetOperation& WithStackSetDriftDetectionDetails(const StackSetDriftDetectionDetails& value) { SetStackSetDriftDetectionDetails(value); return *this;}
718 
719     /**
720      * <p>Detailed information about the drift status of the stack set. This includes
721      * information about drift operations currently being performed on the stack
722      * set.</p> <p>this information will only be present for stack set operations whose
723      * <code>Action</code> type is <code>DETECT_DRIFT</code>.</p> <p>For more
724      * information, see <a
725      * href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/stacksets-drift.html">Detecting
726      * Unmanaged Changes in Stack Sets</a> in the CloudFormation User Guide.</p>
727      */
WithStackSetDriftDetectionDetails(StackSetDriftDetectionDetails && value)728     inline StackSetOperation& WithStackSetDriftDetectionDetails(StackSetDriftDetectionDetails&& value) { SetStackSetDriftDetectionDetails(std::move(value)); return *this;}
729 
730   private:
731 
732     Aws::String m_operationId;
733     bool m_operationIdHasBeenSet;
734 
735     Aws::String m_stackSetId;
736     bool m_stackSetIdHasBeenSet;
737 
738     StackSetOperationAction m_action;
739     bool m_actionHasBeenSet;
740 
741     StackSetOperationStatus m_status;
742     bool m_statusHasBeenSet;
743 
744     StackSetOperationPreferences m_operationPreferences;
745     bool m_operationPreferencesHasBeenSet;
746 
747     bool m_retainStacks;
748     bool m_retainStacksHasBeenSet;
749 
750     Aws::String m_administrationRoleARN;
751     bool m_administrationRoleARNHasBeenSet;
752 
753     Aws::String m_executionRoleName;
754     bool m_executionRoleNameHasBeenSet;
755 
756     Aws::Utils::DateTime m_creationTimestamp;
757     bool m_creationTimestampHasBeenSet;
758 
759     Aws::Utils::DateTime m_endTimestamp;
760     bool m_endTimestampHasBeenSet;
761 
762     DeploymentTargets m_deploymentTargets;
763     bool m_deploymentTargetsHasBeenSet;
764 
765     StackSetDriftDetectionDetails m_stackSetDriftDetectionDetails;
766     bool m_stackSetDriftDetectionDetailsHasBeenSet;
767   };
768 
769 } // namespace Model
770 } // namespace CloudFormation
771 } // namespace Aws
772