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

The attributes for the Amazon EC2 instance types.

See Also:

* AWS * API Reference

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

The minimum and maximum number of accelerators (GPUs, FPGAs, or Amazon Web * Services Inferentia chips) on an instance.

*/ inline const AwsEc2LaunchTemplateDataInstanceRequirementsAcceleratorCountDetails& GetAcceleratorCount() const{ return m_acceleratorCount; } /** *

The minimum and maximum number of accelerators (GPUs, FPGAs, or Amazon Web * Services Inferentia chips) on an instance.

*/ inline bool AcceleratorCountHasBeenSet() const { return m_acceleratorCountHasBeenSet; } /** *

The minimum and maximum number of accelerators (GPUs, FPGAs, or Amazon Web * Services Inferentia chips) on an instance.

*/ inline void SetAcceleratorCount(const AwsEc2LaunchTemplateDataInstanceRequirementsAcceleratorCountDetails& value) { m_acceleratorCountHasBeenSet = true; m_acceleratorCount = value; } /** *

The minimum and maximum number of accelerators (GPUs, FPGAs, or Amazon Web * Services Inferentia chips) on an instance.

*/ inline void SetAcceleratorCount(AwsEc2LaunchTemplateDataInstanceRequirementsAcceleratorCountDetails&& value) { m_acceleratorCountHasBeenSet = true; m_acceleratorCount = std::move(value); } /** *

The minimum and maximum number of accelerators (GPUs, FPGAs, or Amazon Web * Services Inferentia chips) on an instance.

*/ inline AwsEc2LaunchTemplateDataInstanceRequirementsDetails& WithAcceleratorCount(const AwsEc2LaunchTemplateDataInstanceRequirementsAcceleratorCountDetails& value) { SetAcceleratorCount(value); return *this;} /** *

The minimum and maximum number of accelerators (GPUs, FPGAs, or Amazon Web * Services Inferentia chips) on an instance.

*/ inline AwsEc2LaunchTemplateDataInstanceRequirementsDetails& WithAcceleratorCount(AwsEc2LaunchTemplateDataInstanceRequirementsAcceleratorCountDetails&& value) { SetAcceleratorCount(std::move(value)); return *this;} /** *

Indicates whether instance types must have accelerators by specific * manufacturers.

*/ inline const Aws::Vector& GetAcceleratorManufacturers() const{ return m_acceleratorManufacturers; } /** *

Indicates whether instance types must have accelerators by specific * manufacturers.

*/ inline bool AcceleratorManufacturersHasBeenSet() const { return m_acceleratorManufacturersHasBeenSet; } /** *

Indicates whether instance types must have accelerators by specific * manufacturers.

*/ inline void SetAcceleratorManufacturers(const Aws::Vector& value) { m_acceleratorManufacturersHasBeenSet = true; m_acceleratorManufacturers = value; } /** *

Indicates whether instance types must have accelerators by specific * manufacturers.

*/ inline void SetAcceleratorManufacturers(Aws::Vector&& value) { m_acceleratorManufacturersHasBeenSet = true; m_acceleratorManufacturers = std::move(value); } /** *

Indicates whether instance types must have accelerators by specific * manufacturers.

*/ inline AwsEc2LaunchTemplateDataInstanceRequirementsDetails& WithAcceleratorManufacturers(const Aws::Vector& value) { SetAcceleratorManufacturers(value); return *this;} /** *

Indicates whether instance types must have accelerators by specific * manufacturers.

*/ inline AwsEc2LaunchTemplateDataInstanceRequirementsDetails& WithAcceleratorManufacturers(Aws::Vector&& value) { SetAcceleratorManufacturers(std::move(value)); return *this;} /** *

Indicates whether instance types must have accelerators by specific * manufacturers.

*/ inline AwsEc2LaunchTemplateDataInstanceRequirementsDetails& AddAcceleratorManufacturers(const Aws::String& value) { m_acceleratorManufacturersHasBeenSet = true; m_acceleratorManufacturers.push_back(value); return *this; } /** *

Indicates whether instance types must have accelerators by specific * manufacturers.

*/ inline AwsEc2LaunchTemplateDataInstanceRequirementsDetails& AddAcceleratorManufacturers(Aws::String&& value) { m_acceleratorManufacturersHasBeenSet = true; m_acceleratorManufacturers.push_back(std::move(value)); return *this; } /** *

Indicates whether instance types must have accelerators by specific * manufacturers.

*/ inline AwsEc2LaunchTemplateDataInstanceRequirementsDetails& AddAcceleratorManufacturers(const char* value) { m_acceleratorManufacturersHasBeenSet = true; m_acceleratorManufacturers.push_back(value); return *this; } /** *

The accelerators that must be on the instance type.

*/ inline const Aws::Vector& GetAcceleratorNames() const{ return m_acceleratorNames; } /** *

The accelerators that must be on the instance type.

*/ inline bool AcceleratorNamesHasBeenSet() const { return m_acceleratorNamesHasBeenSet; } /** *

The accelerators that must be on the instance type.

*/ inline void SetAcceleratorNames(const Aws::Vector& value) { m_acceleratorNamesHasBeenSet = true; m_acceleratorNames = value; } /** *

The accelerators that must be on the instance type.

*/ inline void SetAcceleratorNames(Aws::Vector&& value) { m_acceleratorNamesHasBeenSet = true; m_acceleratorNames = std::move(value); } /** *

The accelerators that must be on the instance type.

*/ inline AwsEc2LaunchTemplateDataInstanceRequirementsDetails& WithAcceleratorNames(const Aws::Vector& value) { SetAcceleratorNames(value); return *this;} /** *

The accelerators that must be on the instance type.

*/ inline AwsEc2LaunchTemplateDataInstanceRequirementsDetails& WithAcceleratorNames(Aws::Vector&& value) { SetAcceleratorNames(std::move(value)); return *this;} /** *

The accelerators that must be on the instance type.

*/ inline AwsEc2LaunchTemplateDataInstanceRequirementsDetails& AddAcceleratorNames(const Aws::String& value) { m_acceleratorNamesHasBeenSet = true; m_acceleratorNames.push_back(value); return *this; } /** *

The accelerators that must be on the instance type.

*/ inline AwsEc2LaunchTemplateDataInstanceRequirementsDetails& AddAcceleratorNames(Aws::String&& value) { m_acceleratorNamesHasBeenSet = true; m_acceleratorNames.push_back(std::move(value)); return *this; } /** *

The accelerators that must be on the instance type.

*/ inline AwsEc2LaunchTemplateDataInstanceRequirementsDetails& AddAcceleratorNames(const char* value) { m_acceleratorNamesHasBeenSet = true; m_acceleratorNames.push_back(value); return *this; } /** *

The minimum and maximum amount of total accelerator memory, in MiB.

*/ inline const AwsEc2LaunchTemplateDataInstanceRequirementsAcceleratorTotalMemoryMiBDetails& GetAcceleratorTotalMemoryMiB() const{ return m_acceleratorTotalMemoryMiB; } /** *

The minimum and maximum amount of total accelerator memory, in MiB.

*/ inline bool AcceleratorTotalMemoryMiBHasBeenSet() const { return m_acceleratorTotalMemoryMiBHasBeenSet; } /** *

The minimum and maximum amount of total accelerator memory, in MiB.

*/ inline void SetAcceleratorTotalMemoryMiB(const AwsEc2LaunchTemplateDataInstanceRequirementsAcceleratorTotalMemoryMiBDetails& value) { m_acceleratorTotalMemoryMiBHasBeenSet = true; m_acceleratorTotalMemoryMiB = value; } /** *

The minimum and maximum amount of total accelerator memory, in MiB.

*/ inline void SetAcceleratorTotalMemoryMiB(AwsEc2LaunchTemplateDataInstanceRequirementsAcceleratorTotalMemoryMiBDetails&& value) { m_acceleratorTotalMemoryMiBHasBeenSet = true; m_acceleratorTotalMemoryMiB = std::move(value); } /** *

The minimum and maximum amount of total accelerator memory, in MiB.

*/ inline AwsEc2LaunchTemplateDataInstanceRequirementsDetails& WithAcceleratorTotalMemoryMiB(const AwsEc2LaunchTemplateDataInstanceRequirementsAcceleratorTotalMemoryMiBDetails& value) { SetAcceleratorTotalMemoryMiB(value); return *this;} /** *

The minimum and maximum amount of total accelerator memory, in MiB.

*/ inline AwsEc2LaunchTemplateDataInstanceRequirementsDetails& WithAcceleratorTotalMemoryMiB(AwsEc2LaunchTemplateDataInstanceRequirementsAcceleratorTotalMemoryMiBDetails&& value) { SetAcceleratorTotalMemoryMiB(std::move(value)); return *this;} /** *

The accelerator types that must be on the instance type.

*/ inline const Aws::Vector& GetAcceleratorTypes() const{ return m_acceleratorTypes; } /** *

The accelerator types that must be on the instance type.

*/ inline bool AcceleratorTypesHasBeenSet() const { return m_acceleratorTypesHasBeenSet; } /** *

The accelerator types that must be on the instance type.

*/ inline void SetAcceleratorTypes(const Aws::Vector& value) { m_acceleratorTypesHasBeenSet = true; m_acceleratorTypes = value; } /** *

The accelerator types that must be on the instance type.

*/ inline void SetAcceleratorTypes(Aws::Vector&& value) { m_acceleratorTypesHasBeenSet = true; m_acceleratorTypes = std::move(value); } /** *

The accelerator types that must be on the instance type.

*/ inline AwsEc2LaunchTemplateDataInstanceRequirementsDetails& WithAcceleratorTypes(const Aws::Vector& value) { SetAcceleratorTypes(value); return *this;} /** *

The accelerator types that must be on the instance type.

*/ inline AwsEc2LaunchTemplateDataInstanceRequirementsDetails& WithAcceleratorTypes(Aws::Vector&& value) { SetAcceleratorTypes(std::move(value)); return *this;} /** *

The accelerator types that must be on the instance type.

*/ inline AwsEc2LaunchTemplateDataInstanceRequirementsDetails& AddAcceleratorTypes(const Aws::String& value) { m_acceleratorTypesHasBeenSet = true; m_acceleratorTypes.push_back(value); return *this; } /** *

The accelerator types that must be on the instance type.

*/ inline AwsEc2LaunchTemplateDataInstanceRequirementsDetails& AddAcceleratorTypes(Aws::String&& value) { m_acceleratorTypesHasBeenSet = true; m_acceleratorTypes.push_back(std::move(value)); return *this; } /** *

The accelerator types that must be on the instance type.

*/ inline AwsEc2LaunchTemplateDataInstanceRequirementsDetails& AddAcceleratorTypes(const char* value) { m_acceleratorTypesHasBeenSet = true; m_acceleratorTypes.push_back(value); return *this; } /** *

Indicates whether bare metal instance types must be included, excluded, or * required.

*/ inline const Aws::String& GetBareMetal() const{ return m_bareMetal; } /** *

Indicates whether bare metal instance types must be included, excluded, or * required.

*/ inline bool BareMetalHasBeenSet() const { return m_bareMetalHasBeenSet; } /** *

Indicates whether bare metal instance types must be included, excluded, or * required.

*/ inline void SetBareMetal(const Aws::String& value) { m_bareMetalHasBeenSet = true; m_bareMetal = value; } /** *

Indicates whether bare metal instance types must be included, excluded, or * required.

*/ inline void SetBareMetal(Aws::String&& value) { m_bareMetalHasBeenSet = true; m_bareMetal = std::move(value); } /** *

Indicates whether bare metal instance types must be included, excluded, or * required.

*/ inline void SetBareMetal(const char* value) { m_bareMetalHasBeenSet = true; m_bareMetal.assign(value); } /** *

Indicates whether bare metal instance types must be included, excluded, or * required.

*/ inline AwsEc2LaunchTemplateDataInstanceRequirementsDetails& WithBareMetal(const Aws::String& value) { SetBareMetal(value); return *this;} /** *

Indicates whether bare metal instance types must be included, excluded, or * required.

*/ inline AwsEc2LaunchTemplateDataInstanceRequirementsDetails& WithBareMetal(Aws::String&& value) { SetBareMetal(std::move(value)); return *this;} /** *

Indicates whether bare metal instance types must be included, excluded, or * required.

*/ inline AwsEc2LaunchTemplateDataInstanceRequirementsDetails& WithBareMetal(const char* value) { SetBareMetal(value); return *this;} /** *

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.

*/ inline const AwsEc2LaunchTemplateDataInstanceRequirementsBaselineEbsBandwidthMbpsDetails& GetBaselineEbsBandwidthMbps() const{ return m_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.

*/ inline bool BaselineEbsBandwidthMbpsHasBeenSet() const { return m_baselineEbsBandwidthMbpsHasBeenSet; } /** *

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.

*/ inline void SetBaselineEbsBandwidthMbps(const AwsEc2LaunchTemplateDataInstanceRequirementsBaselineEbsBandwidthMbpsDetails& value) { m_baselineEbsBandwidthMbpsHasBeenSet = true; m_baselineEbsBandwidthMbps = value; } /** *

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.

*/ inline void SetBaselineEbsBandwidthMbps(AwsEc2LaunchTemplateDataInstanceRequirementsBaselineEbsBandwidthMbpsDetails&& value) { m_baselineEbsBandwidthMbpsHasBeenSet = true; m_baselineEbsBandwidthMbps = std::move(value); } /** *

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.

*/ inline AwsEc2LaunchTemplateDataInstanceRequirementsDetails& WithBaselineEbsBandwidthMbps(const AwsEc2LaunchTemplateDataInstanceRequirementsBaselineEbsBandwidthMbpsDetails& value) { SetBaselineEbsBandwidthMbps(value); return *this;} /** *

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.

*/ inline AwsEc2LaunchTemplateDataInstanceRequirementsDetails& WithBaselineEbsBandwidthMbps(AwsEc2LaunchTemplateDataInstanceRequirementsBaselineEbsBandwidthMbpsDetails&& value) { SetBaselineEbsBandwidthMbps(std::move(value)); return *this;} /** *

Indicates whether burstable performance T instance types are included, * excluded, or required. For more information, Burstable * performance instances in the Amazon EC2 User Guide.

*/ inline const Aws::String& GetBurstablePerformance() const{ return m_burstablePerformance; } /** *

Indicates whether burstable performance T instance types are included, * excluded, or required. For more information, Burstable * performance instances in the Amazon EC2 User Guide.

*/ inline bool BurstablePerformanceHasBeenSet() const { return m_burstablePerformanceHasBeenSet; } /** *

Indicates whether burstable performance T instance types are included, * excluded, or required. For more information, Burstable * performance instances in the Amazon EC2 User Guide.

*/ inline void SetBurstablePerformance(const Aws::String& value) { m_burstablePerformanceHasBeenSet = true; m_burstablePerformance = value; } /** *

Indicates whether burstable performance T instance types are included, * excluded, or required. For more information, Burstable * performance instances in the Amazon EC2 User Guide.

*/ inline void SetBurstablePerformance(Aws::String&& value) { m_burstablePerformanceHasBeenSet = true; m_burstablePerformance = std::move(value); } /** *

Indicates whether burstable performance T instance types are included, * excluded, or required. For more information, Burstable * performance instances in the Amazon EC2 User Guide.

*/ inline void SetBurstablePerformance(const char* value) { m_burstablePerformanceHasBeenSet = true; m_burstablePerformance.assign(value); } /** *

Indicates whether burstable performance T instance types are included, * excluded, or required. For more information, Burstable * performance instances in the Amazon EC2 User Guide.

*/ inline AwsEc2LaunchTemplateDataInstanceRequirementsDetails& WithBurstablePerformance(const Aws::String& value) { SetBurstablePerformance(value); return *this;} /** *

Indicates whether burstable performance T instance types are included, * excluded, or required. For more information, Burstable * performance instances in the Amazon EC2 User Guide.

*/ inline AwsEc2LaunchTemplateDataInstanceRequirementsDetails& WithBurstablePerformance(Aws::String&& value) { SetBurstablePerformance(std::move(value)); return *this;} /** *

Indicates whether burstable performance T instance types are included, * excluded, or required. For more information, Burstable * performance instances in the Amazon EC2 User Guide.

*/ inline AwsEc2LaunchTemplateDataInstanceRequirementsDetails& WithBurstablePerformance(const char* value) { SetBurstablePerformance(value); return *this;} /** *

The CPU manufacturers to include.

*/ inline const Aws::Vector& GetCpuManufacturers() const{ return m_cpuManufacturers; } /** *

The CPU manufacturers to include.

*/ inline bool CpuManufacturersHasBeenSet() const { return m_cpuManufacturersHasBeenSet; } /** *

The CPU manufacturers to include.

*/ inline void SetCpuManufacturers(const Aws::Vector& value) { m_cpuManufacturersHasBeenSet = true; m_cpuManufacturers = value; } /** *

The CPU manufacturers to include.

*/ inline void SetCpuManufacturers(Aws::Vector&& value) { m_cpuManufacturersHasBeenSet = true; m_cpuManufacturers = std::move(value); } /** *

The CPU manufacturers to include.

*/ inline AwsEc2LaunchTemplateDataInstanceRequirementsDetails& WithCpuManufacturers(const Aws::Vector& value) { SetCpuManufacturers(value); return *this;} /** *

The CPU manufacturers to include.

*/ inline AwsEc2LaunchTemplateDataInstanceRequirementsDetails& WithCpuManufacturers(Aws::Vector&& value) { SetCpuManufacturers(std::move(value)); return *this;} /** *

The CPU manufacturers to include.

*/ inline AwsEc2LaunchTemplateDataInstanceRequirementsDetails& AddCpuManufacturers(const Aws::String& value) { m_cpuManufacturersHasBeenSet = true; m_cpuManufacturers.push_back(value); return *this; } /** *

The CPU manufacturers to include.

*/ inline AwsEc2LaunchTemplateDataInstanceRequirementsDetails& AddCpuManufacturers(Aws::String&& value) { m_cpuManufacturersHasBeenSet = true; m_cpuManufacturers.push_back(std::move(value)); return *this; } /** *

The CPU manufacturers to include.

*/ inline AwsEc2LaunchTemplateDataInstanceRequirementsDetails& AddCpuManufacturers(const char* value) { m_cpuManufacturersHasBeenSet = true; m_cpuManufacturers.push_back(value); return *this; } /** *

The instance types to exclude.

*/ inline const Aws::Vector& GetExcludedInstanceTypes() const{ return m_excludedInstanceTypes; } /** *

The instance types to exclude.

*/ inline bool ExcludedInstanceTypesHasBeenSet() const { return m_excludedInstanceTypesHasBeenSet; } /** *

The instance types to exclude.

*/ inline void SetExcludedInstanceTypes(const Aws::Vector& value) { m_excludedInstanceTypesHasBeenSet = true; m_excludedInstanceTypes = value; } /** *

The instance types to exclude.

*/ inline void SetExcludedInstanceTypes(Aws::Vector&& value) { m_excludedInstanceTypesHasBeenSet = true; m_excludedInstanceTypes = std::move(value); } /** *

The instance types to exclude.

*/ inline AwsEc2LaunchTemplateDataInstanceRequirementsDetails& WithExcludedInstanceTypes(const Aws::Vector& value) { SetExcludedInstanceTypes(value); return *this;} /** *

The instance types to exclude.

*/ inline AwsEc2LaunchTemplateDataInstanceRequirementsDetails& WithExcludedInstanceTypes(Aws::Vector&& value) { SetExcludedInstanceTypes(std::move(value)); return *this;} /** *

The instance types to exclude.

*/ inline AwsEc2LaunchTemplateDataInstanceRequirementsDetails& AddExcludedInstanceTypes(const Aws::String& value) { m_excludedInstanceTypesHasBeenSet = true; m_excludedInstanceTypes.push_back(value); return *this; } /** *

The instance types to exclude.

*/ inline AwsEc2LaunchTemplateDataInstanceRequirementsDetails& AddExcludedInstanceTypes(Aws::String&& value) { m_excludedInstanceTypesHasBeenSet = true; m_excludedInstanceTypes.push_back(std::move(value)); return *this; } /** *

The instance types to exclude.

*/ inline AwsEc2LaunchTemplateDataInstanceRequirementsDetails& AddExcludedInstanceTypes(const char* value) { m_excludedInstanceTypesHasBeenSet = true; m_excludedInstanceTypes.push_back(value); return *this; } /** *

Indicates whether current or previous generation instance types are * included.

*/ inline const Aws::Vector& GetInstanceGenerations() const{ return m_instanceGenerations; } /** *

Indicates whether current or previous generation instance types are * included.

*/ inline bool InstanceGenerationsHasBeenSet() const { return m_instanceGenerationsHasBeenSet; } /** *

Indicates whether current or previous generation instance types are * included.

*/ inline void SetInstanceGenerations(const Aws::Vector& value) { m_instanceGenerationsHasBeenSet = true; m_instanceGenerations = value; } /** *

Indicates whether current or previous generation instance types are * included.

*/ inline void SetInstanceGenerations(Aws::Vector&& value) { m_instanceGenerationsHasBeenSet = true; m_instanceGenerations = std::move(value); } /** *

Indicates whether current or previous generation instance types are * included.

*/ inline AwsEc2LaunchTemplateDataInstanceRequirementsDetails& WithInstanceGenerations(const Aws::Vector& value) { SetInstanceGenerations(value); return *this;} /** *

Indicates whether current or previous generation instance types are * included.

*/ inline AwsEc2LaunchTemplateDataInstanceRequirementsDetails& WithInstanceGenerations(Aws::Vector&& value) { SetInstanceGenerations(std::move(value)); return *this;} /** *

Indicates whether current or previous generation instance types are * included.

*/ inline AwsEc2LaunchTemplateDataInstanceRequirementsDetails& AddInstanceGenerations(const Aws::String& value) { m_instanceGenerationsHasBeenSet = true; m_instanceGenerations.push_back(value); return *this; } /** *

Indicates whether current or previous generation instance types are * included.

*/ inline AwsEc2LaunchTemplateDataInstanceRequirementsDetails& AddInstanceGenerations(Aws::String&& value) { m_instanceGenerationsHasBeenSet = true; m_instanceGenerations.push_back(std::move(value)); return *this; } /** *

Indicates whether current or previous generation instance types are * included.

*/ inline AwsEc2LaunchTemplateDataInstanceRequirementsDetails& AddInstanceGenerations(const char* value) { m_instanceGenerationsHasBeenSet = true; m_instanceGenerations.push_back(value); return *this; } /** *

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.

*/ inline const Aws::String& GetLocalStorage() const{ return m_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.

*/ inline bool LocalStorageHasBeenSet() const { return m_localStorageHasBeenSet; } /** *

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.

*/ inline void SetLocalStorage(const Aws::String& value) { m_localStorageHasBeenSet = true; m_localStorage = value; } /** *

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.

*/ inline void SetLocalStorage(Aws::String&& value) { m_localStorageHasBeenSet = true; m_localStorage = std::move(value); } /** *

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.

*/ inline void SetLocalStorage(const char* value) { m_localStorageHasBeenSet = true; m_localStorage.assign(value); } /** *

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.

*/ inline AwsEc2LaunchTemplateDataInstanceRequirementsDetails& WithLocalStorage(const Aws::String& value) { SetLocalStorage(value); return *this;} /** *

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.

*/ inline AwsEc2LaunchTemplateDataInstanceRequirementsDetails& WithLocalStorage(Aws::String&& value) { SetLocalStorage(std::move(value)); return *this;} /** *

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.

*/ inline AwsEc2LaunchTemplateDataInstanceRequirementsDetails& WithLocalStorage(const char* value) { SetLocalStorage(value); return *this;} /** *

The type of local storage that is required.

*/ inline const Aws::Vector& GetLocalStorageTypes() const{ return m_localStorageTypes; } /** *

The type of local storage that is required.

*/ inline bool LocalStorageTypesHasBeenSet() const { return m_localStorageTypesHasBeenSet; } /** *

The type of local storage that is required.

*/ inline void SetLocalStorageTypes(const Aws::Vector& value) { m_localStorageTypesHasBeenSet = true; m_localStorageTypes = value; } /** *

The type of local storage that is required.

*/ inline void SetLocalStorageTypes(Aws::Vector&& value) { m_localStorageTypesHasBeenSet = true; m_localStorageTypes = std::move(value); } /** *

The type of local storage that is required.

*/ inline AwsEc2LaunchTemplateDataInstanceRequirementsDetails& WithLocalStorageTypes(const Aws::Vector& value) { SetLocalStorageTypes(value); return *this;} /** *

The type of local storage that is required.

*/ inline AwsEc2LaunchTemplateDataInstanceRequirementsDetails& WithLocalStorageTypes(Aws::Vector&& value) { SetLocalStorageTypes(std::move(value)); return *this;} /** *

The type of local storage that is required.

*/ inline AwsEc2LaunchTemplateDataInstanceRequirementsDetails& AddLocalStorageTypes(const Aws::String& value) { m_localStorageTypesHasBeenSet = true; m_localStorageTypes.push_back(value); return *this; } /** *

The type of local storage that is required.

*/ inline AwsEc2LaunchTemplateDataInstanceRequirementsDetails& AddLocalStorageTypes(Aws::String&& value) { m_localStorageTypesHasBeenSet = true; m_localStorageTypes.push_back(std::move(value)); return *this; } /** *

The type of local storage that is required.

*/ inline AwsEc2LaunchTemplateDataInstanceRequirementsDetails& AddLocalStorageTypes(const char* value) { m_localStorageTypesHasBeenSet = true; m_localStorageTypes.push_back(value); return *this; } /** *

The minimum and maximum amount of memory per vCPU, in GiB.

*/ inline const AwsEc2LaunchTemplateDataInstanceRequirementsMemoryGiBPerVCpuDetails& GetMemoryGiBPerVCpu() const{ return m_memoryGiBPerVCpu; } /** *

The minimum and maximum amount of memory per vCPU, in GiB.

*/ inline bool MemoryGiBPerVCpuHasBeenSet() const { return m_memoryGiBPerVCpuHasBeenSet; } /** *

The minimum and maximum amount of memory per vCPU, in GiB.

*/ inline void SetMemoryGiBPerVCpu(const AwsEc2LaunchTemplateDataInstanceRequirementsMemoryGiBPerVCpuDetails& value) { m_memoryGiBPerVCpuHasBeenSet = true; m_memoryGiBPerVCpu = value; } /** *

The minimum and maximum amount of memory per vCPU, in GiB.

*/ inline void SetMemoryGiBPerVCpu(AwsEc2LaunchTemplateDataInstanceRequirementsMemoryGiBPerVCpuDetails&& value) { m_memoryGiBPerVCpuHasBeenSet = true; m_memoryGiBPerVCpu = std::move(value); } /** *

The minimum and maximum amount of memory per vCPU, in GiB.

*/ inline AwsEc2LaunchTemplateDataInstanceRequirementsDetails& WithMemoryGiBPerVCpu(const AwsEc2LaunchTemplateDataInstanceRequirementsMemoryGiBPerVCpuDetails& value) { SetMemoryGiBPerVCpu(value); return *this;} /** *

The minimum and maximum amount of memory per vCPU, in GiB.

*/ inline AwsEc2LaunchTemplateDataInstanceRequirementsDetails& WithMemoryGiBPerVCpu(AwsEc2LaunchTemplateDataInstanceRequirementsMemoryGiBPerVCpuDetails&& value) { SetMemoryGiBPerVCpu(std::move(value)); return *this;} /** *

The minimum and maximum amount of memory, in MiB.

*/ inline const AwsEc2LaunchTemplateDataInstanceRequirementsMemoryMiBDetails& GetMemoryMiB() const{ return m_memoryMiB; } /** *

The minimum and maximum amount of memory, in MiB.

*/ inline bool MemoryMiBHasBeenSet() const { return m_memoryMiBHasBeenSet; } /** *

The minimum and maximum amount of memory, in MiB.

*/ inline void SetMemoryMiB(const AwsEc2LaunchTemplateDataInstanceRequirementsMemoryMiBDetails& value) { m_memoryMiBHasBeenSet = true; m_memoryMiB = value; } /** *

The minimum and maximum amount of memory, in MiB.

*/ inline void SetMemoryMiB(AwsEc2LaunchTemplateDataInstanceRequirementsMemoryMiBDetails&& value) { m_memoryMiBHasBeenSet = true; m_memoryMiB = std::move(value); } /** *

The minimum and maximum amount of memory, in MiB.

*/ inline AwsEc2LaunchTemplateDataInstanceRequirementsDetails& WithMemoryMiB(const AwsEc2LaunchTemplateDataInstanceRequirementsMemoryMiBDetails& value) { SetMemoryMiB(value); return *this;} /** *

The minimum and maximum amount of memory, in MiB.

*/ inline AwsEc2LaunchTemplateDataInstanceRequirementsDetails& WithMemoryMiB(AwsEc2LaunchTemplateDataInstanceRequirementsMemoryMiBDetails&& value) { SetMemoryMiB(std::move(value)); return *this;} /** *

The minimum and maximum number of network interfaces.

*/ inline const AwsEc2LaunchTemplateDataInstanceRequirementsNetworkInterfaceCountDetails& GetNetworkInterfaceCount() const{ return m_networkInterfaceCount; } /** *

The minimum and maximum number of network interfaces.

*/ inline bool NetworkInterfaceCountHasBeenSet() const { return m_networkInterfaceCountHasBeenSet; } /** *

The minimum and maximum number of network interfaces.

*/ inline void SetNetworkInterfaceCount(const AwsEc2LaunchTemplateDataInstanceRequirementsNetworkInterfaceCountDetails& value) { m_networkInterfaceCountHasBeenSet = true; m_networkInterfaceCount = value; } /** *

The minimum and maximum number of network interfaces.

*/ inline void SetNetworkInterfaceCount(AwsEc2LaunchTemplateDataInstanceRequirementsNetworkInterfaceCountDetails&& value) { m_networkInterfaceCountHasBeenSet = true; m_networkInterfaceCount = std::move(value); } /** *

The minimum and maximum number of network interfaces.

*/ inline AwsEc2LaunchTemplateDataInstanceRequirementsDetails& WithNetworkInterfaceCount(const AwsEc2LaunchTemplateDataInstanceRequirementsNetworkInterfaceCountDetails& value) { SetNetworkInterfaceCount(value); return *this;} /** *

The minimum and maximum number of network interfaces.

*/ inline AwsEc2LaunchTemplateDataInstanceRequirementsDetails& WithNetworkInterfaceCount(AwsEc2LaunchTemplateDataInstanceRequirementsNetworkInterfaceCountDetails&& value) { SetNetworkInterfaceCount(std::move(value)); return *this;} /** *

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.

A high * value, such as 999999, turns off price protection.

*/ inline int GetOnDemandMaxPricePercentageOverLowestPrice() const{ return m_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.

A high * value, such as 999999, turns off price protection.

*/ inline bool OnDemandMaxPricePercentageOverLowestPriceHasBeenSet() const { return m_onDemandMaxPricePercentageOverLowestPriceHasBeenSet; } /** *

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.

A high * value, such as 999999, turns off price protection.

*/ inline void SetOnDemandMaxPricePercentageOverLowestPrice(int value) { m_onDemandMaxPricePercentageOverLowestPriceHasBeenSet = true; m_onDemandMaxPricePercentageOverLowestPrice = value; } /** *

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.

A high * value, such as 999999, turns off price protection.

*/ inline AwsEc2LaunchTemplateDataInstanceRequirementsDetails& WithOnDemandMaxPricePercentageOverLowestPrice(int value) { SetOnDemandMaxPricePercentageOverLowestPrice(value); return *this;} /** *

Indicates whether instance types must support hibernation for On-Demand * Instances.

*/ inline bool GetRequireHibernateSupport() const{ return m_requireHibernateSupport; } /** *

Indicates whether instance types must support hibernation for On-Demand * Instances.

*/ inline bool RequireHibernateSupportHasBeenSet() const { return m_requireHibernateSupportHasBeenSet; } /** *

Indicates whether instance types must support hibernation for On-Demand * Instances.

*/ inline void SetRequireHibernateSupport(bool value) { m_requireHibernateSupportHasBeenSet = true; m_requireHibernateSupport = value; } /** *

Indicates whether instance types must support hibernation for On-Demand * Instances.

*/ inline AwsEc2LaunchTemplateDataInstanceRequirementsDetails& WithRequireHibernateSupport(bool value) { SetRequireHibernateSupport(value); return *this;} /** *

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.

A high * value, such as 999999, turns off price protection.

*/ inline int GetSpotMaxPricePercentageOverLowestPrice() const{ return m_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.

A high * value, such as 999999, turns off price protection.

*/ inline bool SpotMaxPricePercentageOverLowestPriceHasBeenSet() const { return m_spotMaxPricePercentageOverLowestPriceHasBeenSet; } /** *

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.

A high * value, such as 999999, turns off price protection.

*/ inline void SetSpotMaxPricePercentageOverLowestPrice(int value) { m_spotMaxPricePercentageOverLowestPriceHasBeenSet = true; m_spotMaxPricePercentageOverLowestPrice = value; } /** *

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.

A high * value, such as 999999, turns off price protection.

*/ inline AwsEc2LaunchTemplateDataInstanceRequirementsDetails& WithSpotMaxPricePercentageOverLowestPrice(int value) { SetSpotMaxPricePercentageOverLowestPrice(value); return *this;} /** *

The minimum and maximum amount of total local storage, in GB.

*/ inline const AwsEc2LaunchTemplateDataInstanceRequirementsTotalLocalStorageGBDetails& GetTotalLocalStorageGB() const{ return m_totalLocalStorageGB; } /** *

The minimum and maximum amount of total local storage, in GB.

*/ inline bool TotalLocalStorageGBHasBeenSet() const { return m_totalLocalStorageGBHasBeenSet; } /** *

The minimum and maximum amount of total local storage, in GB.

*/ inline void SetTotalLocalStorageGB(const AwsEc2LaunchTemplateDataInstanceRequirementsTotalLocalStorageGBDetails& value) { m_totalLocalStorageGBHasBeenSet = true; m_totalLocalStorageGB = value; } /** *

The minimum and maximum amount of total local storage, in GB.

*/ inline void SetTotalLocalStorageGB(AwsEc2LaunchTemplateDataInstanceRequirementsTotalLocalStorageGBDetails&& value) { m_totalLocalStorageGBHasBeenSet = true; m_totalLocalStorageGB = std::move(value); } /** *

The minimum and maximum amount of total local storage, in GB.

*/ inline AwsEc2LaunchTemplateDataInstanceRequirementsDetails& WithTotalLocalStorageGB(const AwsEc2LaunchTemplateDataInstanceRequirementsTotalLocalStorageGBDetails& value) { SetTotalLocalStorageGB(value); return *this;} /** *

The minimum and maximum amount of total local storage, in GB.

*/ inline AwsEc2LaunchTemplateDataInstanceRequirementsDetails& WithTotalLocalStorageGB(AwsEc2LaunchTemplateDataInstanceRequirementsTotalLocalStorageGBDetails&& value) { SetTotalLocalStorageGB(std::move(value)); return *this;} /** *

The minimum and maximum number of vCPUs.

*/ inline const AwsEc2LaunchTemplateDataInstanceRequirementsVCpuCountDetails& GetVCpuCount() const{ return m_vCpuCount; } /** *

The minimum and maximum number of vCPUs.

*/ inline bool VCpuCountHasBeenSet() const { return m_vCpuCountHasBeenSet; } /** *

The minimum and maximum number of vCPUs.

*/ inline void SetVCpuCount(const AwsEc2LaunchTemplateDataInstanceRequirementsVCpuCountDetails& value) { m_vCpuCountHasBeenSet = true; m_vCpuCount = value; } /** *

The minimum and maximum number of vCPUs.

*/ inline void SetVCpuCount(AwsEc2LaunchTemplateDataInstanceRequirementsVCpuCountDetails&& value) { m_vCpuCountHasBeenSet = true; m_vCpuCount = std::move(value); } /** *

The minimum and maximum number of vCPUs.

*/ inline AwsEc2LaunchTemplateDataInstanceRequirementsDetails& WithVCpuCount(const AwsEc2LaunchTemplateDataInstanceRequirementsVCpuCountDetails& value) { SetVCpuCount(value); return *this;} /** *

The minimum and maximum number of vCPUs.

*/ inline AwsEc2LaunchTemplateDataInstanceRequirementsDetails& WithVCpuCount(AwsEc2LaunchTemplateDataInstanceRequirementsVCpuCountDetails&& value) { SetVCpuCount(std::move(value)); return *this;} private: AwsEc2LaunchTemplateDataInstanceRequirementsAcceleratorCountDetails m_acceleratorCount; bool m_acceleratorCountHasBeenSet = false; Aws::Vector m_acceleratorManufacturers; bool m_acceleratorManufacturersHasBeenSet = false; Aws::Vector m_acceleratorNames; bool m_acceleratorNamesHasBeenSet = false; AwsEc2LaunchTemplateDataInstanceRequirementsAcceleratorTotalMemoryMiBDetails m_acceleratorTotalMemoryMiB; bool m_acceleratorTotalMemoryMiBHasBeenSet = false; Aws::Vector m_acceleratorTypes; bool m_acceleratorTypesHasBeenSet = false; Aws::String m_bareMetal; bool m_bareMetalHasBeenSet = false; AwsEc2LaunchTemplateDataInstanceRequirementsBaselineEbsBandwidthMbpsDetails m_baselineEbsBandwidthMbps; bool m_baselineEbsBandwidthMbpsHasBeenSet = false; Aws::String m_burstablePerformance; bool m_burstablePerformanceHasBeenSet = false; Aws::Vector m_cpuManufacturers; bool m_cpuManufacturersHasBeenSet = false; Aws::Vector m_excludedInstanceTypes; bool m_excludedInstanceTypesHasBeenSet = false; Aws::Vector m_instanceGenerations; bool m_instanceGenerationsHasBeenSet = false; Aws::String m_localStorage; bool m_localStorageHasBeenSet = false; Aws::Vector m_localStorageTypes; bool m_localStorageTypesHasBeenSet = false; AwsEc2LaunchTemplateDataInstanceRequirementsMemoryGiBPerVCpuDetails m_memoryGiBPerVCpu; bool m_memoryGiBPerVCpuHasBeenSet = false; AwsEc2LaunchTemplateDataInstanceRequirementsMemoryMiBDetails m_memoryMiB; bool m_memoryMiBHasBeenSet = false; AwsEc2LaunchTemplateDataInstanceRequirementsNetworkInterfaceCountDetails m_networkInterfaceCount; bool m_networkInterfaceCountHasBeenSet = false; int m_onDemandMaxPricePercentageOverLowestPrice; bool m_onDemandMaxPricePercentageOverLowestPriceHasBeenSet = false; bool m_requireHibernateSupport; bool m_requireHibernateSupportHasBeenSet = false; int m_spotMaxPricePercentageOverLowestPrice; bool m_spotMaxPricePercentageOverLowestPriceHasBeenSet = false; AwsEc2LaunchTemplateDataInstanceRequirementsTotalLocalStorageGBDetails m_totalLocalStorageGB; bool m_totalLocalStorageGBHasBeenSet = false; AwsEc2LaunchTemplateDataInstanceRequirementsVCpuCountDetails m_vCpuCount; bool m_vCpuCountHasBeenSet = false; }; } // namespace Model } // namespace SecurityHub } // namespace Aws