VaporShell.MSK.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 'MSKClusterS3'"

class MSKClusterS3 : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSMSKClusterS3'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-msk-cluster-s3.html'

    hidden [object] $_bucket
    hidden [object] $_enabled
    hidden [object] $_prefix

    [string] $Bucket
    [bool] $Enabled
    [string] $Prefix

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

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

Write-Verbose "Importing class 'MSKClusterCloudWatchLogs'"

class MSKClusterCloudWatchLogs : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSMSKClusterCloudWatchLogs'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-msk-cluster-cloudwatchlogs.html'

    hidden [object] $_logGroup
    hidden [object] $_enabled

    [string] $LogGroup
    [bool] $Enabled

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

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

Write-Verbose "Importing class 'MSKClusterEncryptionAtRest'"

class MSKClusterEncryptionAtRest : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSMSKClusterEncryptionAtRest'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-msk-cluster-encryptionatrest.html'

    hidden [object] $_dataVolumeKMSKeyId

    [string] $DataVolumeKMSKeyId

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

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

Write-Verbose "Importing class 'MSKClusterUnauthenticated'"

class MSKClusterUnauthenticated : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSMSKClusterUnauthenticated'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-msk-cluster-unauthenticated.html'

    hidden [object] $_enabled

    [bool] $Enabled

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

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

Write-Verbose "Importing class 'MSKClusterBrokerLogs'"

class MSKClusterBrokerLogs : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSMSKClusterBrokerLogs'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-msk-cluster-brokerlogs.html'

    hidden [object] $_s3
    hidden [object] $_firehose
    hidden [object] $_cloudWatchLogs

    [MSKClusterS3] $S3
    [MSKClusterFirehose] $Firehose
    [MSKClusterCloudWatchLogs] $CloudWatchLogs

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name S3 -Value {
            $this._s3
        } -SecondValue {
            param([ValidateType(([MSKClusterS3], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._s3 = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Firehose -Value {
            $this._firehose
        } -SecondValue {
            param([ValidateType(([MSKClusterFirehose], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._firehose = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name CloudWatchLogs -Value {
            $this._cloudWatchLogs
        } -SecondValue {
            param([ValidateType(([MSKClusterCloudWatchLogs], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._cloudWatchLogs = $value
        }
    }

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

Write-Verbose "Importing class 'MSKClusterEncryptionInTransit'"

class MSKClusterEncryptionInTransit : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSMSKClusterEncryptionInTransit'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-msk-cluster-encryptionintransit.html'

    hidden [object] $_clientBroker
    hidden [object] $_inCluster

    [string] $ClientBroker
    [bool] $InCluster

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

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

Write-Verbose "Importing class 'MSKClusterPrometheus'"

class MSKClusterPrometheus : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSMSKClusterPrometheus'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-msk-cluster-prometheus.html'

    hidden [object] $_jmxExporter
    hidden [object] $_nodeExporter

    [MSKClusterJmxExporter] $JmxExporter
    [MSKClusterNodeExporter] $NodeExporter

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name JmxExporter -Value {
            $this._jmxExporter
        } -SecondValue {
            param([ValidateType(([MSKClusterJmxExporter], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._jmxExporter = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name NodeExporter -Value {
            $this._nodeExporter
        } -SecondValue {
            param([ValidateType(([MSKClusterNodeExporter], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._nodeExporter = $value
        }
    }

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

Write-Verbose "Importing class 'MSKClusterLoggingInfo'"

class MSKClusterLoggingInfo : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSMSKClusterLoggingInfo'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-msk-cluster-logginginfo.html'

    hidden [object] $_brokerLogs

    [MSKClusterBrokerLogs] $BrokerLogs

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

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

Write-Verbose "Importing class 'MSKClusterEncryptionInfo'"

class MSKClusterEncryptionInfo : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSMSKClusterEncryptionInfo'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-msk-cluster-encryptioninfo.html'

    hidden [object] $_encryptionAtRest
    hidden [object] $_encryptionInTransit

    [MSKClusterEncryptionAtRest] $EncryptionAtRest
    [MSKClusterEncryptionInTransit] $EncryptionInTransit

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name EncryptionAtRest -Value {
            $this._encryptionAtRest
        } -SecondValue {
            param([ValidateType(([MSKClusterEncryptionAtRest], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._encryptionAtRest = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name EncryptionInTransit -Value {
            $this._encryptionInTransit
        } -SecondValue {
            param([ValidateType(([MSKClusterEncryptionInTransit], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._encryptionInTransit = $value
        }
    }

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

Write-Verbose "Importing class 'MSKClusterIam'"

class MSKClusterIam : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSMSKClusterIam'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-msk-cluster-iam.html'

    hidden [object] $_enabled

    [bool] $Enabled

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

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

Write-Verbose "Importing class 'MSKClusterSasl'"

class MSKClusterSasl : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSMSKClusterSasl'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-msk-cluster-sasl.html'

    hidden [object] $_iam
    hidden [object] $_scram

    [MSKClusterIam] $Iam
    [MSKClusterScram] $Scram

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name Iam -Value {
            $this._iam
        } -SecondValue {
            param([ValidateType(([MSKClusterIam], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._iam = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Scram -Value {
            $this._scram
        } -SecondValue {
            param([ValidateType(([MSKClusterScram], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._scram = $value
        }
    }

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

Write-Verbose "Importing class 'MSKClusterConfigurationInfo'"

class MSKClusterConfigurationInfo : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSMSKClusterConfigurationInfo'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-msk-cluster-configurationinfo.html'

    hidden [object] $_revision
    hidden [object] $_arn

    [int] $Revision
    [string] $Arn

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

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

Write-Verbose "Importing class 'MSKClusterBrokerNodeGroupInfo'"

class MSKClusterBrokerNodeGroupInfo : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSMSKClusterBrokerNodeGroupInfo'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-msk-cluster-brokernodegroupinfo.html'

    hidden [object] $_securityGroups
    hidden [object] $_clientSubnets
    hidden [object] $_storageInfo
    hidden [object] $_brokerAZDistribution
    hidden [object] $_instanceType

    [string[]] $SecurityGroups
    [string[]] $ClientSubnets
    [MSKClusterStorageInfo] $StorageInfo
    [string] $BrokerAZDistribution
    [string] $InstanceType

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name SecurityGroups -Value {
            $this._securityGroups
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._securityGroups = @($value)
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ClientSubnets -Value {
            $this._clientSubnets
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._clientSubnets = @($value)
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name StorageInfo -Value {
            $this._storageInfo
        } -SecondValue {
            param([ValidateType(([MSKClusterStorageInfo], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._storageInfo = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name BrokerAZDistribution -Value {
            $this._brokerAZDistribution
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._brokerAZDistribution = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name InstanceType -Value {
            $this._instanceType
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._instanceType = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

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

Write-Verbose "Importing class 'MSKClusterScram'"

class MSKClusterScram : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSMSKClusterScram'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-msk-cluster-scram.html'

    hidden [object] $_enabled

    [bool] $Enabled

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

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

Write-Verbose "Importing class 'MSKClusterJmxExporter'"

class MSKClusterJmxExporter : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSMSKClusterJmxExporter'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-msk-cluster-jmxexporter.html'

    hidden [object] $_enabledInBroker

    [bool] $EnabledInBroker

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

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

Write-Verbose "Importing class 'MSKClusterStorageInfo'"

class MSKClusterStorageInfo : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSMSKClusterStorageInfo'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-msk-cluster-storageinfo.html'

    hidden [object] $_eBSStorageInfo

    [MSKClusterEBSStorageInfo] $EBSStorageInfo

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

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

Write-Verbose "Importing class 'MSKClusterNodeExporter'"

class MSKClusterNodeExporter : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSMSKClusterNodeExporter'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-msk-cluster-nodeexporter.html'

    hidden [object] $_enabledInBroker

    [bool] $EnabledInBroker

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

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

Write-Verbose "Importing class 'MSKClusterEBSStorageInfo'"

class MSKClusterEBSStorageInfo : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSMSKClusterEBSStorageInfo'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-msk-cluster-ebsstorageinfo.html'

    hidden [object] $_volumeSize

    [int] $VolumeSize

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

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

Write-Verbose "Importing class 'MSKClusterFirehose'"

class MSKClusterFirehose : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSMSKClusterFirehose'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-msk-cluster-firehose.html'

    hidden [object] $_deliveryStream
    hidden [object] $_enabled

    [string] $DeliveryStream
    [bool] $Enabled

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

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

Write-Verbose "Importing class 'MSKClusterClientAuthentication'"

class MSKClusterClientAuthentication : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSMSKClusterClientAuthentication'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-msk-cluster-clientauthentication.html'

    hidden [object] $_sasl
    hidden [object] $_unauthenticated
    hidden [object] $_tls

    [MSKClusterSasl] $Sasl
    [MSKClusterUnauthenticated] $Unauthenticated
    [MSKClusterTls] $Tls

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name Sasl -Value {
            $this._sasl
        } -SecondValue {
            param([ValidateType(([MSKClusterSasl], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._sasl = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Unauthenticated -Value {
            $this._unauthenticated
        } -SecondValue {
            param([ValidateType(([MSKClusterUnauthenticated], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._unauthenticated = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Tls -Value {
            $this._tls
        } -SecondValue {
            param([ValidateType(([MSKClusterTls], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._tls = $value
        }
    }

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

Write-Verbose "Importing class 'MSKClusterTls'"

class MSKClusterTls : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSMSKClusterTls'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-msk-cluster-tls.html'

    hidden [object] $_enabled
    hidden [object] $_certificateAuthorityArnList

    [bool] $Enabled
    [string[]] $CertificateAuthorityArnList

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name Enabled -Value {
            $this._enabled
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._enabled = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name CertificateAuthorityArnList -Value {
            $this._certificateAuthorityArnList
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._certificateAuthorityArnList = @($value)
        }
    }

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

Write-Verbose "Importing class 'MSKClusterOpenMonitoring'"

class MSKClusterOpenMonitoring : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSMSKClusterOpenMonitoring'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-msk-cluster-openmonitoring.html'

    hidden [object] $_prometheus

    [MSKClusterPrometheus] $Prometheus

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

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

Write-Verbose "Importing class 'MSKCluster'"

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

    hidden [object] $_condition

    [string] $Type = 'AWS::MSK::Cluster'
    [MSKClusterBrokerNodeGroupInfo] $BrokerNodeGroupInfo
    [string] $EnhancedMonitoring
    [string] $KafkaVersion
    [int] $NumberOfBrokerNodes
    [MSKClusterEncryptionInfo] $EncryptionInfo
    [MSKClusterOpenMonitoring] $OpenMonitoring
    [string] $ClusterName
    [MSKClusterClientAuthentication] $ClientAuthentication
    [MSKClusterLoggingInfo] $LoggingInfo
    [VSJson] $Tags
    [MSKClusterConfigurationInfo] $ConfigurationInfo
    [VSJson] $Metadata
    [UpdatePolicy] $UpdatePolicy
    [string] $Condition

    hidden [void] _addAccessors() {
        $this._addBaseAccessors()
        $this | Add-Member -Force -MemberType ScriptProperty -Name BrokerNodeGroupInfo -Value {
            $this.Properties['BrokerNodeGroupInfo']
        } -SecondValue {
            param([ValidateType(([MSKClusterBrokerNodeGroupInfo], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['BrokerNodeGroupInfo'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name EnhancedMonitoring -Value {
            $this.Properties['EnhancedMonitoring']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['EnhancedMonitoring'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name KafkaVersion -Value {
            $this.Properties['KafkaVersion']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['KafkaVersion'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name NumberOfBrokerNodes -Value {
            $this.Properties['NumberOfBrokerNodes']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['NumberOfBrokerNodes'] = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name EncryptionInfo -Value {
            $this.Properties['EncryptionInfo']
        } -SecondValue {
            param([ValidateType(([MSKClusterEncryptionInfo], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['EncryptionInfo'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name OpenMonitoring -Value {
            $this.Properties['OpenMonitoring']
        } -SecondValue {
            param([ValidateType(([MSKClusterOpenMonitoring], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['OpenMonitoring'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ClusterName -Value {
            $this.Properties['ClusterName']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['ClusterName'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ClientAuthentication -Value {
            $this.Properties['ClientAuthentication']
        } -SecondValue {
            param([ValidateType(([MSKClusterClientAuthentication], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['ClientAuthentication'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name LoggingInfo -Value {
            $this.Properties['LoggingInfo']
        } -SecondValue {
            param([ValidateType(([MSKClusterLoggingInfo], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['LoggingInfo'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Tags -Value {
            $this.Properties['Tags']
        } -SecondValue {
            param([ValidateType(([string], [VSJson], [VSYaml], [psobject], [IDictionary]))][object] $value)
            $this.Properties['Tags'] = [VSJson]::Transform($value)
            Write-Debug $this.Properties['Tags']
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ConfigurationInfo -Value {
            $this.Properties['ConfigurationInfo']
        } -SecondValue {
            param([ValidateType(([MSKClusterConfigurationInfo], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['ConfigurationInfo'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Condition -Value {
            $this._condition
        } -SecondValue {
            param(
                [ValidateType(([string], [IntrinsicFunction], [ConditionFunction]))] [object]
                $value
            )
            $this._condition = $value
        }
    }

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