/** * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. * SPDX-License-Identifier: Apache-2.0. */ #pragma once #include #include #include #include namespace Aws { namespace Utils { namespace Json { class JsonValue; class JsonView; } // namespace Json } // namespace Utils namespace SecurityHub { namespace Model { /** *

The mixed instances policy for the automatic scaling group.

See * Also:

AWS * API Reference

*/ class AwsAutoScalingAutoScalingGroupMixedInstancesPolicyDetails { public: AWS_SECURITYHUB_API AwsAutoScalingAutoScalingGroupMixedInstancesPolicyDetails(); AWS_SECURITYHUB_API AwsAutoScalingAutoScalingGroupMixedInstancesPolicyDetails(Aws::Utils::Json::JsonView jsonValue); AWS_SECURITYHUB_API AwsAutoScalingAutoScalingGroupMixedInstancesPolicyDetails& operator=(Aws::Utils::Json::JsonView jsonValue); AWS_SECURITYHUB_API Aws::Utils::Json::JsonValue Jsonize() const; /** *

The instances distribution. The instances distribution specifies the * distribution of On-Demand Instances and Spot Instances, the maximum price to pay * for Spot Instances, and how the Auto Scaling group allocates instance types to * fulfill On-Demand and Spot capacity.

*/ inline const AwsAutoScalingAutoScalingGroupMixedInstancesPolicyInstancesDistributionDetails& GetInstancesDistribution() const{ return m_instancesDistribution; } /** *

The instances distribution. The instances distribution specifies the * distribution of On-Demand Instances and Spot Instances, the maximum price to pay * for Spot Instances, and how the Auto Scaling group allocates instance types to * fulfill On-Demand and Spot capacity.

*/ inline bool InstancesDistributionHasBeenSet() const { return m_instancesDistributionHasBeenSet; } /** *

The instances distribution. The instances distribution specifies the * distribution of On-Demand Instances and Spot Instances, the maximum price to pay * for Spot Instances, and how the Auto Scaling group allocates instance types to * fulfill On-Demand and Spot capacity.

*/ inline void SetInstancesDistribution(const AwsAutoScalingAutoScalingGroupMixedInstancesPolicyInstancesDistributionDetails& value) { m_instancesDistributionHasBeenSet = true; m_instancesDistribution = value; } /** *

The instances distribution. The instances distribution specifies the * distribution of On-Demand Instances and Spot Instances, the maximum price to pay * for Spot Instances, and how the Auto Scaling group allocates instance types to * fulfill On-Demand and Spot capacity.

*/ inline void SetInstancesDistribution(AwsAutoScalingAutoScalingGroupMixedInstancesPolicyInstancesDistributionDetails&& value) { m_instancesDistributionHasBeenSet = true; m_instancesDistribution = std::move(value); } /** *

The instances distribution. The instances distribution specifies the * distribution of On-Demand Instances and Spot Instances, the maximum price to pay * for Spot Instances, and how the Auto Scaling group allocates instance types to * fulfill On-Demand and Spot capacity.

*/ inline AwsAutoScalingAutoScalingGroupMixedInstancesPolicyDetails& WithInstancesDistribution(const AwsAutoScalingAutoScalingGroupMixedInstancesPolicyInstancesDistributionDetails& value) { SetInstancesDistribution(value); return *this;} /** *

The instances distribution. The instances distribution specifies the * distribution of On-Demand Instances and Spot Instances, the maximum price to pay * for Spot Instances, and how the Auto Scaling group allocates instance types to * fulfill On-Demand and Spot capacity.

*/ inline AwsAutoScalingAutoScalingGroupMixedInstancesPolicyDetails& WithInstancesDistribution(AwsAutoScalingAutoScalingGroupMixedInstancesPolicyInstancesDistributionDetails&& value) { SetInstancesDistribution(std::move(value)); return *this;} /** *

The launch template to use and the instance types (overrides) to use to * provision EC2 instances to fulfill On-Demand and Spot capacities.

*/ inline const AwsAutoScalingAutoScalingGroupMixedInstancesPolicyLaunchTemplateDetails& GetLaunchTemplate() const{ return m_launchTemplate; } /** *

The launch template to use and the instance types (overrides) to use to * provision EC2 instances to fulfill On-Demand and Spot capacities.

*/ inline bool LaunchTemplateHasBeenSet() const { return m_launchTemplateHasBeenSet; } /** *

The launch template to use and the instance types (overrides) to use to * provision EC2 instances to fulfill On-Demand and Spot capacities.

*/ inline void SetLaunchTemplate(const AwsAutoScalingAutoScalingGroupMixedInstancesPolicyLaunchTemplateDetails& value) { m_launchTemplateHasBeenSet = true; m_launchTemplate = value; } /** *

The launch template to use and the instance types (overrides) to use to * provision EC2 instances to fulfill On-Demand and Spot capacities.

*/ inline void SetLaunchTemplate(AwsAutoScalingAutoScalingGroupMixedInstancesPolicyLaunchTemplateDetails&& value) { m_launchTemplateHasBeenSet = true; m_launchTemplate = std::move(value); } /** *

The launch template to use and the instance types (overrides) to use to * provision EC2 instances to fulfill On-Demand and Spot capacities.

*/ inline AwsAutoScalingAutoScalingGroupMixedInstancesPolicyDetails& WithLaunchTemplate(const AwsAutoScalingAutoScalingGroupMixedInstancesPolicyLaunchTemplateDetails& value) { SetLaunchTemplate(value); return *this;} /** *

The launch template to use and the instance types (overrides) to use to * provision EC2 instances to fulfill On-Demand and Spot capacities.

*/ inline AwsAutoScalingAutoScalingGroupMixedInstancesPolicyDetails& WithLaunchTemplate(AwsAutoScalingAutoScalingGroupMixedInstancesPolicyLaunchTemplateDetails&& value) { SetLaunchTemplate(std::move(value)); return *this;} private: AwsAutoScalingAutoScalingGroupMixedInstancesPolicyInstancesDistributionDetails m_instancesDistribution; bool m_instancesDistributionHasBeenSet = false; AwsAutoScalingAutoScalingGroupMixedInstancesPolicyLaunchTemplateDetails m_launchTemplate; bool m_launchTemplateHasBeenSet = false; }; } // namespace Model } // namespace SecurityHub } // namespace Aws