VaporShell.ApplicationAutoScaling.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 'ApplicationAutoScalingScalingPolicyStepScalingPolicyConfiguration'"

class ApplicationAutoScalingScalingPolicyStepScalingPolicyConfiguration : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSApplicationAutoScalingScalingPolicyStepScalingPolicyConfiguration'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationautoscaling-scalingpolicy-stepscalingpolicyconfiguration.html'

    hidden [object] $_adjustmentType
    hidden [object] $_cooldown
    hidden [object] $_metricAggregationType
    hidden [object] $_minAdjustmentMagnitude
    hidden [object] $_stepAdjustments

    [string] $AdjustmentType
    [int] $Cooldown
    [string] $MetricAggregationType
    [int] $MinAdjustmentMagnitude
    [ApplicationAutoScalingScalingPolicyStepAdjustment[]] $StepAdjustments

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name AdjustmentType -Value {
            $this._adjustmentType
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._adjustmentType = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Cooldown -Value {
            $this._cooldown
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._cooldown = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name MetricAggregationType -Value {
            $this._metricAggregationType
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._metricAggregationType = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name MinAdjustmentMagnitude -Value {
            $this._minAdjustmentMagnitude
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._minAdjustmentMagnitude = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name StepAdjustments -Value {
            $this._stepAdjustments
        } -SecondValue {
            param([ValidateType(([ApplicationAutoScalingScalingPolicyStepAdjustment], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._stepAdjustments = $value
        }
    }

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

Write-Verbose "Importing class 'ApplicationAutoScalingScalableTargetSuspendedState'"

class ApplicationAutoScalingScalableTargetSuspendedState : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSApplicationAutoScalingScalableTargetSuspendedState'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationautoscaling-scalabletarget-suspendedstate.html'

    hidden [object] $_dynamicScalingInSuspended
    hidden [object] $_dynamicScalingOutSuspended
    hidden [object] $_scheduledScalingSuspended

    [bool] $DynamicScalingInSuspended
    [bool] $DynamicScalingOutSuspended
    [bool] $ScheduledScalingSuspended

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name DynamicScalingInSuspended -Value {
            $this._dynamicScalingInSuspended
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._dynamicScalingInSuspended = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name DynamicScalingOutSuspended -Value {
            $this._dynamicScalingOutSuspended
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._dynamicScalingOutSuspended = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ScheduledScalingSuspended -Value {
            $this._scheduledScalingSuspended
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._scheduledScalingSuspended = $value
        }
    }

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

Write-Verbose "Importing class 'ApplicationAutoScalingScalingPolicyPredefinedMetricSpecification'"

class ApplicationAutoScalingScalingPolicyPredefinedMetricSpecification : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSApplicationAutoScalingScalingPolicyPredefinedMetricSpecification'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationautoscaling-scalingpolicy-predefinedmetricspecification.html'

    hidden [object] $_predefinedMetricType
    hidden [object] $_resourceLabel

    [string] $PredefinedMetricType
    [string] $ResourceLabel

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name PredefinedMetricType -Value {
            $this._predefinedMetricType
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._predefinedMetricType = 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
            }
        }
    }

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

Write-Verbose "Importing class 'ApplicationAutoScalingScalingPolicyStepAdjustment'"

class ApplicationAutoScalingScalingPolicyStepAdjustment : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSApplicationAutoScalingScalingPolicyStepAdjustment'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationautoscaling-scalingpolicy-stepscalingpolicyconfiguration-stepadjustment.html'

    hidden [object] $_metricIntervalLowerBound
    hidden [object] $_metricIntervalUpperBound
    hidden [object] $_scalingAdjustment

    [double] $MetricIntervalLowerBound
    [double] $MetricIntervalUpperBound
    [int] $ScalingAdjustment

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name MetricIntervalLowerBound -Value {
            $this._metricIntervalLowerBound
        } -SecondValue {
            param([ValidateType(([double], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._metricIntervalLowerBound = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name MetricIntervalUpperBound -Value {
            $this._metricIntervalUpperBound
        } -SecondValue {
            param([ValidateType(([double], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._metricIntervalUpperBound = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ScalingAdjustment -Value {
            $this._scalingAdjustment
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._scalingAdjustment = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
    }

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

Write-Verbose "Importing class 'ApplicationAutoScalingScalableTargetScheduledAction'"

class ApplicationAutoScalingScalableTargetScheduledAction : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSApplicationAutoScalingScalableTargetScheduledAction'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationautoscaling-scalabletarget-scheduledaction.html'

    hidden [object] $_endTime
    hidden [object] $_scalableTargetAction
    hidden [object] $_schedule
    hidden [object] $_scheduledActionName
    hidden [object] $_startTime
    hidden [object] $_timezone

    [VSTimestamp] $EndTime
    [ApplicationAutoScalingScalableTargetScalableTargetAction] $ScalableTargetAction
    [string] $Schedule
    [string] $ScheduledActionName
    [VSTimestamp] $StartTime
    [string] $Timezone

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name EndTime -Value {
            $this._endTime
        } -SecondValue {
            param([ValidateType(([VSTimestamp], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._endTime = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ScalableTargetAction -Value {
            $this._scalableTargetAction
        } -SecondValue {
            param([ValidateType(([ApplicationAutoScalingScalableTargetScalableTargetAction], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._scalableTargetAction = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Schedule -Value {
            $this._schedule
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._schedule = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ScheduledActionName -Value {
            $this._scheduledActionName
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._scheduledActionName = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name StartTime -Value {
            $this._startTime
        } -SecondValue {
            param([ValidateType(([VSTimestamp], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._startTime = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Timezone -Value {
            $this._timezone
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._timezone = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

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

Write-Verbose "Importing class 'ApplicationAutoScalingScalingPolicyTargetTrackingScalingPolicyConfiguration'"

class ApplicationAutoScalingScalingPolicyTargetTrackingScalingPolicyConfiguration : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSApplicationAutoScalingScalingPolicyTargetTrackingScalingPolicyConfiguration'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationautoscaling-scalingpolicy-targettrackingscalingpolicyconfiguration.html'

    hidden [object] $_customizedMetricSpecification
    hidden [object] $_disableScaleIn
    hidden [object] $_predefinedMetricSpecification
    hidden [object] $_scaleInCooldown
    hidden [object] $_scaleOutCooldown
    hidden [object] $_targetValue

    [ApplicationAutoScalingScalingPolicyCustomizedMetricSpecification] $CustomizedMetricSpecification
    [bool] $DisableScaleIn
    [ApplicationAutoScalingScalingPolicyPredefinedMetricSpecification] $PredefinedMetricSpecification
    [int] $ScaleInCooldown
    [int] $ScaleOutCooldown
    [double] $TargetValue

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name CustomizedMetricSpecification -Value {
            $this._customizedMetricSpecification
        } -SecondValue {
            param([ValidateType(([ApplicationAutoScalingScalingPolicyCustomizedMetricSpecification], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._customizedMetricSpecification = $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 PredefinedMetricSpecification -Value {
            $this._predefinedMetricSpecification
        } -SecondValue {
            param([ValidateType(([ApplicationAutoScalingScalingPolicyPredefinedMetricSpecification], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._predefinedMetricSpecification = $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 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
        }
    }

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

Write-Verbose "Importing class 'ApplicationAutoScalingScalingPolicyCustomizedMetricSpecification'"

class ApplicationAutoScalingScalingPolicyCustomizedMetricSpecification : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSApplicationAutoScalingScalingPolicyCustomizedMetricSpecification'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationautoscaling-scalingpolicy-customizedmetricspecification.html'

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

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

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name Dimensions -Value {
            $this._dimensions
        } -SecondValue {
            param([ValidateType(([ApplicationAutoScalingScalingPolicyMetricDimension], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._dimensions = $value
        }
        $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 Namespace -Value {
            $this._namespace
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._namespace = 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 Unit -Value {
            $this._unit
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._unit = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

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

Write-Verbose "Importing class 'ApplicationAutoScalingScalingPolicyMetricDimension'"

class ApplicationAutoScalingScalingPolicyMetricDimension : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSApplicationAutoScalingScalingPolicyMetricDimension'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationautoscaling-scalingpolicy-metricdimension.html'

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

    [string] $Name
    [string] $Value

    hidden [void] _addAccessors() {
        $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
            }
        }
        $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
            }
        }
    }

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

Write-Verbose "Importing class 'ApplicationAutoScalingScalableTargetScalableTargetAction'"

class ApplicationAutoScalingScalableTargetScalableTargetAction : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSApplicationAutoScalingScalableTargetScalableTargetAction'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationautoscaling-scalabletarget-scalabletargetaction.html'

    hidden [object] $_maxCapacity
    hidden [object] $_minCapacity

    [int] $MaxCapacity
    [int] $MinCapacity

    hidden [void] _addAccessors() {
        $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 MinCapacity -Value {
            $this._minCapacity
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._minCapacity = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
    }

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

Write-Verbose "Importing class 'ApplicationAutoScalingScalableTarget'"

class ApplicationAutoScalingScalableTarget : VSResource {
    hidden [string] $_vsFunctionName = 'New-VSApplicationAutoScalingScalableTarget'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-applicationautoscaling-scalabletarget.html'

    hidden [object] $_condition

    [string] $Type = 'AWS::ApplicationAutoScaling::ScalableTarget'
    [int] $MaxCapacity
    [int] $MinCapacity
    [string] $ResourceId
    [string] $RoleARN
    [string] $ScalableDimension
    [ApplicationAutoScalingScalableTargetScheduledAction[]] $ScheduledActions
    [string] $ServiceNamespace
    [ApplicationAutoScalingScalableTargetSuspendedState] $SuspendedState
    [VSJson] $Metadata
    [UpdatePolicy] $UpdatePolicy
    [string] $Condition

    hidden [void] _addAccessors() {
        $this._addBaseAccessors()
        $this | Add-Member -Force -MemberType ScriptProperty -Name MaxCapacity -Value {
            $this.Properties['MaxCapacity']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['MaxCapacity'] = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name MinCapacity -Value {
            $this.Properties['MinCapacity']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['MinCapacity'] = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ResourceId -Value {
            $this.Properties['ResourceId']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['ResourceId'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name RoleARN -Value {
            $this.Properties['RoleARN']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['RoleARN'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ScalableDimension -Value {
            $this.Properties['ScalableDimension']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['ScalableDimension'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ScheduledActions -Value {
            $this.Properties['ScheduledActions']
        } -SecondValue {
            param([ValidateType(([ApplicationAutoScalingScalableTargetScheduledAction], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this.Properties['ScheduledActions'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ServiceNamespace -Value {
            $this.Properties['ServiceNamespace']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['ServiceNamespace'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name SuspendedState -Value {
            $this.Properties['SuspendedState']
        } -SecondValue {
            param([ValidateType(([ApplicationAutoScalingScalableTargetSuspendedState], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['SuspendedState'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Condition -Value {
            $this._condition
        } -SecondValue {
            param(
                [ValidateType(([string], [IntrinsicFunction], [ConditionFunction]))] [object]
                $value
            )
            $this._condition = $value
        }
    }

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

Write-Verbose "Importing class 'ApplicationAutoScalingScalingPolicy'"

class ApplicationAutoScalingScalingPolicy : VSResource {
    hidden [string] $_vsFunctionName = 'New-VSApplicationAutoScalingScalingPolicy'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-applicationautoscaling-scalingpolicy.html'

    hidden [object] $_condition

    [string] $Type = 'AWS::ApplicationAutoScaling::ScalingPolicy'
    [string] $PolicyName
    [string] $PolicyType
    [string] $ResourceId
    [string] $ScalableDimension
    [string] $ScalingTargetId
    [string] $ServiceNamespace
    [ApplicationAutoScalingScalingPolicyStepScalingPolicyConfiguration] $StepScalingPolicyConfiguration
    [ApplicationAutoScalingScalingPolicyTargetTrackingScalingPolicyConfiguration] $TargetTrackingScalingPolicyConfiguration
    [VSJson] $Metadata
    [UpdatePolicy] $UpdatePolicy
    [string] $Condition

    hidden [void] _addAccessors() {
        $this._addBaseAccessors()
        $this | Add-Member -Force -MemberType ScriptProperty -Name PolicyName -Value {
            $this.Properties['PolicyName']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['PolicyName'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name PolicyType -Value {
            $this.Properties['PolicyType']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['PolicyType'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ResourceId -Value {
            $this.Properties['ResourceId']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['ResourceId'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ScalableDimension -Value {
            $this.Properties['ScalableDimension']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['ScalableDimension'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ScalingTargetId -Value {
            $this.Properties['ScalingTargetId']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['ScalingTargetId'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ServiceNamespace -Value {
            $this.Properties['ServiceNamespace']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['ServiceNamespace'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name StepScalingPolicyConfiguration -Value {
            $this.Properties['StepScalingPolicyConfiguration']
        } -SecondValue {
            param([ValidateType(([ApplicationAutoScalingScalingPolicyStepScalingPolicyConfiguration], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['StepScalingPolicyConfiguration'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name TargetTrackingScalingPolicyConfiguration -Value {
            $this.Properties['TargetTrackingScalingPolicyConfiguration']
        } -SecondValue {
            param([ValidateType(([ApplicationAutoScalingScalingPolicyTargetTrackingScalingPolicyConfiguration], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['TargetTrackingScalingPolicyConfiguration'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Condition -Value {
            $this._condition
        } -SecondValue {
            param(
                [ValidateType(([string], [IntrinsicFunction], [ConditionFunction]))] [object]
                $value
            )
            $this._condition = $value
        }
    }

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