VaporShell.Elasticsearch.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 'ElasticsearchDomainDomainEndpointOptions'"

class ElasticsearchDomainDomainEndpointOptions : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSElasticsearchDomainDomainEndpointOptions'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticsearch-domain-domainendpointoptions.html'

    hidden [object] $_customEndpoint
    hidden [object] $_customEndpointCertificateArn
    hidden [object] $_customEndpointEnabled
    hidden [object] $_enforceHTTPS
    hidden [object] $_tLSSecurityPolicy

    [string] $CustomEndpoint
    [string] $CustomEndpointCertificateArn
    [bool] $CustomEndpointEnabled
    [bool] $EnforceHTTPS
    [string] $TLSSecurityPolicy

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name CustomEndpoint -Value {
            $this._customEndpoint
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._customEndpoint = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name CustomEndpointCertificateArn -Value {
            $this._customEndpointCertificateArn
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._customEndpointCertificateArn = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name CustomEndpointEnabled -Value {
            $this._customEndpointEnabled
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._customEndpointEnabled = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name EnforceHTTPS -Value {
            $this._enforceHTTPS
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._enforceHTTPS = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name TLSSecurityPolicy -Value {
            $this._tLSSecurityPolicy
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._tLSSecurityPolicy = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

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

Write-Verbose "Importing class 'ElasticsearchDomainNodeToNodeEncryptionOptions'"

class ElasticsearchDomainNodeToNodeEncryptionOptions : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSElasticsearchDomainNodeToNodeEncryptionOptions'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticsearch-domain-nodetonodeencryptionoptions.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
        }
    }

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

Write-Verbose "Importing class 'ElasticsearchDomainElasticsearchClusterConfig'"

class ElasticsearchDomainElasticsearchClusterConfig : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSElasticsearchDomainElasticsearchClusterConfig'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticsearch-domain-elasticsearchclusterconfig.html'

    hidden [object] $_coldStorageOptions
    hidden [object] $_dedicatedMasterCount
    hidden [object] $_dedicatedMasterEnabled
    hidden [object] $_dedicatedMasterType
    hidden [object] $_instanceCount
    hidden [object] $_instanceType
    hidden [object] $_warmCount
    hidden [object] $_warmEnabled
    hidden [object] $_warmType
    hidden [object] $_zoneAwarenessConfig
    hidden [object] $_zoneAwarenessEnabled

    [ElasticsearchDomainColdStorageOptions] $ColdStorageOptions
    [int] $DedicatedMasterCount
    [bool] $DedicatedMasterEnabled
    [string] $DedicatedMasterType
    [int] $InstanceCount
    [string] $InstanceType
    [int] $WarmCount
    [bool] $WarmEnabled
    [string] $WarmType
    [ElasticsearchDomainZoneAwarenessConfig] $ZoneAwarenessConfig
    [bool] $ZoneAwarenessEnabled

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name ColdStorageOptions -Value {
            $this._coldStorageOptions
        } -SecondValue {
            param([ValidateType(([ElasticsearchDomainColdStorageOptions], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._coldStorageOptions = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name DedicatedMasterCount -Value {
            $this._dedicatedMasterCount
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._dedicatedMasterCount = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name DedicatedMasterEnabled -Value {
            $this._dedicatedMasterEnabled
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._dedicatedMasterEnabled = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name DedicatedMasterType -Value {
            $this._dedicatedMasterType
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._dedicatedMasterType = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name InstanceCount -Value {
            $this._instanceCount
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._instanceCount = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name InstanceType -Value {
            $this._instanceType
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._instanceType = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name WarmCount -Value {
            $this._warmCount
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._warmCount = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name WarmEnabled -Value {
            $this._warmEnabled
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._warmEnabled = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name WarmType -Value {
            $this._warmType
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._warmType = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ZoneAwarenessConfig -Value {
            $this._zoneAwarenessConfig
        } -SecondValue {
            param([ValidateType(([ElasticsearchDomainZoneAwarenessConfig], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._zoneAwarenessConfig = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ZoneAwarenessEnabled -Value {
            $this._zoneAwarenessEnabled
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._zoneAwarenessEnabled = $value
        }
    }

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

Write-Verbose "Importing class 'ElasticsearchDomainColdStorageOptions'"

class ElasticsearchDomainColdStorageOptions : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSElasticsearchDomainColdStorageOptions'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticsearch-domain-coldstorageoptions.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
        }
    }

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

Write-Verbose "Importing class 'ElasticsearchDomainAdvancedSecurityOptionsInput'"

class ElasticsearchDomainAdvancedSecurityOptionsInput : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSElasticsearchDomainAdvancedSecurityOptionsInput'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticsearch-domain-advancedsecurityoptionsinput.html'

    hidden [object] $_enabled
    hidden [object] $_internalUserDatabaseEnabled
    hidden [object] $_masterUserOptions

    [bool] $Enabled
    [bool] $InternalUserDatabaseEnabled
    [ElasticsearchDomainMasterUserOptions] $MasterUserOptions

    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 InternalUserDatabaseEnabled -Value {
            $this._internalUserDatabaseEnabled
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._internalUserDatabaseEnabled = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name MasterUserOptions -Value {
            $this._masterUserOptions
        } -SecondValue {
            param([ValidateType(([ElasticsearchDomainMasterUserOptions], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._masterUserOptions = $value
        }
    }

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

Write-Verbose "Importing class 'ElasticsearchDomainZoneAwarenessConfig'"

class ElasticsearchDomainZoneAwarenessConfig : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSElasticsearchDomainZoneAwarenessConfig'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticsearch-domain-zoneawarenessconfig.html'

    hidden [object] $_availabilityZoneCount

    [int] $AvailabilityZoneCount

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

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

Write-Verbose "Importing class 'ElasticsearchDomainSnapshotOptions'"

class ElasticsearchDomainSnapshotOptions : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSElasticsearchDomainSnapshotOptions'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticsearch-domain-snapshotoptions.html'

    hidden [object] $_automatedSnapshotStartHour

    [int] $AutomatedSnapshotStartHour

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

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

Write-Verbose "Importing class 'ElasticsearchDomainCognitoOptions'"

class ElasticsearchDomainCognitoOptions : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSElasticsearchDomainCognitoOptions'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticsearch-domain-cognitooptions.html'

    hidden [object] $_enabled
    hidden [object] $_identityPoolId
    hidden [object] $_roleArn
    hidden [object] $_userPoolId

    [bool] $Enabled
    [string] $IdentityPoolId
    [string] $RoleArn
    [string] $UserPoolId

    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 IdentityPoolId -Value {
            $this._identityPoolId
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._identityPoolId = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name RoleArn -Value {
            $this._roleArn
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._roleArn = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name UserPoolId -Value {
            $this._userPoolId
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._userPoolId = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

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

Write-Verbose "Importing class 'ElasticsearchDomainVPCOptions'"

class ElasticsearchDomainVPCOptions : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSElasticsearchDomainVPCOptions'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticsearch-domain-vpcoptions.html'

    hidden [object] $_securityGroupIds
    hidden [object] $_subnetIds

    [string[]] $SecurityGroupIds
    [string[]] $SubnetIds

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name SecurityGroupIds -Value {
            $this._securityGroupIds
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._securityGroupIds = @($value)
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name SubnetIds -Value {
            $this._subnetIds
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._subnetIds = @($value)
        }
    }

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

Write-Verbose "Importing class 'ElasticsearchDomainMasterUserOptions'"

class ElasticsearchDomainMasterUserOptions : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSElasticsearchDomainMasterUserOptions'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticsearch-domain-masteruseroptions.html'

    hidden [object] $_masterUserARN
    hidden [object] $_masterUserName
    hidden [object] $_masterUserPassword

    [string] $MasterUserARN
    [string] $MasterUserName
    [string] $MasterUserPassword

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

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

Write-Verbose "Importing class 'ElasticsearchDomainLogPublishingOption'"

class ElasticsearchDomainLogPublishingOption : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSElasticsearchDomainLogPublishingOption'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticsearch-domain-logpublishingoption.html'

    hidden [object] $_cloudWatchLogsLogGroupArn
    hidden [object] $_enabled

    [string] $CloudWatchLogsLogGroupArn
    [bool] $Enabled

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

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

Write-Verbose "Importing class 'ElasticsearchDomainEBSOptions'"

class ElasticsearchDomainEBSOptions : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSElasticsearchDomainEBSOptions'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticsearch-domain-ebsoptions.html'

    hidden [object] $_eBSEnabled
    hidden [object] $_iops
    hidden [object] $_volumeSize
    hidden [object] $_volumeType

    [bool] $EBSEnabled
    [int] $Iops
    [int] $VolumeSize
    [string] $VolumeType

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

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

Write-Verbose "Importing class 'ElasticsearchDomainEncryptionAtRestOptions'"

class ElasticsearchDomainEncryptionAtRestOptions : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSElasticsearchDomainEncryptionAtRestOptions'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticsearch-domain-encryptionatrestoptions.html'

    hidden [object] $_enabled
    hidden [object] $_kmsKeyId

    [bool] $Enabled
    [string] $KmsKeyId

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

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

Write-Verbose "Importing class 'ElasticsearchDomain'"

class ElasticsearchDomain : VSResource {
    hidden [string] $_vsFunctionName = 'New-VSElasticsearchDomain'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticsearch-domain.html'

    hidden [string[]] $_attributes = @('Arn','DomainArn','DomainEndpoint')
    hidden [object] $_condition

    [string] $Type = 'AWS::Elasticsearch::Domain'
    [VSJson] $AccessPolicies
    [string] $AdvancedOptions
    [ElasticsearchDomainAdvancedSecurityOptionsInput] $AdvancedSecurityOptions
    [ElasticsearchDomainCognitoOptions] $CognitoOptions
    [ElasticsearchDomainDomainEndpointOptions] $DomainEndpointOptions
    [string] $DomainName
    [ElasticsearchDomainEBSOptions] $EBSOptions
    [ElasticsearchDomainElasticsearchClusterConfig] $ElasticsearchClusterConfig
    [string] $ElasticsearchVersion
    [ElasticsearchDomainEncryptionAtRestOptions] $EncryptionAtRestOptions
    [ElasticsearchDomainLogPublishingOption] $LogPublishingOptions
    [ElasticsearchDomainNodeToNodeEncryptionOptions] $NodeToNodeEncryptionOptions
    [ElasticsearchDomainSnapshotOptions] $SnapshotOptions
    [VSTag[]] $Tags
    [ElasticsearchDomainVPCOptions] $VPCOptions
    [VSJson] $Metadata
    [UpdatePolicy] $UpdatePolicy
    [string] $Condition

    hidden [void] _addAccessors() {
        $this._addBaseAccessors()
        $this | Add-Member -Force -MemberType ScriptProperty -Name AccessPolicies -Value {
            $this.Properties['AccessPolicies']
        } -SecondValue {
            param([ValidateType(([string], [VSJson], [VSYaml], [psobject], [IDictionary]))][object] $value)
            $this.Properties['AccessPolicies'] = [VSJson]::Transform($value)
            Write-Debug $this.Properties['AccessPolicies']
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name AdvancedOptions -Value {
            $this.Properties['AdvancedOptions']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['AdvancedOptions'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name AdvancedSecurityOptions -Value {
            $this.Properties['AdvancedSecurityOptions']
        } -SecondValue {
            param([ValidateType(([ElasticsearchDomainAdvancedSecurityOptionsInput], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['AdvancedSecurityOptions'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name CognitoOptions -Value {
            $this.Properties['CognitoOptions']
        } -SecondValue {
            param([ValidateType(([ElasticsearchDomainCognitoOptions], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['CognitoOptions'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name DomainEndpointOptions -Value {
            $this.Properties['DomainEndpointOptions']
        } -SecondValue {
            param([ValidateType(([ElasticsearchDomainDomainEndpointOptions], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['DomainEndpointOptions'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name DomainName -Value {
            $this.Properties['DomainName']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['DomainName'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name EBSOptions -Value {
            $this.Properties['EBSOptions']
        } -SecondValue {
            param([ValidateType(([ElasticsearchDomainEBSOptions], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['EBSOptions'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ElasticsearchClusterConfig -Value {
            $this.Properties['ElasticsearchClusterConfig']
        } -SecondValue {
            param([ValidateType(([ElasticsearchDomainElasticsearchClusterConfig], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['ElasticsearchClusterConfig'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ElasticsearchVersion -Value {
            $this.Properties['ElasticsearchVersion']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['ElasticsearchVersion'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name EncryptionAtRestOptions -Value {
            $this.Properties['EncryptionAtRestOptions']
        } -SecondValue {
            param([ValidateType(([ElasticsearchDomainEncryptionAtRestOptions], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['EncryptionAtRestOptions'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name LogPublishingOptions -Value {
            $this.Properties['LogPublishingOptions']
        } -SecondValue {
            param([ValidateType(([ElasticsearchDomainLogPublishingOption], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['LogPublishingOptions'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name NodeToNodeEncryptionOptions -Value {
            $this.Properties['NodeToNodeEncryptionOptions']
        } -SecondValue {
            param([ValidateType(([ElasticsearchDomainNodeToNodeEncryptionOptions], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['NodeToNodeEncryptionOptions'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name SnapshotOptions -Value {
            $this.Properties['SnapshotOptions']
        } -SecondValue {
            param([ValidateType(([ElasticsearchDomainSnapshotOptions], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['SnapshotOptions'] = $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 VPCOptions -Value {
            $this.Properties['VPCOptions']
        } -SecondValue {
            param([ValidateType(([ElasticsearchDomainVPCOptions], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['VPCOptions'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Condition -Value {
            $this._condition
        } -SecondValue {
            param(
                [ValidateType(([string], [IntrinsicFunction], [ConditionFunction]))] [object]
                $value
            )
            $this._condition = $value
        }
    }

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