VaporShell.FSx.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 'FSxFileSystemNfsExports'"

class FSxFileSystemNfsExports : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSFSxFileSystemNfsExports'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-fsx-filesystem-openzfsconfiguration-rootvolumeconfiguration-nfsexports.html'

    hidden [object] $_clientConfigurations

    [FSxFileSystemClientConfigurations[]] $ClientConfigurations

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

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

Write-Verbose "Importing class 'FSxFileSystemOpenZFSConfiguration'"

class FSxFileSystemOpenZFSConfiguration : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSFSxFileSystemOpenZFSConfiguration'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-fsx-filesystem-openzfsconfiguration.html'

    hidden [object] $_options
    hidden [object] $_weeklyMaintenanceStartTime
    hidden [object] $_diskIopsConfiguration
    hidden [object] $_copyTagsToVolumes
    hidden [object] $_deploymentType
    hidden [object] $_dailyAutomaticBackupStartTime
    hidden [object] $_copyTagsToBackups
    hidden [object] $_throughputCapacity
    hidden [object] $_rootVolumeConfiguration
    hidden [object] $_automaticBackupRetentionDays

    [string[]] $Options
    [string] $WeeklyMaintenanceStartTime
    [FSxFileSystemDiskIopsConfiguration] $DiskIopsConfiguration
    [bool] $CopyTagsToVolumes
    [string] $DeploymentType
    [string] $DailyAutomaticBackupStartTime
    [bool] $CopyTagsToBackups
    [int] $ThroughputCapacity
    [FSxFileSystemRootVolumeConfiguration] $RootVolumeConfiguration
    [int] $AutomaticBackupRetentionDays

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name Options -Value {
            $this._options
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._options = @($value)
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name WeeklyMaintenanceStartTime -Value {
            $this._weeklyMaintenanceStartTime
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._weeklyMaintenanceStartTime = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name DiskIopsConfiguration -Value {
            $this._diskIopsConfiguration
        } -SecondValue {
            param([ValidateType(([FSxFileSystemDiskIopsConfiguration], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._diskIopsConfiguration = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name CopyTagsToVolumes -Value {
            $this._copyTagsToVolumes
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._copyTagsToVolumes = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name DeploymentType -Value {
            $this._deploymentType
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._deploymentType = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name DailyAutomaticBackupStartTime -Value {
            $this._dailyAutomaticBackupStartTime
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._dailyAutomaticBackupStartTime = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name CopyTagsToBackups -Value {
            $this._copyTagsToBackups
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._copyTagsToBackups = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ThroughputCapacity -Value {
            $this._throughputCapacity
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._throughputCapacity = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name RootVolumeConfiguration -Value {
            $this._rootVolumeConfiguration
        } -SecondValue {
            param([ValidateType(([FSxFileSystemRootVolumeConfiguration], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._rootVolumeConfiguration = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name AutomaticBackupRetentionDays -Value {
            $this._automaticBackupRetentionDays
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._automaticBackupRetentionDays = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
    }

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

Write-Verbose "Importing class 'FSxVolumeTieringPolicy'"

class FSxVolumeTieringPolicy : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSFSxVolumeTieringPolicy'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-fsx-volume-ontapconfiguration-tieringpolicy.html'

    hidden [object] $_coolingPeriod
    hidden [object] $_name

    [int] $CoolingPeriod
    [string] $Name

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

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

Write-Verbose "Importing class 'FSxStorageVirtualMachineActiveDirectoryConfiguration'"

class FSxStorageVirtualMachineActiveDirectoryConfiguration : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSFSxStorageVirtualMachineActiveDirectoryConfiguration'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-fsx-storagevirtualmachine-activedirectoryconfiguration.html'

    hidden [object] $_selfManagedActiveDirectoryConfiguration
    hidden [object] $_netBiosName

    [FSxStorageVirtualMachineSelfManagedActiveDirectoryConfiguration] $SelfManagedActiveDirectoryConfiguration
    [string] $NetBiosName

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

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

Write-Verbose "Importing class 'FSxVolumeClientConfigurations'"

class FSxVolumeClientConfigurations : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSFSxVolumeClientConfigurations'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-fsx-volume-openzfsconfiguration-nfsexports-clientconfigurations.html'

    hidden [object] $_options
    hidden [object] $_clients

    [string[]] $Options
    [string] $Clients

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

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

Write-Verbose "Importing class 'FSxStorageVirtualMachineSelfManagedActiveDirectoryConfiguration'"

class FSxStorageVirtualMachineSelfManagedActiveDirectoryConfiguration : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSFSxStorageVirtualMachineSelfManagedActiveDirectoryConfiguration'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-fsx-storagevirtualmachine-activedirectoryconfiguration-selfmanagedactivedirectoryconfiguration.html'

    hidden [object] $_fileSystemAdministratorsGroup
    hidden [object] $_userName
    hidden [object] $_domainName
    hidden [object] $_organizationalUnitDistinguishedName
    hidden [object] $_dnsIps
    hidden [object] $_password

    [string] $FileSystemAdministratorsGroup
    [string] $UserName
    [string] $DomainName
    [string] $OrganizationalUnitDistinguishedName
    [string[]] $DnsIps
    [string] $Password

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name FileSystemAdministratorsGroup -Value {
            $this._fileSystemAdministratorsGroup
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._fileSystemAdministratorsGroup = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name UserName -Value {
            $this._userName
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._userName = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name DomainName -Value {
            $this._domainName
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._domainName = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name OrganizationalUnitDistinguishedName -Value {
            $this._organizationalUnitDistinguishedName
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._organizationalUnitDistinguishedName = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name DnsIps -Value {
            $this._dnsIps
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._dnsIps = @($value)
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Password -Value {
            $this._password
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._password = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

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

Write-Verbose "Importing class 'FSxFileSystemUserAndGroupQuotas'"

class FSxFileSystemUserAndGroupQuotas : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSFSxFileSystemUserAndGroupQuotas'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-fsx-filesystem-openzfsconfiguration-rootvolumeconfiguration-userandgroupquotas.html'

    hidden [object] $_type
    hidden [object] $_id
    hidden [object] $_storageCapacityQuotaGiB

    [string] $Type
    [int] $Id
    [int] $StorageCapacityQuotaGiB

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name Type -Value {
            $this._type
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._type = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Id -Value {
            $this._id
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._id = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name StorageCapacityQuotaGiB -Value {
            $this._storageCapacityQuotaGiB
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._storageCapacityQuotaGiB = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
    }

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

Write-Verbose "Importing class 'FSxVolumeOriginSnapshot'"

class FSxVolumeOriginSnapshot : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSFSxVolumeOriginSnapshot'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-fsx-volume-openzfsconfiguration-originsnapshot.html'

    hidden [object] $_copyStrategy
    hidden [object] $_snapshotARN

    [string] $CopyStrategy
    [string] $SnapshotARN

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

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

Write-Verbose "Importing class 'FSxFileSystemOntapConfiguration'"

class FSxFileSystemOntapConfiguration : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSFSxFileSystemOntapConfiguration'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-fsx-filesystem-ontapconfiguration.html'

    hidden [object] $_fsxAdminPassword
    hidden [object] $_routeTableIds
    hidden [object] $_weeklyMaintenanceStartTime
    hidden [object] $_diskIopsConfiguration
    hidden [object] $_deploymentType
    hidden [object] $_dailyAutomaticBackupStartTime
    hidden [object] $_throughputCapacity
    hidden [object] $_automaticBackupRetentionDays
    hidden [object] $_endpointIpAddressRange
    hidden [object] $_preferredSubnetId

    [string] $FsxAdminPassword
    [string[]] $RouteTableIds
    [string] $WeeklyMaintenanceStartTime
    [FSxFileSystemDiskIopsConfiguration] $DiskIopsConfiguration
    [string] $DeploymentType
    [string] $DailyAutomaticBackupStartTime
    [int] $ThroughputCapacity
    [int] $AutomaticBackupRetentionDays
    [string] $EndpointIpAddressRange
    [string] $PreferredSubnetId

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name FsxAdminPassword -Value {
            $this._fsxAdminPassword
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._fsxAdminPassword = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name RouteTableIds -Value {
            $this._routeTableIds
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._routeTableIds = @($value)
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name WeeklyMaintenanceStartTime -Value {
            $this._weeklyMaintenanceStartTime
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._weeklyMaintenanceStartTime = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name DiskIopsConfiguration -Value {
            $this._diskIopsConfiguration
        } -SecondValue {
            param([ValidateType(([FSxFileSystemDiskIopsConfiguration], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._diskIopsConfiguration = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name DeploymentType -Value {
            $this._deploymentType
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._deploymentType = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name DailyAutomaticBackupStartTime -Value {
            $this._dailyAutomaticBackupStartTime
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._dailyAutomaticBackupStartTime = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ThroughputCapacity -Value {
            $this._throughputCapacity
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._throughputCapacity = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name AutomaticBackupRetentionDays -Value {
            $this._automaticBackupRetentionDays
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._automaticBackupRetentionDays = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name EndpointIpAddressRange -Value {
            $this._endpointIpAddressRange
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._endpointIpAddressRange = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name PreferredSubnetId -Value {
            $this._preferredSubnetId
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._preferredSubnetId = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

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

Write-Verbose "Importing class 'FSxFileSystemRootVolumeConfiguration'"

class FSxFileSystemRootVolumeConfiguration : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSFSxFileSystemRootVolumeConfiguration'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-fsx-filesystem-openzfsconfiguration-rootvolumeconfiguration.html'

    hidden [object] $_readOnly
    hidden [object] $_dataCompressionType
    hidden [object] $_nfsExports
    hidden [object] $_copyTagsToSnapshots
    hidden [object] $_recordSizeKiB
    hidden [object] $_userAndGroupQuotas

    [bool] $ReadOnly
    [string] $DataCompressionType
    [FSxFileSystemNfsExports[]] $NfsExports
    [bool] $CopyTagsToSnapshots
    [int] $RecordSizeKiB
    [FSxFileSystemUserAndGroupQuotas[]] $UserAndGroupQuotas

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name ReadOnly -Value {
            $this._readOnly
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._readOnly = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name DataCompressionType -Value {
            $this._dataCompressionType
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._dataCompressionType = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name NfsExports -Value {
            $this._nfsExports
        } -SecondValue {
            param([ValidateType(([FSxFileSystemNfsExports], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._nfsExports = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name CopyTagsToSnapshots -Value {
            $this._copyTagsToSnapshots
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._copyTagsToSnapshots = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name RecordSizeKiB -Value {
            $this._recordSizeKiB
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._recordSizeKiB = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name UserAndGroupQuotas -Value {
            $this._userAndGroupQuotas
        } -SecondValue {
            param([ValidateType(([FSxFileSystemUserAndGroupQuotas], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._userAndGroupQuotas = $value
        }
    }

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

Write-Verbose "Importing class 'FSxFileSystemLustreConfiguration'"

class FSxFileSystemLustreConfiguration : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSFSxFileSystemLustreConfiguration'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-fsx-filesystem-lustreconfiguration.html'

    hidden [object] $_dataCompressionType
    hidden [object] $_driveCacheType
    hidden [object] $_importPath
    hidden [object] $_weeklyMaintenanceStartTime
    hidden [object] $_autoImportPolicy
    hidden [object] $_importedFileChunkSize
    hidden [object] $_deploymentType
    hidden [object] $_dailyAutomaticBackupStartTime
    hidden [object] $_copyTagsToBackups
    hidden [object] $_exportPath
    hidden [object] $_perUnitStorageThroughput
    hidden [object] $_automaticBackupRetentionDays

    [string] $DataCompressionType
    [string] $DriveCacheType
    [string] $ImportPath
    [string] $WeeklyMaintenanceStartTime
    [string] $AutoImportPolicy
    [int] $ImportedFileChunkSize
    [string] $DeploymentType
    [string] $DailyAutomaticBackupStartTime
    [bool] $CopyTagsToBackups
    [string] $ExportPath
    [int] $PerUnitStorageThroughput
    [int] $AutomaticBackupRetentionDays

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name DataCompressionType -Value {
            $this._dataCompressionType
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._dataCompressionType = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name DriveCacheType -Value {
            $this._driveCacheType
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._driveCacheType = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ImportPath -Value {
            $this._importPath
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._importPath = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name WeeklyMaintenanceStartTime -Value {
            $this._weeklyMaintenanceStartTime
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._weeklyMaintenanceStartTime = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name AutoImportPolicy -Value {
            $this._autoImportPolicy
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._autoImportPolicy = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ImportedFileChunkSize -Value {
            $this._importedFileChunkSize
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._importedFileChunkSize = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name DeploymentType -Value {
            $this._deploymentType
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._deploymentType = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name DailyAutomaticBackupStartTime -Value {
            $this._dailyAutomaticBackupStartTime
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._dailyAutomaticBackupStartTime = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name CopyTagsToBackups -Value {
            $this._copyTagsToBackups
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._copyTagsToBackups = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ExportPath -Value {
            $this._exportPath
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._exportPath = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name PerUnitStorageThroughput -Value {
            $this._perUnitStorageThroughput
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._perUnitStorageThroughput = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name AutomaticBackupRetentionDays -Value {
            $this._automaticBackupRetentionDays
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._automaticBackupRetentionDays = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
    }

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

Write-Verbose "Importing class 'FSxFileSystemSelfManagedActiveDirectoryConfiguration'"

class FSxFileSystemSelfManagedActiveDirectoryConfiguration : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSFSxFileSystemSelfManagedActiveDirectoryConfiguration'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-fsx-filesystem-windowsconfiguration-selfmanagedactivedirectoryconfiguration.html'

    hidden [object] $_fileSystemAdministratorsGroup
    hidden [object] $_userName
    hidden [object] $_domainName
    hidden [object] $_organizationalUnitDistinguishedName
    hidden [object] $_dnsIps
    hidden [object] $_password

    [string] $FileSystemAdministratorsGroup
    [string] $UserName
    [string] $DomainName
    [string] $OrganizationalUnitDistinguishedName
    [string[]] $DnsIps
    [string] $Password

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name FileSystemAdministratorsGroup -Value {
            $this._fileSystemAdministratorsGroup
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._fileSystemAdministratorsGroup = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name UserName -Value {
            $this._userName
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._userName = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name DomainName -Value {
            $this._domainName
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._domainName = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name OrganizationalUnitDistinguishedName -Value {
            $this._organizationalUnitDistinguishedName
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._organizationalUnitDistinguishedName = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name DnsIps -Value {
            $this._dnsIps
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._dnsIps = @($value)
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Password -Value {
            $this._password
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._password = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

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

Write-Verbose "Importing class 'FSxVolumeOpenZFSConfiguration'"

class FSxVolumeOpenZFSConfiguration : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSFSxVolumeOpenZFSConfiguration'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-fsx-volume-openzfsconfiguration.html'

    hidden [object] $_readOnly
    hidden [object] $_options
    hidden [object] $_dataCompressionType
    hidden [object] $_nfsExports
    hidden [object] $_storageCapacityQuotaGiB
    hidden [object] $_copyTagsToSnapshots
    hidden [object] $_parentVolumeId
    hidden [object] $_storageCapacityReservationGiB
    hidden [object] $_recordSizeKiB
    hidden [object] $_originSnapshot
    hidden [object] $_userAndGroupQuotas

    [bool] $ReadOnly
    [string[]] $Options
    [string] $DataCompressionType
    [FSxVolumeNfsExports[]] $NfsExports
    [int] $StorageCapacityQuotaGiB
    [bool] $CopyTagsToSnapshots
    [string] $ParentVolumeId
    [int] $StorageCapacityReservationGiB
    [int] $RecordSizeKiB
    [FSxVolumeOriginSnapshot] $OriginSnapshot
    [FSxVolumeUserAndGroupQuotas[]] $UserAndGroupQuotas

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name ReadOnly -Value {
            $this._readOnly
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._readOnly = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Options -Value {
            $this._options
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._options = @($value)
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name DataCompressionType -Value {
            $this._dataCompressionType
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._dataCompressionType = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name NfsExports -Value {
            $this._nfsExports
        } -SecondValue {
            param([ValidateType(([FSxVolumeNfsExports], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._nfsExports = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name StorageCapacityQuotaGiB -Value {
            $this._storageCapacityQuotaGiB
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._storageCapacityQuotaGiB = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name CopyTagsToSnapshots -Value {
            $this._copyTagsToSnapshots
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._copyTagsToSnapshots = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ParentVolumeId -Value {
            $this._parentVolumeId
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._parentVolumeId = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name StorageCapacityReservationGiB -Value {
            $this._storageCapacityReservationGiB
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._storageCapacityReservationGiB = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name RecordSizeKiB -Value {
            $this._recordSizeKiB
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._recordSizeKiB = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name OriginSnapshot -Value {
            $this._originSnapshot
        } -SecondValue {
            param([ValidateType(([FSxVolumeOriginSnapshot], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._originSnapshot = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name UserAndGroupQuotas -Value {
            $this._userAndGroupQuotas
        } -SecondValue {
            param([ValidateType(([FSxVolumeUserAndGroupQuotas], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._userAndGroupQuotas = $value
        }
    }

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

Write-Verbose "Importing class 'FSxFileSystemDiskIopsConfiguration'"

class FSxFileSystemDiskIopsConfiguration : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSFSxFileSystemDiskIopsConfiguration'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-fsx-filesystem-openzfsconfiguration-diskiopsconfiguration.html'

    hidden [object] $_mode
    hidden [object] $_iops

    [string] $Mode
    [int] $Iops

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

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

Write-Verbose "Importing class 'FSxFileSystemWindowsConfiguration'"

class FSxFileSystemWindowsConfiguration : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSFSxFileSystemWindowsConfiguration'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-fsx-filesystem-windowsconfiguration.html'

    hidden [object] $_selfManagedActiveDirectoryConfiguration
    hidden [object] $_auditLogConfiguration
    hidden [object] $_weeklyMaintenanceStartTime
    hidden [object] $_activeDirectoryId
    hidden [object] $_deploymentType
    hidden [object] $_aliases
    hidden [object] $_throughputCapacity
    hidden [object] $_copyTagsToBackups
    hidden [object] $_dailyAutomaticBackupStartTime
    hidden [object] $_automaticBackupRetentionDays
    hidden [object] $_preferredSubnetId

    [FSxFileSystemSelfManagedActiveDirectoryConfiguration] $SelfManagedActiveDirectoryConfiguration
    [FSxFileSystemAuditLogConfiguration] $AuditLogConfiguration
    [string] $WeeklyMaintenanceStartTime
    [string] $ActiveDirectoryId
    [string] $DeploymentType
    [string[]] $Aliases
    [int] $ThroughputCapacity
    [bool] $CopyTagsToBackups
    [string] $DailyAutomaticBackupStartTime
    [int] $AutomaticBackupRetentionDays
    [string] $PreferredSubnetId

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name SelfManagedActiveDirectoryConfiguration -Value {
            $this._selfManagedActiveDirectoryConfiguration
        } -SecondValue {
            param([ValidateType(([FSxFileSystemSelfManagedActiveDirectoryConfiguration], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._selfManagedActiveDirectoryConfiguration = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name AuditLogConfiguration -Value {
            $this._auditLogConfiguration
        } -SecondValue {
            param([ValidateType(([FSxFileSystemAuditLogConfiguration], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._auditLogConfiguration = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name WeeklyMaintenanceStartTime -Value {
            $this._weeklyMaintenanceStartTime
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._weeklyMaintenanceStartTime = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ActiveDirectoryId -Value {
            $this._activeDirectoryId
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._activeDirectoryId = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name DeploymentType -Value {
            $this._deploymentType
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._deploymentType = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Aliases -Value {
            $this._aliases
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._aliases = @($value)
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ThroughputCapacity -Value {
            $this._throughputCapacity
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._throughputCapacity = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name CopyTagsToBackups -Value {
            $this._copyTagsToBackups
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._copyTagsToBackups = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name DailyAutomaticBackupStartTime -Value {
            $this._dailyAutomaticBackupStartTime
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._dailyAutomaticBackupStartTime = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name AutomaticBackupRetentionDays -Value {
            $this._automaticBackupRetentionDays
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._automaticBackupRetentionDays = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name PreferredSubnetId -Value {
            $this._preferredSubnetId
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._preferredSubnetId = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

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

Write-Verbose "Importing class 'FSxVolumeOntapConfiguration'"

class FSxVolumeOntapConfiguration : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSFSxVolumeOntapConfiguration'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-fsx-volume-ontapconfiguration.html'

    hidden [object] $_junctionPath
    hidden [object] $_storageVirtualMachineId
    hidden [object] $_tieringPolicy
    hidden [object] $_storageEfficiencyEnabled
    hidden [object] $_sizeInMegabytes
    hidden [object] $_securityStyle

    [string] $JunctionPath
    [string] $StorageVirtualMachineId
    [FSxVolumeTieringPolicy] $TieringPolicy
    [string] $StorageEfficiencyEnabled
    [string] $SizeInMegabytes
    [string] $SecurityStyle

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name JunctionPath -Value {
            $this._junctionPath
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._junctionPath = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name StorageVirtualMachineId -Value {
            $this._storageVirtualMachineId
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._storageVirtualMachineId = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name TieringPolicy -Value {
            $this._tieringPolicy
        } -SecondValue {
            param([ValidateType(([FSxVolumeTieringPolicy], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._tieringPolicy = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name StorageEfficiencyEnabled -Value {
            $this._storageEfficiencyEnabled
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._storageEfficiencyEnabled = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name SizeInMegabytes -Value {
            $this._sizeInMegabytes
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._sizeInMegabytes = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name SecurityStyle -Value {
            $this._securityStyle
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._securityStyle = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

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

Write-Verbose "Importing class 'FSxVolumeNfsExports'"

class FSxVolumeNfsExports : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSFSxVolumeNfsExports'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-fsx-volume-openzfsconfiguration-nfsexports.html'

    hidden [object] $_clientConfigurations

    [FSxVolumeClientConfigurations[]] $ClientConfigurations

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

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

Write-Verbose "Importing class 'FSxFileSystemAuditLogConfiguration'"

class FSxFileSystemAuditLogConfiguration : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSFSxFileSystemAuditLogConfiguration'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-fsx-filesystem-windowsconfiguration-auditlogconfiguration.html'

    hidden [object] $_fileAccessAuditLogLevel
    hidden [object] $_fileShareAccessAuditLogLevel
    hidden [object] $_auditLogDestination

    [string] $FileAccessAuditLogLevel
    [string] $FileShareAccessAuditLogLevel
    [string] $AuditLogDestination

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

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

Write-Verbose "Importing class 'FSxVolumeUserAndGroupQuotas'"

class FSxVolumeUserAndGroupQuotas : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSFSxVolumeUserAndGroupQuotas'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-fsx-volume-openzfsconfiguration-userandgroupquotas.html'

    hidden [object] $_type
    hidden [object] $_id
    hidden [object] $_storageCapacityQuotaGiB

    [string] $Type
    [int] $Id
    [int] $StorageCapacityQuotaGiB

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name Type -Value {
            $this._type
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._type = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Id -Value {
            $this._id
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._id = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name StorageCapacityQuotaGiB -Value {
            $this._storageCapacityQuotaGiB
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._storageCapacityQuotaGiB = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
    }

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

Write-Verbose "Importing class 'FSxFileSystemClientConfigurations'"

class FSxFileSystemClientConfigurations : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSFSxFileSystemClientConfigurations'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-fsx-filesystem-openzfsconfiguration-rootvolumeconfiguration-nfsexports-clientconfigurations.html'

    hidden [object] $_options
    hidden [object] $_clients

    [string[]] $Options
    [string] $Clients

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

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

Write-Verbose "Importing class 'FSxFileSystem'"

class FSxFileSystem : VSResource {
    hidden [string] $_vsFunctionName = 'New-VSFSxFileSystem'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-fsx-filesystem.html'

    hidden [string[]] $_attributes = @('RootVolumeId','DNSName','LustreMountName')
    hidden [object] $_condition

    [string] $Type = 'AWS::FSx::FileSystem'
    [string] $StorageType
    [string] $KmsKeyId
    [int] $StorageCapacity
    [FSxFileSystemLustreConfiguration] $LustreConfiguration
    [string] $BackupId
    [FSxFileSystemOntapConfiguration] $OntapConfiguration
    [string[]] $SubnetIds
    [string[]] $SecurityGroupIds
    [FSxFileSystemWindowsConfiguration] $WindowsConfiguration
    [string] $FileSystemTypeVersion
    [FSxFileSystemOpenZFSConfiguration] $OpenZFSConfiguration
    [string] $FileSystemType
    [VSTag[]] $Tags
    [VSJson] $Metadata
    [UpdatePolicy] $UpdatePolicy
    [string] $Condition

    hidden [void] _addAccessors() {
        $this._addBaseAccessors()
        $this | Add-Member -Force -MemberType ScriptProperty -Name StorageType -Value {
            $this.Properties['StorageType']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['StorageType'] = 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 StorageCapacity -Value {
            $this.Properties['StorageCapacity']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['StorageCapacity'] = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name LustreConfiguration -Value {
            $this.Properties['LustreConfiguration']
        } -SecondValue {
            param([ValidateType(([FSxFileSystemLustreConfiguration], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['LustreConfiguration'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name BackupId -Value {
            $this.Properties['BackupId']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['BackupId'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name OntapConfiguration -Value {
            $this.Properties['OntapConfiguration']
        } -SecondValue {
            param([ValidateType(([FSxFileSystemOntapConfiguration], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['OntapConfiguration'] = $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 SecurityGroupIds -Value {
            $this.Properties['SecurityGroupIds']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this.Properties['SecurityGroupIds'] = @($value)
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name WindowsConfiguration -Value {
            $this.Properties['WindowsConfiguration']
        } -SecondValue {
            param([ValidateType(([FSxFileSystemWindowsConfiguration], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['WindowsConfiguration'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name FileSystemTypeVersion -Value {
            $this.Properties['FileSystemTypeVersion']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['FileSystemTypeVersion'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name OpenZFSConfiguration -Value {
            $this.Properties['OpenZFSConfiguration']
        } -SecondValue {
            param([ValidateType(([FSxFileSystemOpenZFSConfiguration], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['OpenZFSConfiguration'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name FileSystemType -Value {
            $this.Properties['FileSystemType']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['FileSystemType'] = 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
        }
    }

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

Write-Verbose "Importing class 'FSxVolume'"

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

    hidden [string[]] $_attributes = @('ResourceARN','VolumeId','UUID')
    hidden [object] $_condition

    [string] $Type = 'AWS::FSx::Volume'
    [FSxVolumeOpenZFSConfiguration] $OpenZFSConfiguration
    [string] $VolumeType
    [string] $BackupId
    [FSxVolumeOntapConfiguration] $OntapConfiguration
    [VSTag[]] $Tags
    [string] $Name
    [VSJson] $Metadata
    [UpdatePolicy] $UpdatePolicy
    [string] $Condition

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

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

Write-Verbose "Importing class 'FSxStorageVirtualMachine'"

class FSxStorageVirtualMachine : VSResource {
    hidden [string] $_vsFunctionName = 'New-VSFSxStorageVirtualMachine'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-fsx-storagevirtualmachine.html'

    hidden [string[]] $_attributes = @('ResourceARN','StorageVirtualMachineId','UUID')
    hidden [object] $_condition

    [string] $Type = 'AWS::FSx::StorageVirtualMachine'
    [string] $SvmAdminPassword
    [FSxStorageVirtualMachineActiveDirectoryConfiguration] $ActiveDirectoryConfiguration
    [string] $RootVolumeSecurityStyle
    [string] $FileSystemId
    [VSTag[]] $Tags
    [string] $Name
    [VSJson] $Metadata
    [UpdatePolicy] $UpdatePolicy
    [string] $Condition

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

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

Write-Verbose "Importing class 'FSxSnapshot'"

class FSxSnapshot : VSResource {
    hidden [string] $_vsFunctionName = 'New-VSFSxSnapshot'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-fsx-snapshot.html'

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

    [string] $Type = 'AWS::FSx::Snapshot'
    [string] $VolumeId
    [VSTag[]] $Tags
    [string] $Name
    [VSJson] $Metadata
    [UpdatePolicy] $UpdatePolicy
    [string] $Condition

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

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