import * as core from "@terrascript/core"; export interface TargetCapacitySpecificationArgs extends core.SchemaArgs { defaultTargetCapacityType: string | core.StringOut; onDemandTargetCapacity?: number | core.NumberOut; spotTargetCapacity?: number | core.NumberOut; totalTargetCapacity: number | core.NumberOut; } export class TargetCapacitySpecification extends core.Schema { @core.attr(String) public defaultTargetCapacityType!: string | core.StringOut; @core.attr(Number) public onDemandTargetCapacity?: number | core.NumberOut; @core.attr(Number) public spotTargetCapacity?: number | core.NumberOut; @core.attr(Number) public totalTargetCapacity!: number | core.NumberOut; } export interface MemoryGibPerVcpuArgs extends core.SchemaArgs { max?: number | core.NumberOut; min?: number | core.NumberOut; } export class MemoryGibPerVcpu extends core.Schema { @core.attr(Number) public max?: number | core.NumberOut; @core.attr(Number) public min?: number | core.NumberOut; } export interface AcceleratorCountArgs extends core.SchemaArgs { max?: number | core.NumberOut; min?: number | core.NumberOut; } export class AcceleratorCount extends core.Schema { @core.attr(Number) public max?: number | core.NumberOut; @core.attr(Number) public min?: number | core.NumberOut; } export interface VcpuCountArgs extends core.SchemaArgs { max?: number | core.NumberOut; min: number | core.NumberOut; } export class VcpuCount extends core.Schema { @core.attr(Number) public max?: number | core.NumberOut; @core.attr(Number) public min!: number | core.NumberOut; } export interface AcceleratorTotalMemoryMibArgs extends core.SchemaArgs { max?: number | core.NumberOut; min?: number | core.NumberOut; } export class AcceleratorTotalMemoryMib extends core.Schema { @core.attr(Number) public max?: number | core.NumberOut; @core.attr(Number) public min?: number | core.NumberOut; } export interface MemoryMibArgs extends core.SchemaArgs { max?: number | core.NumberOut; min: number | core.NumberOut; } export class MemoryMib extends core.Schema { @core.attr(Number) public max?: number | core.NumberOut; @core.attr(Number) public min!: number | core.NumberOut; } export interface NetworkInterfaceCountArgs extends core.SchemaArgs { max?: number | core.NumberOut; min?: number | core.NumberOut; } export class NetworkInterfaceCount extends core.Schema { @core.attr(Number) public max?: number | core.NumberOut; @core.attr(Number) public min?: number | core.NumberOut; } export interface BaselineEbsBandwidthMbpsArgs extends core.SchemaArgs { max?: number | core.NumberOut; min?: number | core.NumberOut; } export class BaselineEbsBandwidthMbps extends core.Schema { @core.attr(Number) public max?: number | core.NumberOut; @core.attr(Number) public min?: number | core.NumberOut; } export interface TotalLocalStorageGbArgs extends core.SchemaArgs { max?: number | core.NumberOut; min?: number | core.NumberOut; } export class TotalLocalStorageGb extends core.Schema { @core.attr(Number) public max?: number | core.NumberOut; @core.attr(Number) public min?: number | core.NumberOut; } export interface InstanceRequirementsArgs extends core.SchemaArgs { acceleratorCount?: AcceleratorCount; acceleratorManufacturers?: core.Array | core.ArrayOut; acceleratorNames?: core.Array | core.ArrayOut; acceleratorTotalMemoryMib?: AcceleratorTotalMemoryMib; acceleratorTypes?: core.Array | core.ArrayOut; bareMetal?: string | core.StringOut; baselineEbsBandwidthMbps?: BaselineEbsBandwidthMbps; burstablePerformance?: string | core.StringOut; cpuManufacturers?: core.Array | core.ArrayOut; excludedInstanceTypes?: core.Array | core.ArrayOut; instanceGenerations?: core.Array | core.ArrayOut; localStorage?: string | core.StringOut; localStorageTypes?: core.Array | core.ArrayOut; memoryGibPerVcpu?: MemoryGibPerVcpu; memoryMib: MemoryMib; networkInterfaceCount?: NetworkInterfaceCount; onDemandMaxPricePercentageOverLowestPrice?: number | core.NumberOut; requireHibernateSupport?: boolean | core.BooleanOut; spotMaxPricePercentageOverLowestPrice?: number | core.NumberOut; totalLocalStorageGb?: TotalLocalStorageGb; vcpuCount: VcpuCount; } export class InstanceRequirements extends core.Schema { @core.attr(AcceleratorCount) public acceleratorCount?: AcceleratorCount; @core.attr(String, { kind: "array" }) public acceleratorManufacturers?: | core.Array | core.ArrayOut; @core.attr(String, { kind: "array" }) public acceleratorNames?: core.Array | core.ArrayOut; @core.attr(AcceleratorTotalMemoryMib) public acceleratorTotalMemoryMib?: AcceleratorTotalMemoryMib; @core.attr(String, { kind: "array" }) public acceleratorTypes?: core.Array | core.ArrayOut; @core.attr(String) public bareMetal?: string | core.StringOut; @core.attr(BaselineEbsBandwidthMbps) public baselineEbsBandwidthMbps?: BaselineEbsBandwidthMbps; @core.attr(String) public burstablePerformance?: string | core.StringOut; @core.attr(String, { kind: "array" }) public cpuManufacturers?: core.Array | core.ArrayOut; @core.attr(String, { kind: "array" }) public excludedInstanceTypes?: | core.Array | core.ArrayOut; @core.attr(String, { kind: "array" }) public instanceGenerations?: | core.Array | core.ArrayOut; @core.attr(String) public localStorage?: string | core.StringOut; @core.attr(String, { kind: "array" }) public localStorageTypes?: core.Array | core.ArrayOut; @core.attr(MemoryGibPerVcpu) public memoryGibPerVcpu?: MemoryGibPerVcpu; @core.attr(MemoryMib) public memoryMib!: MemoryMib; @core.attr(NetworkInterfaceCount) public networkInterfaceCount?: NetworkInterfaceCount; @core.attr(Number) public onDemandMaxPricePercentageOverLowestPrice?: number | core.NumberOut; @core.attr(Boolean) public requireHibernateSupport?: boolean | core.BooleanOut; @core.attr(Number) public spotMaxPricePercentageOverLowestPrice?: number | core.NumberOut; @core.attr(TotalLocalStorageGb) public totalLocalStorageGb?: TotalLocalStorageGb; @core.attr(VcpuCount) public vcpuCount!: VcpuCount; } export interface OverrideArgs extends core.SchemaArgs { availabilityZone?: string | core.StringOut; instanceRequirements?: InstanceRequirements; instanceType?: string | core.StringOut; maxPrice?: string | core.StringOut; priority?: number | core.NumberOut; subnetId?: string | core.StringOut; weightedCapacity?: number | core.NumberOut; } export class Override extends core.Schema { @core.attr(String) public availabilityZone?: string | core.StringOut; @core.attr(InstanceRequirements) public instanceRequirements?: InstanceRequirements; @core.attr(String) public instanceType?: string | core.StringOut; @core.attr(String) public maxPrice?: string | core.StringOut; @core.attr(Number) public priority?: number | core.NumberOut; @core.attr(String) public subnetId?: string | core.StringOut; @core.attr(Number) public weightedCapacity?: number | core.NumberOut; } export interface LaunchTemplateSpecificationArgs extends core.SchemaArgs { launchTemplateId?: string | core.StringOut; launchTemplateName?: string | core.StringOut; version: string | core.StringOut; } export class LaunchTemplateSpecification extends core.Schema { @core.attr(String) public launchTemplateId?: string | core.StringOut; @core.attr(String) public launchTemplateName?: string | core.StringOut; @core.attr(String) public version!: string | core.StringOut; } export interface LaunchTemplateConfigArgs extends core.SchemaArgs { launchTemplateSpecification: LaunchTemplateSpecification; override?: core.Array | core.ArrayOut; } export class LaunchTemplateConfig extends core.Schema { @core.attr(LaunchTemplateSpecification) public launchTemplateSpecification!: LaunchTemplateSpecification; @core.attr(Override, { kind: "array" }) public override?: core.Array | core.ArrayOut; } export interface CapacityRebalanceArgs extends core.SchemaArgs { replacementStrategy?: string | core.StringOut; } export class CapacityRebalance extends core.Schema { @core.attr(String) public replacementStrategy?: string | core.StringOut; } export interface MaintenanceStrategiesArgs extends core.SchemaArgs { capacityRebalance?: CapacityRebalance; } export class MaintenanceStrategies extends core.Schema { @core.attr(CapacityRebalance) public capacityRebalance?: CapacityRebalance; } export interface SpotOptionsArgs extends core.SchemaArgs { allocationStrategy?: string | core.StringOut; instanceInterruptionBehavior?: string | core.StringOut; instancePoolsToUseCount?: number | core.NumberOut; maintenanceStrategies?: MaintenanceStrategies; } export class SpotOptions extends core.Schema { @core.attr(String) public allocationStrategy?: string | core.StringOut; @core.attr(String) public instanceInterruptionBehavior?: string | core.StringOut; @core.attr(Number) public instancePoolsToUseCount?: number | core.NumberOut; @core.attr(MaintenanceStrategies) public maintenanceStrategies?: MaintenanceStrategies; } export interface OnDemandOptionsArgs extends core.SchemaArgs { allocationStrategy?: string | core.StringOut; } export class OnDemandOptions extends core.Schema { @core.attr(String) public allocationStrategy?: string | core.StringOut; } export interface FleetArgs extends core.ResourceArgs { /** * (Optional) Reserved. */ context?: string | core.StringOut; /** * (Optional) Whether running instances should be terminated if the total target capacity of the EC2 Fl * eet is decreased below the current size of the EC2. Valid values: `no-termination`, `termination`. D * efaults to `termination`. */ excessCapacityTerminationPolicy?: string | core.StringOut; /** * (Required) Nested argument containing EC2 Launch Template configurations. Defined below. */ launchTemplateConfig: LaunchTemplateConfig; /** * (Optional) Nested argument containing On-Demand configurations. Defined below. */ onDemandOptions?: OnDemandOptions; /** * (Optional) Whether EC2 Fleet should replace unhealthy instances. Defaults to `false`. */ replaceUnhealthyInstances?: boolean | core.BooleanOut; /** * (Optional) Nested argument containing Spot configurations. Defined below. */ spotOptions?: SpotOptions; /** * (Optional) Map of Fleet tags. To tag instances at launch, specify the tags in the Launch Template. I * f configured with a provider [`default_tags` configuration block](https://registry.terraform.io/prov * iders/hashicorp/aws/latest/docs#default_tags-configuration-block) present, tags with matching keys w * ill overwrite those defined at the provider-level. */ tags?: core.Map | core.MapOut; /** * A map of tags assigned to the resource, including those inherited from the provider [`default_tags` * configuration block](https://registry.terraform.io/providers/hashicorp/aws/latest/docs#default_tags- * configuration-block). */ tagsAll?: core.Map | core.MapOut; /** * (Required) Nested argument containing target capacity configurations. Defined below. */ targetCapacitySpecification: TargetCapacitySpecification; /** * (Optional) Whether to terminate instances for an EC2 Fleet if it is deleted successfully. Defaults t * o `false`. */ terminateInstances?: boolean | core.BooleanOut; /** * (Optional) Whether running instances should be terminated when the EC2 Fleet expires. Defaults to `f * alse`. */ terminateInstancesWithExpiration?: boolean | core.BooleanOut; /** * (Optional) The type of request. Indicates whether the EC2 Fleet only requests the target capacity, o * r also attempts to maintain it. Valid values: `maintain`, `request`. Defaults to `maintain`. */ type?: string | core.StringOut; } export class Fleet extends core.Resource { /** * The ARN of the fleet */ @core.attr(String, { computed: true }) public arn!: string | core.StringOut; /** * (Optional) Reserved. */ @core.attr(String) public context?: string | core.StringOut; /** * (Optional) Whether running instances should be terminated if the total target capacity of the EC2 Fl * eet is decreased below the current size of the EC2. Valid values: `no-termination`, `termination`. D * efaults to `termination`. */ @core.attr(String) public excessCapacityTerminationPolicy?: string | core.StringOut; /** * Fleet identifier */ @core.attr(String, { computed: true }) public id!: string | core.StringOut; /** * (Required) Nested argument containing EC2 Launch Template configurations. Defined below. */ @core.attr(LaunchTemplateConfig) public launchTemplateConfig!: LaunchTemplateConfig; /** * (Optional) Nested argument containing On-Demand configurations. Defined below. */ @core.attr(OnDemandOptions) public onDemandOptions?: OnDemandOptions; /** * (Optional) Whether EC2 Fleet should replace unhealthy instances. Defaults to `false`. */ @core.attr(Boolean) public replaceUnhealthyInstances?: boolean | core.BooleanOut; /** * (Optional) Nested argument containing Spot configurations. Defined below. */ @core.attr(SpotOptions) public spotOptions?: SpotOptions; /** * (Optional) Map of Fleet tags. To tag instances at launch, specify the tags in the Launch Template. I * f configured with a provider [`default_tags` configuration block](https://registry.terraform.io/prov * iders/hashicorp/aws/latest/docs#default_tags-configuration-block) present, tags with matching keys w * ill overwrite those defined at the provider-level. */ @core.attr(String, { kind: "map" }) public tags?: core.Map | core.MapOut; /** * A map of tags assigned to the resource, including those inherited from the provider [`default_tags` * configuration block](https://registry.terraform.io/providers/hashicorp/aws/latest/docs#default_tags- * configuration-block). */ @core.attr(String, { computed: true, kind: "map" }) public tagsAll?: core.Map | core.MapOut; /** * (Required) Nested argument containing target capacity configurations. Defined below. */ @core.attr(TargetCapacitySpecification) public targetCapacitySpecification!: TargetCapacitySpecification; /** * (Optional) Whether to terminate instances for an EC2 Fleet if it is deleted successfully. Defaults t * o `false`. */ @core.attr(Boolean) public terminateInstances?: boolean | core.BooleanOut; /** * (Optional) Whether running instances should be terminated when the EC2 Fleet expires. Defaults to `f * alse`. */ @core.attr(Boolean) public terminateInstancesWithExpiration?: boolean | core.BooleanOut; /** * (Optional) The type of request. Indicates whether the EC2 Fleet only requests the target capacity, o * r also attempts to maintain it. Valid values: `maintain`, `request`. Defaults to `maintain`. */ @core.attr(String) public type?: string | core.StringOut; constructor(name: string, args?: FleetArgs) { super(name, "aws_ec2_fleet", args); } public override getNamespace(): string { return "aws_ec2"; } }