/* * 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 ec2-2016-11-15.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.EC2.Model { /// /// The attributes for the instance types. When you specify instance attributes, Amazon /// EC2 will identify instance types with these attributes. /// /// /// /// You must specify VCpuCount and MemoryMiB. All other attributes /// are optional. Any unspecified optional attribute is set to its default. /// /// /// /// 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 can identify matching instance /// types, you can use one of the following parameters, but not both in the same request: /// /// /// /// If you specify InstanceRequirements, you can't specify InstanceType. /// /// /// /// Attribute-based instance type selection is only supported when using Auto Scaling /// groups, EC2 Fleet, and Spot Fleet to launch instances. If you plan to use the launch /// template in the launch /// instance wizard or with the RunInstances /// API, you can't specify InstanceRequirements. /// /// /// /// For more information, see Attribute-based /// instance type selection for EC2 Fleet, Attribute-based /// instance type selection for Spot Fleet, and Spot /// placement score in the Amazon EC2 User Guide. /// /// public partial class InstanceRequirements { private AcceleratorCount _acceleratorCount; private List _acceleratorManufacturers = new List(); private List _acceleratorNames = new List(); private AcceleratorTotalMemoryMiB _acceleratorTotalMemoryMiB; private List _acceleratorTypes = new List(); private List _allowedInstanceTypes = new List(); private BareMetal _bareMetal; private BaselineEbsBandwidthMbps _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 MemoryGiBPerVCpu _memoryGiBPerVCpu; private MemoryMiB _memoryMiB; private NetworkBandwidthGbps _networkBandwidthGbps; private NetworkInterfaceCount _networkInterfaceCount; private int? _onDemandMaxPricePercentageOverLowestPrice; private bool? _requireHibernateSupport; private int? _spotMaxPricePercentageOverLowestPrice; private TotalLocalStorageGB _totalLocalStorageGB; private VCpuCountRange _vCpuCount; /// /// Gets and sets the property AcceleratorCount. /// /// The minimum and maximum number of accelerators (GPUs, FPGAs, or Amazon Web Services /// Inferentia chips) on an instance. /// /// /// /// To exclude accelerator-enabled instance types, set Max to 0. /// /// /// /// Default: No minimum or maximum limits /// /// public AcceleratorCount 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. /// /// The accelerators that must be on the 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. /// ///
  • /// /// For instance types with Amazon Web Services Inferentia chips, specify inferentia. /// ///
  • /// /// For instance types with NVIDIA GRID K520 GPUs, specify k520. /// ///
/// /// 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 amount of total accelerator memory, in MiB. /// /// /// /// Default: No minimum or maximum limits /// /// public AcceleratorTotalMemoryMiB 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. /// /// The accelerator types that must be on the 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 will allow the entire C5 instance /// family, which includes all C5a and C5n instance types. If you specify m5a.*, /// Amazon EC2 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(Min=0, 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 must be included, excluded, or required. /// ///
  • /// /// To include bare metal instance types, specify included. /// ///
  • /// /// To require only bare metal instance types, specify required. /// ///
  • /// /// To exclude bare metal instance types, specify excluded. /// ///
/// /// 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 to Amazon EBS, in Mbps. For more information, /// see Amazon /// EBS–optimized instances in the Amazon EC2 User Guide. /// /// /// /// Default: No minimum or maximum limits /// /// public BaselineEbsBandwidthMbps 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 T instance types are included, excluded, or /// required. For more information, see Burstable /// performance instances. /// ///
  • /// /// To include burstable performance instance types, specify included. /// ///
  • /// /// To require only burstable performance instance types, specify required. /// ///
  • /// /// To exclude burstable performance instance types, specify excluded. /// ///
/// /// 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. /// /// The 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 manufacturer with the CPU 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 type, size, or generation. The following are examples: m5.8xlarge, /// c5*.*, m5a.*, r*, *3*. /// /// /// /// For example, if you specify c5*,Amazon EC2 will exclude the entire C5 /// instance family, which includes all C5a and C5n instance types. If you specify m5a.*, /// Amazon EC2 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(Min=0, 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. The /// current generation instance types are recommended for use. Current generation instance /// types are typically the latest two to three generations in each instance family. For /// more information, see Instance /// types in the Amazon EC2 User Guide. /// /// /// /// For current generation instance types, specify current. /// /// /// /// For previous generation instance types, specify previous. /// /// /// /// Default: Current and previous generation instance types /// /// 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, Amazon /// EC2 instance store in the Amazon EC2 User Guide. /// ///
  • /// /// To include instance types with instance store volumes, specify included. /// ///
  • /// /// To require only instance types with instance store volumes, specify required. /// ///
  • /// /// To exclude instance types with instance store volumes, specify excluded. /// ///
/// /// 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. /// /// 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: hdd and ssd /// ///
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, in GiB. /// /// /// /// Default: No minimum or maximum limits /// /// public MemoryGiBPerVCpu 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 amount of memory, in MiB. /// /// public MemoryMiB 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 NetworkBandwidthGbps 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. /// /// /// /// Default: No minimum or maximum limits /// /// public NetworkInterfaceCount 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 above the least expensive /// current generation M, C, or R instance type with your specified attributes. When Amazon /// EC2 selects instance types with your attributes, it excludes instance types priced /// above your threshold. /// /// /// /// The parameter accepts an integer, which Amazon EC2 interprets as a percentage. /// /// /// /// To turn off price protection, specify a high value, such as 999999. /// /// /// /// This parameter is not supported for GetSpotPlacementScores /// and GetInstanceTypesFromInstanceRequirements. /// /// /// /// If you set TargetCapacityUnitType 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 /// /// 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 support hibernation for On-Demand Instances. /// /// /// /// This parameter is not supported for GetSpotPlacementScores. /// /// /// /// 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 above the least expensive current generation /// M, C, or R instance type with your specified attributes. When Amazon EC2 selects instance /// types with your attributes, it excludes instance types priced above your threshold. /// /// /// /// The parameter accepts an integer, which Amazon EC2 interprets as a percentage. /// /// /// /// To turn off price protection, specify a high value, such as 999999. /// /// /// /// This parameter is not supported for GetSpotPlacementScores /// and GetInstanceTypesFromInstanceRequirements. /// /// /// /// If you set TargetCapacityUnitType 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 /// /// 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 amount of total local storage, in GB. /// /// /// /// Default: No minimum or maximum limits /// /// public TotalLocalStorageGB 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. /// /// public VCpuCountRange VCpuCount { get { return this._vCpuCount; } set { this._vCpuCount = value; } } // Check to see if VCpuCount property is set internal bool IsSetVCpuCount() { return this._vCpuCount != null; } } }