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

Describes a mixed instances policy for an Auto Scaling group. With mixed * instances, your Auto Scaling group can provision a combination of On-Demand * Instances and Spot Instances across multiple instance types. For more * information, see Auto * Scaling Groups with Multiple Instance Types and Purchase Options in the * Amazon EC2 Auto Scaling User Guide.

You can create a mixed * instances policy for a new Auto Scaling group, or you can create it for an * existing group by updating the group to specify * MixedInstancesPolicy as the top-level parameter instead of a launch * configuration or launch template. For more information, see * CreateAutoScalingGroup and UpdateAutoScalingGroup.

See * Also:

AWS * API Reference

*/ class AWS_AUTOSCALING_API MixedInstancesPolicy { public: MixedInstancesPolicy(); MixedInstancesPolicy(const Aws::Utils::Xml::XmlNode& xmlNode); MixedInstancesPolicy& operator=(const Aws::Utils::Xml::XmlNode& xmlNode); void OutputToStream(Aws::OStream& ostream, const char* location, unsigned index, const char* locationValue) const; void OutputToStream(Aws::OStream& oStream, const char* location) const; /** *

The launch template and instance types (overrides).

Required when * creating a mixed instances policy.

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

The launch template and instance types (overrides).

Required when * creating a mixed instances policy.

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

The launch template and instance types (overrides).

Required when * creating a mixed instances policy.

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

The launch template and instance types (overrides).

Required when * creating a mixed instances policy.

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

The launch template and instance types (overrides).

Required when * creating a mixed instances policy.

*/ inline MixedInstancesPolicy& WithLaunchTemplate(const LaunchTemplate& value) { SetLaunchTemplate(value); return *this;} /** *

The launch template and instance types (overrides).

Required when * creating a mixed instances policy.

*/ inline MixedInstancesPolicy& WithLaunchTemplate(LaunchTemplate&& value) { SetLaunchTemplate(std::move(value)); return *this;} /** *

The instances distribution to use.

If you leave this parameter * unspecified, the value for each parameter in InstancesDistribution * uses a default value.

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

The instances distribution to use.

If you leave this parameter * unspecified, the value for each parameter in InstancesDistribution * uses a default value.

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

The instances distribution to use.

If you leave this parameter * unspecified, the value for each parameter in InstancesDistribution * uses a default value.

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

The instances distribution to use.

If you leave this parameter * unspecified, the value for each parameter in InstancesDistribution * uses a default value.

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

The instances distribution to use.

If you leave this parameter * unspecified, the value for each parameter in InstancesDistribution * uses a default value.

*/ inline MixedInstancesPolicy& WithInstancesDistribution(const InstancesDistribution& value) { SetInstancesDistribution(value); return *this;} /** *

The instances distribution to use.

If you leave this parameter * unspecified, the value for each parameter in InstancesDistribution * uses a default value.

*/ inline MixedInstancesPolicy& WithInstancesDistribution(InstancesDistribution&& value) { SetInstancesDistribution(std::move(value)); return *this;} private: LaunchTemplate m_launchTemplate; bool m_launchTemplateHasBeenSet; InstancesDistribution m_instancesDistribution; bool m_instancesDistributionHasBeenSet; }; } // namespace Model } // namespace AutoScaling } // namespace Aws