pspulumiyaml.azurenative.keyvault.psm1

using module pspulumiyaml
function Invoke-AzureNativeFunctionKeyvaultGetPrivateEndpointConnection
{
    param (
        [parameter(mandatory=$False,HelpMessage='Name of the private endpoint connection associated with the key vault.)')]
        [string]
        $privateEndpointConnectionName,
        [parameter(mandatory=$False,HelpMessage='Name of the resource group that contains the key vault.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of the key vault.)')]
        [string]
        $vaultName
    )

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

        $functionObject = Invoke-PulumiFunction -Name azure-native:keyvault:getPrivateEndpointConnection -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionKeyvaultGetManagedHsm
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the managed HSM Pool.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='Name of the resource group that contains the managed HSM pool.)')]
        [string]
        $resourceGroupName
    )

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

        $functionObject = Invoke-PulumiFunction -Name azure-native:keyvault:getManagedHsm -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionKeyvaultGetMHSMPrivateEndpointConnection
{
    param (
        [parameter(mandatory=$False,HelpMessage='Name of the resource group that contains the managed HSM pool.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Name of the private endpoint connection associated with the managed hsm pool.)')]
        [string]
        $privateEndpointConnectionName,
        [parameter(mandatory=$False,HelpMessage='Name of the managed HSM Pool)')]
        [string]
        $name
    )

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

        $functionObject = Invoke-PulumiFunction -Name azure-native:keyvault:getMHSMPrivateEndpointConnection -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionKeyvaultGetKey
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the vault which contains the key to be retrieved.)')]
        [string]
        $vaultName,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group which contains the specified key vault.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of the key to be retrieved.)')]
        [string]
        $keyName
    )

    process
    {
        $arguments = @{}
        $arguments["keyName"] = $keyName
        $arguments["resourceGroupName"] = $resourceGroupName
        $arguments["vaultName"] = $vaultName

        $functionObject = Invoke-PulumiFunction -Name azure-native:keyvault:getKey -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionKeyvaultGetVault
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the Resource Group to which the vault belongs.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of the vault.)')]
        [string]
        $vaultName
    )

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

        $functionObject = Invoke-PulumiFunction -Name azure-native:keyvault:getVault -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionKeyvaultGetSecret
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the vault.)')]
        [string]
        $vaultName,
        [parameter(mandatory=$False,HelpMessage='The name of the Resource Group to which the vault belongs.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of the secret.)')]
        [string]
        $secretName
    )

    process
    {
        $arguments = @{}
        $arguments["resourceGroupName"] = $resourceGroupName
        $arguments["secretName"] = $secretName
        $arguments["vaultName"] = $vaultName

        $functionObject = Invoke-PulumiFunction -Name azure-native:keyvault:getSecret -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
class SecretAttributes
{
    [int] $notBefore
    [int] $expires
    [bool] $enabled
}
function New-AzureNativeTypeKeyvaultSecretAttributes
{
    param (
        [parameter(mandatory=$False,HelpMessage='Not before date in seconds since 1970-01-01T00:00:00Z.)')]
        [int]
        $notBefore,
        [parameter(mandatory=$False,HelpMessage='Expiry date in seconds since 1970-01-01T00:00:00Z.)')]
        [int]
        $expires,
        [parameter(mandatory=$False,HelpMessage='Determines whether the object is enabled.)')]
        [bool]
        $enabled
    )

    process
    {
        return $([SecretAttributes]$PSBoundParameters)
    }
}
class SecretProperties
{
    [SecretAttributes] $attributes
    [string] $contentType
    [string] $value
}
function New-AzureNativeTypeKeyvaultSecretProperties
{
    param (
        [parameter(mandatory=$False,HelpMessage='The attributes of the secret.)')]
        [SecretAttributes]
        $attributes,
        [parameter(mandatory=$False,HelpMessage='The content type of the secret.)')]
        [string]
        $contentType,
        [parameter(mandatory=$False,HelpMessage='The value of the secret. NOTE: ''value'' will never be returned from the service, as APIs using this model are is intended for internal use in ARM deployments. Users should use the data-plane REST service for interaction with vault secrets.)')]
        [string]
        $value
    )

    process
    {
        return $([SecretProperties]$PSBoundParameters)
    }
}
function New-AzureNativeKeyvaultSecret
{
    [Alias('azure_native_keyvault_secret')]
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the Resource Group to which the vault belongs.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Properties of the secret)')]
        [SecretProperties]
        $properties,
        [parameter(mandatory=$False,HelpMessage='Name of the secret)')]
        [string]
        $secretName,
        [parameter(mandatory=$False,HelpMessage='The tags that will be assigned to the secret. )')]
        [hashtable]
        $tags,
        [parameter(mandatory=$False,HelpMessage='Name of the vault)')]
        [string]
        $vaultName,
        [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:keyvault:Secret")

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
class Sku
{
    [ValidateSet('standard', 'premium')]
    [object] $name
    [ValidateSet('A')]
    [string] $family
}
function New-AzureNativeTypeKeyvaultSku
{
    param (
        [parameter(mandatory=$False,HelpMessage='SKU name to specify whether the key vault is a standard vault or a premium vault.)')]
        $name,
        [parameter(mandatory=$False,HelpMessage='SKU family name)')]
        [string]
        [ValidateSet('A')]
        $family
    )

    process
    {
        return $([Sku]$PSBoundParameters)
    }
}
class Permissions
{
    [string[]] $secrets
    [string[]] $certificates
    [string[]] $keys
    [string[]] $storage
}
function New-AzureNativeTypeKeyvaultPermissions
{
    param (
        [parameter(mandatory=$False,HelpMessage='Permissions to secrets)')]
        $secrets,
        [parameter(mandatory=$False,HelpMessage='Permissions to certificates)')]
        $certificates,
        [parameter(mandatory=$False,HelpMessage='Permissions to keys)')]
        $keys,
        [parameter(mandatory=$False,HelpMessage='Permissions to storage accounts)')]
        $storage
    )

    process
    {
        return $([Permissions]$PSBoundParameters)
    }
}
class AccessPolicyEntry
{
    [string] $tenantId
    [string] $applicationId
    [string] $objectId
    [Permissions] $permissions
}
function New-AzureNativeTypeKeyvaultAccessPolicyEntry
{
    param (
        [parameter(mandatory=$False,HelpMessage='The Azure Active Directory tenant ID that should be used for authenticating requests to the key vault.)')]
        [string]
        $tenantId,
        [parameter(mandatory=$False,HelpMessage=' Application ID of the client making request on behalf of a principal)')]
        [string]
        $applicationId,
        [parameter(mandatory=$False,HelpMessage='The object ID of a user, service principal or security group in the Azure Active Directory tenant for the vault. The object ID must be unique for the list of access policies.)')]
        [string]
        $objectId,
        [parameter(mandatory=$False,HelpMessage='Permissions the identity has for keys, secrets and certificates.)')]
        [Permissions]
        $permissions
    )

    process
    {
        return $([AccessPolicyEntry]$PSBoundParameters)
    }
}
class VirtualNetworkRule
{
    [ValidateSet('AzureServices', 'None')]
    [string] $id
    [ValidateSet('AzureServices', 'None')]
    [bool] $ignoreMissingVnetServiceEndpoint
}
function New-AzureNativeTypeKeyvaultVirtualNetworkRule
{
    param (
        [parameter(mandatory=$False,HelpMessage='Full resource id of a vnet subnet, such as ''/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/virtualNetworks/test-vnet/subnets/subnet1''.)')]
        [string]
        $id,
        [parameter(mandatory=$False,HelpMessage='Property to specify whether NRP will ignore the check if parent subnet has serviceEndpoints configured.)')]
        [bool]
        $ignoreMissingVnetServiceEndpoint
    )

    process
    {
        return $([VirtualNetworkRule]$PSBoundParameters)
    }
}
class IPRule
{
    [ValidateSet('Allow', 'Deny')]
    [string] $value
}
function New-AzureNativeTypeKeyvaultIPRule
{
    param (
        [parameter(mandatory=$False,HelpMessage='An IPv4 address range in CIDR notation, such as ''124.56.78.91'' (simple IP address) or ''124.56.78.0/24'' (all addresses that start with 124.56.78).)')]
        [string]
        $value
    )

    process
    {
        return $([IPRule]$PSBoundParameters)
    }
}
class NetworkRuleSet
{
    [ValidateSet('AzureServices', 'None')]
    [string] $bypass
    [ValidateSet('AzureServices', 'None')]
    [VirtualNetworkRule[]] $virtualNetworkRules
    [ValidateSet('Allow', 'Deny')]
    [string] $defaultAction
    [ValidateSet('Allow', 'Deny')]
    [IPRule[]] $ipRules
}
function New-AzureNativeTypeKeyvaultNetworkRuleSet
{
    param (
        [parameter(mandatory=$False,HelpMessage='Tells what traffic can bypass network rules. This can be ''AzureServices'' or ''None''. If not specified the default is ''AzureServices''.)')]
        [string]
        [ValidateSet('AzureServices', 'None')]
        $bypass,
        [parameter(mandatory=$False,HelpMessage='The list of virtual network rules.)')]
        $virtualNetworkRules,
        [parameter(mandatory=$False,HelpMessage='The default action when no rule from ipRules and from virtualNetworkRules match. This is only used after the bypass property has been evaluated.)')]
        [string]
        [ValidateSet('Allow', 'Deny')]
        $defaultAction,
        [parameter(mandatory=$False,HelpMessage='The list of IP address rules.)')]
        $ipRules
    )

    process
    {
        return $([NetworkRuleSet]$PSBoundParameters)
    }
}
class VaultProperties
{
    [Sku] $sku
    [bool] $enablePurgeProtection
    [bool] $enableRbacAuthorization
    [bool] $enabledForDiskEncryption
    [AccessPolicyEntry[]] $accessPolicies
    [int] $softDeleteRetentionInDays
    [bool] $enabledForDeployment
    [ValidateSet('Succeeded', 'RegisteringDns')]
    [string] $provisioningState
    [ValidateSet('Succeeded', 'RegisteringDns')]
    [string] $tenantId
    [ValidateSet('Succeeded', 'RegisteringDns')]
    [NetworkRuleSet] $networkAcls
    [ValidateSet('Succeeded', 'RegisteringDns')]
    [bool] $enableSoftDelete
    [ValidateSet('recover', 'default')]
    [object] $createMode
    [ValidateSet('recover', 'default')]
    [bool] $enabledForTemplateDeployment
    [ValidateSet('recover', 'default')]
    [string] $vaultUri
}
function New-AzureNativeTypeKeyvaultVaultProperties
{
    param (
        [parameter(mandatory=$False,HelpMessage='SKU details)')]
        [Sku]
        $sku,
        [parameter(mandatory=$False,HelpMessage='Property specifying whether protection against purge is enabled for this vault. Setting this property to true activates protection against purge for this vault and its content - only the Key Vault service may initiate a hard, irrecoverable deletion. The setting is effective only if soft delete is also enabled. Enabling this functionality is irreversible - that is, the property does not accept false as its value.)')]
        [bool]
        $enablePurgeProtection,
        [parameter(mandatory=$False,HelpMessage='Property that controls how data actions are authorized. When true, the key vault will use Role Based Access Control (RBAC) for authorization of data actions, and the access policies specified in vault properties will be ignored. When false, the key vault will use the access policies specified in vault properties, and any policy stored on Azure Resource Manager will be ignored. If null or not specified, the vault is created with the default value of false. Note that management actions are always authorized with RBAC.)')]
        [bool]
        $enableRbacAuthorization,
        [parameter(mandatory=$False,HelpMessage='Property to specify whether Azure Disk Encryption is permitted to retrieve secrets from the vault and unwrap keys.)')]
        [bool]
        $enabledForDiskEncryption,
        [parameter(mandatory=$False,HelpMessage='An array of 0 to 1024 identities that have access to the key vault. All identities in the array must use the same tenant ID as the key vault''s tenant ID. When `createMode` is set to `recover`, access policies are not required. Otherwise, access policies are required.)')]
        $accessPolicies,
        [parameter(mandatory=$False,HelpMessage='softDelete data retention days. It accepts >=7 and <=90.)')]
        [int]
        $softDeleteRetentionInDays,
        [parameter(mandatory=$False,HelpMessage='Property to specify whether Azure Virtual Machines are permitted to retrieve certificates stored as secrets from the key vault.)')]
        [bool]
        $enabledForDeployment,
        [parameter(mandatory=$False,HelpMessage='Provisioning state of the vault.)')]
        [string]
        [ValidateSet('Succeeded', 'RegisteringDns')]
        $provisioningState,
        [parameter(mandatory=$False,HelpMessage='The Azure Active Directory tenant ID that should be used for authenticating requests to the key vault.)')]
        [string]
        $tenantId,
        [parameter(mandatory=$False,HelpMessage='Rules governing the accessibility of the key vault from specific network locations.)')]
        [NetworkRuleSet]
        $networkAcls,
        [parameter(mandatory=$False,HelpMessage='Property to specify whether the ''soft delete'' functionality is enabled for this key vault. If it''s not set to any value(true or false) when creating new key vault, it will be set to true by default. Once set to true, it cannot be reverted to false.)')]
        [bool]
        $enableSoftDelete,
        [parameter(mandatory=$False,HelpMessage='The vault''s create mode to indicate whether the vault need to be recovered or not.)')]
        $createMode,
        [parameter(mandatory=$False,HelpMessage='Property to specify whether Azure Resource Manager is permitted to retrieve secrets from the key vault.)')]
        [bool]
        $enabledForTemplateDeployment,
        [parameter(mandatory=$False,HelpMessage='The URI of the vault for performing operations on keys and secrets. This property is readonly)')]
        [string]
        $vaultUri
    )

    process
    {
        return $([VaultProperties]$PSBoundParameters)
    }
}
function New-AzureNativeKeyvaultVault
{
    [Alias('azure_native_keyvault_vault')]
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the Resource Group to which the server belongs.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Properties of the vault)')]
        [VaultProperties]
        $properties,
        [parameter(mandatory=$False,HelpMessage='The tags that will be assigned to the key vault.)')]
        [hashtable]
        $tags,
        [parameter(mandatory=$False,HelpMessage='The supported Azure location where the key vault should be created.)')]
        [string]
        $location,
        [parameter(mandatory=$False,HelpMessage='Name of the vault)')]
        [string]
        $vaultName,
        [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:keyvault:Vault")

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
class KeyAttributes
{
    [int] $notBefore
    [int] $expires
    [bool] $enabled
}
function New-AzureNativeTypeKeyvaultKeyAttributes
{
    param (
        [parameter(mandatory=$False,HelpMessage='Not before date in seconds since 1970-01-01T00:00:00Z.)')]
        [int]
        $notBefore,
        [parameter(mandatory=$False,HelpMessage='Expiry date in seconds since 1970-01-01T00:00:00Z.)')]
        [int]
        $expires,
        [parameter(mandatory=$False,HelpMessage='Determines whether or not the object is enabled.)')]
        [bool]
        $enabled
    )

    process
    {
        return $([KeyAttributes]$PSBoundParameters)
    }
}
class KeyProperties
{
    [KeyAttributes] $attributes
    [ValidateSet('EC', 'EC-HSM', 'RSA', 'RSA-HSM')]
    [string] $kty
    [ValidateSet('P-256', 'P-384', 'P-521', 'P-256K')]
    [string] $curveName
    [ValidateSet('P-256', 'P-384', 'P-521', 'P-256K')]
    [int] $keySize
    [ValidateSet('P-256', 'P-384', 'P-521', 'P-256K')]
    [string[]] $keyOps
}
function New-AzureNativeTypeKeyvaultKeyProperties
{
    param (
        [parameter(mandatory=$False,HelpMessage='The attributes of the key.)')]
        [KeyAttributes]
        $attributes,
        [parameter(mandatory=$False,HelpMessage='The type of the key. For valid values, see JsonWebKeyType.)')]
        [string]
        [ValidateSet('EC', 'EC-HSM', 'RSA', 'RSA-HSM')]
        $kty,
        [parameter(mandatory=$False,HelpMessage='The elliptic curve name. For valid values, see JsonWebKeyCurveName.)')]
        [string]
        [ValidateSet('P-256', 'P-384', 'P-521', 'P-256K')]
        $curveName,
        [parameter(mandatory=$False,HelpMessage='The key size in bits. For example: 2048, 3072, or 4096 for RSA.)')]
        [int]
        $keySize,
        [parameter(mandatory=$False,HelpMessage=')')]
        $keyOps
    )

    process
    {
        return $([KeyProperties]$PSBoundParameters)
    }
}
function New-AzureNativeKeyvaultKey
{
    [Alias('azure_native_keyvault_key')]
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the resource group which contains the specified key vault.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The properties of the key to be created.)')]
        [KeyProperties]
        $properties,
        [parameter(mandatory=$False,HelpMessage='The name of the key to be created.)')]
        [string]
        $keyName,
        [parameter(mandatory=$False,HelpMessage='The tags that will be assigned to the key.)')]
        [hashtable]
        $tags,
        [parameter(mandatory=$False,HelpMessage='The name of the key vault which contains the key to be created.)')]
        [string]
        $vaultName,
        [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:keyvault:Key")

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
class ManagedHsmSku
{
    [ValidateSet('Standard_B1', 'Custom_B32')]
    [object] $name
    [ValidateSet('B')]
    [string] $family
}
function New-AzureNativeTypeKeyvaultManagedHsmSku
{
    param (
        [parameter(mandatory=$False,HelpMessage='SKU of the managed HSM Pool)')]
        $name,
        [parameter(mandatory=$False,HelpMessage='SKU Family of the managed HSM Pool)')]
        [string]
        [ValidateSet('B')]
        $family
    )

    process
    {
        return $([ManagedHsmSku]$PSBoundParameters)
    }
}
class MHSMVirtualNetworkRule
{
    [ValidateSet('AzureServices', 'None')]
    [string] $id
}
function New-AzureNativeTypeKeyvaultMHSMVirtualNetworkRule
{
    param (
        [parameter(mandatory=$False,HelpMessage='Full resource id of a vnet subnet, such as ''/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/virtualNetworks/test-vnet/subnets/subnet1''.)')]
        [string]
        $id
    )

    process
    {
        return $([MHSMVirtualNetworkRule]$PSBoundParameters)
    }
}
class MHSMIPRule
{
    [ValidateSet('Allow', 'Deny')]
    [string] $value
}
function New-AzureNativeTypeKeyvaultMHSMIPRule
{
    param (
        [parameter(mandatory=$False,HelpMessage='An IPv4 address range in CIDR notation, such as ''124.56.78.91'' (simple IP address) or ''124.56.78.0/24'' (all addresses that start with 124.56.78).)')]
        [string]
        $value
    )

    process
    {
        return $([MHSMIPRule]$PSBoundParameters)
    }
}
class MHSMNetworkRuleSet
{
    [ValidateSet('AzureServices', 'None')]
    [string] $bypass
    [ValidateSet('AzureServices', 'None')]
    [MHSMVirtualNetworkRule[]] $virtualNetworkRules
    [ValidateSet('Allow', 'Deny')]
    [string] $defaultAction
    [ValidateSet('Allow', 'Deny')]
    [MHSMIPRule[]] $ipRules
}
function New-AzureNativeTypeKeyvaultMHSMNetworkRuleSet
{
    param (
        [parameter(mandatory=$False,HelpMessage='Tells what traffic can bypass network rules. This can be ''AzureServices'' or ''None''. If not specified the default is ''AzureServices''.)')]
        [string]
        [ValidateSet('AzureServices', 'None')]
        $bypass,
        [parameter(mandatory=$False,HelpMessage='The list of virtual network rules.)')]
        $virtualNetworkRules,
        [parameter(mandatory=$False,HelpMessage='The default action when no rule from ipRules and from virtualNetworkRules match. This is only used after the bypass property has been evaluated.)')]
        [string]
        [ValidateSet('Allow', 'Deny')]
        $defaultAction,
        [parameter(mandatory=$False,HelpMessage='The list of IP address rules.)')]
        $ipRules
    )

    process
    {
        return $([MHSMNetworkRuleSet]$PSBoundParameters)
    }
}
class ManagedHsmProperties
{
    [bool] $enablePurgeProtection
    [bool] $enableSoftDelete
    [ValidateSet('Enabled', 'Disabled')]
    [string] $publicNetworkAccess
    [ValidateSet('Enabled', 'Disabled')]
    [string[]] $initialAdminObjectIds
    [ValidateSet('Enabled', 'Disabled')]
    [string] $tenantId
    [ValidateSet('Enabled', 'Disabled')]
    [MHSMNetworkRuleSet] $networkAcls
    [ValidateSet('Enabled', 'Disabled')]
    [int] $softDeleteRetentionInDays
    [ValidateSet('recover', 'default')]
    [object] $createMode
}
function New-AzureNativeTypeKeyvaultManagedHsmProperties
{
    param (
        [parameter(mandatory=$False,HelpMessage='Property specifying whether protection against purge is enabled for this managed HSM pool. Setting this property to true activates protection against purge for this managed HSM pool and its content - only the Managed HSM service may initiate a hard, irrecoverable deletion. The setting is effective only if soft delete is also enabled. Enabling this functionality is irreversible.)')]
        [bool]
        $enablePurgeProtection,
        [parameter(mandatory=$False,HelpMessage='Property to specify whether the ''soft delete'' functionality is enabled for this managed HSM pool. If it''s not set to any value(true or false) when creating new managed HSM pool, it will be set to true by default. Once set to true, it cannot be reverted to false.)')]
        [bool]
        $enableSoftDelete,
        [parameter(mandatory=$False,HelpMessage='Control permission for data plane traffic coming from public networks while private endpoint is enabled.)')]
        [string]
        [ValidateSet('Enabled', 'Disabled')]
        $publicNetworkAccess,
        [parameter(mandatory=$False,HelpMessage='Array of initial administrators object ids for this managed hsm pool.)')]
        [string[]]
        $initialAdminObjectIds,
        [parameter(mandatory=$False,HelpMessage='The Azure Active Directory tenant ID that should be used for authenticating requests to the managed HSM pool.)')]
        [string]
        $tenantId,
        [parameter(mandatory=$False,HelpMessage='Rules governing the accessibility of the key vault from specific network locations.)')]
        [MHSMNetworkRuleSet]
        $networkAcls,
        [parameter(mandatory=$False,HelpMessage='softDelete data retention days. It accepts >=7 and <=90.)')]
        [int]
        $softDeleteRetentionInDays,
        [parameter(mandatory=$False,HelpMessage='The create mode to indicate whether the resource is being created or is being recovered from a deleted resource.)')]
        $createMode
    )

    process
    {
        return $([ManagedHsmProperties]$PSBoundParameters)
    }
}
function New-AzureNativeKeyvaultManagedHsm
{
    [Alias('azure_native_keyvault_managedhsm')]
    param (
        [parameter(mandatory=$False,HelpMessage='Name of the managed HSM Pool)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='SKU details)')]
        [ManagedHsmSku]
        $sku,
        [parameter(mandatory=$False,HelpMessage='Name of the resource group that contains the managed HSM pool.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Resource tags)')]
        [hashtable]
        $tags,
        [parameter(mandatory=$False,HelpMessage='Properties of the managed HSM)')]
        [ManagedHsmProperties]
        $properties,
        [parameter(mandatory=$False,HelpMessage='The supported Azure location where the managed HSM Pool should be created.)')]
        [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:keyvault:ManagedHsm")

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

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

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
class PrivateLinkServiceConnectionState
{
    [string] $description
    [string] $actionsRequired
    [ValidateSet('Pending', 'Approved', 'Rejected', 'Disconnected')]
    [string] $status
}
function New-AzureNativeTypeKeyvaultPrivateLinkServiceConnectionState
{
    param (
        [parameter(mandatory=$False,HelpMessage='The reason for approval or rejection.)')]
        [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 or removed by the key vault owner.)')]
        [string]
        [ValidateSet('Pending', 'Approved', 'Rejected', 'Disconnected')]
        $status
    )

    process
    {
        return $([PrivateLinkServiceConnectionState]$PSBoundParameters)
    }
}
function New-AzureNativeKeyvaultPrivateEndpointConnection
{
    [Alias('azure_native_keyvault_privateendpointconnection')]
    param (
        [parameter(mandatory=$False,HelpMessage='Name of the private endpoint connection associated with the key vault.)')]
        [string]
        $privateEndpointConnectionName,
        [parameter(mandatory=$False,HelpMessage='Name of the resource group that contains the key vault.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Approval state of the private link connection.)')]
        [PrivateLinkServiceConnectionState]
        $privateLinkServiceConnectionState,
        [parameter(mandatory=$False,HelpMessage='The name of the key vault.)')]
        [string]
        $vaultName,
        [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:keyvault:PrivateEndpointConnection")

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
class MHSMPrivateLinkServiceConnectionState
{
    [string] $description
    [ValidateSet('None')]
    [string] $actionsRequired
    [ValidateSet('Pending', 'Approved', 'Rejected', 'Disconnected')]
    [string] $status
}
function New-AzureNativeTypeKeyvaultMHSMPrivateLinkServiceConnectionState
{
    param (
        [parameter(mandatory=$False,HelpMessage='The reason for approval or rejection.)')]
        [string]
        $description,
        [parameter(mandatory=$False,HelpMessage='A message indicating if changes on the service provider require any updates on the consumer.)')]
        [string]
        [ValidateSet('None')]
        $actionsRequired,
        [parameter(mandatory=$False,HelpMessage='Indicates whether the connection has been approved, rejected or removed by the key vault owner.)')]
        [string]
        [ValidateSet('Pending', 'Approved', 'Rejected', 'Disconnected')]
        $status
    )

    process
    {
        return $([MHSMPrivateLinkServiceConnectionState]$PSBoundParameters)
    }
}
function New-AzureNativeKeyvaultMHSMPrivateEndpointConnection
{
    [Alias('azure_native_keyvault_mhsmprivateendpointconnection')]
    param (
        [parameter(mandatory=$False,HelpMessage='Name of the managed HSM Pool)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='SKU details)')]
        [ManagedHsmSku]
        $sku,
        [parameter(mandatory=$False,HelpMessage='Name of the private endpoint connection associated with the managed hsm pool.)')]
        [string]
        $privateEndpointConnectionName,
        [parameter(mandatory=$False,HelpMessage='Resource tags)')]
        [hashtable]
        $tags,
        [parameter(mandatory=$False,HelpMessage='Approval state of the private link connection.)')]
        [MHSMPrivateLinkServiceConnectionState]
        $privateLinkServiceConnectionState,
        [parameter(mandatory=$False,HelpMessage='Name of the resource group that contains the managed HSM pool.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The supported Azure location where the managed HSM Pool should be created.)')]
        [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:keyvault:MHSMPrivateEndpointConnection")

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

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

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

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

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

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

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