pspulumiyaml.azurenative.cache.psm1

using module pspulumiyaml
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-AzureNativeFunctionCacheListDatabaseKeys
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the database.)')]
        [string]
        $databaseName,
        [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
    )

    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-AzureNativeFunctionCacheGetDatabase
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the database.)')]
        [string]
        $databaseName,
        [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
    )

    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-AzureNativeFunctionCacheGetFirewallRule
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the firewall rule.)')]
        [string]
        $ruleName,
        [parameter(mandatory=$False,HelpMessage='The name of the Redis cache.)')]
        [string]
        $cacheName,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName
    )

    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-AzureNativeFunctionCacheGetPatchSchedule
{
    param (
        [parameter(mandatory=$False,HelpMessage='Default string modeled as parameter for auto generation to work correctly.)')]
        [string]
        $default,
        [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["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 Invoke-AzureNativeFunctionCacheGetLinkedServer
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the linked server.)')]
        [string]
        $linkedServerName,
        [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["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-AzureNativeFunctionCacheGetPrivateEndpointConnection
{
    param (
        [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 RedisEnterprise cluster.)')]
        [string]
        $clusterName,
        [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-AzureNativeFunctionCacheGetRedisEnterprise
{
    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
    )

    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-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 New-AzureNativeCachePatchSchedule
{
    [Alias('azure_native_cache_patchschedule')]
    param (
        [parameter(mandatory=$False,HelpMessage='List of patch schedules for a Redis cache.)')]
        $scheduleEntries,
        [parameter(mandatory=$False,HelpMessage='Default string modeled as parameter for auto generation to work correctly.)')]
        [string]
        $default,
        [parameter(mandatory=$False,HelpMessage='The name of the Redis cache.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid,
        [parameter(mandatory,HelpMessage='Pass in the resources you make to make this resource dependant on')]
        [object]
        $DependsOn
    )

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

        foreach($Dependency in $DependsOn)
        {
            if($Dependency -is [pulumiresource])
            {
                $resource.dependson += $Dependency.Reference()
            } else
            {
                $resource.dependson += $Dependency
            }
        }
        $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 Persistence
{
    [bool] $aofEnabled
    [ArgumentCompletions('1s', 'always')]
    [string] $aofFrequency
    [ArgumentCompletions('1h', '6h', '12h')]
    [string] $rdbFrequency
    [bool] $rdbEnabled
}
function New-AzureNativeTypeCachePersistence
{
    param (
        [parameter(mandatory=$False,HelpMessage='Sets whether AOF is enabled.)')]
        [bool]
        $aofEnabled,
        [parameter(mandatory=$False,HelpMessage='Sets the frequency at which data is written to disk.)')]
        [string]
        [ValidateSet('1s', 'always')]
        $aofFrequency,
        [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
    )

    process
    {
        return $([Persistence]$PSBoundParameters)
    }
}
function New-AzureNativeCacheDatabase
{
    [Alias('azure_native_cache_database')]
    param (
        [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=$False,HelpMessage='Redis eviction policy - default is VolatileLRU)')]
        [string]
        [ValidateSet('AllKeysLFU', 'AllKeysLRU', 'AllKeysRandom', 'VolatileLRU', 'VolatileLFU', 'VolatileTTL', 'VolatileRandom', 'NoEviction')]
        $evictionPolicy,
        [parameter(mandatory=$False,HelpMessage='Clustering policy - default is OSSCluster. Specified at create time.)')]
        [string]
        [ValidateSet('EnterpriseCluster', 'OSSCluster')]
        $clusteringPolicy,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group. The name is case insensitive.)')]
        [string]
        $resourceGroupName,
        [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='Persistence settings)')]
        [Persistence]
        $persistence,
        [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='The name of the RedisEnterprise cluster.)')]
        [string]
        $clusterName,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid,
        [parameter(mandatory,HelpMessage='Pass in the resources you make to make this resource dependant on')]
        [object]
        $DependsOn
    )

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

        foreach($Dependency in $DependsOn)
        {
            if($Dependency -is [pulumiresource])
            {
                $resource.dependson += $Dependency.Reference()
            } else
            {
                $resource.dependson += $Dependency
            }
        }
        $resource.properties["clusterName"] = $clusterName
        $resource.properties["resourceGroupName"] = $resourceGroupName

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

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

        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 'persistence')
        {
            $resource.properties["persistence"] = $persistence
        }

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

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

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

        foreach($Dependency in $DependsOn)
        {
            if($Dependency -is [pulumiresource])
            {
                $resource.dependson += $Dependency.Reference()
            } else
            {
                $resource.dependson += $Dependency
            }
        }
        $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 PrivateLinkServiceConnectionState
{
    [string] $actionsRequired
    [string] $description
    [ArgumentCompletions('Pending', 'Approved', 'Rejected')]
    [string] $status
}
function New-AzureNativeTypeCachePrivateLinkServiceConnectionState
{
    param (
        [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='The reason for approval/rejection of the connection.)')]
        [string]
        $description,
        [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='A collection of information about the state of the connection between service consumer and provider.)')]
        [PrivateLinkServiceConnectionState]
        $privateLinkServiceConnectionState,
        [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 RedisEnterprise cluster.)')]
        [string]
        $clusterName,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group. The name is case insensitive.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid,
        [parameter(mandatory,HelpMessage='Pass in the resources you make to make this resource dependant on')]
        [object]
        $DependsOn
    )

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

        foreach($Dependency in $DependsOn)
        {
            if($Dependency -is [pulumiresource])
            {
                $resource.dependson += $Dependency.Reference()
            } else
            {
                $resource.dependson += $Dependency
            }
        }
        $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
    }
}
class RedisCommonPropertiesRedisConfiguration
{
    [string] $aofStorageConnectionString0
    [string] $maxfragmentationmemoryReserved
    [string] $aofStorageConnectionString1
    [string] $rdbStorageConnectionString
    [string] $maxmemoryReserved
    [string] $maxmemoryDelta
    [string] $maxmemoryPolicy
    [string] $rdbBackupFrequency
    [string] $rdbBackupMaxSnapshotCount
    [string] $rdbBackupEnabled
}
function New-AzureNativeTypeCacheRedisCommonPropertiesRedisConfiguration
{
    param (
        [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='Second storage account connection string)')]
        [string]
        $aofStorageConnectionString1,
        [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]
        $maxmemoryReserved,
        [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 frequency for creating rdb backup)')]
        [string]
        $rdbBackupFrequency,
        [parameter(mandatory=$False,HelpMessage='Specifies the maximum number of snapshots for rdb backup)')]
        [string]
        $rdbBackupMaxSnapshotCount,
        [parameter(mandatory=$False,HelpMessage='Specifies whether the rdb backup is enabled)')]
        [string]
        $rdbBackupEnabled
    )

    process
    {
        return $([RedisCommonPropertiesRedisConfiguration]$PSBoundParameters)
    }
}
class Sku
{
    [ArgumentCompletions('C', 'P')]
    [string] $family
    [ArgumentCompletions('Enterprise_E10', 'Enterprise_E20', 'Enterprise_E50', 'Enterprise_E100', 'EnterpriseFlash_F300', 'EnterpriseFlash_F700', 'EnterpriseFlash_F1500')]
    [string] $name
    [int] $capacity
}
function New-AzureNativeTypeCacheSku
{
    param (
        [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,
        [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
    )

    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='A dictionary of tenant settings)')]
        [hashtable]
        $tenantSettings,
        [parameter(mandatory=$False,HelpMessage='The name of the Redis cache.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='Resource tags.)')]
        [hashtable]
        $tags,
        [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 SKU of the Redis cache to deploy.)')]
        [Sku]
        $sku,
        [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='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 number of shards to be created on a Premium Cluster Cache.)')]
        [int]
        $shardCount,
        [parameter(mandatory=$False,HelpMessage='The geo-location where the resource lives)')]
        [string]
        $location,
        [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 name of the resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The number of replicas to be created per master.)')]
        [int]
        $replicasPerMaster,
        [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,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid,
        [parameter(mandatory,HelpMessage='Pass in the resources you make to make this resource dependant on')]
        [object]
        $DependsOn
    )

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

        foreach($Dependency in $DependsOn)
        {
            if($Dependency -is [pulumiresource])
            {
                $resource.dependson += $Dependency.Reference()
            } else
            {
                $resource.dependson += $Dependency
            }
        }
        $resource.properties["resourceGroupName"] = $resourceGroupName
        $resource.properties["sku"] = $sku

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

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

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

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

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

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

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

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

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

        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 'subnetId')
        {
            $resource.properties["subnetId"] = $subnetId
        }

        $global:pulumiresources += $resource
        return $resource
    }
}
function New-AzureNativeCacheLinkedServer
{
    [Alias('azure_native_cache_linkedserver')]
    param (
        [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='The name of the Redis cache.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='Location of the linked redis cache.)')]
        [string]
        $linkedRedisCacheLocation,
        [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,
        [parameter(mandatory,HelpMessage='Pass in the resources you make to make this resource dependant on')]
        [object]
        $DependsOn
    )

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

        foreach($Dependency in $DependsOn)
        {
            if($Dependency -is [pulumiresource])
            {
                $resource.dependson += $Dependency.Reference()
            } else
            {
                $resource.dependson += $Dependency
            }
        }
        $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 EnterpriseSku
{
    [int] $capacity
    [ArgumentCompletions('Enterprise_E10', 'Enterprise_E20', 'Enterprise_E50', 'Enterprise_E100', 'EnterpriseFlash_F300', 'EnterpriseFlash_F700', 'EnterpriseFlash_F1500')]
    [string] $name
}
function New-AzureNativeTypeCacheEnterpriseSku
{
    param (
        [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,
        [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
    )

    process
    {
        return $([EnterpriseSku]$PSBoundParameters)
    }
}
function New-AzureNativeCacheRedisEnterprise
{
    [Alias('azure_native_cache_redisenterprise')]
    param (
        [parameter(mandatory=$False,HelpMessage='The Availability Zones where this cluster will be deployed.)')]
        [string[]]
        $zones,
        [parameter(mandatory=$False,HelpMessage='Resource tags.)')]
        [hashtable]
        $tags,
        [parameter(mandatory=$False,HelpMessage='The SKU to create, which affects price, performance, and features.)')]
        [EnterpriseSku]
        $sku,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group. The name is case insensitive.)')]
        [string]
        $resourceGroupName,
        [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 name of the RedisEnterprise cluster.)')]
        [string]
        $clusterName,
        [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,
        [parameter(mandatory,HelpMessage='Pass in the resources you make to make this resource dependant on')]
        [object]
        $DependsOn
    )

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

        foreach($Dependency in $DependsOn)
        {
            if($Dependency -is [pulumiresource])
            {
                $resource.dependson += $Dependency.Reference()
            } else
            {
                $resource.dependson += $Dependency
            }
        }
        $resource.properties["resourceGroupName"] = $resourceGroupName
        $resource.properties["sku"] = $sku

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

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

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

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

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

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