import * as core from "@terrascript/core"; export interface TagFilterArgs extends core.SchemaArgs { key: string | core.StringOut; values?: core.Array | core.ArrayOut; } export class TagFilter extends core.Schema { @core.attr(String) public key!: string | core.StringOut; @core.attr(String, { kind: "array" }) public values?: core.Array | core.ArrayOut; } export interface ApplicationSourceArgs extends core.SchemaArgs { cloudformationStackArn?: string | core.StringOut; tagFilter?: core.Array | core.ArrayOut; } export class ApplicationSource extends core.Schema { @core.attr(String) public cloudformationStackArn?: string | core.StringOut; @core.attr(TagFilter, { kind: "array" }) public tagFilter?: core.Array | core.ArrayOut; } export interface PredefinedScalingMetricSpecificationArgs extends core.SchemaArgs { predefinedScalingMetricType: string | core.StringOut; resourceLabel?: string | core.StringOut; } export class PredefinedScalingMetricSpecification extends core.Schema { @core.attr(String) public predefinedScalingMetricType!: string | core.StringOut; @core.attr(String) public resourceLabel?: string | core.StringOut; } export interface CustomizedScalingMetricSpecificationArgs extends core.SchemaArgs { dimensions?: core.Map | core.MapOut; metricName: string | core.StringOut; namespace: string | core.StringOut; statistic: string | core.StringOut; unit?: string | core.StringOut; } export class CustomizedScalingMetricSpecification extends core.Schema { @core.attr(String, { kind: "map" }) public dimensions?: core.Map | core.MapOut; @core.attr(String) public metricName!: string | core.StringOut; @core.attr(String) public namespace!: string | core.StringOut; @core.attr(String) public statistic!: string | core.StringOut; @core.attr(String) public unit?: string | core.StringOut; } export interface TargetTrackingConfigurationArgs extends core.SchemaArgs { customizedScalingMetricSpecification?: CustomizedScalingMetricSpecification; disableScaleIn?: boolean | core.BooleanOut; estimatedInstanceWarmup?: number | core.NumberOut; predefinedScalingMetricSpecification?: PredefinedScalingMetricSpecification; scaleInCooldown?: number | core.NumberOut; scaleOutCooldown?: number | core.NumberOut; targetValue: number | core.NumberOut; } export class TargetTrackingConfiguration extends core.Schema { @core.attr(CustomizedScalingMetricSpecification) public customizedScalingMetricSpecification?: CustomizedScalingMetricSpecification; @core.attr(Boolean) public disableScaleIn?: boolean | core.BooleanOut; @core.attr(Number) public estimatedInstanceWarmup?: number | core.NumberOut; @core.attr(PredefinedScalingMetricSpecification) public predefinedScalingMetricSpecification?: PredefinedScalingMetricSpecification; @core.attr(Number) public scaleInCooldown?: number | core.NumberOut; @core.attr(Number) public scaleOutCooldown?: number | core.NumberOut; @core.attr(Number) public targetValue!: number | core.NumberOut; } export interface CustomizedLoadMetricSpecificationArgs extends core.SchemaArgs { dimensions?: core.Map | core.MapOut; metricName: string | core.StringOut; namespace: string | core.StringOut; statistic: string | core.StringOut; unit?: string | core.StringOut; } export class CustomizedLoadMetricSpecification extends core.Schema { @core.attr(String, { kind: "map" }) public dimensions?: core.Map | core.MapOut; @core.attr(String) public metricName!: string | core.StringOut; @core.attr(String) public namespace!: string | core.StringOut; @core.attr(String) public statistic!: string | core.StringOut; @core.attr(String) public unit?: string | core.StringOut; } export interface PredefinedLoadMetricSpecificationArgs extends core.SchemaArgs { predefinedLoadMetricType: string | core.StringOut; resourceLabel?: string | core.StringOut; } export class PredefinedLoadMetricSpecification extends core.Schema { @core.attr(String) public predefinedLoadMetricType!: string | core.StringOut; @core.attr(String) public resourceLabel?: string | core.StringOut; } export interface ScalingInstructionArgs extends core.SchemaArgs { customizedLoadMetricSpecification?: CustomizedLoadMetricSpecification; disableDynamicScaling?: boolean | core.BooleanOut; maxCapacity: number | core.NumberOut; minCapacity: number | core.NumberOut; predefinedLoadMetricSpecification?: PredefinedLoadMetricSpecification; predictiveScalingMaxCapacityBehavior?: string | core.StringOut; predictiveScalingMaxCapacityBuffer?: number | core.NumberOut; predictiveScalingMode?: string | core.StringOut; resourceId: string | core.StringOut; scalableDimension: string | core.StringOut; scalingPolicyUpdateBehavior?: string | core.StringOut; scheduledActionBufferTime?: number | core.NumberOut; serviceNamespace: string | core.StringOut; targetTrackingConfiguration: | core.Array | core.ArrayOut; } export class ScalingInstruction extends core.Schema { @core.attr(CustomizedLoadMetricSpecification) public customizedLoadMetricSpecification?: CustomizedLoadMetricSpecification; @core.attr(Boolean) public disableDynamicScaling?: boolean | core.BooleanOut; @core.attr(Number) public maxCapacity!: number | core.NumberOut; @core.attr(Number) public minCapacity!: number | core.NumberOut; @core.attr(PredefinedLoadMetricSpecification) public predefinedLoadMetricSpecification?: PredefinedLoadMetricSpecification; @core.attr(String) public predictiveScalingMaxCapacityBehavior?: string | core.StringOut; @core.attr(Number) public predictiveScalingMaxCapacityBuffer?: number | core.NumberOut; @core.attr(String) public predictiveScalingMode?: string | core.StringOut; @core.attr(String) public resourceId!: string | core.StringOut; @core.attr(String) public scalableDimension!: string | core.StringOut; @core.attr(String) public scalingPolicyUpdateBehavior?: string | core.StringOut; @core.attr(Number) public scheduledActionBufferTime?: number | core.NumberOut; @core.attr(String) public serviceNamespace!: string | core.StringOut; @core.attr(TargetTrackingConfiguration, { kind: "array" }) public targetTrackingConfiguration!: | core.Array | core.ArrayOut; } export interface ScalingPlanArgs extends core.ResourceArgs { /** * (Required) A CloudFormation stack or set of tags. You can create one scaling plan per application so * urce. */ applicationSource: ApplicationSource; /** * (Required) The name of the scaling plan. Names cannot contain vertical bars, colons, or forward slas * hes. */ name: string | core.StringOut; /** * (Required) The scaling instructions. More details can be found in the [AWS Auto Scaling API Referenc * e](https://docs.aws.amazon.com/autoscaling/plans/APIReference/API_ScalingInstruction.html). */ scalingInstruction: | core.Array | core.ArrayOut; } export class ScalingPlan extends core.Resource { /** * (Required) A CloudFormation stack or set of tags. You can create one scaling plan per application so * urce. */ @core.attr(ApplicationSource) public applicationSource!: ApplicationSource; /** * The scaling plan identifier. */ @core.attr(String, { computed: true }) public id!: string | core.StringOut; /** * (Required) The name of the scaling plan. Names cannot contain vertical bars, colons, or forward slas * hes. */ @core.attr(String) public name!: string | core.StringOut; /** * (Required) The scaling instructions. More details can be found in the [AWS Auto Scaling API Referenc * e](https://docs.aws.amazon.com/autoscaling/plans/APIReference/API_ScalingInstruction.html). */ @core.attr(ScalingInstruction, { kind: "array" }) public scalingInstruction!: | core.Array | core.ArrayOut; /** * The version number of the scaling plan. This value is always 1. */ @core.attr(Number, { computed: true }) public scalingPlanVersion!: number | core.NumberOut; constructor(name: string, args?: ScalingPlanArgs) { super(name, "aws_autoscalingplans_scaling_plan", args); } public override getNamespace(): string { return "aws_autoscalingplans"; } }