import { ResourceBase , ResourceTag } from '../resource' ; import { Value , List } from '../dataTypes' ; export class FleetLaunchTemplateSpecificationRequest { LaunchTemplateName ? : Value < string > ; LaunchTemplateId ? : Value < string > ; Version ? : Value < string > ; constructor ( properties ) { Object . assign ( this , properties ) ; } } export class TargetCapacitySpecificationRequest { DefaultTargetCapacityType ? : Value < string > ; TotalTargetCapacity ! : Value < number > ; OnDemandTargetCapacity ? : Value < number > ; SpotTargetCapacity ? : Value < number > ; constructor ( properties ) { Object . assign ( this , properties ) ; } } export class CapacityReservationOptionsRequest { UsageStrategy ? : Value < string > ; constructor ( properties ) { Object . assign ( this , properties ) ; } } export class FleetLaunchTemplateConfigRequest { LaunchTemplateSpecification ? : FleetLaunchTemplateSpecificationRequest ; Overrides ? : List < FleetLaunchTemplateOverridesRequest > ; constructor ( properties ) { Object . assign ( this , properties ) ; } } export class TagSpecification { ResourceType ? : Value < string > ; Tags ? : List < ResourceTag > ; constructor ( properties ) { Object . assign ( this , properties ) ; } } export class SpotOptionsRequest { SingleAvailabilityZone ? : Value < boolean > ; AllocationStrategy ? : Value < string > ; SingleInstanceType ? : Value < boolean > ; MinTargetCapacity ? : Value < number > ; MaxTotalPrice ? : Value < string > ; InstanceInterruptionBehavior ? : Value < string > ; InstancePoolsToUseCount ? : Value < number > ; constructor ( properties ) { Object . assign ( this , properties ) ; } } export class OnDemandOptionsRequest { SingleAvailabilityZone ? : Value < boolean > ; AllocationStrategy ? : Value < string > ; SingleInstanceType ? : Value < boolean > ; MinTargetCapacity ? : Value < number > ; MaxTotalPrice ? : Value < string > ; CapacityReservationOptions ? : CapacityReservationOptionsRequest ; constructor ( properties ) { Object . assign ( this , properties ) ; } } export class FleetLaunchTemplateOverridesRequest { WeightedCapacity ? : Value < number > ; Placement ? : Placement ; Priority ? : Value < number > ; AvailabilityZone ? : Value < string > ; SubnetId ? : Value < string > ; InstanceType ? : Value < string > ; MaxPrice ? : Value < string > ; constructor ( properties ) { Object . assign ( this , properties ) ; } } export class Placement { GroupName ? : Value < string > ; Tenancy ? : Value < string > ; SpreadDomain ? : Value < string > ; PartitionNumber ? : Value < number > ; AvailabilityZone ? : Value < string > ; Affinity ? : Value < string > ; HostId ? : Value < string > ; HostResourceGroupArn ? : Value < string > ; constructor ( properties ) { Object . assign ( this , properties ) ; } } export interface EC2FleetProperties { TargetCapacitySpecification : TargetCapacitySpecificationRequest ; OnDemandOptions ? : OnDemandOptionsRequest ; Type ? : Value < string > ; ExcessCapacityTerminationPolicy ? : Value < string > ; TagSpecifications ? : List < TagSpecification > ; SpotOptions ? : SpotOptionsRequest ; ValidFrom ? : Value < string > ; ReplaceUnhealthyInstances ? : Value < boolean > ; LaunchTemplateConfigs : List < FleetLaunchTemplateConfigRequest > ; TerminateInstancesWithExpiration ? : Value < boolean > ; ValidUntil ? : Value < string > ; } export default class EC2Fleet extends ResourceBase < EC2FleetProperties > { static FleetLaunchTemplateSpecificationRequest = FleetLaunchTemplateSpecificationRequest ; static TargetCapacitySpecificationRequest = TargetCapacitySpecificationRequest ; static CapacityReservationOptionsRequest = CapacityReservationOptionsRequest ; static FleetLaunchTemplateConfigRequest = FleetLaunchTemplateConfigRequest ; static TagSpecification = TagSpecification ; static SpotOptionsRequest = SpotOptionsRequest ; static OnDemandOptionsRequest = OnDemandOptionsRequest ; static FleetLaunchTemplateOverridesRequest = FleetLaunchTemplateOverridesRequest ; static Placement = Placement ; constructor ( properties ) { super ( 'AWS::EC2::EC2Fleet' , properties ) ; } }