import { ResourceBase } from '../resource' ; import { Value , List } from '../dataTypes' ; export class ScalingInstruction { DisableDynamicScaling ? : Value < boolean > ; ServiceNamespace ! : Value < string > ; PredictiveScalingMaxCapacityBehavior ? : Value < string > ; ScalableDimension ! : Value < string > ; ScalingPolicyUpdateBehavior ? : Value < string > ; MinCapacity ! : Value < number > ; TargetTrackingConfigurations ! : List < TargetTrackingConfiguration > ; PredictiveScalingMaxCapacityBuffer ? : Value < number > ; CustomizedLoadMetricSpecification ? : CustomizedLoadMetricSpecification ; PredefinedLoadMetricSpecification ? : PredefinedLoadMetricSpecification ; ResourceId ! : Value < string > ; ScheduledActionBufferTime ? : Value < number > ; MaxCapacity ! : Value < number > ; PredictiveScalingMode ? : Value < string > ; constructor ( properties ) { Object . assign ( this , properties ) ; } } export class MetricDimension { Value ! : Value < string > ; Name ! : Value < string > ; constructor ( properties ) { Object . assign ( this , properties ) ; } } export class PredefinedScalingMetricSpecification { ResourceLabel ? : Value < string > ; PredefinedScalingMetricType ! : Value < string > ; constructor ( properties ) { Object . assign ( this , properties ) ; } } export class CustomizedScalingMetricSpecification { MetricName ! : Value < string > ; Statistic ! : Value < string > ; Dimensions ? : List < MetricDimension > ; Unit ? : Value < string > ; Namespace ! : Value < string > ; constructor ( properties ) { Object . assign ( this , properties ) ; } } export class TagFilter { Values ? : List < Value < string > > ; Key ! : Value < string > ; constructor ( properties ) { Object . assign ( this , properties ) ; } } export class CustomizedLoadMetricSpecification { MetricName ! : Value < string > ; Statistic ! : Value < string > ; Dimensions ? : List < MetricDimension > ; Unit ? : Value < string > ; Namespace ! : Value < string > ; constructor ( properties ) { Object . assign ( this , properties ) ; } } export class ApplicationSource { CloudFormationStackARN ? : Value < string > ; TagFilters ? : List < TagFilter > ; constructor ( properties ) { Object . assign ( this , properties ) ; } } export class TargetTrackingConfiguration { ScaleOutCooldown ? : Value < number > ; TargetValue ! : Value < number > ; PredefinedScalingMetricSpecification ? : PredefinedScalingMetricSpecification ; DisableScaleIn ? : Value < boolean > ; ScaleInCooldown ? : Value < number > ; EstimatedInstanceWarmup ? : Value < number > ; CustomizedScalingMetricSpecification ? : CustomizedScalingMetricSpecification ; constructor ( properties ) { Object . assign ( this , properties ) ; } } export class PredefinedLoadMetricSpecification { PredefinedLoadMetricType ! : Value < string > ; ResourceLabel ? : Value < string > ; constructor ( properties ) { Object . assign ( this , properties ) ; } } export interface ScalingPlanProperties { ApplicationSource : ApplicationSource ; ScalingInstructions : List < ScalingInstruction > ; } export default class ScalingPlan extends ResourceBase < ScalingPlanProperties > { static ScalingInstruction = ScalingInstruction ; static MetricDimension = MetricDimension ; static PredefinedScalingMetricSpecification = PredefinedScalingMetricSpecification ; static CustomizedScalingMetricSpecification = CustomizedScalingMetricSpecification ; static TagFilter = TagFilter ; static CustomizedLoadMetricSpecification = CustomizedLoadMetricSpecification ; static ApplicationSource = ApplicationSource ; static TargetTrackingConfiguration = TargetTrackingConfiguration ; static PredefinedLoadMetricSpecification = PredefinedLoadMetricSpecification ; constructor ( properties ) { super ( 'AWS::AutoScalingPlans::ScalingPlan' , properties ) ; } }