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 'RedshiftScheduledActionResumeClusterMessage'"

class RedshiftScheduledActionResumeClusterMessage : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSRedshiftScheduledActionResumeClusterMessage'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-redshift-scheduledaction-resumeclustermessage.html'

    hidden [object] $_clusterIdentifier

    [string] $ClusterIdentifier

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

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

Write-Verbose "Importing class 'RedshiftScheduledActionPauseClusterMessage'"

class RedshiftScheduledActionPauseClusterMessage : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSRedshiftScheduledActionPauseClusterMessage'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-redshift-scheduledaction-pauseclustermessage.html'

    hidden [object] $_clusterIdentifier

    [string] $ClusterIdentifier

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

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

Write-Verbose "Importing class 'RedshiftScheduledActionScheduledActionType'"

class RedshiftScheduledActionScheduledActionType : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSRedshiftScheduledActionScheduledActionType'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-redshift-scheduledaction-scheduledactiontype.html'

    hidden [object] $_resizeCluster
    hidden [object] $_pauseCluster
    hidden [object] $_resumeCluster

    [RedshiftScheduledActionResizeClusterMessage] $ResizeCluster
    [RedshiftScheduledActionPauseClusterMessage] $PauseCluster
    [RedshiftScheduledActionResumeClusterMessage] $ResumeCluster

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name ResizeCluster -Value {
            $this._resizeCluster
        } -SecondValue {
            param([ValidateType(([RedshiftScheduledActionResizeClusterMessage], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._resizeCluster = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name PauseCluster -Value {
            $this._pauseCluster
        } -SecondValue {
            param([ValidateType(([RedshiftScheduledActionPauseClusterMessage], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._pauseCluster = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ResumeCluster -Value {
            $this._resumeCluster
        } -SecondValue {
            param([ValidateType(([RedshiftScheduledActionResumeClusterMessage], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._resumeCluster = $value
        }
    }

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

Write-Verbose "Importing class 'RedshiftEndpointAccessVpcSecurityGroup'"

class RedshiftEndpointAccessVpcSecurityGroup : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSRedshiftEndpointAccessVpcSecurityGroup'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-redshift-endpointaccess-vpcsecuritygroup.html'

    hidden [object] $_vpcSecurityGroupId
    hidden [object] $_status

    [string] $VpcSecurityGroupId
    [string] $Status

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

    RedshiftEndpointAccessVpcSecurityGroup() : base() {}
    RedshiftEndpointAccessVpcSecurityGroup([IDictionary] $props) : base($props) {}
    RedshiftEndpointAccessVpcSecurityGroup([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 'RedshiftScheduledActionResizeClusterMessage'"

class RedshiftScheduledActionResizeClusterMessage : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSRedshiftScheduledActionResizeClusterMessage'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-redshift-scheduledaction-resizeclustermessage.html'

    hidden [object] $_clusterIdentifier
    hidden [object] $_clusterType
    hidden [object] $_nodeType
    hidden [object] $_numberOfNodes
    hidden [object] $_classic

    [string] $ClusterIdentifier
    [string] $ClusterType
    [string] $NodeType
    [int] $NumberOfNodes
    [bool] $Classic

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name ClusterIdentifier -Value {
            $this._clusterIdentifier
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._clusterIdentifier = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ClusterType -Value {
            $this._clusterType
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._clusterType = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name NodeType -Value {
            $this._nodeType
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._nodeType = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name NumberOfNodes -Value {
            $this._numberOfNodes
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._numberOfNodes = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Classic -Value {
            $this._classic
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._classic = $value
        }
    }

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

Write-Verbose "Importing class 'RedshiftEndpointAccess'"

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

    hidden [string[]] $_attributes = @('Address','VpcSecurityGroups','EndpointStatus','EndpointCreateTime','Port')
    hidden [object] $_condition

    [string] $Type = 'AWS::Redshift::EndpointAccess'
    [string] $ClusterIdentifier
    [string] $ResourceOwner
    [string] $EndpointName
    [string] $SubnetGroupName
    [string[]] $VpcSecurityGroupIds
    [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 ResourceOwner -Value {
            $this.Properties['ResourceOwner']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['ResourceOwner'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name EndpointName -Value {
            $this.Properties['EndpointName']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['EndpointName'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name SubnetGroupName -Value {
            $this.Properties['SubnetGroupName']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['SubnetGroupName'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $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 Condition -Value {
            $this._condition
        } -SecondValue {
            param(
                [ValidateType(([string], [IntrinsicFunction], [ConditionFunction]))] [object]
                $value
            )
            $this._condition = $value
        }
    }

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

Write-Verbose "Importing class 'RedshiftScheduledAction'"

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

    hidden [string[]] $_attributes = @('State','NextInvocations')
    hidden [object] $_condition

    [string] $Type = 'AWS::Redshift::ScheduledAction'
    [string] $ScheduledActionName
    [RedshiftScheduledActionScheduledActionType] $TargetAction
    [string] $Schedule
    [string] $IamRole
    [string] $ScheduledActionDescription
    [string] $StartTime
    [string] $EndTime
    [bool] $Enable
    [VSJson] $Metadata
    [UpdatePolicy] $UpdatePolicy
    [string] $Condition

    hidden [void] _addAccessors() {
        $this._addBaseAccessors()
        $this | Add-Member -Force -MemberType ScriptProperty -Name ScheduledActionName -Value {
            $this.Properties['ScheduledActionName']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['ScheduledActionName'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name TargetAction -Value {
            $this.Properties['TargetAction']
        } -SecondValue {
            param([ValidateType(([RedshiftScheduledActionScheduledActionType], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['TargetAction'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Schedule -Value {
            $this.Properties['Schedule']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['Schedule'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name IamRole -Value {
            $this.Properties['IamRole']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['IamRole'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ScheduledActionDescription -Value {
            $this.Properties['ScheduledActionDescription']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['ScheduledActionDescription'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name StartTime -Value {
            $this.Properties['StartTime']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['StartTime'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name EndTime -Value {
            $this.Properties['EndTime']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['EndTime'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Enable -Value {
            $this.Properties['Enable']
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['Enable'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Condition -Value {
            $this._condition
        } -SecondValue {
            param(
                [ValidateType(([string], [IntrinsicFunction], [ConditionFunction]))] [object]
                $value
            )
            $this._condition = $value
        }
    }

    RedshiftScheduledAction() : base() {}
    RedshiftScheduledAction([IDictionary] $props) : base($props) {}
    RedshiftScheduledAction([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
    [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 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 'RedshiftEventSubscription'"

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

    hidden [string[]] $_attributes = @('CustomerAwsId','CustSubscriptionId','Status','SubscriptionCreationTime','SourceIdsList','EventCategoriesList')
    hidden [object] $_condition

    [string] $Type = 'AWS::Redshift::EventSubscription'
    [string] $SubscriptionName
    [string] $SnsTopicArn
    [string] $SourceType
    [string[]] $SourceIds
    [string[]] $EventCategories
    [string] $Severity
    [bool] $Enabled
    [VSTag[]] $Tags
    [VSJson] $Metadata
    [UpdatePolicy] $UpdatePolicy
    [string] $Condition

    hidden [void] _addAccessors() {
        $this._addBaseAccessors()
        $this | Add-Member -Force -MemberType ScriptProperty -Name SubscriptionName -Value {
            $this.Properties['SubscriptionName']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['SubscriptionName'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name SnsTopicArn -Value {
            $this.Properties['SnsTopicArn']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['SnsTopicArn'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name SourceType -Value {
            $this.Properties['SourceType']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['SourceType'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name SourceIds -Value {
            $this.Properties['SourceIds']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this.Properties['SourceIds'] = @($value)
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name EventCategories -Value {
            $this.Properties['EventCategories']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this.Properties['EventCategories'] = @($value)
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Severity -Value {
            $this.Properties['Severity']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['Severity'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Enabled -Value {
            $this.Properties['Enabled']
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['Enabled'] = $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
        }
    }

    RedshiftEventSubscription() : base() {}
    RedshiftEventSubscription([IDictionary] $props) : base($props) {}
    RedshiftEventSubscription([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) {}
}

Write-Verbose "Importing class 'RedshiftEndpointAuthorization'"

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

    hidden [string[]] $_attributes = @('Grantor','Grantee','AuthorizeTime','ClusterStatus','Status','AllowedAllVPCs','AllowedVPCs','EndpointCount')
    hidden [object] $_condition

    [string] $Type = 'AWS::Redshift::EndpointAuthorization'
    [string] $ClusterIdentifier
    [string] $Account
    [string[]] $VpcIds
    [bool] $Force
    [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 Account -Value {
            $this.Properties['Account']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['Account'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name VpcIds -Value {
            $this.Properties['VpcIds']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this.Properties['VpcIds'] = @($value)
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Force -Value {
            $this.Properties['Force']
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['Force'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Condition -Value {
            $this._condition
        } -SecondValue {
            param(
                [ValidateType(([string], [IntrinsicFunction], [ConditionFunction]))] [object]
                $value
            )
            $this._condition = $value
        }
    }

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