VaporShell.AutoScalingPlans.Classes.ps1

using namespace System
using namespace System.Collections
using namespace System.Collections.Generic
using namespace System.IO
using namespace System.Management.Automation
[CmdletBinding()]
Param()

Write-Verbose "Importing class 'AutoScalingPlansScalingPlanScalingInstruction'"

class AutoScalingPlansScalingPlanScalingInstruction : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSAutoScalingPlansScalingPlanScalingInstruction'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscalingplans-scalingplan-scalinginstruction.html'

    hidden [object] $_disableDynamicScaling
    hidden [object] $_serviceNamespace
    hidden [object] $_predictiveScalingMaxCapacityBehavior
    hidden [object] $_scalableDimension
    hidden [object] $_scalingPolicyUpdateBehavior
    hidden [object] $_minCapacity
    hidden [object] $_targetTrackingConfigurations
    hidden [object] $_predictiveScalingMaxCapacityBuffer
    hidden [object] $_customizedLoadMetricSpecification
    hidden [object] $_predefinedLoadMetricSpecification
    hidden [object] $_resourceId
    hidden [object] $_scheduledActionBufferTime
    hidden [object] $_maxCapacity
    hidden [object] $_predictiveScalingMode

    [bool] $DisableDynamicScaling
    [string] $ServiceNamespace
    [string] $PredictiveScalingMaxCapacityBehavior
    [string] $ScalableDimension
    [string] $ScalingPolicyUpdateBehavior
    [int] $MinCapacity
    [AutoScalingPlansScalingPlanTargetTrackingConfiguration[]] $TargetTrackingConfigurations
    [int] $PredictiveScalingMaxCapacityBuffer
    [AutoScalingPlansScalingPlanCustomizedLoadMetricSpecification] $CustomizedLoadMetricSpecification
    [AutoScalingPlansScalingPlanPredefinedLoadMetricSpecification] $PredefinedLoadMetricSpecification
    [string] $ResourceId
    [int] $ScheduledActionBufferTime
    [int] $MaxCapacity
    [string] $PredictiveScalingMode

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name DisableDynamicScaling -Value {
            $this._disableDynamicScaling
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._disableDynamicScaling = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ServiceNamespace -Value {
            $this._serviceNamespace
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._serviceNamespace = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name PredictiveScalingMaxCapacityBehavior -Value {
            $this._predictiveScalingMaxCapacityBehavior
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._predictiveScalingMaxCapacityBehavior = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ScalableDimension -Value {
            $this._scalableDimension
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._scalableDimension = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ScalingPolicyUpdateBehavior -Value {
            $this._scalingPolicyUpdateBehavior
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._scalingPolicyUpdateBehavior = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name MinCapacity -Value {
            $this._minCapacity
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._minCapacity = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name TargetTrackingConfigurations -Value {
            $this._targetTrackingConfigurations
        } -SecondValue {
            param([ValidateType(([AutoScalingPlansScalingPlanTargetTrackingConfiguration], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._targetTrackingConfigurations = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name PredictiveScalingMaxCapacityBuffer -Value {
            $this._predictiveScalingMaxCapacityBuffer
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._predictiveScalingMaxCapacityBuffer = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name CustomizedLoadMetricSpecification -Value {
            $this._customizedLoadMetricSpecification
        } -SecondValue {
            param([ValidateType(([AutoScalingPlansScalingPlanCustomizedLoadMetricSpecification], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._customizedLoadMetricSpecification = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name PredefinedLoadMetricSpecification -Value {
            $this._predefinedLoadMetricSpecification
        } -SecondValue {
            param([ValidateType(([AutoScalingPlansScalingPlanPredefinedLoadMetricSpecification], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._predefinedLoadMetricSpecification = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ResourceId -Value {
            $this._resourceId
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._resourceId = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ScheduledActionBufferTime -Value {
            $this._scheduledActionBufferTime
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._scheduledActionBufferTime = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name MaxCapacity -Value {
            $this._maxCapacity
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._maxCapacity = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name PredictiveScalingMode -Value {
            $this._predictiveScalingMode
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._predictiveScalingMode = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

    AutoScalingPlansScalingPlanScalingInstruction() : base() {}
    AutoScalingPlansScalingPlanScalingInstruction([IDictionary] $props) : base($props) {}
    AutoScalingPlansScalingPlanScalingInstruction([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'AutoScalingPlansScalingPlanMetricDimension'"

class AutoScalingPlansScalingPlanMetricDimension : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSAutoScalingPlansScalingPlanMetricDimension'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscalingplans-scalingplan-metricdimension.html'

    hidden [object] $_value
    hidden [object] $_name

    [string] $Value
    [string] $Name

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name Value -Value {
            $this._value
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._value = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Name -Value {
            $this._name
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._name = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

    AutoScalingPlansScalingPlanMetricDimension() : base() {}
    AutoScalingPlansScalingPlanMetricDimension([IDictionary] $props) : base($props) {}
    AutoScalingPlansScalingPlanMetricDimension([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'AutoScalingPlansScalingPlanPredefinedScalingMetricSpecification'"

class AutoScalingPlansScalingPlanPredefinedScalingMetricSpecification : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSAutoScalingPlansScalingPlanPredefinedScalingMetricSpecification'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscalingplans-scalingplan-predefinedscalingmetricspecification.html'

    hidden [object] $_resourceLabel
    hidden [object] $_predefinedScalingMetricType

    [string] $ResourceLabel
    [string] $PredefinedScalingMetricType

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name ResourceLabel -Value {
            $this._resourceLabel
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._resourceLabel = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name PredefinedScalingMetricType -Value {
            $this._predefinedScalingMetricType
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._predefinedScalingMetricType = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

    AutoScalingPlansScalingPlanPredefinedScalingMetricSpecification() : base() {}
    AutoScalingPlansScalingPlanPredefinedScalingMetricSpecification([IDictionary] $props) : base($props) {}
    AutoScalingPlansScalingPlanPredefinedScalingMetricSpecification([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'AutoScalingPlansScalingPlanCustomizedScalingMetricSpecification'"

class AutoScalingPlansScalingPlanCustomizedScalingMetricSpecification : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSAutoScalingPlansScalingPlanCustomizedScalingMetricSpecification'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscalingplans-scalingplan-customizedscalingmetricspecification.html'

    hidden [object] $_metricName
    hidden [object] $_statistic
    hidden [object] $_dimensions
    hidden [object] $_unit
    hidden [object] $_namespace

    [string] $MetricName
    [string] $Statistic
    [AutoScalingPlansScalingPlanMetricDimension[]] $Dimensions
    [string] $Unit
    [string] $Namespace

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name MetricName -Value {
            $this._metricName
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._metricName = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Statistic -Value {
            $this._statistic
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._statistic = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Dimensions -Value {
            $this._dimensions
        } -SecondValue {
            param([ValidateType(([AutoScalingPlansScalingPlanMetricDimension], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._dimensions = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Unit -Value {
            $this._unit
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._unit = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Namespace -Value {
            $this._namespace
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._namespace = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

    AutoScalingPlansScalingPlanCustomizedScalingMetricSpecification() : base() {}
    AutoScalingPlansScalingPlanCustomizedScalingMetricSpecification([IDictionary] $props) : base($props) {}
    AutoScalingPlansScalingPlanCustomizedScalingMetricSpecification([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'AutoScalingPlansScalingPlanTagFilter'"

class AutoScalingPlansScalingPlanTagFilter : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSAutoScalingPlansScalingPlanTagFilter'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscalingplans-scalingplan-tagfilter.html'

    hidden [object] $_values
    hidden [object] $_key

    [string[]] $Values
    [string] $Key

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name Values -Value {
            $this._values
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._values = @($value)
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Key -Value {
            $this._key
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._key = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

    AutoScalingPlansScalingPlanTagFilter() : base() {}
    AutoScalingPlansScalingPlanTagFilter([IDictionary] $props) : base($props) {}
    AutoScalingPlansScalingPlanTagFilter([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'AutoScalingPlansScalingPlanTargetTrackingConfiguration'"

class AutoScalingPlansScalingPlanTargetTrackingConfiguration : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSAutoScalingPlansScalingPlanTargetTrackingConfiguration'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscalingplans-scalingplan-targettrackingconfiguration.html'

    hidden [object] $_scaleOutCooldown
    hidden [object] $_targetValue
    hidden [object] $_predefinedScalingMetricSpecification
    hidden [object] $_disableScaleIn
    hidden [object] $_scaleInCooldown
    hidden [object] $_estimatedInstanceWarmup
    hidden [object] $_customizedScalingMetricSpecification

    [int] $ScaleOutCooldown
    [double] $TargetValue
    [AutoScalingPlansScalingPlanPredefinedScalingMetricSpecification] $PredefinedScalingMetricSpecification
    [bool] $DisableScaleIn
    [int] $ScaleInCooldown
    [int] $EstimatedInstanceWarmup
    [AutoScalingPlansScalingPlanCustomizedScalingMetricSpecification] $CustomizedScalingMetricSpecification

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name ScaleOutCooldown -Value {
            $this._scaleOutCooldown
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._scaleOutCooldown = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name TargetValue -Value {
            $this._targetValue
        } -SecondValue {
            param([ValidateType(([double], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._targetValue = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name PredefinedScalingMetricSpecification -Value {
            $this._predefinedScalingMetricSpecification
        } -SecondValue {
            param([ValidateType(([AutoScalingPlansScalingPlanPredefinedScalingMetricSpecification], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._predefinedScalingMetricSpecification = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name DisableScaleIn -Value {
            $this._disableScaleIn
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._disableScaleIn = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ScaleInCooldown -Value {
            $this._scaleInCooldown
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._scaleInCooldown = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name EstimatedInstanceWarmup -Value {
            $this._estimatedInstanceWarmup
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._estimatedInstanceWarmup = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name CustomizedScalingMetricSpecification -Value {
            $this._customizedScalingMetricSpecification
        } -SecondValue {
            param([ValidateType(([AutoScalingPlansScalingPlanCustomizedScalingMetricSpecification], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._customizedScalingMetricSpecification = $value
        }
    }

    AutoScalingPlansScalingPlanTargetTrackingConfiguration() : base() {}
    AutoScalingPlansScalingPlanTargetTrackingConfiguration([IDictionary] $props) : base($props) {}
    AutoScalingPlansScalingPlanTargetTrackingConfiguration([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'AutoScalingPlansScalingPlanPredefinedLoadMetricSpecification'"

class AutoScalingPlansScalingPlanPredefinedLoadMetricSpecification : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSAutoScalingPlansScalingPlanPredefinedLoadMetricSpecification'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscalingplans-scalingplan-predefinedloadmetricspecification.html'

    hidden [object] $_predefinedLoadMetricType
    hidden [object] $_resourceLabel

    [string] $PredefinedLoadMetricType
    [string] $ResourceLabel

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name PredefinedLoadMetricType -Value {
            $this._predefinedLoadMetricType
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._predefinedLoadMetricType = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ResourceLabel -Value {
            $this._resourceLabel
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._resourceLabel = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

    AutoScalingPlansScalingPlanPredefinedLoadMetricSpecification() : base() {}
    AutoScalingPlansScalingPlanPredefinedLoadMetricSpecification([IDictionary] $props) : base($props) {}
    AutoScalingPlansScalingPlanPredefinedLoadMetricSpecification([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'AutoScalingPlansScalingPlanCustomizedLoadMetricSpecification'"

class AutoScalingPlansScalingPlanCustomizedLoadMetricSpecification : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSAutoScalingPlansScalingPlanCustomizedLoadMetricSpecification'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscalingplans-scalingplan-customizedloadmetricspecification.html'

    hidden [object] $_metricName
    hidden [object] $_statistic
    hidden [object] $_dimensions
    hidden [object] $_unit
    hidden [object] $_namespace

    [string] $MetricName
    [string] $Statistic
    [AutoScalingPlansScalingPlanMetricDimension[]] $Dimensions
    [string] $Unit
    [string] $Namespace

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name MetricName -Value {
            $this._metricName
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._metricName = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Statistic -Value {
            $this._statistic
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._statistic = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Dimensions -Value {
            $this._dimensions
        } -SecondValue {
            param([ValidateType(([AutoScalingPlansScalingPlanMetricDimension], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._dimensions = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Unit -Value {
            $this._unit
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._unit = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Namespace -Value {
            $this._namespace
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._namespace = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

    AutoScalingPlansScalingPlanCustomizedLoadMetricSpecification() : base() {}
    AutoScalingPlansScalingPlanCustomizedLoadMetricSpecification([IDictionary] $props) : base($props) {}
    AutoScalingPlansScalingPlanCustomizedLoadMetricSpecification([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'AutoScalingPlansScalingPlanApplicationSource'"

class AutoScalingPlansScalingPlanApplicationSource : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSAutoScalingPlansScalingPlanApplicationSource'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscalingplans-scalingplan-applicationsource.html'

    hidden [object] $_cloudFormationStackARN
    hidden [object] $_tagFilters

    [string] $CloudFormationStackARN
    [AutoScalingPlansScalingPlanTagFilter[]] $TagFilters

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name CloudFormationStackARN -Value {
            $this._cloudFormationStackARN
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._cloudFormationStackARN = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name TagFilters -Value {
            $this._tagFilters
        } -SecondValue {
            param([ValidateType(([AutoScalingPlansScalingPlanTagFilter], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._tagFilters = $value
        }
    }

    AutoScalingPlansScalingPlanApplicationSource() : base() {}
    AutoScalingPlansScalingPlanApplicationSource([IDictionary] $props) : base($props) {}
    AutoScalingPlansScalingPlanApplicationSource([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'AutoScalingPlansScalingPlan'"

class AutoScalingPlansScalingPlan : VSResource {
    hidden [string] $_vsFunctionName = 'New-VSAutoScalingPlansScalingPlan'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscalingplans-scalingplan.html'

    hidden [string[]] $_attributes = @('ScalingPlanName','ScalingPlanVersion')
    hidden [object] $_condition

    [string] $Type = 'AWS::AutoScalingPlans::ScalingPlan'
    [AutoScalingPlansScalingPlanApplicationSource] $ApplicationSource
    [AutoScalingPlansScalingPlanScalingInstruction[]] $ScalingInstructions
    [VSJson] $Metadata
    [UpdatePolicy] $UpdatePolicy
    [string] $Condition

    hidden [void] _addAccessors() {
        $this._addBaseAccessors()
        $this | Add-Member -Force -MemberType ScriptProperty -Name ApplicationSource -Value {
            $this.Properties['ApplicationSource']
        } -SecondValue {
            param([ValidateType(([AutoScalingPlansScalingPlanApplicationSource], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['ApplicationSource'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ScalingInstructions -Value {
            $this.Properties['ScalingInstructions']
        } -SecondValue {
            param([ValidateType(([AutoScalingPlansScalingPlanScalingInstruction], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this.Properties['ScalingInstructions'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Condition -Value {
            $this._condition
        } -SecondValue {
            param(
                [ValidateType(([string], [IntrinsicFunction], [ConditionFunction]))] [object]
                $value
            )
            $this._condition = $value
        }
    }

    AutoScalingPlansScalingPlan() : base() {}
    AutoScalingPlansScalingPlan([IDictionary] $props) : base($props) {}
    AutoScalingPlansScalingPlan([psobject] $props) : base($props) {}
}