import * as core from "@terrascript/core"; export interface LaunchTemplateArgs extends core.SchemaArgs { id?: string | core.StringOut; name?: string | core.StringOut; version?: string | core.StringOut; } export class LaunchTemplate extends core.Schema { @core.attr(String, { computed: true }) public id?: string | core.StringOut; @core.attr(String, { computed: true }) public name?: string | core.StringOut; @core.attr(String) public version?: string | core.StringOut; } export interface EbsBlockDeviceArgs extends core.SchemaArgs { deleteOnTermination?: boolean | core.BooleanOut; deviceName: string | core.StringOut; encrypted?: boolean | core.BooleanOut; iops?: number | core.NumberOut; kmsKeyId?: string | core.StringOut; snapshotId?: string | core.StringOut; tags?: core.Map | core.MapOut; throughput?: number | core.NumberOut; volumeId: string | core.StringOut; volumeSize?: number | core.NumberOut; volumeType?: string | core.StringOut; } export class EbsBlockDevice extends core.Schema { @core.attr(Boolean) public deleteOnTermination?: boolean | core.BooleanOut; @core.attr(String) public deviceName!: string | core.StringOut; @core.attr(Boolean, { computed: true }) public encrypted?: boolean | core.BooleanOut; @core.attr(Number, { computed: true }) public iops?: number | core.NumberOut; @core.attr(String, { computed: true }) public kmsKeyId?: string | core.StringOut; @core.attr(String, { computed: true }) public snapshotId?: string | core.StringOut; @core.attr(String, { kind: "map" }) public tags?: core.Map | core.MapOut; @core.attr(Number, { computed: true }) public throughput?: number | core.NumberOut; @core.attr(String, { computed: true }) public volumeId!: string | core.StringOut; @core.attr(Number, { computed: true }) public volumeSize?: number | core.NumberOut; @core.attr(String, { computed: true }) public volumeType?: string | core.StringOut; } export interface EphemeralBlockDeviceArgs extends core.SchemaArgs { deviceName: string | core.StringOut; noDevice?: boolean | core.BooleanOut; virtualName?: string | core.StringOut; } export class EphemeralBlockDevice extends core.Schema { @core.attr(String) public deviceName!: string | core.StringOut; @core.attr(Boolean) public noDevice?: boolean | core.BooleanOut; @core.attr(String) public virtualName?: string | core.StringOut; } export interface CreditSpecificationArgs extends core.SchemaArgs { cpuCredits?: string | core.StringOut; } export class CreditSpecification extends core.Schema { @core.attr(String) public cpuCredits?: string | core.StringOut; } export interface EnclaveOptionsArgs extends core.SchemaArgs { enabled?: boolean | core.BooleanOut; } export class EnclaveOptions extends core.Schema { @core.attr(Boolean, { computed: true }) public enabled?: boolean | core.BooleanOut; } export interface CapacityReservationTargetArgs extends core.SchemaArgs { capacityReservationId?: string | core.StringOut; capacityReservationResourceGroupArn?: string | core.StringOut; } export class CapacityReservationTarget extends core.Schema { @core.attr(String) public capacityReservationId?: string | core.StringOut; @core.attr(String) public capacityReservationResourceGroupArn?: string | core.StringOut; } export interface CapacityReservationSpecificationArgs extends core.SchemaArgs { capacityReservationPreference?: string | core.StringOut; capacityReservationTarget?: CapacityReservationTarget; } export class CapacityReservationSpecification extends core.Schema { @core.attr(String) public capacityReservationPreference?: string | core.StringOut; @core.attr(CapacityReservationTarget) public capacityReservationTarget?: CapacityReservationTarget; } export interface MaintenanceOptionsArgs extends core.SchemaArgs { autoRecovery?: string | core.StringOut; } export class MaintenanceOptions extends core.Schema { @core.attr(String, { computed: true }) public autoRecovery?: string | core.StringOut; } export interface PrivateDnsNameOptionsArgs extends core.SchemaArgs { enableResourceNameDnsARecord?: boolean | core.BooleanOut; enableResourceNameDnsAaaaRecord?: boolean | core.BooleanOut; hostnameType?: string | core.StringOut; } export class PrivateDnsNameOptions extends core.Schema { @core.attr(Boolean, { computed: true }) public enableResourceNameDnsARecord?: boolean | core.BooleanOut; @core.attr(Boolean, { computed: true }) public enableResourceNameDnsAaaaRecord?: boolean | core.BooleanOut; @core.attr(String, { computed: true }) public hostnameType?: string | core.StringOut; } export interface MetadataOptionsArgs extends core.SchemaArgs { httpEndpoint?: string | core.StringOut; httpPutResponseHopLimit?: number | core.NumberOut; httpTokens?: string | core.StringOut; instanceMetadataTags?: string | core.StringOut; } export class MetadataOptions extends core.Schema { @core.attr(String, { computed: true }) public httpEndpoint?: string | core.StringOut; @core.attr(Number, { computed: true }) public httpPutResponseHopLimit?: number | core.NumberOut; @core.attr(String, { computed: true }) public httpTokens?: string | core.StringOut; @core.attr(String) public instanceMetadataTags?: string | core.StringOut; } export interface NetworkInterfaceArgs extends core.SchemaArgs { deleteOnTermination?: boolean | core.BooleanOut; deviceIndex: number | core.NumberOut; networkCardIndex?: number | core.NumberOut; networkInterfaceId: string | core.StringOut; } export class NetworkInterface extends core.Schema { @core.attr(Boolean) public deleteOnTermination?: boolean | core.BooleanOut; @core.attr(Number) public deviceIndex!: number | core.NumberOut; @core.attr(Number) public networkCardIndex?: number | core.NumberOut; @core.attr(String) public networkInterfaceId!: string | core.StringOut; } export interface RootBlockDeviceArgs extends core.SchemaArgs { deleteOnTermination?: boolean | core.BooleanOut; deviceName: string | core.StringOut; encrypted?: boolean | core.BooleanOut; iops?: number | core.NumberOut; kmsKeyId?: string | core.StringOut; tags?: core.Map | core.MapOut; throughput?: number | core.NumberOut; volumeId: string | core.StringOut; volumeSize?: number | core.NumberOut; volumeType?: string | core.StringOut; } export class RootBlockDevice extends core.Schema { @core.attr(Boolean) public deleteOnTermination?: boolean | core.BooleanOut; @core.attr(String, { computed: true }) public deviceName!: string | core.StringOut; @core.attr(Boolean, { computed: true }) public encrypted?: boolean | core.BooleanOut; @core.attr(Number, { computed: true }) public iops?: number | core.NumberOut; @core.attr(String, { computed: true }) public kmsKeyId?: string | core.StringOut; @core.attr(String, { kind: "map" }) public tags?: core.Map | core.MapOut; @core.attr(Number, { computed: true }) public throughput?: number | core.NumberOut; @core.attr(String, { computed: true }) public volumeId!: string | core.StringOut; @core.attr(Number, { computed: true }) public volumeSize?: number | core.NumberOut; @core.attr(String, { computed: true }) public volumeType?: string | core.StringOut; } export interface SpotInstanceRequestArgs extends core.ResourceArgs { ami?: string | core.StringOut; associatePublicIpAddress?: boolean | core.BooleanOut; availabilityZone?: string | core.StringOut; /** * (Optional) The required duration for the Spot instances, in minutes. This value must be a multiple o * f 60 (60, 120, 180, 240, 300, or 360). */ blockDurationMinutes?: number | core.NumberOut; capacityReservationSpecification?: CapacityReservationSpecification; cpuCoreCount?: number | core.NumberOut; cpuThreadsPerCore?: number | core.NumberOut; creditSpecification?: CreditSpecification; disableApiStop?: boolean | core.BooleanOut; disableApiTermination?: boolean | core.BooleanOut; ebsBlockDevice?: core.Array | core.ArrayOut; ebsOptimized?: boolean | core.BooleanOut; enclaveOptions?: EnclaveOptions; ephemeralBlockDevice?: | core.Array | core.ArrayOut; getPasswordData?: boolean | core.BooleanOut; hibernation?: boolean | core.BooleanOut; hostId?: string | core.StringOut; iamInstanceProfile?: string | core.StringOut; instanceInitiatedShutdownBehavior?: string | core.StringOut; /** * (Optional) Indicates Spot instance behavior when it is interrupted. Valid values are `terminate`, `s * top`, or `hibernate`. Default value is `terminate`. */ instanceInterruptionBehavior?: string | core.StringOut; instanceType?: string | core.StringOut; ipv6AddressCount?: number | core.NumberOut; ipv6Addresses?: core.Array | core.ArrayOut; keyName?: string | core.StringOut; /** * (Optional) A launch group is a group of spot instances that launch together and terminate together. */ launchGroup?: string | core.StringOut; launchTemplate?: LaunchTemplate; maintenanceOptions?: MaintenanceOptions; metadataOptions?: MetadataOptions; monitoring?: boolean | core.BooleanOut; networkInterface?: | core.Array | core.ArrayOut; placementGroup?: string | core.StringOut; placementPartitionNumber?: number | core.NumberOut; privateDnsNameOptions?: PrivateDnsNameOptions; /** * The private IP address assigned to the instance */ privateIp?: string | core.StringOut; rootBlockDevice?: RootBlockDevice; secondaryPrivateIps?: core.Array | core.ArrayOut; securityGroups?: core.Array | core.ArrayOut; sourceDestCheck?: boolean | core.BooleanOut; /** * (Optional; Default: On-demand price) The maximum price to request on the spot market. */ spotPrice?: string | core.StringOut; /** * (Optional; Default: `persistent`) If set to `one-time`, after */ spotType?: string | core.StringOut; subnetId?: string | core.StringOut; /** * (Optional) A map of tags to assign to the Spot Instance Request. These tags are not automatically ap * plied to the launched Instance. If configured with a provider [`default_tags` configuration block](h * ttps://registry.terraform.io/providers/hashicorp/aws/latest/docs#default_tags-configuration-block) p * resent, tags with matching keys will 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; tenancy?: string | core.StringOut; userData?: string | core.StringOut; userDataBase64?: string | core.StringOut; userDataReplaceOnChange?: boolean | core.BooleanOut; /** * (Optional) The start date and time of the request, in UTC [RFC3339](https://tools.ietf.org/html/rfc3 * 339#section-5.8) format(for example, YYYY-MM-DDTHH:MM:SSZ). The default is to start fulfilling the r * equest immediately. */ validFrom?: string | core.StringOut; /** * (Optional) The end date and time of the request, in UTC [RFC3339](https://tools.ietf.org/html/rfc333 * 9#section-5.8) format(for example, YYYY-MM-DDTHH:MM:SSZ). At this point, no new Spot instance reques * ts are placed or enabled to fulfill the request. The default end date is 7 days from the current dat * e. */ validUntil?: string | core.StringOut; volumeTags?: core.Map | core.MapOut; vpcSecurityGroupIds?: core.Array | core.ArrayOut; /** * (Optional; Default: false) If set, Terraform will */ waitForFulfillment?: boolean | core.BooleanOut; } export class SpotInstanceRequest extends core.Resource { @core.attr(String, { computed: true }) public ami?: string | core.StringOut; @core.attr(String, { computed: true }) public arn!: string | core.StringOut; @core.attr(Boolean, { computed: true }) public associatePublicIpAddress?: boolean | core.BooleanOut; @core.attr(String, { computed: true }) public availabilityZone?: string | core.StringOut; /** * (Optional) The required duration for the Spot instances, in minutes. This value must be a multiple o * f 60 (60, 120, 180, 240, 300, or 360). */ @core.attr(Number) public blockDurationMinutes?: number | core.NumberOut; @core.attr(CapacityReservationSpecification, { computed: true }) public capacityReservationSpecification?: CapacityReservationSpecification; @core.attr(Number, { computed: true }) public cpuCoreCount?: number | core.NumberOut; @core.attr(Number, { computed: true }) public cpuThreadsPerCore?: number | core.NumberOut; @core.attr(CreditSpecification) public creditSpecification?: CreditSpecification; @core.attr(Boolean, { computed: true }) public disableApiStop?: boolean | core.BooleanOut; @core.attr(Boolean, { computed: true }) public disableApiTermination?: boolean | core.BooleanOut; @core.attr(EbsBlockDevice, { computed: true, kind: "array" }) public ebsBlockDevice?: | core.Array | core.ArrayOut; @core.attr(Boolean, { computed: true }) public ebsOptimized?: boolean | core.BooleanOut; @core.attr(EnclaveOptions, { computed: true }) public enclaveOptions?: EnclaveOptions; @core.attr(EphemeralBlockDevice, { computed: true, kind: "array" }) public ephemeralBlockDevice?: | core.Array | core.ArrayOut; @core.attr(Boolean) public getPasswordData?: boolean | core.BooleanOut; @core.attr(Boolean) public hibernation?: boolean | core.BooleanOut; @core.attr(String, { computed: true }) public hostId?: string | core.StringOut; @core.attr(String) public iamInstanceProfile?: string | core.StringOut; /** * The Spot Instance Request ID. */ @core.attr(String, { computed: true }) public id!: string | core.StringOut; @core.attr(String, { computed: true }) public instanceInitiatedShutdownBehavior?: string | core.StringOut; /** * (Optional) Indicates Spot instance behavior when it is interrupted. Valid values are `terminate`, `s * top`, or `hibernate`. Default value is `terminate`. */ @core.attr(String) public instanceInterruptionBehavior?: string | core.StringOut; @core.attr(String, { computed: true }) public instanceState!: string | core.StringOut; @core.attr(String, { computed: true }) public instanceType?: string | core.StringOut; @core.attr(Number, { computed: true }) public ipv6AddressCount?: number | core.NumberOut; @core.attr(String, { computed: true, kind: "array" }) public ipv6Addresses?: core.Array | core.ArrayOut; @core.attr(String, { computed: true }) public keyName?: string | core.StringOut; /** * (Optional) A launch group is a group of spot instances that launch together and terminate together. */ @core.attr(String) public launchGroup?: string | core.StringOut; @core.attr(LaunchTemplate) public launchTemplate?: LaunchTemplate; @core.attr(MaintenanceOptions, { computed: true }) public maintenanceOptions?: MaintenanceOptions; @core.attr(MetadataOptions, { computed: true }) public metadataOptions?: MetadataOptions; @core.attr(Boolean, { computed: true }) public monitoring?: boolean | core.BooleanOut; @core.attr(NetworkInterface, { computed: true, kind: "array" }) public networkInterface?: | core.Array | core.ArrayOut; @core.attr(String, { computed: true }) public outpostArn!: string | core.StringOut; @core.attr(String, { computed: true }) public passwordData!: string | core.StringOut; @core.attr(String, { computed: true }) public placementGroup?: string | core.StringOut; @core.attr(Number, { computed: true }) public placementPartitionNumber?: number | core.NumberOut; @core.attr(String, { computed: true }) public primaryNetworkInterfaceId!: string | core.StringOut; /** * The private DNS name assigned to the instance. Can only be */ @core.attr(String, { computed: true }) public privateDns!: string | core.StringOut; @core.attr(PrivateDnsNameOptions, { computed: true }) public privateDnsNameOptions?: PrivateDnsNameOptions; /** * The private IP address assigned to the instance */ @core.attr(String, { computed: true }) public privateIp?: string | core.StringOut; /** * The public DNS name assigned to the instance. For EC2-VPC, this */ @core.attr(String, { computed: true }) public publicDns!: string | core.StringOut; /** * The public IP address assigned to the instance, if applicable. */ @core.attr(String, { computed: true }) public publicIp!: string | core.StringOut; @core.attr(RootBlockDevice, { computed: true }) public rootBlockDevice?: RootBlockDevice; @core.attr(String, { computed: true, kind: "array" }) public secondaryPrivateIps?: | core.Array | core.ArrayOut; @core.attr(String, { computed: true, kind: "array" }) public securityGroups?: core.Array | core.ArrayOut; @core.attr(Boolean) public sourceDestCheck?: boolean | core.BooleanOut; /** * The current [bid */ @core.attr(String, { computed: true }) public spotBidStatus!: string | core.StringOut; /** * The Instance ID (if any) that is currently fulfilling */ @core.attr(String, { computed: true }) public spotInstanceId!: string | core.StringOut; /** * (Optional; Default: On-demand price) The maximum price to request on the spot market. */ @core.attr(String, { computed: true }) public spotPrice?: string | core.StringOut; @core.attr(String, { computed: true }) public spotRequestState!: string | core.StringOut; /** * (Optional; Default: `persistent`) If set to `one-time`, after */ @core.attr(String) public spotType?: string | core.StringOut; @core.attr(String, { computed: true }) public subnetId?: string | core.StringOut; /** * (Optional) A map of tags to assign to the Spot Instance Request. These tags are not automatically ap * plied to the launched Instance. If configured with a provider [`default_tags` configuration block](h * ttps://registry.terraform.io/providers/hashicorp/aws/latest/docs#default_tags-configuration-block) p * resent, tags with matching keys will 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; @core.attr(String, { computed: true }) public tenancy?: string | core.StringOut; @core.attr(String, { computed: true }) public userData?: string | core.StringOut; @core.attr(String, { computed: true }) public userDataBase64?: string | core.StringOut; @core.attr(Boolean) public userDataReplaceOnChange?: boolean | core.BooleanOut; /** * (Optional) The start date and time of the request, in UTC [RFC3339](https://tools.ietf.org/html/rfc3 * 339#section-5.8) format(for example, YYYY-MM-DDTHH:MM:SSZ). The default is to start fulfilling the r * equest immediately. */ @core.attr(String, { computed: true }) public validFrom?: string | core.StringOut; /** * (Optional) The end date and time of the request, in UTC [RFC3339](https://tools.ietf.org/html/rfc333 * 9#section-5.8) format(for example, YYYY-MM-DDTHH:MM:SSZ). At this point, no new Spot instance reques * ts are placed or enabled to fulfill the request. The default end date is 7 days from the current dat * e. */ @core.attr(String, { computed: true }) public validUntil?: string | core.StringOut; @core.attr(String, { kind: "map" }) public volumeTags?: core.Map | core.MapOut; @core.attr(String, { computed: true, kind: "array" }) public vpcSecurityGroupIds?: | core.Array | core.ArrayOut; /** * (Optional; Default: false) If set, Terraform will */ @core.attr(Boolean) public waitForFulfillment?: boolean | core.BooleanOut; constructor(name: string, args?: SpotInstanceRequestArgs) { super(name, "aws_spot_instance_request", args); } public override getNamespace(): string { return "aws_ec2"; } }