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