import { ResourceBase , ResourceTag } from '../resource' ; import { Value , List } from '../dataTypes' ; export class SpotPlacement { AvailabilityZone ? : Value < string > ; GroupName ? : Value < string > ; Tenancy ? : Value < string > ; constructor ( properties ) { Object . assign ( this , properties ) ; } } export class LaunchTemplateOverrides { AvailabilityZone ? : Value < string > ; InstanceType ? : Value < string > ; SpotPrice ? : Value < string > ; SubnetId ? : Value < string > ; WeightedCapacity ? : Value < number > ; constructor ( properties ) { Object . assign ( this , properties ) ; } } export class IamInstanceProfileSpecification { Arn ? : Value < string > ; constructor ( properties ) { Object . assign ( this , properties ) ; } } export class InstanceNetworkInterfaceSpecification { AssociatePublicIpAddress ? : Value < boolean > ; DeleteOnTermination ? : Value < boolean > ; Description ? : Value < string > ; DeviceIndex ? : Value < number > ; Groups ? : List < Value < string > > ; Ipv6AddressCount ? : Value < number > ; Ipv6Addresses ? : List < InstanceIpv6Address > ; NetworkInterfaceId ? : Value < string > ; PrivateIpAddresses ? : List < PrivateIpAddressSpecification > ; SecondaryPrivateIpAddressCount ? : Value < number > ; SubnetId ? : Value < string > ; constructor ( properties ) { Object . assign ( this , properties ) ; } } export class SpotFleetLaunchSpecification { BlockDeviceMappings ? : List < BlockDeviceMapping > ; EbsOptimized ? : Value < boolean > ; IamInstanceProfile ? : IamInstanceProfileSpecification ; ImageId ! : Value < string > ; InstanceType ! : Value < string > ; KernelId ? : Value < string > ; KeyName ? : Value < string > ; Monitoring ? : SpotFleetMonitoring ; NetworkInterfaces ? : List < InstanceNetworkInterfaceSpecification > ; Placement ? : SpotPlacement ; RamdiskId ? : Value < string > ; SecurityGroups ? : List < GroupIdentifier > ; SpotPrice ? : Value < string > ; SubnetId ? : Value < string > ; TagSpecifications ? : List < SpotFleetTagSpecification > ; UserData ? : Value < string > ; WeightedCapacity ? : Value < number > ; constructor ( properties ) { Object . assign ( this , properties ) ; } } export class ClassicLoadBalancersConfig { ClassicLoadBalancers ! : List < ClassicLoadBalancer > ; constructor ( properties ) { Object . assign ( this , properties ) ; } } export class SpotMaintenanceStrategies { CapacityRebalance ? : SpotCapacityRebalance ; constructor ( properties ) { Object . assign ( this , properties ) ; } } export class SpotFleetTagSpecification { ResourceType ? : Value < string > ; Tags ? : List < ResourceTag > ; constructor ( properties ) { Object . assign ( this , properties ) ; } } export class PrivateIpAddressSpecification { Primary ? : Value < boolean > ; PrivateIpAddress ! : Value < string > ; constructor ( properties ) { Object . assign ( this , properties ) ; } } export class SpotCapacityRebalance { ReplacementStrategy ? : Value < string > ; constructor ( properties ) { Object . assign ( this , properties ) ; } } export class EbsBlockDevice { DeleteOnTermination ? : Value < boolean > ; Encrypted ? : Value < boolean > ; Iops ? : Value < number > ; SnapshotId ? : Value < string > ; VolumeSize ? : Value < number > ; VolumeType ? : Value < string > ; constructor ( properties ) { Object . assign ( this , properties ) ; } } export class LoadBalancersConfig { ClassicLoadBalancersConfig ? : ClassicLoadBalancersConfig ; TargetGroupsConfig ? : TargetGroupsConfig ; constructor ( properties ) { Object . assign ( this , properties ) ; } } export class FleetLaunchTemplateSpecification { LaunchTemplateId ? : Value < string > ; LaunchTemplateName ? : Value < string > ; Version ! : Value < string > ; constructor ( properties ) { Object . assign ( this , properties ) ; } } export class TargetGroup { Arn ! : Value < string > ; constructor ( properties ) { Object . assign ( this , properties ) ; } } export class SpotFleetMonitoring { Enabled ? : Value < boolean > ; constructor ( properties ) { Object . assign ( this , properties ) ; } } export class ClassicLoadBalancer { Name ! : Value < string > ; constructor ( properties ) { Object . assign ( this , properties ) ; } } export class LaunchTemplateConfig { LaunchTemplateSpecification ? : FleetLaunchTemplateSpecification ; Overrides ? : List < LaunchTemplateOverrides > ; constructor ( properties ) { Object . assign ( this , properties ) ; } } export class SpotFleetRequestConfigData { AllocationStrategy ? : Value < string > ; ExcessCapacityTerminationPolicy ? : Value < string > ; IamFleetRole ! : Value < string > ; InstanceInterruptionBehavior ? : Value < string > ; InstancePoolsToUseCount ? : Value < number > ; LaunchSpecifications ? : List < SpotFleetLaunchSpecification > ; LaunchTemplateConfigs ? : List < LaunchTemplateConfig > ; LoadBalancersConfig ? : LoadBalancersConfig ; OnDemandAllocationStrategy ? : Value < string > ; OnDemandMaxTotalPrice ? : Value < string > ; OnDemandTargetCapacity ? : Value < number > ; ReplaceUnhealthyInstances ? : Value < boolean > ; SpotMaintenanceStrategies ? : SpotMaintenanceStrategies ; SpotMaxTotalPrice ? : Value < string > ; SpotPrice ? : Value < string > ; TargetCapacity ! : Value < number > ; TerminateInstancesWithExpiration ? : Value < boolean > ; Type ? : Value < string > ; ValidFrom ? : Value < string > ; ValidUntil ? : Value < string > ; constructor ( properties ) { Object . assign ( this , properties ) ; } } export class InstanceIpv6Address { Ipv6Address ! : Value < string > ; constructor ( properties ) { Object . assign ( this , properties ) ; } } export class TargetGroupsConfig { TargetGroups ! : List < TargetGroup > ; constructor ( properties ) { Object . assign ( this , properties ) ; } } export class GroupIdentifier { GroupId ! : Value < string > ; constructor ( properties ) { Object . assign ( this , properties ) ; } } export class BlockDeviceMapping { DeviceName ! : Value < string > ; Ebs ? : EbsBlockDevice ; NoDevice ? : Value < string > ; VirtualName ? : Value < string > ; constructor ( properties ) { Object . assign ( this , properties ) ; } } export interface SpotFleetProperties { SpotFleetRequestConfigData : SpotFleetRequestConfigData ; } export default class SpotFleet extends ResourceBase < SpotFleetProperties > { static SpotPlacement = SpotPlacement ; static LaunchTemplateOverrides = LaunchTemplateOverrides ; static IamInstanceProfileSpecification = IamInstanceProfileSpecification ; static InstanceNetworkInterfaceSpecification = InstanceNetworkInterfaceSpecification ; static SpotFleetLaunchSpecification = SpotFleetLaunchSpecification ; static ClassicLoadBalancersConfig = ClassicLoadBalancersConfig ; static SpotMaintenanceStrategies = SpotMaintenanceStrategies ; static SpotFleetTagSpecification = SpotFleetTagSpecification ; static PrivateIpAddressSpecification = PrivateIpAddressSpecification ; static SpotCapacityRebalance = SpotCapacityRebalance ; static EbsBlockDevice = EbsBlockDevice ; static LoadBalancersConfig = LoadBalancersConfig ; static FleetLaunchTemplateSpecification = FleetLaunchTemplateSpecification ; static TargetGroup = TargetGroup ; static SpotFleetMonitoring = SpotFleetMonitoring ; static ClassicLoadBalancer = ClassicLoadBalancer ; static LaunchTemplateConfig = LaunchTemplateConfig ; static SpotFleetRequestConfigData = SpotFleetRequestConfigData ; static InstanceIpv6Address = InstanceIpv6Address ; static TargetGroupsConfig = TargetGroupsConfig ; static GroupIdentifier = GroupIdentifier ; static BlockDeviceMapping = BlockDeviceMapping ; constructor ( properties ) { super ( 'AWS::EC2::SpotFleet' , properties ) ; } }