VaporShell.OpsWorks.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 'OpsWorksLayerShutdownEventConfiguration'"

class OpsWorksLayerShutdownEventConfiguration : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSOpsWorksLayerShutdownEventConfiguration'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-opsworks-layer-lifecycleeventconfiguration-shutdowneventconfiguration.html'

    hidden [object] $_delayUntilElbConnectionsDrained
    hidden [object] $_executionTimeout

    [bool] $DelayUntilElbConnectionsDrained
    [int] $ExecutionTimeout

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name DelayUntilElbConnectionsDrained -Value {
            $this._delayUntilElbConnectionsDrained
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._delayUntilElbConnectionsDrained = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ExecutionTimeout -Value {
            $this._executionTimeout
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._executionTimeout = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
    }

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

Write-Verbose "Importing class 'OpsWorksAppDataSource'"

class OpsWorksAppDataSource : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSOpsWorksAppDataSource'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-opsworks-app-datasource.html'

    hidden [object] $_arn
    hidden [object] $_databaseName
    hidden [object] $_type

    [string] $Arn
    [string] $DatabaseName
    [string] $Type

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

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

Write-Verbose "Importing class 'OpsWorksLayerVolumeConfiguration'"

class OpsWorksLayerVolumeConfiguration : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSOpsWorksLayerVolumeConfiguration'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-opsworks-layer-volumeconfiguration.html'

    hidden [object] $_encrypted
    hidden [object] $_iops
    hidden [object] $_mountPoint
    hidden [object] $_numberOfDisks
    hidden [object] $_raidLevel
    hidden [object] $_size
    hidden [object] $_volumeType

    [bool] $Encrypted
    [int] $Iops
    [string] $MountPoint
    [int] $NumberOfDisks
    [int] $RaidLevel
    [int] $Size
    [string] $VolumeType

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name Encrypted -Value {
            $this._encrypted
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._encrypted = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Iops -Value {
            $this._iops
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._iops = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name MountPoint -Value {
            $this._mountPoint
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._mountPoint = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name NumberOfDisks -Value {
            $this._numberOfDisks
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._numberOfDisks = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name RaidLevel -Value {
            $this._raidLevel
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._raidLevel = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Size -Value {
            $this._size
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._size = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name VolumeType -Value {
            $this._volumeType
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._volumeType = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

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

Write-Verbose "Importing class 'OpsWorksInstanceBlockDeviceMapping'"

class OpsWorksInstanceBlockDeviceMapping : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSOpsWorksInstanceBlockDeviceMapping'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-opsworks-instance-blockdevicemapping.html'

    hidden [object] $_deviceName
    hidden [object] $_ebs
    hidden [object] $_noDevice
    hidden [object] $_virtualName

    [string] $DeviceName
    [OpsWorksInstanceEbsBlockDevice] $Ebs
    [string] $NoDevice
    [string] $VirtualName

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name DeviceName -Value {
            $this._deviceName
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._deviceName = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Ebs -Value {
            $this._ebs
        } -SecondValue {
            param([ValidateType(([OpsWorksInstanceEbsBlockDevice], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._ebs = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name NoDevice -Value {
            $this._noDevice
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._noDevice = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name VirtualName -Value {
            $this._virtualName
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._virtualName = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

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

Write-Verbose "Importing class 'OpsWorksStackStackConfigurationManager'"

class OpsWorksStackStackConfigurationManager : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSOpsWorksStackStackConfigurationManager'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-opsworks-stack-stackconfigmanager.html'

    hidden [object] $_name
    hidden [object] $_version

    [string] $Name
    [string] $Version

    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 Version -Value {
            $this._version
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._version = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

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

Write-Verbose "Importing class 'OpsWorksStackRdsDbInstance'"

class OpsWorksStackRdsDbInstance : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSOpsWorksStackRdsDbInstance'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-opsworks-stack-rdsdbinstance.html'

    hidden [object] $_dbPassword
    hidden [object] $_dbUser
    hidden [object] $_rdsDbInstanceArn

    [string] $DbPassword
    [string] $DbUser
    [string] $RdsDbInstanceArn

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

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

Write-Verbose "Importing class 'OpsWorksStackSource'"

class OpsWorksStackSource : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSOpsWorksStackSource'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-opsworks-stack-source.html'

    hidden [object] $_password
    hidden [object] $_revision
    hidden [object] $_sshKey
    hidden [object] $_type
    hidden [object] $_url
    hidden [object] $_username

    [string] $Password
    [string] $Revision
    [string] $SshKey
    [string] $Type
    [string] $Url
    [string] $Username

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name Password -Value {
            $this._password
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._password = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Revision -Value {
            $this._revision
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._revision = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name SshKey -Value {
            $this._sshKey
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._sshKey = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Type -Value {
            $this._type
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._type = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Url -Value {
            $this._url
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._url = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Username -Value {
            $this._username
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._username = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

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

Write-Verbose "Importing class 'OpsWorksStackChefConfiguration'"

class OpsWorksStackChefConfiguration : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSOpsWorksStackChefConfiguration'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-opsworks-stack-chefconfiguration.html'

    hidden [object] $_berkshelfVersion
    hidden [object] $_manageBerkshelf

    [string] $BerkshelfVersion
    [bool] $ManageBerkshelf

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

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

Write-Verbose "Importing class 'OpsWorksAppSslConfiguration'"

class OpsWorksAppSslConfiguration : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSOpsWorksAppSslConfiguration'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-opsworks-app-sslconfiguration.html'

    hidden [object] $_certificate
    hidden [object] $_chain
    hidden [object] $_privateKey

    [string] $Certificate
    [string] $Chain
    [string] $PrivateKey

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

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

Write-Verbose "Importing class 'OpsWorksLayerRecipes'"

class OpsWorksLayerRecipes : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSOpsWorksLayerRecipes'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-opsworks-layer-recipes.html'

    hidden [object] $_configure
    hidden [object] $_deploy
    hidden [object] $_setup
    hidden [object] $_shutdown
    hidden [object] $_undeploy

    [string[]] $Configure
    [string[]] $Deploy
    [string[]] $Setup
    [string[]] $Shutdown
    [string[]] $Undeploy

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name Configure -Value {
            $this._configure
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._configure = @($value)
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Deploy -Value {
            $this._deploy
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._deploy = @($value)
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Setup -Value {
            $this._setup
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._setup = @($value)
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Shutdown -Value {
            $this._shutdown
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._shutdown = @($value)
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Undeploy -Value {
            $this._undeploy
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._undeploy = @($value)
        }
    }

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

Write-Verbose "Importing class 'OpsWorksInstanceTimeBasedAutoScaling'"

class OpsWorksInstanceTimeBasedAutoScaling : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSOpsWorksInstanceTimeBasedAutoScaling'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-opsworks-instance-timebasedautoscaling.html'

    hidden [object] $_friday
    hidden [object] $_monday
    hidden [object] $_saturday
    hidden [object] $_sunday
    hidden [object] $_thursday
    hidden [object] $_tuesday
    hidden [object] $_wednesday

    [string] $Friday
    [string] $Monday
    [string] $Saturday
    [string] $Sunday
    [string] $Thursday
    [string] $Tuesday
    [string] $Wednesday

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name Friday -Value {
            $this._friday
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._friday = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Monday -Value {
            $this._monday
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._monday = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Saturday -Value {
            $this._saturday
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._saturday = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Sunday -Value {
            $this._sunday
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._sunday = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Thursday -Value {
            $this._thursday
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._thursday = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Tuesday -Value {
            $this._tuesday
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._tuesday = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Wednesday -Value {
            $this._wednesday
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._wednesday = $value
        }
    }

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

Write-Verbose "Importing class 'OpsWorksAppEnvironmentVariable'"

class OpsWorksAppEnvironmentVariable : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSOpsWorksAppEnvironmentVariable'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-opsworks-app-environment.html'

    hidden [object] $_key
    hidden [object] $_secure
    hidden [object] $_value

    [string] $Key
    [bool] $Secure
    [string] $Value

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

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

Write-Verbose "Importing class 'OpsWorksInstanceEbsBlockDevice'"

class OpsWorksInstanceEbsBlockDevice : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSOpsWorksInstanceEbsBlockDevice'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-opsworks-instance-ebsblockdevice.html'

    hidden [object] $_deleteOnTermination
    hidden [object] $_iops
    hidden [object] $_snapshotId
    hidden [object] $_volumeSize
    hidden [object] $_volumeType

    [bool] $DeleteOnTermination
    [int] $Iops
    [string] $SnapshotId
    [int] $VolumeSize
    [string] $VolumeType

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name DeleteOnTermination -Value {
            $this._deleteOnTermination
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._deleteOnTermination = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Iops -Value {
            $this._iops
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._iops = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name SnapshotId -Value {
            $this._snapshotId
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._snapshotId = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name VolumeSize -Value {
            $this._volumeSize
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._volumeSize = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name VolumeType -Value {
            $this._volumeType
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._volumeType = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

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

Write-Verbose "Importing class 'OpsWorksLayerLifecycleEventConfiguration'"

class OpsWorksLayerLifecycleEventConfiguration : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSOpsWorksLayerLifecycleEventConfiguration'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-opsworks-layer-lifecycleeventconfiguration.html'

    hidden [object] $_shutdownEventConfiguration

    [OpsWorksLayerShutdownEventConfiguration] $ShutdownEventConfiguration

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name ShutdownEventConfiguration -Value {
            $this._shutdownEventConfiguration
        } -SecondValue {
            param([ValidateType(([OpsWorksLayerShutdownEventConfiguration], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._shutdownEventConfiguration = $value
        }
    }

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

Write-Verbose "Importing class 'OpsWorksLayerLoadBasedAutoScaling'"

class OpsWorksLayerLoadBasedAutoScaling : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSOpsWorksLayerLoadBasedAutoScaling'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-opsworks-layer-loadbasedautoscaling.html'

    hidden [object] $_downScaling
    hidden [object] $_enable
    hidden [object] $_upScaling

    [OpsWorksLayerAutoScalingThresholds] $DownScaling
    [bool] $Enable
    [OpsWorksLayerAutoScalingThresholds] $UpScaling

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name DownScaling -Value {
            $this._downScaling
        } -SecondValue {
            param([ValidateType(([OpsWorksLayerAutoScalingThresholds], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._downScaling = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Enable -Value {
            $this._enable
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._enable = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name UpScaling -Value {
            $this._upScaling
        } -SecondValue {
            param([ValidateType(([OpsWorksLayerAutoScalingThresholds], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._upScaling = $value
        }
    }

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

Write-Verbose "Importing class 'OpsWorksLayerAutoScalingThresholds'"

class OpsWorksLayerAutoScalingThresholds : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSOpsWorksLayerAutoScalingThresholds'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-opsworks-layer-loadbasedautoscaling-autoscalingthresholds.html'

    hidden [object] $_cpuThreshold
    hidden [object] $_ignoreMetricsTime
    hidden [object] $_instanceCount
    hidden [object] $_loadThreshold
    hidden [object] $_memoryThreshold
    hidden [object] $_thresholdsWaitTime

    [double] $CpuThreshold
    [int] $IgnoreMetricsTime
    [int] $InstanceCount
    [double] $LoadThreshold
    [double] $MemoryThreshold
    [int] $ThresholdsWaitTime

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name CpuThreshold -Value {
            $this._cpuThreshold
        } -SecondValue {
            param([ValidateType(([double], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._cpuThreshold = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name IgnoreMetricsTime -Value {
            $this._ignoreMetricsTime
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._ignoreMetricsTime = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name InstanceCount -Value {
            $this._instanceCount
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._instanceCount = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name LoadThreshold -Value {
            $this._loadThreshold
        } -SecondValue {
            param([ValidateType(([double], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._loadThreshold = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name MemoryThreshold -Value {
            $this._memoryThreshold
        } -SecondValue {
            param([ValidateType(([double], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._memoryThreshold = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ThresholdsWaitTime -Value {
            $this._thresholdsWaitTime
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._thresholdsWaitTime = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
    }

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

Write-Verbose "Importing class 'OpsWorksStackElasticIp'"

class OpsWorksStackElasticIp : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSOpsWorksStackElasticIp'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-opsworks-stack-elasticip.html'

    hidden [object] $_ip
    hidden [object] $_name

    [string] $Ip
    [string] $Name

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

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

Write-Verbose "Importing class 'OpsWorksAppSource'"

class OpsWorksAppSource : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSOpsWorksAppSource'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-opsworks-stack-source.html'

    hidden [object] $_password
    hidden [object] $_revision
    hidden [object] $_sshKey
    hidden [object] $_type
    hidden [object] $_url
    hidden [object] $_username

    [string] $Password
    [string] $Revision
    [string] $SshKey
    [string] $Type
    [string] $Url
    [string] $Username

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name Password -Value {
            $this._password
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._password = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Revision -Value {
            $this._revision
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._revision = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name SshKey -Value {
            $this._sshKey
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._sshKey = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Type -Value {
            $this._type
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._type = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Url -Value {
            $this._url
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._url = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Username -Value {
            $this._username
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._username = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

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

Write-Verbose "Importing class 'OpsWorksApp'"

class OpsWorksApp : VSResource {
    hidden [string] $_vsFunctionName = 'New-VSOpsWorksApp'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworks-app.html'

    hidden [object] $_condition

    [string] $Type = 'AWS::OpsWorks::App'
    [OpsWorksAppSource] $AppSource
    [string] $Attributes
    [OpsWorksAppDataSource[]] $DataSources
    [string] $Description
    [string[]] $Domains
    [bool] $EnableSsl
    [OpsWorksAppEnvironmentVariable[]] $Environment
    [string] $Name
    [string] $Shortname
    [OpsWorksAppSslConfiguration] $SslConfiguration
    [string] $StackId
    [string] $AppType
    [VSJson] $Metadata
    [UpdatePolicy] $UpdatePolicy
    [string] $Condition

    hidden [void] _addAccessors() {
        $this._addBaseAccessors()
        $this | Add-Member -Force -MemberType ScriptProperty -Name AppSource -Value {
            $this.Properties['AppSource']
        } -SecondValue {
            param([ValidateType(([OpsWorksAppSource], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['AppSource'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Attributes -Value {
            $this.Properties['Attributes']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['Attributes'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name DataSources -Value {
            $this.Properties['DataSources']
        } -SecondValue {
            param([ValidateType(([OpsWorksAppDataSource], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this.Properties['DataSources'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Description -Value {
            $this.Properties['Description']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['Description'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Domains -Value {
            $this.Properties['Domains']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this.Properties['Domains'] = @($value)
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name EnableSsl -Value {
            $this.Properties['EnableSsl']
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['EnableSsl'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Environment -Value {
            $this.Properties['Environment']
        } -SecondValue {
            param([ValidateType(([OpsWorksAppEnvironmentVariable], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this.Properties['Environment'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Name -Value {
            $this.Properties['Name']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['Name'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Shortname -Value {
            $this.Properties['Shortname']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['Shortname'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name SslConfiguration -Value {
            $this.Properties['SslConfiguration']
        } -SecondValue {
            param([ValidateType(([OpsWorksAppSslConfiguration], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['SslConfiguration'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name StackId -Value {
            $this.Properties['StackId']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['StackId'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name AppType -Value {
            $this.Properties['AppType']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['AppType'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Condition -Value {
            $this._condition
        } -SecondValue {
            param(
                [ValidateType(([string], [IntrinsicFunction], [ConditionFunction]))] [object]
                $value
            )
            $this._condition = $value
        }
    }

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

Write-Verbose "Importing class 'OpsWorksElasticLoadBalancerAttachment'"

class OpsWorksElasticLoadBalancerAttachment : VSResource {
    hidden [string] $_vsFunctionName = 'New-VSOpsWorksElasticLoadBalancerAttachment'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworks-elbattachment.html'

    hidden [object] $_condition

    [string] $Type = 'AWS::OpsWorks::ElasticLoadBalancerAttachment'
    [string] $ElasticLoadBalancerName
    [string] $LayerId
    [VSJson] $Metadata
    [UpdatePolicy] $UpdatePolicy
    [string] $Condition

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

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

Write-Verbose "Importing class 'OpsWorksInstance'"

class OpsWorksInstance : VSResource {
    hidden [string] $_vsFunctionName = 'New-VSOpsWorksInstance'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworks-instance.html'

    hidden [string[]] $_attributes = @('AvailabilityZone','PrivateDnsName','PrivateIp','PublicDnsName','PublicIp')
    hidden [object] $_condition

    [string] $Type = 'AWS::OpsWorks::Instance'
    [string] $AgentVersion
    [string] $AmiId
    [string] $Architecture
    [string] $AutoScalingType
    [string] $AvailabilityZone
    [OpsWorksInstanceBlockDeviceMapping[]] $BlockDeviceMappings
    [bool] $EbsOptimized
    [string[]] $ElasticIps
    [string] $Hostname
    [bool] $InstallUpdatesOnBoot
    [string] $InstanceType
    [string[]] $LayerIds
    [string] $Os
    [string] $RootDeviceType
    [string] $SshKeyName
    [string] $StackId
    [string] $SubnetId
    [string] $Tenancy
    [OpsWorksInstanceTimeBasedAutoScaling] $TimeBasedAutoScaling
    [string] $VirtualizationType
    [string[]] $Volumes
    [VSJson] $Metadata
    [UpdatePolicy] $UpdatePolicy
    [string] $Condition

    hidden [void] _addAccessors() {
        $this._addBaseAccessors()
        $this | Add-Member -Force -MemberType ScriptProperty -Name AgentVersion -Value {
            $this.Properties['AgentVersion']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['AgentVersion'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name AmiId -Value {
            $this.Properties['AmiId']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['AmiId'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Architecture -Value {
            $this.Properties['Architecture']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['Architecture'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name AutoScalingType -Value {
            $this.Properties['AutoScalingType']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['AutoScalingType'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name AvailabilityZone -Value {
            $this.Properties['AvailabilityZone']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['AvailabilityZone'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name BlockDeviceMappings -Value {
            $this.Properties['BlockDeviceMappings']
        } -SecondValue {
            param([ValidateType(([OpsWorksInstanceBlockDeviceMapping], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this.Properties['BlockDeviceMappings'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name EbsOptimized -Value {
            $this.Properties['EbsOptimized']
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['EbsOptimized'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ElasticIps -Value {
            $this.Properties['ElasticIps']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this.Properties['ElasticIps'] = @($value)
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Hostname -Value {
            $this.Properties['Hostname']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['Hostname'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name InstallUpdatesOnBoot -Value {
            $this.Properties['InstallUpdatesOnBoot']
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['InstallUpdatesOnBoot'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name InstanceType -Value {
            $this.Properties['InstanceType']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['InstanceType'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name LayerIds -Value {
            $this.Properties['LayerIds']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this.Properties['LayerIds'] = @($value)
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Os -Value {
            $this.Properties['Os']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['Os'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name RootDeviceType -Value {
            $this.Properties['RootDeviceType']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['RootDeviceType'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name SshKeyName -Value {
            $this.Properties['SshKeyName']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['SshKeyName'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name StackId -Value {
            $this.Properties['StackId']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['StackId'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name SubnetId -Value {
            $this.Properties['SubnetId']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['SubnetId'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Tenancy -Value {
            $this.Properties['Tenancy']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['Tenancy'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name TimeBasedAutoScaling -Value {
            $this.Properties['TimeBasedAutoScaling']
        } -SecondValue {
            param([ValidateType(([OpsWorksInstanceTimeBasedAutoScaling], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['TimeBasedAutoScaling'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name VirtualizationType -Value {
            $this.Properties['VirtualizationType']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['VirtualizationType'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Volumes -Value {
            $this.Properties['Volumes']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this.Properties['Volumes'] = @($value)
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Condition -Value {
            $this._condition
        } -SecondValue {
            param(
                [ValidateType(([string], [IntrinsicFunction], [ConditionFunction]))] [object]
                $value
            )
            $this._condition = $value
        }
    }

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

Write-Verbose "Importing class 'OpsWorksUserProfile'"

class OpsWorksUserProfile : VSResource {
    hidden [string] $_vsFunctionName = 'New-VSOpsWorksUserProfile'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworks-userprofile.html'

    hidden [string[]] $_attributes = @('SshUsername')
    hidden [object] $_condition

    [string] $Type = 'AWS::OpsWorks::UserProfile'
    [bool] $AllowSelfManagement
    [string] $IamUserArn
    [string] $SshPublicKey
    [string] $SshUsername
    [VSJson] $Metadata
    [UpdatePolicy] $UpdatePolicy
    [string] $Condition

    hidden [void] _addAccessors() {
        $this._addBaseAccessors()
        $this | Add-Member -Force -MemberType ScriptProperty -Name AllowSelfManagement -Value {
            $this.Properties['AllowSelfManagement']
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['AllowSelfManagement'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name IamUserArn -Value {
            $this.Properties['IamUserArn']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['IamUserArn'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name SshPublicKey -Value {
            $this.Properties['SshPublicKey']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['SshPublicKey'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name SshUsername -Value {
            $this.Properties['SshUsername']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['SshUsername'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Condition -Value {
            $this._condition
        } -SecondValue {
            param(
                [ValidateType(([string], [IntrinsicFunction], [ConditionFunction]))] [object]
                $value
            )
            $this._condition = $value
        }
    }

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

Write-Verbose "Importing class 'OpsWorksVolume'"

class OpsWorksVolume : VSResource {
    hidden [string] $_vsFunctionName = 'New-VSOpsWorksVolume'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworks-volume.html'

    hidden [object] $_condition

    [string] $Type = 'AWS::OpsWorks::Volume'
    [string] $Ec2VolumeId
    [string] $MountPoint
    [string] $Name
    [string] $StackId
    [VSJson] $Metadata
    [UpdatePolicy] $UpdatePolicy
    [string] $Condition

    hidden [void] _addAccessors() {
        $this._addBaseAccessors()
        $this | Add-Member -Force -MemberType ScriptProperty -Name Ec2VolumeId -Value {
            $this.Properties['Ec2VolumeId']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['Ec2VolumeId'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name MountPoint -Value {
            $this.Properties['MountPoint']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['MountPoint'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Name -Value {
            $this.Properties['Name']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['Name'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name StackId -Value {
            $this.Properties['StackId']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['StackId'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Condition -Value {
            $this._condition
        } -SecondValue {
            param(
                [ValidateType(([string], [IntrinsicFunction], [ConditionFunction]))] [object]
                $value
            )
            $this._condition = $value
        }
    }

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

Write-Verbose "Importing class 'OpsWorksLayer'"

class OpsWorksLayer : VSResource {
    hidden [string] $_vsFunctionName = 'New-VSOpsWorksLayer'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworks-layer.html'

    hidden [object] $_condition

    [string] $Type = 'AWS::OpsWorks::Layer'
    [string] $Attributes
    [bool] $AutoAssignElasticIps
    [bool] $AutoAssignPublicIps
    [string] $CustomInstanceProfileArn
    [VSJson] $CustomJson
    [OpsWorksLayerRecipes] $CustomRecipes
    [string[]] $CustomSecurityGroupIds
    [bool] $EnableAutoHealing
    [bool] $InstallUpdatesOnBoot
    [OpsWorksLayerLifecycleEventConfiguration] $LifecycleEventConfiguration
    [OpsWorksLayerLoadBasedAutoScaling] $LoadBasedAutoScaling
    [string] $Name
    [string[]] $Packages
    [string] $Shortname
    [string] $StackId
    [VSTag[]] $Tags
    [string] $LayerType
    [bool] $UseEbsOptimizedInstances
    [OpsWorksLayerVolumeConfiguration[]] $VolumeConfigurations
    [VSJson] $Metadata
    [UpdatePolicy] $UpdatePolicy
    [string] $Condition

    hidden [void] _addAccessors() {
        $this._addBaseAccessors()
        $this | Add-Member -Force -MemberType ScriptProperty -Name Attributes -Value {
            $this.Properties['Attributes']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['Attributes'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name AutoAssignElasticIps -Value {
            $this.Properties['AutoAssignElasticIps']
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['AutoAssignElasticIps'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name AutoAssignPublicIps -Value {
            $this.Properties['AutoAssignPublicIps']
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['AutoAssignPublicIps'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name CustomInstanceProfileArn -Value {
            $this.Properties['CustomInstanceProfileArn']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['CustomInstanceProfileArn'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name CustomJson -Value {
            $this.Properties['CustomJson']
        } -SecondValue {
            param([ValidateType(([string], [VSJson], [VSYaml], [psobject], [IDictionary]))][object] $value)
            $this.Properties['CustomJson'] = [VSJson]::Transform($value)
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name CustomRecipes -Value {
            $this.Properties['CustomRecipes']
        } -SecondValue {
            param([ValidateType(([OpsWorksLayerRecipes], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['CustomRecipes'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name CustomSecurityGroupIds -Value {
            $this.Properties['CustomSecurityGroupIds']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this.Properties['CustomSecurityGroupIds'] = @($value)
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name EnableAutoHealing -Value {
            $this.Properties['EnableAutoHealing']
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['EnableAutoHealing'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name InstallUpdatesOnBoot -Value {
            $this.Properties['InstallUpdatesOnBoot']
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['InstallUpdatesOnBoot'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name LifecycleEventConfiguration -Value {
            $this.Properties['LifecycleEventConfiguration']
        } -SecondValue {
            param([ValidateType(([OpsWorksLayerLifecycleEventConfiguration], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['LifecycleEventConfiguration'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name LoadBasedAutoScaling -Value {
            $this.Properties['LoadBasedAutoScaling']
        } -SecondValue {
            param([ValidateType(([OpsWorksLayerLoadBasedAutoScaling], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['LoadBasedAutoScaling'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Name -Value {
            $this.Properties['Name']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['Name'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Packages -Value {
            $this.Properties['Packages']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this.Properties['Packages'] = @($value)
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Shortname -Value {
            $this.Properties['Shortname']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['Shortname'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name StackId -Value {
            $this.Properties['StackId']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['StackId'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Tags -Value {
            $this.Properties['Tags']
        } -SecondValue {
            param([TransformTag()] [ValidateType(([IDictionary], [psobject], [VSTag]))] [object] $value)
            $this.Properties['Tags'] = [VSTag]::TransformTag($value)
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name LayerType -Value {
            $this.Properties['LayerType']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['LayerType'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name UseEbsOptimizedInstances -Value {
            $this.Properties['UseEbsOptimizedInstances']
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['UseEbsOptimizedInstances'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name VolumeConfigurations -Value {
            $this.Properties['VolumeConfigurations']
        } -SecondValue {
            param([ValidateType(([OpsWorksLayerVolumeConfiguration], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this.Properties['VolumeConfigurations'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Condition -Value {
            $this._condition
        } -SecondValue {
            param(
                [ValidateType(([string], [IntrinsicFunction], [ConditionFunction]))] [object]
                $value
            )
            $this._condition = $value
        }
    }

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

Write-Verbose "Importing class 'OpsWorksStack'"

class OpsWorksStack : VSResource {
    hidden [string] $_vsFunctionName = 'New-VSOpsWorksStack'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworks-stack.html'

    hidden [object] $_condition

    [string] $Type = 'AWS::OpsWorks::Stack'
    [string] $AgentVersion
    [string] $Attributes
    [OpsWorksStackChefConfiguration] $ChefConfiguration
    [string[]] $CloneAppIds
    [bool] $ClonePermissions
    [OpsWorksStackStackConfigurationManager] $ConfigurationManager
    [OpsWorksStackSource] $CustomCookbooksSource
    [VSJson] $CustomJson
    [string] $DefaultAvailabilityZone
    [string] $DefaultInstanceProfileArn
    [string] $DefaultOs
    [string] $DefaultRootDeviceType
    [string] $DefaultSshKeyName
    [string] $DefaultSubnetId
    [string] $EcsClusterArn
    [OpsWorksStackElasticIp[]] $ElasticIps
    [string] $HostnameTheme
    [string] $Name
    [OpsWorksStackRdsDbInstance[]] $RdsDbInstances
    [string] $ServiceRoleArn
    [string] $SourceStackId
    [VSTag[]] $Tags
    [bool] $UseCustomCookbooks
    [bool] $UseOpsworksSecurityGroups
    [string] $VpcId
    [VSJson] $Metadata
    [UpdatePolicy] $UpdatePolicy
    [string] $Condition

    hidden [void] _addAccessors() {
        $this._addBaseAccessors()
        $this | Add-Member -Force -MemberType ScriptProperty -Name AgentVersion -Value {
            $this.Properties['AgentVersion']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['AgentVersion'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Attributes -Value {
            $this.Properties['Attributes']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['Attributes'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ChefConfiguration -Value {
            $this.Properties['ChefConfiguration']
        } -SecondValue {
            param([ValidateType(([OpsWorksStackChefConfiguration], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['ChefConfiguration'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name CloneAppIds -Value {
            $this.Properties['CloneAppIds']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this.Properties['CloneAppIds'] = @($value)
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ClonePermissions -Value {
            $this.Properties['ClonePermissions']
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['ClonePermissions'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ConfigurationManager -Value {
            $this.Properties['ConfigurationManager']
        } -SecondValue {
            param([ValidateType(([OpsWorksStackStackConfigurationManager], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['ConfigurationManager'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name CustomCookbooksSource -Value {
            $this.Properties['CustomCookbooksSource']
        } -SecondValue {
            param([ValidateType(([OpsWorksStackSource], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['CustomCookbooksSource'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name CustomJson -Value {
            $this.Properties['CustomJson']
        } -SecondValue {
            param([ValidateType(([string], [VSJson], [VSYaml], [psobject], [IDictionary]))][object] $value)
            $this.Properties['CustomJson'] = [VSJson]::Transform($value)
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name DefaultAvailabilityZone -Value {
            $this.Properties['DefaultAvailabilityZone']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['DefaultAvailabilityZone'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name DefaultInstanceProfileArn -Value {
            $this.Properties['DefaultInstanceProfileArn']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['DefaultInstanceProfileArn'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name DefaultOs -Value {
            $this.Properties['DefaultOs']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['DefaultOs'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name DefaultRootDeviceType -Value {
            $this.Properties['DefaultRootDeviceType']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['DefaultRootDeviceType'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name DefaultSshKeyName -Value {
            $this.Properties['DefaultSshKeyName']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['DefaultSshKeyName'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name DefaultSubnetId -Value {
            $this.Properties['DefaultSubnetId']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['DefaultSubnetId'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name EcsClusterArn -Value {
            $this.Properties['EcsClusterArn']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['EcsClusterArn'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ElasticIps -Value {
            $this.Properties['ElasticIps']
        } -SecondValue {
            param([ValidateType(([OpsWorksStackElasticIp], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this.Properties['ElasticIps'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name HostnameTheme -Value {
            $this.Properties['HostnameTheme']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['HostnameTheme'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Name -Value {
            $this.Properties['Name']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['Name'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name RdsDbInstances -Value {
            $this.Properties['RdsDbInstances']
        } -SecondValue {
            param([ValidateType(([OpsWorksStackRdsDbInstance], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this.Properties['RdsDbInstances'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ServiceRoleArn -Value {
            $this.Properties['ServiceRoleArn']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['ServiceRoleArn'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name SourceStackId -Value {
            $this.Properties['SourceStackId']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['SourceStackId'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Tags -Value {
            $this.Properties['Tags']
        } -SecondValue {
            param([TransformTag()] [ValidateType(([IDictionary], [psobject], [VSTag]))] [object] $value)
            $this.Properties['Tags'] = [VSTag]::TransformTag($value)
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name UseCustomCookbooks -Value {
            $this.Properties['UseCustomCookbooks']
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['UseCustomCookbooks'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name UseOpsworksSecurityGroups -Value {
            $this.Properties['UseOpsworksSecurityGroups']
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['UseOpsworksSecurityGroups'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name VpcId -Value {
            $this.Properties['VpcId']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['VpcId'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Condition -Value {
            $this._condition
        } -SecondValue {
            param(
                [ValidateType(([string], [IntrinsicFunction], [ConditionFunction]))] [object]
                $value
            )
            $this._condition = $value
        }
    }

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