VaporShell.Redshift.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 'RedshiftClusterEndpoint'"

class RedshiftClusterEndpoint : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSRedshiftClusterEndpoint'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-redshift-cluster-endpoint.html'

    hidden [object] $_port
    hidden [object] $_address

    [string] $Port
    [string] $Address

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

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

Write-Verbose "Importing class 'RedshiftClusterLoggingProperties'"

class RedshiftClusterLoggingProperties : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSRedshiftClusterLoggingProperties'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-redshift-cluster-loggingproperties.html'

    hidden [object] $_bucketName
    hidden [object] $_s3KeyPrefix

    [string] $BucketName
    [string] $S3KeyPrefix

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

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

Write-Verbose "Importing class 'RedshiftClusterParameterGroupParameter'"

class RedshiftClusterParameterGroupParameter : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSRedshiftClusterParameterGroupParameter'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-property-redshift-clusterparametergroup-parameter.html'

    hidden [object] $_parameterName
    hidden [object] $_parameterValue

    [string] $ParameterName
    [string] $ParameterValue

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

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

Write-Verbose "Importing class 'RedshiftCluster'"

class RedshiftCluster : VSResource {
    hidden [string] $_vsFunctionName = 'New-VSRedshiftCluster'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-redshift-cluster.html'

    hidden [string[]] $_attributes = @('Id','Endpoint.Port','Endpoint.Address','DeferMaintenanceIdentifier')
    hidden [object] $_condition

    [string] $Type = 'AWS::Redshift::Cluster'
    [string] $ClusterIdentifier
    [string] $MasterUsername
    [string] $MasterUserPassword
    [string] $NodeType
    [bool] $AllowVersionUpgrade
    [int] $AutomatedSnapshotRetentionPeriod
    [string] $AvailabilityZone
    [string] $ClusterParameterGroupName
    [string] $ClusterType
    [string] $ClusterVersion
    [string] $ClusterSubnetGroupName
    [string] $DBName
    [string] $ElasticIp
    [bool] $Encrypted
    [string] $HsmClientCertificateIdentifier
    [string] $HsmConfigurationIdentifier
    [string] $KmsKeyId
    [int] $NumberOfNodes
    [int] $Port
    [string] $PreferredMaintenanceWindow
    [bool] $PubliclyAccessible
    [string[]] $ClusterSecurityGroups
    [string[]] $IamRoles
    [VSTag[]] $Tags
    [string[]] $VpcSecurityGroupIds
    [string] $SnapshotClusterIdentifier
    [string] $SnapshotIdentifier
    [string] $OwnerAccount
    [RedshiftClusterLoggingProperties] $LoggingProperties
    [RedshiftClusterEndpoint] $Endpoint
    [string] $DestinationRegion
    [int] $SnapshotCopyRetentionPeriod
    [string] $SnapshotCopyGrantName
    [int] $ManualSnapshotRetentionPeriod
    [bool] $SnapshotCopyManual
    [bool] $AvailabilityZoneRelocation
    [string] $AvailabilityZoneRelocationStatus
    [string] $AquaConfigurationStatus
    [bool] $Classic
    [bool] $EnhancedVpcRouting
    [string] $MaintenanceTrackName
    [bool] $DeferMaintenance
    [string] $DeferMaintenanceStartTime
    [string] $DeferMaintenanceEndTime
    [int] $DeferMaintenanceDuration
    [string] $RevisionTarget
    [string] $ResourceAction
    [bool] $RotateEncryptionKey
    [VSJson] $Metadata
    [UpdatePolicy] $UpdatePolicy
    [string] $Condition

    hidden [void] _addAccessors() {
        $this._addBaseAccessors()
        $this | Add-Member -Force -MemberType ScriptProperty -Name ClusterIdentifier -Value {
            $this.Properties['ClusterIdentifier']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['ClusterIdentifier'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name MasterUsername -Value {
            $this.Properties['MasterUsername']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['MasterUsername'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name MasterUserPassword -Value {
            $this.Properties['MasterUserPassword']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['MasterUserPassword'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name NodeType -Value {
            $this.Properties['NodeType']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['NodeType'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name AllowVersionUpgrade -Value {
            $this.Properties['AllowVersionUpgrade']
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['AllowVersionUpgrade'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name AutomatedSnapshotRetentionPeriod -Value {
            $this.Properties['AutomatedSnapshotRetentionPeriod']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['AutomatedSnapshotRetentionPeriod'] = if ($cast = $value -as [int]) {
                $cast
            }
            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 ClusterParameterGroupName -Value {
            $this.Properties['ClusterParameterGroupName']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['ClusterParameterGroupName'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ClusterType -Value {
            $this.Properties['ClusterType']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['ClusterType'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ClusterVersion -Value {
            $this.Properties['ClusterVersion']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['ClusterVersion'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ClusterSubnetGroupName -Value {
            $this.Properties['ClusterSubnetGroupName']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['ClusterSubnetGroupName'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name DBName -Value {
            $this.Properties['DBName']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['DBName'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ElasticIp -Value {
            $this.Properties['ElasticIp']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['ElasticIp'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Encrypted -Value {
            $this.Properties['Encrypted']
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['Encrypted'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name HsmClientCertificateIdentifier -Value {
            $this.Properties['HsmClientCertificateIdentifier']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['HsmClientCertificateIdentifier'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name HsmConfigurationIdentifier -Value {
            $this.Properties['HsmConfigurationIdentifier']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['HsmConfigurationIdentifier'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name KmsKeyId -Value {
            $this.Properties['KmsKeyId']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['KmsKeyId'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name NumberOfNodes -Value {
            $this.Properties['NumberOfNodes']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['NumberOfNodes'] = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Port -Value {
            $this.Properties['Port']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['Port'] = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name PreferredMaintenanceWindow -Value {
            $this.Properties['PreferredMaintenanceWindow']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['PreferredMaintenanceWindow'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name PubliclyAccessible -Value {
            $this.Properties['PubliclyAccessible']
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['PubliclyAccessible'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ClusterSecurityGroups -Value {
            $this.Properties['ClusterSecurityGroups']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this.Properties['ClusterSecurityGroups'] = @($value)
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name IamRoles -Value {
            $this.Properties['IamRoles']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this.Properties['IamRoles'] = @($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 VpcSecurityGroupIds -Value {
            $this.Properties['VpcSecurityGroupIds']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this.Properties['VpcSecurityGroupIds'] = @($value)
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name SnapshotClusterIdentifier -Value {
            $this.Properties['SnapshotClusterIdentifier']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['SnapshotClusterIdentifier'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name SnapshotIdentifier -Value {
            $this.Properties['SnapshotIdentifier']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['SnapshotIdentifier'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name OwnerAccount -Value {
            $this.Properties['OwnerAccount']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['OwnerAccount'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name LoggingProperties -Value {
            $this.Properties['LoggingProperties']
        } -SecondValue {
            param([ValidateType(([RedshiftClusterLoggingProperties], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['LoggingProperties'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Endpoint -Value {
            $this.Properties['Endpoint']
        } -SecondValue {
            param([ValidateType(([RedshiftClusterEndpoint], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['Endpoint'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name DestinationRegion -Value {
            $this.Properties['DestinationRegion']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['DestinationRegion'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name SnapshotCopyRetentionPeriod -Value {
            $this.Properties['SnapshotCopyRetentionPeriod']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['SnapshotCopyRetentionPeriod'] = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name SnapshotCopyGrantName -Value {
            $this.Properties['SnapshotCopyGrantName']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['SnapshotCopyGrantName'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ManualSnapshotRetentionPeriod -Value {
            $this.Properties['ManualSnapshotRetentionPeriod']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['ManualSnapshotRetentionPeriod'] = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name SnapshotCopyManual -Value {
            $this.Properties['SnapshotCopyManual']
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['SnapshotCopyManual'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name AvailabilityZoneRelocation -Value {
            $this.Properties['AvailabilityZoneRelocation']
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['AvailabilityZoneRelocation'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name AvailabilityZoneRelocationStatus -Value {
            $this.Properties['AvailabilityZoneRelocationStatus']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['AvailabilityZoneRelocationStatus'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name AquaConfigurationStatus -Value {
            $this.Properties['AquaConfigurationStatus']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['AquaConfigurationStatus'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Classic -Value {
            $this.Properties['Classic']
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['Classic'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name EnhancedVpcRouting -Value {
            $this.Properties['EnhancedVpcRouting']
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['EnhancedVpcRouting'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name MaintenanceTrackName -Value {
            $this.Properties['MaintenanceTrackName']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['MaintenanceTrackName'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name DeferMaintenance -Value {
            $this.Properties['DeferMaintenance']
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['DeferMaintenance'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name DeferMaintenanceStartTime -Value {
            $this.Properties['DeferMaintenanceStartTime']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['DeferMaintenanceStartTime'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name DeferMaintenanceEndTime -Value {
            $this.Properties['DeferMaintenanceEndTime']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['DeferMaintenanceEndTime'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name DeferMaintenanceDuration -Value {
            $this.Properties['DeferMaintenanceDuration']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['DeferMaintenanceDuration'] = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name RevisionTarget -Value {
            $this.Properties['RevisionTarget']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['RevisionTarget'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ResourceAction -Value {
            $this.Properties['ResourceAction']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['ResourceAction'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name RotateEncryptionKey -Value {
            $this.Properties['RotateEncryptionKey']
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['RotateEncryptionKey'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Condition -Value {
            $this._condition
        } -SecondValue {
            param(
                [ValidateType(([string], [IntrinsicFunction], [ConditionFunction]))] [object]
                $value
            )
            $this._condition = $value
        }
    }

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

Write-Verbose "Importing class 'RedshiftClusterParameterGroup'"

class RedshiftClusterParameterGroup : VSResource {
    hidden [string] $_vsFunctionName = 'New-VSRedshiftClusterParameterGroup'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-redshift-clusterparametergroup.html'

    hidden [object] $_condition

    [string] $Type = 'AWS::Redshift::ClusterParameterGroup'
    [string] $Description
    [string] $ParameterGroupFamily
    [RedshiftClusterParameterGroupParameter[]] $Parameters
    [VSTag[]] $Tags
    [VSJson] $Metadata
    [UpdatePolicy] $UpdatePolicy
    [string] $Condition

    hidden [void] _addAccessors() {
        $this._addBaseAccessors()
        $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 ParameterGroupFamily -Value {
            $this.Properties['ParameterGroupFamily']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['ParameterGroupFamily'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Parameters -Value {
            $this.Properties['Parameters']
        } -SecondValue {
            param([ValidateType(([RedshiftClusterParameterGroupParameter], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this.Properties['Parameters'] = $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 Condition -Value {
            $this._condition
        } -SecondValue {
            param(
                [ValidateType(([string], [IntrinsicFunction], [ConditionFunction]))] [object]
                $value
            )
            $this._condition = $value
        }
    }

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

Write-Verbose "Importing class 'RedshiftClusterSubnetGroup'"

class RedshiftClusterSubnetGroup : VSResource {
    hidden [string] $_vsFunctionName = 'New-VSRedshiftClusterSubnetGroup'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-redshift-clustersubnetgroup.html'

    hidden [object] $_condition

    [string] $Type = 'AWS::Redshift::ClusterSubnetGroup'
    [string] $Description
    [string[]] $SubnetIds
    [VSTag[]] $Tags
    [VSJson] $Metadata
    [UpdatePolicy] $UpdatePolicy
    [string] $Condition

    hidden [void] _addAccessors() {
        $this._addBaseAccessors()
        $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 SubnetIds -Value {
            $this.Properties['SubnetIds']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this.Properties['SubnetIds'] = @($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 Condition -Value {
            $this._condition
        } -SecondValue {
            param(
                [ValidateType(([string], [IntrinsicFunction], [ConditionFunction]))] [object]
                $value
            )
            $this._condition = $value
        }
    }

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

Write-Verbose "Importing class 'RedshiftClusterSecurityGroup'"

class RedshiftClusterSecurityGroup : VSResource {
    hidden [string] $_vsFunctionName = 'New-VSRedshiftClusterSecurityGroup'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-redshift-clustersecuritygroup.html'

    hidden [object] $_condition

    [string] $Type = 'AWS::Redshift::ClusterSecurityGroup'
    [string] $Description
    [VSTag[]] $Tags
    [VSJson] $Metadata
    [UpdatePolicy] $UpdatePolicy
    [string] $Condition

    hidden [void] _addAccessors() {
        $this._addBaseAccessors()
        $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 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 Condition -Value {
            $this._condition
        } -SecondValue {
            param(
                [ValidateType(([string], [IntrinsicFunction], [ConditionFunction]))] [object]
                $value
            )
            $this._condition = $value
        }
    }

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

Write-Verbose "Importing class 'RedshiftClusterSecurityGroupIngress'"

class RedshiftClusterSecurityGroupIngress : VSResource {
    hidden [string] $_vsFunctionName = 'New-VSRedshiftClusterSecurityGroupIngress'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-redshift-clustersecuritygroupingress.html'

    hidden [object] $_condition

    [string] $Type = 'AWS::Redshift::ClusterSecurityGroupIngress'
    [string] $CIDRIP
    [string] $ClusterSecurityGroupName
    [string] $EC2SecurityGroupName
    [string] $EC2SecurityGroupOwnerId
    [VSJson] $Metadata
    [UpdatePolicy] $UpdatePolicy
    [string] $Condition

    hidden [void] _addAccessors() {
        $this._addBaseAccessors()
        $this | Add-Member -Force -MemberType ScriptProperty -Name CIDRIP -Value {
            $this.Properties['CIDRIP']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['CIDRIP'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ClusterSecurityGroupName -Value {
            $this.Properties['ClusterSecurityGroupName']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['ClusterSecurityGroupName'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name EC2SecurityGroupName -Value {
            $this.Properties['EC2SecurityGroupName']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['EC2SecurityGroupName'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name EC2SecurityGroupOwnerId -Value {
            $this.Properties['EC2SecurityGroupOwnerId']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['EC2SecurityGroupOwnerId'] = 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
        }
    }

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