/* * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. * A copy of the License is located at * * http://aws.amazon.com/apache2.0 * * or in the "license" file accompanying this file. This file is distributed * on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either * express or implied. See the License for the specific language governing * permissions and limitations under the License. */ /* * Do not modify this file. This file is generated from the autoscaling-2011-01-01.normal.json service model. */ using System; using System.Collections.Generic; using System.Xml.Serialization; using System.Text; using System.IO; using System.Net; using Amazon.Runtime; using Amazon.Runtime.Internal; namespace Amazon.AutoScaling.Model { /// /// The attributes for the instance types for a mixed instances policy. Amazon EC2 Auto /// Scaling uses your specified requirements to identify instance types. Then, it uses /// your On-Demand and Spot allocation strategies to launch instances from these instance /// types. /// /// /// /// When you specify multiple attributes, you get instance types that satisfy all of the /// specified attributes. If you specify multiple values for an attribute, you get instance /// types that satisfy any of the specified values. /// /// /// /// To limit the list of instance types from which Amazon EC2 Auto Scaling can identify /// matching instance types, you can use one of the following parameters, but not both /// in the same request: /// /// /// /// You must specify VCpuCount and MemoryMiB. All other attributes /// are optional. Any unspecified optional attribute is set to its default. /// /// /// /// For more information, see Creating /// an Auto Scaling group using attribute-based instance type selection in the Amazon /// EC2 Auto Scaling User Guide. For help determining which instance types match your /// attributes before you apply them to your Auto Scaling group, see Preview /// instance types with specified attributes in the Amazon EC2 User Guide for Linux /// Instances. /// /// public partial class InstanceRequirements { private AcceleratorCountRequest _acceleratorCount; private List _acceleratorManufacturers = new List(); private List _acceleratorNames = new List(); private AcceleratorTotalMemoryMiBRequest _acceleratorTotalMemoryMiB; private List _acceleratorTypes = new List(); private List _allowedInstanceTypes = new List(); private BareMetal _bareMetal; private BaselineEbsBandwidthMbpsRequest _baselineEbsBandwidthMbps; private BurstablePerformance _burstablePerformance; private List _cpuManufacturers = new List(); private List _excludedInstanceTypes = new List(); private List _instanceGenerations = new List(); private LocalStorage _localStorage; private List _localStorageTypes = new List(); private MemoryGiBPerVCpuRequest _memoryGiBPerVCpu; private MemoryMiBRequest _memoryMiB; private NetworkBandwidthGbpsRequest _networkBandwidthGbps; private NetworkInterfaceCountRequest _networkInterfaceCount; private int? _onDemandMaxPricePercentageOverLowestPrice; private bool? _requireHibernateSupport; private int? _spotMaxPricePercentageOverLowestPrice; private TotalLocalStorageGBRequest _totalLocalStorageGB; private VCpuCountRequest _vCpuCount; /// /// Gets and sets the property AcceleratorCount. /// /// The minimum and maximum number of accelerators (GPUs, FPGAs, or Amazon Web Services /// Inferentia chips) for an instance type. /// /// /// /// To exclude accelerator-enabled instance types, set Max to 0. /// /// /// /// Default: No minimum or maximum limits /// /// public AcceleratorCountRequest AcceleratorCount { get { return this._acceleratorCount; } set { this._acceleratorCount = value; } } // Check to see if AcceleratorCount property is set internal bool IsSetAcceleratorCount() { return this._acceleratorCount != null; } /// /// Gets and sets the property AcceleratorManufacturers. /// /// Indicates whether instance types must have accelerators by specific manufacturers. /// ///
  • /// /// For instance types with NVIDIA devices, specify nvidia. /// ///
  • /// /// For instance types with AMD devices, specify amd. /// ///
  • /// /// For instance types with Amazon Web Services devices, specify amazon-web-services. /// ///
  • /// /// For instance types with Xilinx devices, specify xilinx. /// ///
/// /// Default: Any manufacturer /// ///
public List AcceleratorManufacturers { get { return this._acceleratorManufacturers; } set { this._acceleratorManufacturers = value; } } // Check to see if AcceleratorManufacturers property is set internal bool IsSetAcceleratorManufacturers() { return this._acceleratorManufacturers != null && this._acceleratorManufacturers.Count > 0; } /// /// Gets and sets the property AcceleratorNames. /// /// Lists the accelerators that must be on an instance type. /// ///
  • /// /// For instance types with NVIDIA A100 GPUs, specify a100. /// ///
  • /// /// For instance types with NVIDIA V100 GPUs, specify v100. /// ///
  • /// /// For instance types with NVIDIA K80 GPUs, specify k80. /// ///
  • /// /// For instance types with NVIDIA T4 GPUs, specify t4. /// ///
  • /// /// For instance types with NVIDIA M60 GPUs, specify m60. /// ///
  • /// /// For instance types with AMD Radeon Pro V520 GPUs, specify radeon-pro-v520. /// ///
  • /// /// For instance types with Xilinx VU9P FPGAs, specify vu9p. /// ///
/// /// Default: Any accelerator /// ///
public List AcceleratorNames { get { return this._acceleratorNames; } set { this._acceleratorNames = value; } } // Check to see if AcceleratorNames property is set internal bool IsSetAcceleratorNames() { return this._acceleratorNames != null && this._acceleratorNames.Count > 0; } /// /// Gets and sets the property AcceleratorTotalMemoryMiB. /// /// The minimum and maximum total memory size for the accelerators on an instance type, /// in MiB. /// /// /// /// Default: No minimum or maximum limits /// /// public AcceleratorTotalMemoryMiBRequest AcceleratorTotalMemoryMiB { get { return this._acceleratorTotalMemoryMiB; } set { this._acceleratorTotalMemoryMiB = value; } } // Check to see if AcceleratorTotalMemoryMiB property is set internal bool IsSetAcceleratorTotalMemoryMiB() { return this._acceleratorTotalMemoryMiB != null; } /// /// Gets and sets the property AcceleratorTypes. /// /// Lists the accelerator types that must be on an instance type. /// ///
  • /// /// For instance types with GPU accelerators, specify gpu. /// ///
  • /// /// For instance types with FPGA accelerators, specify fpga. /// ///
  • /// /// For instance types with inference accelerators, specify inference. /// ///
/// /// Default: Any accelerator type /// ///
public List AcceleratorTypes { get { return this._acceleratorTypes; } set { this._acceleratorTypes = value; } } // Check to see if AcceleratorTypes property is set internal bool IsSetAcceleratorTypes() { return this._acceleratorTypes != null && this._acceleratorTypes.Count > 0; } /// /// Gets and sets the property AllowedInstanceTypes. /// /// The instance types to apply your specified attributes against. All other instance /// types are ignored, even if they match your specified attributes. /// /// /// /// You can use strings with one or more wild cards, represented by an asterisk (*), /// to allow an instance type, size, or generation. The following are examples: m5.8xlarge, /// c5*.*, m5a.*, r*, *3*. /// /// /// /// For example, if you specify c5*, Amazon EC2 Auto Scaling will allow the /// entire C5 instance family, which includes all C5a and C5n instance types. If you specify /// m5a.*, Amazon EC2 Auto Scaling will allow all the M5a instance types, /// but not the M5n instance types. /// /// /// /// If you specify AllowedInstanceTypes, you can't specify ExcludedInstanceTypes. /// /// /// /// Default: All instance types /// /// [AWSProperty(Max=400)] public List AllowedInstanceTypes { get { return this._allowedInstanceTypes; } set { this._allowedInstanceTypes = value; } } // Check to see if AllowedInstanceTypes property is set internal bool IsSetAllowedInstanceTypes() { return this._allowedInstanceTypes != null && this._allowedInstanceTypes.Count > 0; } /// /// Gets and sets the property BareMetal. /// /// Indicates whether bare metal instance types are included, excluded, or required. /// /// /// /// Default: excluded /// /// public BareMetal BareMetal { get { return this._bareMetal; } set { this._bareMetal = value; } } // Check to see if BareMetal property is set internal bool IsSetBareMetal() { return this._bareMetal != null; } /// /// Gets and sets the property BaselineEbsBandwidthMbps. /// /// The minimum and maximum baseline bandwidth performance for an instance type, in Mbps. /// For more information, see Amazon /// EBS–optimized instances in the Amazon EC2 User Guide for Linux Instances. /// /// /// /// Default: No minimum or maximum limits /// /// public BaselineEbsBandwidthMbpsRequest BaselineEbsBandwidthMbps { get { return this._baselineEbsBandwidthMbps; } set { this._baselineEbsBandwidthMbps = value; } } // Check to see if BaselineEbsBandwidthMbps property is set internal bool IsSetBaselineEbsBandwidthMbps() { return this._baselineEbsBandwidthMbps != null; } /// /// Gets and sets the property BurstablePerformance. /// /// Indicates whether burstable performance instance types are included, excluded, or /// required. For more information, see Burstable /// performance instances in the Amazon EC2 User Guide for Linux Instances. /// /// /// /// Default: excluded /// /// public BurstablePerformance BurstablePerformance { get { return this._burstablePerformance; } set { this._burstablePerformance = value; } } // Check to see if BurstablePerformance property is set internal bool IsSetBurstablePerformance() { return this._burstablePerformance != null; } /// /// Gets and sets the property CpuManufacturers. /// /// Lists which specific CPU manufacturers to include. /// ///
  • /// /// For instance types with Intel CPUs, specify intel. /// ///
  • /// /// For instance types with AMD CPUs, specify amd. /// ///
  • /// /// For instance types with Amazon Web Services CPUs, specify amazon-web-services. /// ///
/// /// Don't confuse the CPU hardware manufacturer with the CPU hardware architecture. Instances /// will be launched with a compatible CPU architecture based on the Amazon Machine Image /// (AMI) that you specify in your launch template. /// /// /// /// Default: Any manufacturer /// ///
public List CpuManufacturers { get { return this._cpuManufacturers; } set { this._cpuManufacturers = value; } } // Check to see if CpuManufacturers property is set internal bool IsSetCpuManufacturers() { return this._cpuManufacturers != null && this._cpuManufacturers.Count > 0; } /// /// Gets and sets the property ExcludedInstanceTypes. /// /// The instance types to exclude. You can use strings with one or more wild cards, represented /// by an asterisk (*), to exclude an instance family, type, size, or generation. /// The following are examples: m5.8xlarge, c5*.*, m5a.*, /// r*, *3*. /// /// /// /// For example, if you specify c5*, you are excluding the entire C5 instance /// family, which includes all C5a and C5n instance types. If you specify m5a.*, /// Amazon EC2 Auto Scaling will exclude all the M5a instance types, but not the M5n instance /// types. /// /// /// /// If you specify ExcludedInstanceTypes, you can't specify AllowedInstanceTypes. /// /// /// /// Default: No excluded instance types /// /// [AWSProperty(Max=400)] public List ExcludedInstanceTypes { get { return this._excludedInstanceTypes; } set { this._excludedInstanceTypes = value; } } // Check to see if ExcludedInstanceTypes property is set internal bool IsSetExcludedInstanceTypes() { return this._excludedInstanceTypes != null && this._excludedInstanceTypes.Count > 0; } /// /// Gets and sets the property InstanceGenerations. /// /// Indicates whether current or previous generation instance types are included. /// ///
  • /// /// For current generation instance types, specify current. The current generation /// includes EC2 instance types currently recommended for use. This typically includes /// the latest two to three generations in each instance family. For more information, /// see Instance /// types in the Amazon EC2 User Guide for Linux Instances. /// ///
  • /// /// For previous generation instance types, specify previous. /// ///
/// /// Default: Any current or previous generation /// ///
public List InstanceGenerations { get { return this._instanceGenerations; } set { this._instanceGenerations = value; } } // Check to see if InstanceGenerations property is set internal bool IsSetInstanceGenerations() { return this._instanceGenerations != null && this._instanceGenerations.Count > 0; } /// /// Gets and sets the property LocalStorage. /// /// Indicates whether instance types with instance store volumes are included, excluded, /// or required. For more information, see Amazon /// EC2 instance store in the Amazon EC2 User Guide for Linux Instances. /// /// /// /// Default: included /// /// public LocalStorage LocalStorage { get { return this._localStorage; } set { this._localStorage = value; } } // Check to see if LocalStorage property is set internal bool IsSetLocalStorage() { return this._localStorage != null; } /// /// Gets and sets the property LocalStorageTypes. /// /// Indicates the type of local storage that is required. /// ///
  • /// /// For instance types with hard disk drive (HDD) storage, specify hdd. /// ///
  • /// /// For instance types with solid state drive (SSD) storage, specify ssd. /// ///
/// /// Default: Any local storage type /// ///
public List LocalStorageTypes { get { return this._localStorageTypes; } set { this._localStorageTypes = value; } } // Check to see if LocalStorageTypes property is set internal bool IsSetLocalStorageTypes() { return this._localStorageTypes != null && this._localStorageTypes.Count > 0; } /// /// Gets and sets the property MemoryGiBPerVCpu. /// /// The minimum and maximum amount of memory per vCPU for an instance type, in GiB. /// /// /// /// Default: No minimum or maximum limits /// /// public MemoryGiBPerVCpuRequest MemoryGiBPerVCpu { get { return this._memoryGiBPerVCpu; } set { this._memoryGiBPerVCpu = value; } } // Check to see if MemoryGiBPerVCpu property is set internal bool IsSetMemoryGiBPerVCpu() { return this._memoryGiBPerVCpu != null; } /// /// Gets and sets the property MemoryMiB. /// /// The minimum and maximum instance memory size for an instance type, in MiB. /// /// [AWSProperty(Required=true)] public MemoryMiBRequest MemoryMiB { get { return this._memoryMiB; } set { this._memoryMiB = value; } } // Check to see if MemoryMiB property is set internal bool IsSetMemoryMiB() { return this._memoryMiB != null; } /// /// Gets and sets the property NetworkBandwidthGbps. /// /// The minimum and maximum amount of network bandwidth, in gigabits per second (Gbps). /// /// /// /// Default: No minimum or maximum limits /// /// public NetworkBandwidthGbpsRequest NetworkBandwidthGbps { get { return this._networkBandwidthGbps; } set { this._networkBandwidthGbps = value; } } // Check to see if NetworkBandwidthGbps property is set internal bool IsSetNetworkBandwidthGbps() { return this._networkBandwidthGbps != null; } /// /// Gets and sets the property NetworkInterfaceCount. /// /// The minimum and maximum number of network interfaces for an instance type. /// /// /// /// Default: No minimum or maximum limits /// /// public NetworkInterfaceCountRequest NetworkInterfaceCount { get { return this._networkInterfaceCount; } set { this._networkInterfaceCount = value; } } // Check to see if NetworkInterfaceCount property is set internal bool IsSetNetworkInterfaceCount() { return this._networkInterfaceCount != null; } /// /// Gets and sets the property OnDemandMaxPricePercentageOverLowestPrice. /// /// The price protection threshold for On-Demand Instances. This is the maximum you’ll /// pay for an On-Demand Instance, expressed as a percentage higher than the least expensive /// current generation M, C, or R instance type with your specified attributes. When Amazon /// EC2 Auto Scaling selects instance types with your attributes, we will exclude instance /// types whose price is higher than your threshold. The parameter accepts an integer, /// which Amazon EC2 Auto Scaling interprets as a percentage. To turn off price protection, /// specify a high value, such as 999999. /// /// /// /// If you set DesiredCapacityType to vcpu or memory-mib, /// the price protection threshold is applied based on the per vCPU or per memory price /// instead of the per instance price. /// /// /// /// Default: 20 /// /// [AWSProperty(Min=0)] public int OnDemandMaxPricePercentageOverLowestPrice { get { return this._onDemandMaxPricePercentageOverLowestPrice.GetValueOrDefault(); } set { this._onDemandMaxPricePercentageOverLowestPrice = value; } } // Check to see if OnDemandMaxPricePercentageOverLowestPrice property is set internal bool IsSetOnDemandMaxPricePercentageOverLowestPrice() { return this._onDemandMaxPricePercentageOverLowestPrice.HasValue; } /// /// Gets and sets the property RequireHibernateSupport. /// /// Indicates whether instance types must provide On-Demand Instance hibernation support. /// /// /// /// Default: false /// /// public bool RequireHibernateSupport { get { return this._requireHibernateSupport.GetValueOrDefault(); } set { this._requireHibernateSupport = value; } } // Check to see if RequireHibernateSupport property is set internal bool IsSetRequireHibernateSupport() { return this._requireHibernateSupport.HasValue; } /// /// Gets and sets the property SpotMaxPricePercentageOverLowestPrice. /// /// The price protection threshold for Spot Instances. This is the maximum you’ll pay /// for a Spot Instance, expressed as a percentage higher than the least expensive current /// generation M, C, or R instance type with your specified attributes. When Amazon EC2 /// Auto Scaling selects instance types with your attributes, we will exclude instance /// types whose price is higher than your threshold. The parameter accepts an integer, /// which Amazon EC2 Auto Scaling interprets as a percentage. To turn off price protection, /// specify a high value, such as 999999. /// /// /// /// If you set DesiredCapacityType to vcpu or memory-mib, /// the price protection threshold is applied based on the per vCPU or per memory price /// instead of the per instance price. /// /// /// /// Default: 100 /// /// [AWSProperty(Min=0)] public int SpotMaxPricePercentageOverLowestPrice { get { return this._spotMaxPricePercentageOverLowestPrice.GetValueOrDefault(); } set { this._spotMaxPricePercentageOverLowestPrice = value; } } // Check to see if SpotMaxPricePercentageOverLowestPrice property is set internal bool IsSetSpotMaxPricePercentageOverLowestPrice() { return this._spotMaxPricePercentageOverLowestPrice.HasValue; } /// /// Gets and sets the property TotalLocalStorageGB. /// /// The minimum and maximum total local storage size for an instance type, in GB. /// /// /// /// Default: No minimum or maximum limits /// /// public TotalLocalStorageGBRequest TotalLocalStorageGB { get { return this._totalLocalStorageGB; } set { this._totalLocalStorageGB = value; } } // Check to see if TotalLocalStorageGB property is set internal bool IsSetTotalLocalStorageGB() { return this._totalLocalStorageGB != null; } /// /// Gets and sets the property VCpuCount. /// /// The minimum and maximum number of vCPUs for an instance type. /// /// [AWSProperty(Required=true)] public VCpuCountRequest VCpuCount { get { return this._vCpuCount; } set { this._vCpuCount = value; } } // Check to see if VCpuCount property is set internal bool IsSetVCpuCount() { return this._vCpuCount != null; } } }