import { ResourceBase , ResourceTag } from '../resource' ; import { Value , List } from '../dataTypes' ; export class LaunchTemplateOverrides { InstanceType ? : Value < string > ; LaunchTemplateSpecification ? : LaunchTemplateSpecification ; WeightedCapacity ? : Value < string > ; constructor ( properties ) { Object . assign ( this , properties ) ; } } export class MetricsCollection { Granularity ! : Value < string > ; Metrics ? : List < Value < string > > ; constructor ( properties ) { Object . assign ( this , properties ) ; } } export class InstancesDistribution { OnDemandAllocationStrategy ? : Value < string > ; OnDemandBaseCapacity ? : Value < number > ; OnDemandPercentageAboveBaseCapacity ? : Value < number > ; SpotAllocationStrategy ? : Value < string > ; SpotInstancePools ? : Value < number > ; SpotMaxPrice ? : Value < string > ; constructor ( properties ) { Object . assign ( this , properties ) ; } } export class LifecycleHookSpecification { DefaultResult ? : Value < string > ; HeartbeatTimeout ? : Value < number > ; LifecycleHookName ! : Value < string > ; LifecycleTransition ! : Value < string > ; NotificationMetadata ? : Value < string > ; NotificationTargetARN ? : Value < string > ; RoleARN ? : Value < string > ; constructor ( properties ) { Object . assign ( this , properties ) ; } } export class LaunchTemplateSpecification { LaunchTemplateId ? : Value < string > ; LaunchTemplateName ? : Value < string > ; Version ! : Value < string > ; constructor ( properties ) { Object . assign ( this , properties ) ; } } export class MixedInstancesPolicy { InstancesDistribution ? : InstancesDistribution ; LaunchTemplate ! : LaunchTemplate ; constructor ( properties ) { Object . assign ( this , properties ) ; } } export class NotificationConfiguration { NotificationTypes ? : List < Value < string > > ; TopicARN ! : Value < string > ; constructor ( properties ) { Object . assign ( this , properties ) ; } } export class LaunchTemplate { LaunchTemplateSpecification ! : LaunchTemplateSpecification ; Overrides ? : List < LaunchTemplateOverrides > ; constructor ( properties ) { Object . assign ( this , properties ) ; } } export class TagProperty { Key ! : Value < string > ; PropagateAtLaunch ! : Value < boolean > ; Value ! : Value < string > ; constructor ( properties ) { Object . assign ( this , properties ) ; } } export interface AutoScalingGroupProperties { AutoScalingGroupName ? : Value < string > ; AvailabilityZones ? : List < Value < string > > ; CapacityRebalance ? : Value < boolean > ; Context ? : Value < string > ; Cooldown ? : Value < string > ; DesiredCapacity ? : Value < string > ; HealthCheckGracePeriod ? : Value < number > ; HealthCheckType ? : Value < string > ; InstanceId ? : Value < string > ; LaunchConfigurationName ? : Value < string > ; LaunchTemplate ? : LaunchTemplateSpecification ; LifecycleHookSpecificationList ? : List < LifecycleHookSpecification > ; LoadBalancerNames ? : List < Value < string > > ; MaxInstanceLifetime ? : Value < number > ; MaxSize : Value < string > ; MetricsCollection ? : List < MetricsCollection > ; MinSize : Value < string > ; MixedInstancesPolicy ? : MixedInstancesPolicy ; NewInstancesProtectedFromScaleIn ? : Value < boolean > ; NotificationConfigurations ? : List < NotificationConfiguration > ; PlacementGroup ? : Value < string > ; ServiceLinkedRoleARN ? : Value < string > ; Tags ? : List < TagProperty > ; TargetGroupARNs ? : List < Value < string > > ; TerminationPolicies ? : List < Value < string > > ; VPCZoneIdentifier ? : List < Value < string > > ; } export default class AutoScalingGroup extends ResourceBase < AutoScalingGroupProperties > { static LaunchTemplateOverrides = LaunchTemplateOverrides ; static MetricsCollection = MetricsCollection ; static InstancesDistribution = InstancesDistribution ; static LifecycleHookSpecification = LifecycleHookSpecification ; static LaunchTemplateSpecification = LaunchTemplateSpecification ; static MixedInstancesPolicy = MixedInstancesPolicy ; static NotificationConfiguration = NotificationConfiguration ; static LaunchTemplate = LaunchTemplate ; static TagProperty = TagProperty ; constructor ( properties ) { super ( 'AWS::AutoScaling::AutoScalingGroup' , properties ) ; } }