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/gamelift/GameLift_EXPORTS.h>
8 #include <aws/core/utils/memory/stl/AWSString.h>
9 #include <aws/core/utils/memory/stl/AWSVector.h>
10 #include <aws/gamelift/model/BalancingStrategy.h>
11 #include <aws/gamelift/model/GameServerProtectionPolicy.h>
12 #include <aws/gamelift/model/GameServerGroupStatus.h>
13 #include <aws/core/utils/DateTime.h>
14 #include <aws/gamelift/model/InstanceDefinition.h>
15 #include <aws/gamelift/model/GameServerGroupAction.h>
16 #include <utility>
17 
18 namespace Aws
19 {
20 namespace Utils
21 {
22 namespace Json
23 {
24   class JsonValue;
25   class JsonView;
26 } // namespace Json
27 } // namespace Utils
28 namespace GameLift
29 {
30 namespace Model
31 {
32 
33   /**
34    * <p> <b>This data type is used with the GameLift FleetIQ and game server
35    * groups.</b> </p> <p>Properties that describe a game server group resource. A
36    * game server group manages certain properties related to a corresponding EC2 Auto
37    * Scaling group. </p> <p>A game server group is created by a successful call to
38    * <code>CreateGameServerGroup</code> and deleted by calling
39    * <code>DeleteGameServerGroup</code>. Game server group activity can be
40    * temporarily suspended and resumed by calling <code>SuspendGameServerGroup</code>
41    * and <code>ResumeGameServerGroup</code>, respectively. </p> <p> <b>Related
42    * actions</b> </p> <p> <a>CreateGameServerGroup</a> | <a>ListGameServerGroups</a>
43    * | <a>DescribeGameServerGroup</a> | <a>UpdateGameServerGroup</a> |
44    * <a>DeleteGameServerGroup</a> | <a>ResumeGameServerGroup</a> |
45    * <a>SuspendGameServerGroup</a> | <a>DescribeGameServerInstances</a> | <a
46    * href="https://docs.aws.amazon.com/gamelift/latest/fleetiqguide/reference-awssdk-fleetiq.html">All
47    * APIs by task</a> </p><p><h3>See Also:</h3>   <a
48    * href="http://docs.aws.amazon.com/goto/WebAPI/gamelift-2015-10-01/GameServerGroup">AWS
49    * API Reference</a></p>
50    */
51   class AWS_GAMELIFT_API GameServerGroup
52   {
53   public:
54     GameServerGroup();
55     GameServerGroup(Aws::Utils::Json::JsonView jsonValue);
56     GameServerGroup& operator=(Aws::Utils::Json::JsonView jsonValue);
57     Aws::Utils::Json::JsonValue Jsonize() const;
58 
59 
60     /**
61      * <p>A developer-defined identifier for the game server group. The name is unique
62      * for each Region in each AWS account.</p>
63      */
GetGameServerGroupName()64     inline const Aws::String& GetGameServerGroupName() const{ return m_gameServerGroupName; }
65 
66     /**
67      * <p>A developer-defined identifier for the game server group. The name is unique
68      * for each Region in each AWS account.</p>
69      */
GameServerGroupNameHasBeenSet()70     inline bool GameServerGroupNameHasBeenSet() const { return m_gameServerGroupNameHasBeenSet; }
71 
72     /**
73      * <p>A developer-defined identifier for the game server group. The name is unique
74      * for each Region in each AWS account.</p>
75      */
SetGameServerGroupName(const Aws::String & value)76     inline void SetGameServerGroupName(const Aws::String& value) { m_gameServerGroupNameHasBeenSet = true; m_gameServerGroupName = value; }
77 
78     /**
79      * <p>A developer-defined identifier for the game server group. The name is unique
80      * for each Region in each AWS account.</p>
81      */
SetGameServerGroupName(Aws::String && value)82     inline void SetGameServerGroupName(Aws::String&& value) { m_gameServerGroupNameHasBeenSet = true; m_gameServerGroupName = std::move(value); }
83 
84     /**
85      * <p>A developer-defined identifier for the game server group. The name is unique
86      * for each Region in each AWS account.</p>
87      */
SetGameServerGroupName(const char * value)88     inline void SetGameServerGroupName(const char* value) { m_gameServerGroupNameHasBeenSet = true; m_gameServerGroupName.assign(value); }
89 
90     /**
91      * <p>A developer-defined identifier for the game server group. The name is unique
92      * for each Region in each AWS account.</p>
93      */
WithGameServerGroupName(const Aws::String & value)94     inline GameServerGroup& WithGameServerGroupName(const Aws::String& value) { SetGameServerGroupName(value); return *this;}
95 
96     /**
97      * <p>A developer-defined identifier for the game server group. The name is unique
98      * for each Region in each AWS account.</p>
99      */
WithGameServerGroupName(Aws::String && value)100     inline GameServerGroup& WithGameServerGroupName(Aws::String&& value) { SetGameServerGroupName(std::move(value)); return *this;}
101 
102     /**
103      * <p>A developer-defined identifier for the game server group. The name is unique
104      * for each Region in each AWS account.</p>
105      */
WithGameServerGroupName(const char * value)106     inline GameServerGroup& WithGameServerGroupName(const char* value) { SetGameServerGroupName(value); return *this;}
107 
108 
109     /**
110      * <p>A generated unique ID for the game server group.</p>
111      */
GetGameServerGroupArn()112     inline const Aws::String& GetGameServerGroupArn() const{ return m_gameServerGroupArn; }
113 
114     /**
115      * <p>A generated unique ID for the game server group.</p>
116      */
GameServerGroupArnHasBeenSet()117     inline bool GameServerGroupArnHasBeenSet() const { return m_gameServerGroupArnHasBeenSet; }
118 
119     /**
120      * <p>A generated unique ID for the game server group.</p>
121      */
SetGameServerGroupArn(const Aws::String & value)122     inline void SetGameServerGroupArn(const Aws::String& value) { m_gameServerGroupArnHasBeenSet = true; m_gameServerGroupArn = value; }
123 
124     /**
125      * <p>A generated unique ID for the game server group.</p>
126      */
SetGameServerGroupArn(Aws::String && value)127     inline void SetGameServerGroupArn(Aws::String&& value) { m_gameServerGroupArnHasBeenSet = true; m_gameServerGroupArn = std::move(value); }
128 
129     /**
130      * <p>A generated unique ID for the game server group.</p>
131      */
SetGameServerGroupArn(const char * value)132     inline void SetGameServerGroupArn(const char* value) { m_gameServerGroupArnHasBeenSet = true; m_gameServerGroupArn.assign(value); }
133 
134     /**
135      * <p>A generated unique ID for the game server group.</p>
136      */
WithGameServerGroupArn(const Aws::String & value)137     inline GameServerGroup& WithGameServerGroupArn(const Aws::String& value) { SetGameServerGroupArn(value); return *this;}
138 
139     /**
140      * <p>A generated unique ID for the game server group.</p>
141      */
WithGameServerGroupArn(Aws::String && value)142     inline GameServerGroup& WithGameServerGroupArn(Aws::String&& value) { SetGameServerGroupArn(std::move(value)); return *this;}
143 
144     /**
145      * <p>A generated unique ID for the game server group.</p>
146      */
WithGameServerGroupArn(const char * value)147     inline GameServerGroup& WithGameServerGroupArn(const char* value) { SetGameServerGroupArn(value); return *this;}
148 
149 
150     /**
151      * <p>The Amazon Resource Name (<a
152      * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-arn-format.html">ARN</a>)
153      * for an IAM role that allows Amazon GameLift to access your EC2 Auto Scaling
154      * groups.</p>
155      */
GetRoleArn()156     inline const Aws::String& GetRoleArn() const{ return m_roleArn; }
157 
158     /**
159      * <p>The Amazon Resource Name (<a
160      * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-arn-format.html">ARN</a>)
161      * for an IAM role that allows Amazon GameLift to access your EC2 Auto Scaling
162      * groups.</p>
163      */
RoleArnHasBeenSet()164     inline bool RoleArnHasBeenSet() const { return m_roleArnHasBeenSet; }
165 
166     /**
167      * <p>The Amazon Resource Name (<a
168      * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-arn-format.html">ARN</a>)
169      * for an IAM role that allows Amazon GameLift to access your EC2 Auto Scaling
170      * groups.</p>
171      */
SetRoleArn(const Aws::String & value)172     inline void SetRoleArn(const Aws::String& value) { m_roleArnHasBeenSet = true; m_roleArn = value; }
173 
174     /**
175      * <p>The Amazon Resource Name (<a
176      * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-arn-format.html">ARN</a>)
177      * for an IAM role that allows Amazon GameLift to access your EC2 Auto Scaling
178      * groups.</p>
179      */
SetRoleArn(Aws::String && value)180     inline void SetRoleArn(Aws::String&& value) { m_roleArnHasBeenSet = true; m_roleArn = std::move(value); }
181 
182     /**
183      * <p>The Amazon Resource Name (<a
184      * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-arn-format.html">ARN</a>)
185      * for an IAM role that allows Amazon GameLift to access your EC2 Auto Scaling
186      * groups.</p>
187      */
SetRoleArn(const char * value)188     inline void SetRoleArn(const char* value) { m_roleArnHasBeenSet = true; m_roleArn.assign(value); }
189 
190     /**
191      * <p>The Amazon Resource Name (<a
192      * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-arn-format.html">ARN</a>)
193      * for an IAM role that allows Amazon GameLift to access your EC2 Auto Scaling
194      * groups.</p>
195      */
WithRoleArn(const Aws::String & value)196     inline GameServerGroup& WithRoleArn(const Aws::String& value) { SetRoleArn(value); return *this;}
197 
198     /**
199      * <p>The Amazon Resource Name (<a
200      * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-arn-format.html">ARN</a>)
201      * for an IAM role that allows Amazon GameLift to access your EC2 Auto Scaling
202      * groups.</p>
203      */
WithRoleArn(Aws::String && value)204     inline GameServerGroup& WithRoleArn(Aws::String&& value) { SetRoleArn(std::move(value)); return *this;}
205 
206     /**
207      * <p>The Amazon Resource Name (<a
208      * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-arn-format.html">ARN</a>)
209      * for an IAM role that allows Amazon GameLift to access your EC2 Auto Scaling
210      * groups.</p>
211      */
WithRoleArn(const char * value)212     inline GameServerGroup& WithRoleArn(const char* value) { SetRoleArn(value); return *this;}
213 
214 
215     /**
216      * <p>The set of EC2 instance types that GameLift FleetIQ can use when balancing
217      * and automatically scaling instances in the corresponding Auto Scaling group.
218      * </p>
219      */
GetInstanceDefinitions()220     inline const Aws::Vector<InstanceDefinition>& GetInstanceDefinitions() const{ return m_instanceDefinitions; }
221 
222     /**
223      * <p>The set of EC2 instance types that GameLift FleetIQ can use when balancing
224      * and automatically scaling instances in the corresponding Auto Scaling group.
225      * </p>
226      */
InstanceDefinitionsHasBeenSet()227     inline bool InstanceDefinitionsHasBeenSet() const { return m_instanceDefinitionsHasBeenSet; }
228 
229     /**
230      * <p>The set of EC2 instance types that GameLift FleetIQ can use when balancing
231      * and automatically scaling instances in the corresponding Auto Scaling group.
232      * </p>
233      */
SetInstanceDefinitions(const Aws::Vector<InstanceDefinition> & value)234     inline void SetInstanceDefinitions(const Aws::Vector<InstanceDefinition>& value) { m_instanceDefinitionsHasBeenSet = true; m_instanceDefinitions = value; }
235 
236     /**
237      * <p>The set of EC2 instance types that GameLift FleetIQ can use when balancing
238      * and automatically scaling instances in the corresponding Auto Scaling group.
239      * </p>
240      */
SetInstanceDefinitions(Aws::Vector<InstanceDefinition> && value)241     inline void SetInstanceDefinitions(Aws::Vector<InstanceDefinition>&& value) { m_instanceDefinitionsHasBeenSet = true; m_instanceDefinitions = std::move(value); }
242 
243     /**
244      * <p>The set of EC2 instance types that GameLift FleetIQ can use when balancing
245      * and automatically scaling instances in the corresponding Auto Scaling group.
246      * </p>
247      */
WithInstanceDefinitions(const Aws::Vector<InstanceDefinition> & value)248     inline GameServerGroup& WithInstanceDefinitions(const Aws::Vector<InstanceDefinition>& value) { SetInstanceDefinitions(value); return *this;}
249 
250     /**
251      * <p>The set of EC2 instance types that GameLift FleetIQ can use when balancing
252      * and automatically scaling instances in the corresponding Auto Scaling group.
253      * </p>
254      */
WithInstanceDefinitions(Aws::Vector<InstanceDefinition> && value)255     inline GameServerGroup& WithInstanceDefinitions(Aws::Vector<InstanceDefinition>&& value) { SetInstanceDefinitions(std::move(value)); return *this;}
256 
257     /**
258      * <p>The set of EC2 instance types that GameLift FleetIQ can use when balancing
259      * and automatically scaling instances in the corresponding Auto Scaling group.
260      * </p>
261      */
AddInstanceDefinitions(const InstanceDefinition & value)262     inline GameServerGroup& AddInstanceDefinitions(const InstanceDefinition& value) { m_instanceDefinitionsHasBeenSet = true; m_instanceDefinitions.push_back(value); return *this; }
263 
264     /**
265      * <p>The set of EC2 instance types that GameLift FleetIQ can use when balancing
266      * and automatically scaling instances in the corresponding Auto Scaling group.
267      * </p>
268      */
AddInstanceDefinitions(InstanceDefinition && value)269     inline GameServerGroup& AddInstanceDefinitions(InstanceDefinition&& value) { m_instanceDefinitionsHasBeenSet = true; m_instanceDefinitions.push_back(std::move(value)); return *this; }
270 
271 
272     /**
273      * <p>Indicates how GameLift FleetIQ balances the use of Spot Instances and
274      * On-Demand Instances in the game server group. Method options include the
275      * following:</p> <ul> <li> <p> <code>SPOT_ONLY</code> - Only Spot Instances are
276      * used in the game server group. If Spot Instances are unavailable or not viable
277      * for game hosting, the game server group provides no hosting capacity until Spot
278      * Instances can again be used. Until then, no new instances are started, and the
279      * existing nonviable Spot Instances are terminated (after current gameplay ends)
280      * and are not replaced.</p> </li> <li> <p> <code>SPOT_PREFERRED</code> - (default
281      * value) Spot Instances are used whenever available in the game server group. If
282      * Spot Instances are unavailable, the game server group continues to provide
283      * hosting capacity by falling back to On-Demand Instances. Existing nonviable Spot
284      * Instances are terminated (after current gameplay ends) and are replaced with new
285      * On-Demand Instances.</p> </li> <li> <p> <code>ON_DEMAND_ONLY</code> - Only
286      * On-Demand Instances are used in the game server group. No Spot Instances are
287      * used, even when available, while this balancing strategy is in force.</p> </li>
288      * </ul>
289      */
GetBalancingStrategy()290     inline const BalancingStrategy& GetBalancingStrategy() const{ return m_balancingStrategy; }
291 
292     /**
293      * <p>Indicates how GameLift FleetIQ balances the use of Spot Instances and
294      * On-Demand Instances in the game server group. Method options include the
295      * following:</p> <ul> <li> <p> <code>SPOT_ONLY</code> - Only Spot Instances are
296      * used in the game server group. If Spot Instances are unavailable or not viable
297      * for game hosting, the game server group provides no hosting capacity until Spot
298      * Instances can again be used. Until then, no new instances are started, and the
299      * existing nonviable Spot Instances are terminated (after current gameplay ends)
300      * and are not replaced.</p> </li> <li> <p> <code>SPOT_PREFERRED</code> - (default
301      * value) Spot Instances are used whenever available in the game server group. If
302      * Spot Instances are unavailable, the game server group continues to provide
303      * hosting capacity by falling back to On-Demand Instances. Existing nonviable Spot
304      * Instances are terminated (after current gameplay ends) and are replaced with new
305      * On-Demand Instances.</p> </li> <li> <p> <code>ON_DEMAND_ONLY</code> - Only
306      * On-Demand Instances are used in the game server group. No Spot Instances are
307      * used, even when available, while this balancing strategy is in force.</p> </li>
308      * </ul>
309      */
BalancingStrategyHasBeenSet()310     inline bool BalancingStrategyHasBeenSet() const { return m_balancingStrategyHasBeenSet; }
311 
312     /**
313      * <p>Indicates how GameLift FleetIQ balances the use of Spot Instances and
314      * On-Demand Instances in the game server group. Method options include the
315      * following:</p> <ul> <li> <p> <code>SPOT_ONLY</code> - Only Spot Instances are
316      * used in the game server group. If Spot Instances are unavailable or not viable
317      * for game hosting, the game server group provides no hosting capacity until Spot
318      * Instances can again be used. Until then, no new instances are started, and the
319      * existing nonviable Spot Instances are terminated (after current gameplay ends)
320      * and are not replaced.</p> </li> <li> <p> <code>SPOT_PREFERRED</code> - (default
321      * value) Spot Instances are used whenever available in the game server group. If
322      * Spot Instances are unavailable, the game server group continues to provide
323      * hosting capacity by falling back to On-Demand Instances. Existing nonviable Spot
324      * Instances are terminated (after current gameplay ends) and are replaced with new
325      * On-Demand Instances.</p> </li> <li> <p> <code>ON_DEMAND_ONLY</code> - Only
326      * On-Demand Instances are used in the game server group. No Spot Instances are
327      * used, even when available, while this balancing strategy is in force.</p> </li>
328      * </ul>
329      */
SetBalancingStrategy(const BalancingStrategy & value)330     inline void SetBalancingStrategy(const BalancingStrategy& value) { m_balancingStrategyHasBeenSet = true; m_balancingStrategy = value; }
331 
332     /**
333      * <p>Indicates how GameLift FleetIQ balances the use of Spot Instances and
334      * On-Demand Instances in the game server group. Method options include the
335      * following:</p> <ul> <li> <p> <code>SPOT_ONLY</code> - Only Spot Instances are
336      * used in the game server group. If Spot Instances are unavailable or not viable
337      * for game hosting, the game server group provides no hosting capacity until Spot
338      * Instances can again be used. Until then, no new instances are started, and the
339      * existing nonviable Spot Instances are terminated (after current gameplay ends)
340      * and are not replaced.</p> </li> <li> <p> <code>SPOT_PREFERRED</code> - (default
341      * value) Spot Instances are used whenever available in the game server group. If
342      * Spot Instances are unavailable, the game server group continues to provide
343      * hosting capacity by falling back to On-Demand Instances. Existing nonviable Spot
344      * Instances are terminated (after current gameplay ends) and are replaced with new
345      * On-Demand Instances.</p> </li> <li> <p> <code>ON_DEMAND_ONLY</code> - Only
346      * On-Demand Instances are used in the game server group. No Spot Instances are
347      * used, even when available, while this balancing strategy is in force.</p> </li>
348      * </ul>
349      */
SetBalancingStrategy(BalancingStrategy && value)350     inline void SetBalancingStrategy(BalancingStrategy&& value) { m_balancingStrategyHasBeenSet = true; m_balancingStrategy = std::move(value); }
351 
352     /**
353      * <p>Indicates how GameLift FleetIQ balances the use of Spot Instances and
354      * On-Demand Instances in the game server group. Method options include the
355      * following:</p> <ul> <li> <p> <code>SPOT_ONLY</code> - Only Spot Instances are
356      * used in the game server group. If Spot Instances are unavailable or not viable
357      * for game hosting, the game server group provides no hosting capacity until Spot
358      * Instances can again be used. Until then, no new instances are started, and the
359      * existing nonviable Spot Instances are terminated (after current gameplay ends)
360      * and are not replaced.</p> </li> <li> <p> <code>SPOT_PREFERRED</code> - (default
361      * value) Spot Instances are used whenever available in the game server group. If
362      * Spot Instances are unavailable, the game server group continues to provide
363      * hosting capacity by falling back to On-Demand Instances. Existing nonviable Spot
364      * Instances are terminated (after current gameplay ends) and are replaced with new
365      * On-Demand Instances.</p> </li> <li> <p> <code>ON_DEMAND_ONLY</code> - Only
366      * On-Demand Instances are used in the game server group. No Spot Instances are
367      * used, even when available, while this balancing strategy is in force.</p> </li>
368      * </ul>
369      */
WithBalancingStrategy(const BalancingStrategy & value)370     inline GameServerGroup& WithBalancingStrategy(const BalancingStrategy& value) { SetBalancingStrategy(value); return *this;}
371 
372     /**
373      * <p>Indicates how GameLift FleetIQ balances the use of Spot Instances and
374      * On-Demand Instances in the game server group. Method options include the
375      * following:</p> <ul> <li> <p> <code>SPOT_ONLY</code> - Only Spot Instances are
376      * used in the game server group. If Spot Instances are unavailable or not viable
377      * for game hosting, the game server group provides no hosting capacity until Spot
378      * Instances can again be used. Until then, no new instances are started, and the
379      * existing nonviable Spot Instances are terminated (after current gameplay ends)
380      * and are not replaced.</p> </li> <li> <p> <code>SPOT_PREFERRED</code> - (default
381      * value) Spot Instances are used whenever available in the game server group. If
382      * Spot Instances are unavailable, the game server group continues to provide
383      * hosting capacity by falling back to On-Demand Instances. Existing nonviable Spot
384      * Instances are terminated (after current gameplay ends) and are replaced with new
385      * On-Demand Instances.</p> </li> <li> <p> <code>ON_DEMAND_ONLY</code> - Only
386      * On-Demand Instances are used in the game server group. No Spot Instances are
387      * used, even when available, while this balancing strategy is in force.</p> </li>
388      * </ul>
389      */
WithBalancingStrategy(BalancingStrategy && value)390     inline GameServerGroup& WithBalancingStrategy(BalancingStrategy&& value) { SetBalancingStrategy(std::move(value)); return *this;}
391 
392 
393     /**
394      * <p>A flag that indicates whether instances in the game server group are
395      * protected from early termination. Unprotected instances that have active game
396      * servers running might be terminated during a scale-down event, causing players
397      * to be dropped from the game. Protected instances cannot be terminated while
398      * there are active game servers running except in the event of a forced game
399      * server group deletion (see ). An exception to this is with Spot Instances, which
400      * can be terminated by AWS regardless of protection status. </p>
401      */
GetGameServerProtectionPolicy()402     inline const GameServerProtectionPolicy& GetGameServerProtectionPolicy() const{ return m_gameServerProtectionPolicy; }
403 
404     /**
405      * <p>A flag that indicates whether instances in the game server group are
406      * protected from early termination. Unprotected instances that have active game
407      * servers running might be terminated during a scale-down event, causing players
408      * to be dropped from the game. Protected instances cannot be terminated while
409      * there are active game servers running except in the event of a forced game
410      * server group deletion (see ). An exception to this is with Spot Instances, which
411      * can be terminated by AWS regardless of protection status. </p>
412      */
GameServerProtectionPolicyHasBeenSet()413     inline bool GameServerProtectionPolicyHasBeenSet() const { return m_gameServerProtectionPolicyHasBeenSet; }
414 
415     /**
416      * <p>A flag that indicates whether instances in the game server group are
417      * protected from early termination. Unprotected instances that have active game
418      * servers running might be terminated during a scale-down event, causing players
419      * to be dropped from the game. Protected instances cannot be terminated while
420      * there are active game servers running except in the event of a forced game
421      * server group deletion (see ). An exception to this is with Spot Instances, which
422      * can be terminated by AWS regardless of protection status. </p>
423      */
SetGameServerProtectionPolicy(const GameServerProtectionPolicy & value)424     inline void SetGameServerProtectionPolicy(const GameServerProtectionPolicy& value) { m_gameServerProtectionPolicyHasBeenSet = true; m_gameServerProtectionPolicy = value; }
425 
426     /**
427      * <p>A flag that indicates whether instances in the game server group are
428      * protected from early termination. Unprotected instances that have active game
429      * servers running might be terminated during a scale-down event, causing players
430      * to be dropped from the game. Protected instances cannot be terminated while
431      * there are active game servers running except in the event of a forced game
432      * server group deletion (see ). An exception to this is with Spot Instances, which
433      * can be terminated by AWS regardless of protection status. </p>
434      */
SetGameServerProtectionPolicy(GameServerProtectionPolicy && value)435     inline void SetGameServerProtectionPolicy(GameServerProtectionPolicy&& value) { m_gameServerProtectionPolicyHasBeenSet = true; m_gameServerProtectionPolicy = std::move(value); }
436 
437     /**
438      * <p>A flag that indicates whether instances in the game server group are
439      * protected from early termination. Unprotected instances that have active game
440      * servers running might be terminated during a scale-down event, causing players
441      * to be dropped from the game. Protected instances cannot be terminated while
442      * there are active game servers running except in the event of a forced game
443      * server group deletion (see ). An exception to this is with Spot Instances, which
444      * can be terminated by AWS regardless of protection status. </p>
445      */
WithGameServerProtectionPolicy(const GameServerProtectionPolicy & value)446     inline GameServerGroup& WithGameServerProtectionPolicy(const GameServerProtectionPolicy& value) { SetGameServerProtectionPolicy(value); return *this;}
447 
448     /**
449      * <p>A flag that indicates whether instances in the game server group are
450      * protected from early termination. Unprotected instances that have active game
451      * servers running might be terminated during a scale-down event, causing players
452      * to be dropped from the game. Protected instances cannot be terminated while
453      * there are active game servers running except in the event of a forced game
454      * server group deletion (see ). An exception to this is with Spot Instances, which
455      * can be terminated by AWS regardless of protection status. </p>
456      */
WithGameServerProtectionPolicy(GameServerProtectionPolicy && value)457     inline GameServerGroup& WithGameServerProtectionPolicy(GameServerProtectionPolicy&& value) { SetGameServerProtectionPolicy(std::move(value)); return *this;}
458 
459 
460     /**
461      * <p>A generated unique ID for the EC2 Auto Scaling group that is associated with
462      * this game server group.</p>
463      */
GetAutoScalingGroupArn()464     inline const Aws::String& GetAutoScalingGroupArn() const{ return m_autoScalingGroupArn; }
465 
466     /**
467      * <p>A generated unique ID for the EC2 Auto Scaling group that is associated with
468      * this game server group.</p>
469      */
AutoScalingGroupArnHasBeenSet()470     inline bool AutoScalingGroupArnHasBeenSet() const { return m_autoScalingGroupArnHasBeenSet; }
471 
472     /**
473      * <p>A generated unique ID for the EC2 Auto Scaling group that is associated with
474      * this game server group.</p>
475      */
SetAutoScalingGroupArn(const Aws::String & value)476     inline void SetAutoScalingGroupArn(const Aws::String& value) { m_autoScalingGroupArnHasBeenSet = true; m_autoScalingGroupArn = value; }
477 
478     /**
479      * <p>A generated unique ID for the EC2 Auto Scaling group that is associated with
480      * this game server group.</p>
481      */
SetAutoScalingGroupArn(Aws::String && value)482     inline void SetAutoScalingGroupArn(Aws::String&& value) { m_autoScalingGroupArnHasBeenSet = true; m_autoScalingGroupArn = std::move(value); }
483 
484     /**
485      * <p>A generated unique ID for the EC2 Auto Scaling group that is associated with
486      * this game server group.</p>
487      */
SetAutoScalingGroupArn(const char * value)488     inline void SetAutoScalingGroupArn(const char* value) { m_autoScalingGroupArnHasBeenSet = true; m_autoScalingGroupArn.assign(value); }
489 
490     /**
491      * <p>A generated unique ID for the EC2 Auto Scaling group that is associated with
492      * this game server group.</p>
493      */
WithAutoScalingGroupArn(const Aws::String & value)494     inline GameServerGroup& WithAutoScalingGroupArn(const Aws::String& value) { SetAutoScalingGroupArn(value); return *this;}
495 
496     /**
497      * <p>A generated unique ID for the EC2 Auto Scaling group that is associated with
498      * this game server group.</p>
499      */
WithAutoScalingGroupArn(Aws::String && value)500     inline GameServerGroup& WithAutoScalingGroupArn(Aws::String&& value) { SetAutoScalingGroupArn(std::move(value)); return *this;}
501 
502     /**
503      * <p>A generated unique ID for the EC2 Auto Scaling group that is associated with
504      * this game server group.</p>
505      */
WithAutoScalingGroupArn(const char * value)506     inline GameServerGroup& WithAutoScalingGroupArn(const char* value) { SetAutoScalingGroupArn(value); return *this;}
507 
508 
509     /**
510      * <p>The current status of the game server group. Possible statuses include:</p>
511      * <ul> <li> <p> <code>NEW</code> - GameLift FleetIQ has validated the
512      * <code>CreateGameServerGroup()</code> request. </p> </li> <li> <p>
513      * <code>ACTIVATING</code> - GameLift FleetIQ is setting up a game server group,
514      * which includes creating an Auto Scaling group in your AWS account. </p> </li>
515      * <li> <p> <code>ACTIVE</code> - The game server group has been successfully
516      * created. </p> </li> <li> <p> <code>DELETE_SCHEDULED</code> - A request to delete
517      * the game server group has been received. </p> </li> <li> <p>
518      * <code>DELETING</code> - GameLift FleetIQ has received a valid
519      * <code>DeleteGameServerGroup()</code> request and is processing it. GameLift
520      * FleetIQ must first complete and release hosts before it deletes the Auto Scaling
521      * group and the game server group. </p> </li> <li> <p> <code>DELETED</code> - The
522      * game server group has been successfully deleted. </p> </li> <li> <p>
523      * <code>ERROR</code> - The asynchronous processes of activating or deleting a game
524      * server group has failed, resulting in an error state.</p> </li> </ul>
525      */
GetStatus()526     inline const GameServerGroupStatus& GetStatus() const{ return m_status; }
527 
528     /**
529      * <p>The current status of the game server group. Possible statuses include:</p>
530      * <ul> <li> <p> <code>NEW</code> - GameLift FleetIQ has validated the
531      * <code>CreateGameServerGroup()</code> request. </p> </li> <li> <p>
532      * <code>ACTIVATING</code> - GameLift FleetIQ is setting up a game server group,
533      * which includes creating an Auto Scaling group in your AWS account. </p> </li>
534      * <li> <p> <code>ACTIVE</code> - The game server group has been successfully
535      * created. </p> </li> <li> <p> <code>DELETE_SCHEDULED</code> - A request to delete
536      * the game server group has been received. </p> </li> <li> <p>
537      * <code>DELETING</code> - GameLift FleetIQ has received a valid
538      * <code>DeleteGameServerGroup()</code> request and is processing it. GameLift
539      * FleetIQ must first complete and release hosts before it deletes the Auto Scaling
540      * group and the game server group. </p> </li> <li> <p> <code>DELETED</code> - The
541      * game server group has been successfully deleted. </p> </li> <li> <p>
542      * <code>ERROR</code> - The asynchronous processes of activating or deleting a game
543      * server group has failed, resulting in an error state.</p> </li> </ul>
544      */
StatusHasBeenSet()545     inline bool StatusHasBeenSet() const { return m_statusHasBeenSet; }
546 
547     /**
548      * <p>The current status of the game server group. Possible statuses include:</p>
549      * <ul> <li> <p> <code>NEW</code> - GameLift FleetIQ has validated the
550      * <code>CreateGameServerGroup()</code> request. </p> </li> <li> <p>
551      * <code>ACTIVATING</code> - GameLift FleetIQ is setting up a game server group,
552      * which includes creating an Auto Scaling group in your AWS account. </p> </li>
553      * <li> <p> <code>ACTIVE</code> - The game server group has been successfully
554      * created. </p> </li> <li> <p> <code>DELETE_SCHEDULED</code> - A request to delete
555      * the game server group has been received. </p> </li> <li> <p>
556      * <code>DELETING</code> - GameLift FleetIQ has received a valid
557      * <code>DeleteGameServerGroup()</code> request and is processing it. GameLift
558      * FleetIQ must first complete and release hosts before it deletes the Auto Scaling
559      * group and the game server group. </p> </li> <li> <p> <code>DELETED</code> - The
560      * game server group has been successfully deleted. </p> </li> <li> <p>
561      * <code>ERROR</code> - The asynchronous processes of activating or deleting a game
562      * server group has failed, resulting in an error state.</p> </li> </ul>
563      */
SetStatus(const GameServerGroupStatus & value)564     inline void SetStatus(const GameServerGroupStatus& value) { m_statusHasBeenSet = true; m_status = value; }
565 
566     /**
567      * <p>The current status of the game server group. Possible statuses include:</p>
568      * <ul> <li> <p> <code>NEW</code> - GameLift FleetIQ has validated the
569      * <code>CreateGameServerGroup()</code> request. </p> </li> <li> <p>
570      * <code>ACTIVATING</code> - GameLift FleetIQ is setting up a game server group,
571      * which includes creating an Auto Scaling group in your AWS account. </p> </li>
572      * <li> <p> <code>ACTIVE</code> - The game server group has been successfully
573      * created. </p> </li> <li> <p> <code>DELETE_SCHEDULED</code> - A request to delete
574      * the game server group has been received. </p> </li> <li> <p>
575      * <code>DELETING</code> - GameLift FleetIQ has received a valid
576      * <code>DeleteGameServerGroup()</code> request and is processing it. GameLift
577      * FleetIQ must first complete and release hosts before it deletes the Auto Scaling
578      * group and the game server group. </p> </li> <li> <p> <code>DELETED</code> - The
579      * game server group has been successfully deleted. </p> </li> <li> <p>
580      * <code>ERROR</code> - The asynchronous processes of activating or deleting a game
581      * server group has failed, resulting in an error state.</p> </li> </ul>
582      */
SetStatus(GameServerGroupStatus && value)583     inline void SetStatus(GameServerGroupStatus&& value) { m_statusHasBeenSet = true; m_status = std::move(value); }
584 
585     /**
586      * <p>The current status of the game server group. Possible statuses include:</p>
587      * <ul> <li> <p> <code>NEW</code> - GameLift FleetIQ has validated the
588      * <code>CreateGameServerGroup()</code> request. </p> </li> <li> <p>
589      * <code>ACTIVATING</code> - GameLift FleetIQ is setting up a game server group,
590      * which includes creating an Auto Scaling group in your AWS account. </p> </li>
591      * <li> <p> <code>ACTIVE</code> - The game server group has been successfully
592      * created. </p> </li> <li> <p> <code>DELETE_SCHEDULED</code> - A request to delete
593      * the game server group has been received. </p> </li> <li> <p>
594      * <code>DELETING</code> - GameLift FleetIQ has received a valid
595      * <code>DeleteGameServerGroup()</code> request and is processing it. GameLift
596      * FleetIQ must first complete and release hosts before it deletes the Auto Scaling
597      * group and the game server group. </p> </li> <li> <p> <code>DELETED</code> - The
598      * game server group has been successfully deleted. </p> </li> <li> <p>
599      * <code>ERROR</code> - The asynchronous processes of activating or deleting a game
600      * server group has failed, resulting in an error state.</p> </li> </ul>
601      */
WithStatus(const GameServerGroupStatus & value)602     inline GameServerGroup& WithStatus(const GameServerGroupStatus& value) { SetStatus(value); return *this;}
603 
604     /**
605      * <p>The current status of the game server group. Possible statuses include:</p>
606      * <ul> <li> <p> <code>NEW</code> - GameLift FleetIQ has validated the
607      * <code>CreateGameServerGroup()</code> request. </p> </li> <li> <p>
608      * <code>ACTIVATING</code> - GameLift FleetIQ is setting up a game server group,
609      * which includes creating an Auto Scaling group in your AWS account. </p> </li>
610      * <li> <p> <code>ACTIVE</code> - The game server group has been successfully
611      * created. </p> </li> <li> <p> <code>DELETE_SCHEDULED</code> - A request to delete
612      * the game server group has been received. </p> </li> <li> <p>
613      * <code>DELETING</code> - GameLift FleetIQ has received a valid
614      * <code>DeleteGameServerGroup()</code> request and is processing it. GameLift
615      * FleetIQ must first complete and release hosts before it deletes the Auto Scaling
616      * group and the game server group. </p> </li> <li> <p> <code>DELETED</code> - The
617      * game server group has been successfully deleted. </p> </li> <li> <p>
618      * <code>ERROR</code> - The asynchronous processes of activating or deleting a game
619      * server group has failed, resulting in an error state.</p> </li> </ul>
620      */
WithStatus(GameServerGroupStatus && value)621     inline GameServerGroup& WithStatus(GameServerGroupStatus&& value) { SetStatus(std::move(value)); return *this;}
622 
623 
624     /**
625      * <p>Additional information about the current game server group status. This
626      * information might provide additional insight on groups that are in
627      * <code>ERROR</code> status.</p>
628      */
GetStatusReason()629     inline const Aws::String& GetStatusReason() const{ return m_statusReason; }
630 
631     /**
632      * <p>Additional information about the current game server group status. This
633      * information might provide additional insight on groups that are in
634      * <code>ERROR</code> status.</p>
635      */
StatusReasonHasBeenSet()636     inline bool StatusReasonHasBeenSet() const { return m_statusReasonHasBeenSet; }
637 
638     /**
639      * <p>Additional information about the current game server group status. This
640      * information might provide additional insight on groups that are in
641      * <code>ERROR</code> status.</p>
642      */
SetStatusReason(const Aws::String & value)643     inline void SetStatusReason(const Aws::String& value) { m_statusReasonHasBeenSet = true; m_statusReason = value; }
644 
645     /**
646      * <p>Additional information about the current game server group status. This
647      * information might provide additional insight on groups that are in
648      * <code>ERROR</code> status.</p>
649      */
SetStatusReason(Aws::String && value)650     inline void SetStatusReason(Aws::String&& value) { m_statusReasonHasBeenSet = true; m_statusReason = std::move(value); }
651 
652     /**
653      * <p>Additional information about the current game server group status. This
654      * information might provide additional insight on groups that are in
655      * <code>ERROR</code> status.</p>
656      */
SetStatusReason(const char * value)657     inline void SetStatusReason(const char* value) { m_statusReasonHasBeenSet = true; m_statusReason.assign(value); }
658 
659     /**
660      * <p>Additional information about the current game server group status. This
661      * information might provide additional insight on groups that are in
662      * <code>ERROR</code> status.</p>
663      */
WithStatusReason(const Aws::String & value)664     inline GameServerGroup& WithStatusReason(const Aws::String& value) { SetStatusReason(value); return *this;}
665 
666     /**
667      * <p>Additional information about the current game server group status. This
668      * information might provide additional insight on groups that are in
669      * <code>ERROR</code> status.</p>
670      */
WithStatusReason(Aws::String && value)671     inline GameServerGroup& WithStatusReason(Aws::String&& value) { SetStatusReason(std::move(value)); return *this;}
672 
673     /**
674      * <p>Additional information about the current game server group status. This
675      * information might provide additional insight on groups that are in
676      * <code>ERROR</code> status.</p>
677      */
WithStatusReason(const char * value)678     inline GameServerGroup& WithStatusReason(const char* value) { SetStatusReason(value); return *this;}
679 
680 
681     /**
682      * <p>A list of activities that are currently suspended for this game server group.
683      * If this property is empty, all activities are occurring.</p>
684      */
GetSuspendedActions()685     inline const Aws::Vector<GameServerGroupAction>& GetSuspendedActions() const{ return m_suspendedActions; }
686 
687     /**
688      * <p>A list of activities that are currently suspended for this game server group.
689      * If this property is empty, all activities are occurring.</p>
690      */
SuspendedActionsHasBeenSet()691     inline bool SuspendedActionsHasBeenSet() const { return m_suspendedActionsHasBeenSet; }
692 
693     /**
694      * <p>A list of activities that are currently suspended for this game server group.
695      * If this property is empty, all activities are occurring.</p>
696      */
SetSuspendedActions(const Aws::Vector<GameServerGroupAction> & value)697     inline void SetSuspendedActions(const Aws::Vector<GameServerGroupAction>& value) { m_suspendedActionsHasBeenSet = true; m_suspendedActions = value; }
698 
699     /**
700      * <p>A list of activities that are currently suspended for this game server group.
701      * If this property is empty, all activities are occurring.</p>
702      */
SetSuspendedActions(Aws::Vector<GameServerGroupAction> && value)703     inline void SetSuspendedActions(Aws::Vector<GameServerGroupAction>&& value) { m_suspendedActionsHasBeenSet = true; m_suspendedActions = std::move(value); }
704 
705     /**
706      * <p>A list of activities that are currently suspended for this game server group.
707      * If this property is empty, all activities are occurring.</p>
708      */
WithSuspendedActions(const Aws::Vector<GameServerGroupAction> & value)709     inline GameServerGroup& WithSuspendedActions(const Aws::Vector<GameServerGroupAction>& value) { SetSuspendedActions(value); return *this;}
710 
711     /**
712      * <p>A list of activities that are currently suspended for this game server group.
713      * If this property is empty, all activities are occurring.</p>
714      */
WithSuspendedActions(Aws::Vector<GameServerGroupAction> && value)715     inline GameServerGroup& WithSuspendedActions(Aws::Vector<GameServerGroupAction>&& value) { SetSuspendedActions(std::move(value)); return *this;}
716 
717     /**
718      * <p>A list of activities that are currently suspended for this game server group.
719      * If this property is empty, all activities are occurring.</p>
720      */
AddSuspendedActions(const GameServerGroupAction & value)721     inline GameServerGroup& AddSuspendedActions(const GameServerGroupAction& value) { m_suspendedActionsHasBeenSet = true; m_suspendedActions.push_back(value); return *this; }
722 
723     /**
724      * <p>A list of activities that are currently suspended for this game server group.
725      * If this property is empty, all activities are occurring.</p>
726      */
AddSuspendedActions(GameServerGroupAction && value)727     inline GameServerGroup& AddSuspendedActions(GameServerGroupAction&& value) { m_suspendedActionsHasBeenSet = true; m_suspendedActions.push_back(std::move(value)); return *this; }
728 
729 
730     /**
731      * <p>A time stamp indicating when this data object was created. Format is a number
732      * expressed in Unix time as milliseconds (for example
733      * <code>"1469498468.057"</code>).</p>
734      */
GetCreationTime()735     inline const Aws::Utils::DateTime& GetCreationTime() const{ return m_creationTime; }
736 
737     /**
738      * <p>A time stamp indicating when this data object was created. Format is a number
739      * expressed in Unix time as milliseconds (for example
740      * <code>"1469498468.057"</code>).</p>
741      */
CreationTimeHasBeenSet()742     inline bool CreationTimeHasBeenSet() const { return m_creationTimeHasBeenSet; }
743 
744     /**
745      * <p>A time stamp indicating when this data object was created. Format is a number
746      * expressed in Unix time as milliseconds (for example
747      * <code>"1469498468.057"</code>).</p>
748      */
SetCreationTime(const Aws::Utils::DateTime & value)749     inline void SetCreationTime(const Aws::Utils::DateTime& value) { m_creationTimeHasBeenSet = true; m_creationTime = value; }
750 
751     /**
752      * <p>A time stamp indicating when this data object was created. Format is a number
753      * expressed in Unix time as milliseconds (for example
754      * <code>"1469498468.057"</code>).</p>
755      */
SetCreationTime(Aws::Utils::DateTime && value)756     inline void SetCreationTime(Aws::Utils::DateTime&& value) { m_creationTimeHasBeenSet = true; m_creationTime = std::move(value); }
757 
758     /**
759      * <p>A time stamp indicating when this data object was created. Format is a number
760      * expressed in Unix time as milliseconds (for example
761      * <code>"1469498468.057"</code>).</p>
762      */
WithCreationTime(const Aws::Utils::DateTime & value)763     inline GameServerGroup& WithCreationTime(const Aws::Utils::DateTime& value) { SetCreationTime(value); return *this;}
764 
765     /**
766      * <p>A time stamp indicating when this data object was created. Format is a number
767      * expressed in Unix time as milliseconds (for example
768      * <code>"1469498468.057"</code>).</p>
769      */
WithCreationTime(Aws::Utils::DateTime && value)770     inline GameServerGroup& WithCreationTime(Aws::Utils::DateTime&& value) { SetCreationTime(std::move(value)); return *this;}
771 
772 
773     /**
774      * <p>A timestamp that indicates when this game server group was last updated.</p>
775      */
GetLastUpdatedTime()776     inline const Aws::Utils::DateTime& GetLastUpdatedTime() const{ return m_lastUpdatedTime; }
777 
778     /**
779      * <p>A timestamp that indicates when this game server group was last updated.</p>
780      */
LastUpdatedTimeHasBeenSet()781     inline bool LastUpdatedTimeHasBeenSet() const { return m_lastUpdatedTimeHasBeenSet; }
782 
783     /**
784      * <p>A timestamp that indicates when this game server group was last updated.</p>
785      */
SetLastUpdatedTime(const Aws::Utils::DateTime & value)786     inline void SetLastUpdatedTime(const Aws::Utils::DateTime& value) { m_lastUpdatedTimeHasBeenSet = true; m_lastUpdatedTime = value; }
787 
788     /**
789      * <p>A timestamp that indicates when this game server group was last updated.</p>
790      */
SetLastUpdatedTime(Aws::Utils::DateTime && value)791     inline void SetLastUpdatedTime(Aws::Utils::DateTime&& value) { m_lastUpdatedTimeHasBeenSet = true; m_lastUpdatedTime = std::move(value); }
792 
793     /**
794      * <p>A timestamp that indicates when this game server group was last updated.</p>
795      */
WithLastUpdatedTime(const Aws::Utils::DateTime & value)796     inline GameServerGroup& WithLastUpdatedTime(const Aws::Utils::DateTime& value) { SetLastUpdatedTime(value); return *this;}
797 
798     /**
799      * <p>A timestamp that indicates when this game server group was last updated.</p>
800      */
WithLastUpdatedTime(Aws::Utils::DateTime && value)801     inline GameServerGroup& WithLastUpdatedTime(Aws::Utils::DateTime&& value) { SetLastUpdatedTime(std::move(value)); return *this;}
802 
803   private:
804 
805     Aws::String m_gameServerGroupName;
806     bool m_gameServerGroupNameHasBeenSet;
807 
808     Aws::String m_gameServerGroupArn;
809     bool m_gameServerGroupArnHasBeenSet;
810 
811     Aws::String m_roleArn;
812     bool m_roleArnHasBeenSet;
813 
814     Aws::Vector<InstanceDefinition> m_instanceDefinitions;
815     bool m_instanceDefinitionsHasBeenSet;
816 
817     BalancingStrategy m_balancingStrategy;
818     bool m_balancingStrategyHasBeenSet;
819 
820     GameServerProtectionPolicy m_gameServerProtectionPolicy;
821     bool m_gameServerProtectionPolicyHasBeenSet;
822 
823     Aws::String m_autoScalingGroupArn;
824     bool m_autoScalingGroupArnHasBeenSet;
825 
826     GameServerGroupStatus m_status;
827     bool m_statusHasBeenSet;
828 
829     Aws::String m_statusReason;
830     bool m_statusReasonHasBeenSet;
831 
832     Aws::Vector<GameServerGroupAction> m_suspendedActions;
833     bool m_suspendedActionsHasBeenSet;
834 
835     Aws::Utils::DateTime m_creationTime;
836     bool m_creationTimeHasBeenSet;
837 
838     Aws::Utils::DateTime m_lastUpdatedTime;
839     bool m_lastUpdatedTimeHasBeenSet;
840   };
841 
842 } // namespace Model
843 } // namespace GameLift
844 } // namespace Aws
845