pspulumiyaml.azurenative.cache.psm1

using module pspulumiyaml
function Invoke-AzureNativeFunctionCacheListRedisKeys
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the Redis cache.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName
    )

    process
    {
        $arguments = @{}
        $arguments["name"] = $name
        $arguments["resourceGroupName"] = $resourceGroupName

        $functionObject = Invoke-PulumiFunction -Name azure-native:cache:listRedisKeys -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionCacheGetLinkedServer
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of the redis cache.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='The name of the linked server.)')]
        [string]
        $linkedServerName
    )

    process
    {
        $arguments = @{}
        $arguments["linkedServerName"] = $linkedServerName
        $arguments["name"] = $name
        $arguments["resourceGroupName"] = $resourceGroupName

        $functionObject = Invoke-PulumiFunction -Name azure-native:cache:getLinkedServer -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionCacheListDatabaseKeys
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the RedisEnterprise cluster.)')]
        [string]
        $clusterName,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group. The name is case insensitive.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of the database.)')]
        [string]
        $databaseName
    )

    process
    {
        $arguments = @{}
        $arguments["clusterName"] = $clusterName
        $arguments["databaseName"] = $databaseName
        $arguments["resourceGroupName"] = $resourceGroupName

        $functionObject = Invoke-PulumiFunction -Name azure-native:cache:listDatabaseKeys -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionCacheGetRedisEnterprise
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the resource group. The name is case insensitive.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of the RedisEnterprise cluster.)')]
        [string]
        $clusterName
    )

    process
    {
        $arguments = @{}
        $arguments["clusterName"] = $clusterName
        $arguments["resourceGroupName"] = $resourceGroupName

        $functionObject = Invoke-PulumiFunction -Name azure-native:cache:getRedisEnterprise -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionCacheGetDatabase
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the RedisEnterprise cluster.)')]
        [string]
        $clusterName,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group. The name is case insensitive.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of the database.)')]
        [string]
        $databaseName
    )

    process
    {
        $arguments = @{}
        $arguments["clusterName"] = $clusterName
        $arguments["databaseName"] = $databaseName
        $arguments["resourceGroupName"] = $resourceGroupName

        $functionObject = Invoke-PulumiFunction -Name azure-native:cache:getDatabase -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionCacheGetPrivateEndpointConnection
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the RedisEnterprise cluster.)')]
        [string]
        $clusterName,
        [parameter(mandatory=$False,HelpMessage='The name of the private endpoint connection associated with the Azure resource)')]
        [string]
        $privateEndpointConnectionName,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group. The name is case insensitive.)')]
        [string]
        $resourceGroupName
    )

    process
    {
        $arguments = @{}
        $arguments["clusterName"] = $clusterName
        $arguments["privateEndpointConnectionName"] = $privateEndpointConnectionName
        $arguments["resourceGroupName"] = $resourceGroupName

        $functionObject = Invoke-PulumiFunction -Name azure-native:cache:getPrivateEndpointConnection -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionCacheGetFirewallRule
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of the firewall rule.)')]
        [string]
        $ruleName,
        [parameter(mandatory=$False,HelpMessage='The name of the Redis cache.)')]
        [string]
        $cacheName
    )

    process
    {
        $arguments = @{}
        $arguments["cacheName"] = $cacheName
        $arguments["resourceGroupName"] = $resourceGroupName
        $arguments["ruleName"] = $ruleName

        $functionObject = Invoke-PulumiFunction -Name azure-native:cache:getFirewallRule -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionCacheGetRedis
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the Redis cache.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName
    )

    process
    {
        $arguments = @{}
        $arguments["name"] = $name
        $arguments["resourceGroupName"] = $resourceGroupName

        $functionObject = Invoke-PulumiFunction -Name azure-native:cache:getRedis -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionCacheGetPatchSchedule
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of the redis cache.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='Default string modeled as parameter for auto generation to work correctly.)')]
        [string]
        $default
    )

    process
    {
        $arguments = @{}
        $arguments["default"] = $default
        $arguments["name"] = $name
        $arguments["resourceGroupName"] = $resourceGroupName

        $functionObject = Invoke-PulumiFunction -Name azure-native:cache:getPatchSchedule -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function New-AzureNativeCachePatchSchedule
{
    [Alias('azure_native_cache_patchschedule')]
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of the Redis cache.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='Default string modeled as parameter for auto generation to work correctly.)')]
        [string]
        $default,
        [parameter(mandatory=$False,HelpMessage='List of patch schedules for a Redis cache.)')]
        $scheduleEntries,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid
    )

    process
    {
        $resource = [pulumiresource]::new($pulumiid, "azure-native:cache:PatchSchedule")

        $resource.properties["name"] = $name
        $resource.properties["resourceGroupName"] = $resourceGroupName
        $resource.properties["scheduleEntries"] = $scheduleEntries

        if($PSBoundParameters.Keys -icontains 'default')
        {
            $resource.properties["default"] = $default
        }

        $global:pulumiresources += $resource
        return $resource
    }
}
class EnterpriseSku
{
    [ValidateSet('Enterprise_E10', 'Enterprise_E20', 'Enterprise_E50', 'Enterprise_E100', 'EnterpriseFlash_F300', 'EnterpriseFlash_F700', 'EnterpriseFlash_F1500')]
    [string] $name
    [ValidateSet('Enterprise_E10', 'Enterprise_E20', 'Enterprise_E50', 'Enterprise_E100', 'EnterpriseFlash_F300', 'EnterpriseFlash_F700', 'EnterpriseFlash_F1500')]
    [int] $capacity
}
function New-AzureNativeTypeCacheEnterpriseSku
{
    param (
        [parameter(mandatory=$False,HelpMessage='The type of RedisEnterprise cluster to deploy. Possible values: (Enterprise_E10, EnterpriseFlash_F300 etc.))')]
        [string]
        [ValidateSet('Enterprise_E10', 'Enterprise_E20', 'Enterprise_E50', 'Enterprise_E100', 'EnterpriseFlash_F300', 'EnterpriseFlash_F700', 'EnterpriseFlash_F1500')]
        $name,
        [parameter(mandatory=$False,HelpMessage='The size of the RedisEnterprise cluster. Defaults to 2 or 3 depending on SKU. Valid values are (2, 4, 6, ...) for Enterprise SKUs and (3, 9, 15, ...) for Flash SKUs.)')]
        [int]
        $capacity
    )

    process
    {
        return $([EnterpriseSku]$PSBoundParameters)
    }
}
function New-AzureNativeCacheRedisEnterprise
{
    [Alias('azure_native_cache_redisenterprise')]
    param (
        [parameter(mandatory=$False,HelpMessage='The SKU to create, which affects price, performance, and features.)')]
        [EnterpriseSku]
        $sku,
        [parameter(mandatory=$False,HelpMessage='The name of the RedisEnterprise cluster.)')]
        [string]
        $clusterName,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group. The name is case insensitive.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Resource tags.)')]
        [hashtable]
        $tags,
        [parameter(mandatory=$False,HelpMessage='The minimum TLS version for the cluster to support, e.g. ''1.2'')')]
        [string]
        [ValidateSet('1.0', '1.1', '1.2')]
        $minimumTlsVersion,
        [parameter(mandatory=$False,HelpMessage='The Availability Zones where this cluster will be deployed.)')]
        [string[]]
        $zones,
        [parameter(mandatory=$False,HelpMessage='The geo-location where the resource lives)')]
        [string]
        $location,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid
    )

    process
    {
        $resource = [pulumiresource]::new($pulumiid, "azure-native:cache:RedisEnterprise")

        $resource.properties["resourceGroupName"] = $resourceGroupName
        $resource.properties["sku"] = $sku

        if($PSBoundParameters.Keys -icontains 'clusterName')
        {
            $resource.properties["clusterName"] = $clusterName
        }

        if($PSBoundParameters.Keys -icontains 'tags')
        {
            $resource.properties["tags"] = $tags
        }

        if($PSBoundParameters.Keys -icontains 'minimumTlsVersion')
        {
            $resource.properties["minimumTlsVersion"] = $minimumTlsVersion
        }

        if($PSBoundParameters.Keys -icontains 'zones')
        {
            $resource.properties["zones"] = $zones
        }

        if($PSBoundParameters.Keys -icontains 'location')
        {
            $resource.properties["location"] = $location
        }

        $global:pulumiresources += $resource
        return $resource
    }
}
function New-AzureNativeCacheLinkedServer
{
    [Alias('azure_native_cache_linkedserver')]
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the Redis cache.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='Location of the linked redis cache.)')]
        [string]
        $linkedRedisCacheLocation,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Fully qualified resourceId of the linked redis cache.)')]
        [string]
        $linkedRedisCacheId,
        [parameter(mandatory=$False,HelpMessage='Role of the linked server.)')]
        $serverRole,
        [parameter(mandatory=$False,HelpMessage='The name of the linked server that is being added to the Redis cache.)')]
        [string]
        $linkedServerName,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid
    )

    process
    {
        $resource = [pulumiresource]::new($pulumiid, "azure-native:cache:LinkedServer")

        $resource.properties["linkedRedisCacheId"] = $linkedRedisCacheId
        $resource.properties["linkedRedisCacheLocation"] = $linkedRedisCacheLocation
        $resource.properties["name"] = $name
        $resource.properties["resourceGroupName"] = $resourceGroupName
        $resource.properties["serverRole"] = $serverRole

        if($PSBoundParameters.Keys -icontains 'linkedServerName')
        {
            $resource.properties["linkedServerName"] = $linkedServerName
        }

        $global:pulumiresources += $resource
        return $resource
    }
}
class PrivateLinkServiceConnectionState
{
    [string] $description
    [string] $actionsRequired
    [ValidateSet('Pending', 'Approved', 'Rejected')]
    [string] $status
}
function New-AzureNativeTypeCachePrivateLinkServiceConnectionState
{
    param (
        [parameter(mandatory=$False,HelpMessage='The reason for approval/rejection of the connection.)')]
        [string]
        $description,
        [parameter(mandatory=$False,HelpMessage='A message indicating if changes on the service provider require any updates on the consumer.)')]
        [string]
        $actionsRequired,
        [parameter(mandatory=$False,HelpMessage='Indicates whether the connection has been Approved/Rejected/Removed by the owner of the service.)')]
        [string]
        [ValidateSet('Pending', 'Approved', 'Rejected')]
        $status
    )

    process
    {
        return $([PrivateLinkServiceConnectionState]$PSBoundParameters)
    }
}
function New-AzureNativeCachePrivateEndpointConnection
{
    [Alias('azure_native_cache_privateendpointconnection')]
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the RedisEnterprise cluster.)')]
        [string]
        $clusterName,
        [parameter(mandatory=$False,HelpMessage='The name of the private endpoint connection associated with the Azure resource)')]
        [string]
        $privateEndpointConnectionName,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group. The name is case insensitive.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='A collection of information about the state of the connection between service consumer and provider.)')]
        [PrivateLinkServiceConnectionState]
        $privateLinkServiceConnectionState,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid
    )

    process
    {
        $resource = [pulumiresource]::new($pulumiid, "azure-native:cache:PrivateEndpointConnection")

        $resource.properties["clusterName"] = $clusterName
        $resource.properties["privateLinkServiceConnectionState"] = $privateLinkServiceConnectionState
        $resource.properties["resourceGroupName"] = $resourceGroupName

        if($PSBoundParameters.Keys -icontains 'privateEndpointConnectionName')
        {
            $resource.properties["privateEndpointConnectionName"] = $privateEndpointConnectionName
        }

        $global:pulumiresources += $resource
        return $resource
    }
}
function New-AzureNativeCacheFirewallRule
{
    [Alias('azure_native_cache_firewallrule')]
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='highest IP address included in the range)')]
        [string]
        $endIP,
        [parameter(mandatory=$False,HelpMessage='The name of the firewall rule.)')]
        [string]
        $ruleName,
        [parameter(mandatory=$False,HelpMessage='lowest IP address included in the range)')]
        [string]
        $startIP,
        [parameter(mandatory=$False,HelpMessage='The name of the Redis cache.)')]
        [string]
        $cacheName,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid
    )

    process
    {
        $resource = [pulumiresource]::new($pulumiid, "azure-native:cache:FirewallRule")

        $resource.properties["cacheName"] = $cacheName
        $resource.properties["endIP"] = $endIP
        $resource.properties["resourceGroupName"] = $resourceGroupName
        $resource.properties["startIP"] = $startIP

        if($PSBoundParameters.Keys -icontains 'ruleName')
        {
            $resource.properties["ruleName"] = $ruleName
        }

        $global:pulumiresources += $resource
        return $resource
    }
}
class Persistence
{
    [ValidateSet('1h', '6h', '12h')]
    [string] $rdbFrequency
    [ValidateSet('1h', '6h', '12h')]
    [bool] $rdbEnabled
    [ValidateSet('1s', 'always')]
    [string] $aofFrequency
    [ValidateSet('1s', 'always')]
    [bool] $aofEnabled
}
function New-AzureNativeTypeCachePersistence
{
    param (
        [parameter(mandatory=$False,HelpMessage='Sets the frequency at which a snapshot of the database is created.)')]
        [string]
        [ValidateSet('1h', '6h', '12h')]
        $rdbFrequency,
        [parameter(mandatory=$False,HelpMessage='Sets whether RDB is enabled.)')]
        [bool]
        $rdbEnabled,
        [parameter(mandatory=$False,HelpMessage='Sets the frequency at which data is written to disk.)')]
        [string]
        [ValidateSet('1s', 'always')]
        $aofFrequency,
        [parameter(mandatory=$False,HelpMessage='Sets whether AOF is enabled.)')]
        [bool]
        $aofEnabled
    )

    process
    {
        return $([Persistence]$PSBoundParameters)
    }
}
function New-AzureNativeCacheDatabase
{
    [Alias('azure_native_cache_database')]
    param (
        [parameter(mandatory=$False,HelpMessage='Persistence settings)')]
        [Persistence]
        $persistence,
        [parameter(mandatory=$False,HelpMessage='Redis eviction policy - default is VolatileLRU)')]
        [string]
        [ValidateSet('AllKeysLFU', 'AllKeysLRU', 'AllKeysRandom', 'VolatileLRU', 'VolatileLFU', 'VolatileTTL', 'VolatileRandom', 'NoEviction')]
        $evictionPolicy,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group. The name is case insensitive.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of the RedisEnterprise cluster.)')]
        [string]
        $clusterName,
        [parameter(mandatory=$False,HelpMessage='Clustering policy - default is OSSCluster. Specified at create time.)')]
        [string]
        [ValidateSet('EnterpriseCluster', 'OSSCluster')]
        $clusteringPolicy,
        [parameter(mandatory=$False,HelpMessage='Specifies whether redis clients can connect using TLS-encrypted or plaintext redis protocols. Default is TLS-encrypted.)')]
        [string]
        [ValidateSet('Encrypted', 'Plaintext')]
        $clientProtocol,
        [parameter(mandatory=$False,HelpMessage='TCP port of the database endpoint. Specified at create time. Defaults to an available port.)')]
        [int]
        $port,
        [parameter(mandatory=$False,HelpMessage='Optional set of redis modules to enable in this database - modules can only be added at creation time.)')]
        $modules,
        [parameter(mandatory=$False,HelpMessage='The name of the database.)')]
        [string]
        $databaseName,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid
    )

    process
    {
        $resource = [pulumiresource]::new($pulumiid, "azure-native:cache:Database")

        $resource.properties["clusterName"] = $clusterName
        $resource.properties["resourceGroupName"] = $resourceGroupName

        if($PSBoundParameters.Keys -icontains 'persistence')
        {
            $resource.properties["persistence"] = $persistence
        }

        if($PSBoundParameters.Keys -icontains 'evictionPolicy')
        {
            $resource.properties["evictionPolicy"] = $evictionPolicy
        }

        if($PSBoundParameters.Keys -icontains 'clusteringPolicy')
        {
            $resource.properties["clusteringPolicy"] = $clusteringPolicy
        }

        if($PSBoundParameters.Keys -icontains 'clientProtocol')
        {
            $resource.properties["clientProtocol"] = $clientProtocol
        }

        if($PSBoundParameters.Keys -icontains 'port')
        {
            $resource.properties["port"] = $port
        }

        if($PSBoundParameters.Keys -icontains 'modules')
        {
            $resource.properties["modules"] = $modules
        }

        if($PSBoundParameters.Keys -icontains 'databaseName')
        {
            $resource.properties["databaseName"] = $databaseName
        }

        $global:pulumiresources += $resource
        return $resource
    }
}
class RedisCommonPropertiesRedisConfiguration
{
    [string] $rdbBackupEnabled
    [string] $aofStorageConnectionString0
    [string] $maxfragmentationmemoryReserved
    [string] $maxmemoryReserved
    [string] $rdbBackupFrequency
    [string] $rdbStorageConnectionString
    [string] $maxmemoryDelta
    [string] $maxmemoryPolicy
    [string] $rdbBackupMaxSnapshotCount
    [string] $aofStorageConnectionString1
}
function New-AzureNativeTypeCacheRedisCommonPropertiesRedisConfiguration
{
    param (
        [parameter(mandatory=$False,HelpMessage='Specifies whether the rdb backup is enabled)')]
        [string]
        $rdbBackupEnabled,
        [parameter(mandatory=$False,HelpMessage='First storage account connection string)')]
        [string]
        $aofStorageConnectionString0,
        [parameter(mandatory=$False,HelpMessage='Value in megabytes reserved for fragmentation per shard)')]
        [string]
        $maxfragmentationmemoryReserved,
        [parameter(mandatory=$False,HelpMessage='Value in megabytes reserved for non-cache usage per shard e.g. failover.)')]
        [string]
        $maxmemoryReserved,
        [parameter(mandatory=$False,HelpMessage='Specifies the frequency for creating rdb backup)')]
        [string]
        $rdbBackupFrequency,
        [parameter(mandatory=$False,HelpMessage='The storage account connection string for storing rdb file)')]
        [string]
        $rdbStorageConnectionString,
        [parameter(mandatory=$False,HelpMessage='Value in megabytes reserved for non-cache usage per shard e.g. failover.)')]
        [string]
        $maxmemoryDelta,
        [parameter(mandatory=$False,HelpMessage='The eviction strategy used when your data won''t fit within its memory limit.)')]
        [string]
        $maxmemoryPolicy,
        [parameter(mandatory=$False,HelpMessage='Specifies the maximum number of snapshots for rdb backup)')]
        [string]
        $rdbBackupMaxSnapshotCount,
        [parameter(mandatory=$False,HelpMessage='Second storage account connection string)')]
        [string]
        $aofStorageConnectionString1
    )

    process
    {
        return $([RedisCommonPropertiesRedisConfiguration]$PSBoundParameters)
    }
}
class Sku
{
    [int] $capacity
    [ValidateSet('C', 'P')]
    [string] $family
    [ValidateSet('Enterprise_E10', 'Enterprise_E20', 'Enterprise_E50', 'Enterprise_E100', 'EnterpriseFlash_F300', 'EnterpriseFlash_F700', 'EnterpriseFlash_F1500')]
    [string] $name
}
function New-AzureNativeTypeCacheSku
{
    param (
        [parameter(mandatory=$False,HelpMessage='The size of the Redis cache to deploy. Valid values: for C (Basic/Standard) family (0, 1, 2, 3, 4, 5, 6), for P (Premium) family (1, 2, 3, 4).)')]
        [int]
        $capacity,
        [parameter(mandatory=$False,HelpMessage='The SKU family to use. Valid values: (C, P). (C = Basic/Standard, P = Premium).)')]
        [string]
        [ValidateSet('C', 'P')]
        $family,
        [parameter(mandatory=$False,HelpMessage='The type of Redis cache to deploy. Valid values: (Basic, Standard, Premium))')]
        [string]
        [ValidateSet('Enterprise_E10', 'Enterprise_E20', 'Enterprise_E50', 'Enterprise_E100', 'EnterpriseFlash_F300', 'EnterpriseFlash_F700', 'EnterpriseFlash_F1500')]
        $name
    )

    process
    {
        return $([Sku]$PSBoundParameters)
    }
}
function New-AzureNativeCacheRedis
{
    [Alias('azure_native_cache_redis')]
    param (
        [parameter(mandatory=$False,HelpMessage='All Redis Settings. Few possible keys: rdb-backup-enabled,rdb-storage-connection-string,rdb-backup-frequency,maxmemory-delta,maxmemory-policy,notify-keyspace-events,maxmemory-samples,slowlog-log-slower-than,slowlog-max-len,list-max-ziplist-entries,list-max-ziplist-value,hash-max-ziplist-entries,hash-max-ziplist-value,set-max-intset-entries,zset-max-ziplist-entries,zset-max-ziplist-value etc.)')]
        [RedisCommonPropertiesRedisConfiguration]
        $redisConfiguration,
        [parameter(mandatory=$False,HelpMessage='Resource tags.)')]
        [hashtable]
        $tags,
        [parameter(mandatory=$False,HelpMessage='Static IP address. Optionally, may be specified when deploying a Redis cache inside an existing Azure Virtual Network; auto assigned by default.)')]
        [string]
        $staticIP,
        [parameter(mandatory=$False,HelpMessage='The full resource ID of a subnet in a virtual network to deploy the Redis cache in. Example format: /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/Microsoft.{Network|ClassicNetwork}/VirtualNetworks/vnet1/subnets/subnet1)')]
        [string]
        $subnetId,
        [parameter(mandatory=$False,HelpMessage='Optional: requires clients to use a specified TLS version (or higher) to connect (e,g, ''1.0'', ''1.1'', ''1.2''))')]
        [string]
        [ValidateSet('1.0', '1.1', '1.2')]
        $minimumTlsVersion,
        [parameter(mandatory=$False,HelpMessage='Whether or not public endpoint access is allowed for this cache. Value is optional but if passed in, must be ''Enabled'' or ''Disabled''. If ''Disabled'', private endpoints are the exclusive access method. Default value is ''Enabled'')')]
        [string]
        [ValidateSet('Enabled', 'Disabled')]
        $publicNetworkAccess,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='A list of availability zones denoting where the resource needs to come from.)')]
        [string[]]
        $zones,
        [parameter(mandatory=$False,HelpMessage='Specifies whether the non-ssl Redis server port (6379) is enabled.)')]
        [bool]
        $enableNonSslPort,
        [parameter(mandatory=$False,HelpMessage='The number of replicas to be created per master.)')]
        [int]
        $replicasPerMaster,
        [parameter(mandatory=$False,HelpMessage='The geo-location where the resource lives)')]
        [string]
        $location,
        [parameter(mandatory=$False,HelpMessage='The number of shards to be created on a Premium Cluster Cache.)')]
        [int]
        $shardCount,
        [parameter(mandatory=$False,HelpMessage='The SKU of the Redis cache to deploy.)')]
        [Sku]
        $sku,
        [parameter(mandatory=$False,HelpMessage='The name of the Redis cache.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='A dictionary of tenant settings)')]
        [hashtable]
        $tenantSettings,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid
    )

    process
    {
        $resource = [pulumiresource]::new($pulumiid, "azure-native:cache:Redis")

        $resource.properties["resourceGroupName"] = $resourceGroupName
        $resource.properties["sku"] = $sku

        if($PSBoundParameters.Keys -icontains 'redisConfiguration')
        {
            $resource.properties["redisConfiguration"] = $redisConfiguration
        }

        if($PSBoundParameters.Keys -icontains 'tags')
        {
            $resource.properties["tags"] = $tags
        }

        if($PSBoundParameters.Keys -icontains 'staticIP')
        {
            $resource.properties["staticIP"] = $staticIP
        }

        if($PSBoundParameters.Keys -icontains 'subnetId')
        {
            $resource.properties["subnetId"] = $subnetId
        }

        if($PSBoundParameters.Keys -icontains 'minimumTlsVersion')
        {
            $resource.properties["minimumTlsVersion"] = $minimumTlsVersion
        }

        if($PSBoundParameters.Keys -icontains 'publicNetworkAccess')
        {
            $resource.properties["publicNetworkAccess"] = $publicNetworkAccess
        }

        if($PSBoundParameters.Keys -icontains 'zones')
        {
            $resource.properties["zones"] = $zones
        }

        if($PSBoundParameters.Keys -icontains 'enableNonSslPort')
        {
            $resource.properties["enableNonSslPort"] = $enableNonSslPort
        }

        if($PSBoundParameters.Keys -icontains 'replicasPerMaster')
        {
            $resource.properties["replicasPerMaster"] = $replicasPerMaster
        }

        if($PSBoundParameters.Keys -icontains 'location')
        {
            $resource.properties["location"] = $location
        }

        if($PSBoundParameters.Keys -icontains 'shardCount')
        {
            $resource.properties["shardCount"] = $shardCount
        }

        if($PSBoundParameters.Keys -icontains 'name')
        {
            $resource.properties["name"] = $name
        }

        if($PSBoundParameters.Keys -icontains 'tenantSettings')
        {
            $resource.properties["tenantSettings"] = $tenantSettings
        }

        $global:pulumiresources += $resource
        return $resource
    }
}