pspulumiyaml.azurenative.databricks.psm1

using module @{ ModuleName = "PSPulumiYaml"; ModuleVersion = "0.0.3"; GUID = "909344e0-a08f-45f6-8177-80e36bb2ba58" }
function Invoke-AzureNativeFunctionDatabricksGetvNetPeering
{
    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 workspace vNet peering.)')]
        [string]
        $peeringName,
        [parameter(mandatory=$False,HelpMessage='The name of the workspace.)')]
        [string]
        $workspaceName
    )

    process
    {
        $arguments = @{}
        $arguments["peeringName"] = $peeringName
        $arguments["resourceGroupName"] = $resourceGroupName
        $arguments["workspaceName"] = $workspaceName

        $functionObject = Invoke-PulumiFunction -Name azure-native:databricks:getvNetPeering -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionDatabricksGetPrivateEndpointConnection
{
    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 workspace.)')]
        [string]
        $workspaceName,
        [parameter(mandatory=$False,HelpMessage='The name of the private endpoint connection)')]
        [string]
        $privateEndpointConnectionName
    )

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

        $functionObject = Invoke-PulumiFunction -Name azure-native:databricks:getPrivateEndpointConnection -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionDatabricksGetWorkspace
{
    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 workspace.)')]
        [string]
        $workspaceName
    )

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

        $functionObject = Invoke-PulumiFunction -Name azure-native:databricks:getWorkspace -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
class Sku
{
    [string] $tier
    [string] $name
}
function New-AzureNativeTypeDatabricksSku
{
    param (
        [parameter(mandatory=$False,HelpMessage='The SKU tier.)')]
        [string]
        $tier,
        [parameter(mandatory=$False,HelpMessage='The SKU name.)')]
        [string]
        $name
    )

    process
    {
        return $([Sku]$PSBoundParameters)
    }
}
class WorkspaceCustomBooleanParameter
{
    [bool] $value
}
function New-AzureNativeTypeDatabricksWorkspaceCustomBooleanParameter
{
    param (
        [parameter(mandatory=$False,HelpMessage='The value which should be used for this field.)')]
        [bool]
        $value
    )

    process
    {
        return $([WorkspaceCustomBooleanParameter]$PSBoundParameters)
    }
}
class Encryption
{
    [string] $keyVersion
    [string] $keyName
    [ArgumentCompletions('Default', 'Microsoft.Keyvault')]
    [string] $keySource
    [string] $keyVaultUri
}
function New-AzureNativeTypeDatabricksEncryption
{
    param (
        [parameter(mandatory=$False,HelpMessage='The version of KeyVault key.)')]
        [string]
        $keyVersion,
        [parameter(mandatory=$False,HelpMessage='The name of KeyVault key.)')]
        [string]
        $keyName,
        [parameter(mandatory=$False,HelpMessage='The encryption keySource (provider). Possible values (case-insensitive): Default, Microsoft.Keyvault)')]
        [string]
        [ArgumentCompletions('Default', 'Microsoft.Keyvault')]
        $keySource,
        [parameter(mandatory=$False,HelpMessage='The Uri of KeyVault.)')]
        [string]
        $keyVaultUri
    )

    process
    {
        return $([Encryption]$PSBoundParameters)
    }
}
class WorkspaceEncryptionParameter
{
    [Encryption] $value
}
function New-AzureNativeTypeDatabricksWorkspaceEncryptionParameter
{
    param (
        [parameter(mandatory=$False,HelpMessage='The value which should be used for this field.)')]
        [Encryption]
        $value
    )

    process
    {
        return $([WorkspaceEncryptionParameter]$PSBoundParameters)
    }
}
class WorkspaceCustomStringParameter
{
    [string] $value
}
function New-AzureNativeTypeDatabricksWorkspaceCustomStringParameter
{
    param (
        [parameter(mandatory=$False,HelpMessage='The value which should be used for this field.)')]
        [string]
        $value
    )

    process
    {
        return $([WorkspaceCustomStringParameter]$PSBoundParameters)
    }
}
class WorkspaceCustomParameters
{
    [WorkspaceCustomBooleanParameter] $requireInfrastructureEncryption
    [WorkspaceCustomBooleanParameter] $enableNoPublicIp
    [WorkspaceEncryptionParameter] $encryption
    [WorkspaceCustomStringParameter] $customPrivateSubnetName
    [WorkspaceCustomStringParameter] $vnetAddressPrefix
    [WorkspaceCustomStringParameter] $storageAccountSkuName
    [WorkspaceCustomStringParameter] $publicIpName
    [WorkspaceCustomStringParameter] $customVirtualNetworkId
    [WorkspaceCustomStringParameter] $natGatewayName
    [WorkspaceCustomStringParameter] $customPublicSubnetName
    [WorkspaceCustomStringParameter] $storageAccountName
    [WorkspaceCustomStringParameter] $amlWorkspaceId
    [WorkspaceCustomBooleanParameter] $prepareEncryption
    [WorkspaceCustomStringParameter] $loadBalancerId
    [WorkspaceCustomStringParameter] $loadBalancerBackendPoolName
}
function New-AzureNativeTypeDatabricksWorkspaceCustomParameters
{
    param (
        [parameter(mandatory=$False,HelpMessage='A boolean indicating whether or not the DBFS root file system will be enabled with secondary layer of encryption with platform managed keys for data at rest.)')]
        [WorkspaceCustomBooleanParameter]
        $requireInfrastructureEncryption,
        [parameter(mandatory=$False,HelpMessage='Should the Public IP be Disabled?)')]
        [WorkspaceCustomBooleanParameter]
        $enableNoPublicIp,
        [parameter(mandatory=$False,HelpMessage='Contains the encryption details for Customer-Managed Key (CMK) enabled workspace.)')]
        [WorkspaceEncryptionParameter]
        $encryption,
        [parameter(mandatory=$False,HelpMessage='The name of the Private Subnet within the Virtual Network)')]
        [WorkspaceCustomStringParameter]
        $customPrivateSubnetName,
        [parameter(mandatory=$False,HelpMessage='Address prefix for Managed virtual network. Default value for this input is 10.139.)')]
        [WorkspaceCustomStringParameter]
        $vnetAddressPrefix,
        [parameter(mandatory=$False,HelpMessage='Storage account SKU name, ex: Standard_GRS, Standard_LRS. Refer https://aka.ms/storageskus for valid inputs.)')]
        [WorkspaceCustomStringParameter]
        $storageAccountSkuName,
        [parameter(mandatory=$False,HelpMessage='Name of the Public IP for No Public IP workspace with managed vNet.)')]
        [WorkspaceCustomStringParameter]
        $publicIpName,
        [parameter(mandatory=$False,HelpMessage='The ID of a Virtual Network where this Databricks Cluster should be created)')]
        [WorkspaceCustomStringParameter]
        $customVirtualNetworkId,
        [parameter(mandatory=$False,HelpMessage='Name of the NAT gateway for Secure Cluster Connectivity (No Public IP) workspace subnets.)')]
        [WorkspaceCustomStringParameter]
        $natGatewayName,
        [parameter(mandatory=$False,HelpMessage='The name of a Public Subnet within the Virtual Network)')]
        [WorkspaceCustomStringParameter]
        $customPublicSubnetName,
        [parameter(mandatory=$False,HelpMessage='Default DBFS storage account name.)')]
        [WorkspaceCustomStringParameter]
        $storageAccountName,
        [parameter(mandatory=$False,HelpMessage='The ID of a Azure Machine Learning workspace to link with Databricks workspace)')]
        [WorkspaceCustomStringParameter]
        $amlWorkspaceId,
        [parameter(mandatory=$False,HelpMessage='Prepare the workspace for encryption. Enables the Managed Identity for managed storage account.)')]
        [WorkspaceCustomBooleanParameter]
        $prepareEncryption,
        [parameter(mandatory=$False,HelpMessage='Resource URI of Outbound Load balancer for Secure Cluster Connectivity (No Public IP) workspace.)')]
        [WorkspaceCustomStringParameter]
        $loadBalancerId,
        [parameter(mandatory=$False,HelpMessage='Name of the outbound Load Balancer Backend Pool for Secure Cluster Connectivity (No Public IP).)')]
        [WorkspaceCustomStringParameter]
        $loadBalancerBackendPoolName
    )

    process
    {
        return $([WorkspaceCustomParameters]$PSBoundParameters)
    }
}
function New-AzureNativeDatabricksWorkspace
{
    [Alias('azure_native_databricks_workspace')]
    param (
        [parameter(mandatory=$False,HelpMessage='Resource tags.)')]
        [hashtable]
        $tags,
        [parameter(mandatory=$False,HelpMessage='The SKU of the resource.)')]
        [Sku]
        $sku,
        [parameter(mandatory=$False,HelpMessage='The workspace''s custom parameters.)')]
        [WorkspaceCustomParameters]
        $parameters,
        [parameter(mandatory=$False,HelpMessage='The blob URI where the UI definition file is located.)')]
        [string]
        $uiDefinitionUri,
        [parameter(mandatory=$False,HelpMessage='The geo-location where the resource lives)')]
        [string]
        $location,
        [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 workspace.)')]
        [string]
        $workspaceName,
        [parameter(mandatory=$False,HelpMessage='The managed resource group Id.)')]
        [string]
        $managedResourceGroupId,
        [parameter(mandatory=$False,HelpMessage='The workspace provider authorizations.)')]
        $authorizations,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid,
        [parameter(HelpMessage='Specifies a list of named output properties that should be treated as secrets, which means they will be encrypted. It augments the list of values that Pulumi detects, based on secret inputs to the resource.')]
        [string[]]
        $PulumiSecretOutputs,
        [parameter(HelpMessage='The aliases parameter provides a list of aliases for a resource or component resource. If youre changing the name, type, or parent path of a resource or component resource, you can add the old name to the list of aliases for a resource to ensure that existing resources will be migrated to the new name instead of being deleted and replaced with the new named resource.')]
        [string[]]
        $PulumiAliases,
        [parameter(HelpMessage='The customTimeouts parameter provides a set of custom timeouts for create, update, and delete operations on a resource. These timeouts are specified using a duration string such as 5m (5 minutes), 40s (40 seconds), or 1d (1 day). Supported duration units are ns, us (or µs), ms, s, m, and h (nanoseconds, microseconds, milliseconds, seconds, minutes, and hours, respectively).')]
        [pulumicustomtimeouts]
        $PulumiCustomTimeouts,
        [parameter(HelpMessage='Setting the PulumiDeleteBeforeReplace parameter to true means that Pulumi will delete the existing resource before creating its replacement. Be aware that this behavior has a cascading impact on dependencies so more resources may be replaced, which can lead to downtime. However, this option may be necessary for some resources that manage scarce resources behind the scenes, and/or resources that cannot exist side-by-side.')]
        [bool]
        $PulumiDeleteBeforeReplace,
        [parameter(HelpMessage='Creates a list of explicit dependencies between resources.The DependsOn parameter ensures that resource creation, update, and deletion operations are done in the correct order.')]
        [object[]]
        $PulumiDependsOn,
        [parameter(HelpMessage='Specifies a list of properties that Pulumi will ignore when it updates existing resources. Any properties specified in this list that are also specified in the resources arguments will only be used when creating the resource.')]
        [string[]]
        $PulumiIgnoreChanges,
        [parameter(HelpMessage='Imports an existing cloud resource so that Pulumi can manage it. To import a resource, first specify the PulumiImport parameter with the resources ID')]
        [string]
        $PulumiImport = [NullString]::Value,
        [parameter(HelpMessage='Specifies a parent for a resource. It is used to associate children with the parents that encapsulate or are responsible for them.')]
        [object]
        $PulumiParent = [NullString]::Value,
        [parameter(HelpMessage='Marks a resource as protected. A protected resource cannot be deleted directly, and it will be an error to do a Pulumi deployment which tries to delete a protected resource for any reason.')]
        [bool]
        $PulumiProtect,
        [parameter(HelpMessage='Sets a provider for the resource. The default is to inherit this value from the parent resource, and to use the ambient provider specified by Pulumi configuration for resources without a parent.')]
        [object]
        $PulumiProvider = [NullString]::Value,
        [parameter(HelpMessage='Sets a list of providers for the resource and its children. This list is combined with resource parents providers lists. If no value is provided, the providers list is identical to the parent. When determining which provider to use for a resource, the providers list is used if provider is not supplied.')]
        [object[]]
        $PulumiProviders,
        [parameter(HelpMessage='Used to indicate that changes to certain properties on a resource should force a replacement of the resource instead of an in-place update. Typically users rely on the resource provider to make this decision based on whether the input property is one that the provider knows how to update in place, or if not, requires a replacement to modify. However, there are cases where users want to replace a resource on a change to an input property even if the resource provider itself doesnt believe it has to replace the resource.')]
        [string[]]
        $PulumiReplaceOnChanges,
        [parameter(HelpMessage='Marks a resource to be retained. If this option is set then Pulumi will not call through to the resource providers Delete method when deleting or replacing the resource during pulumi up or pulumi destroy. As a result, the resource will not be deleted from the backing cloud provider, but will be removed from the Pulumi state.')]
        [bool]
        $PulumiRetainOnDelete,
        [parameter(HelpMessage='Specifies a provider version to use when operating on a resource. This version overrides the version information inferred from the current package. This option should be used rarely.')]
        [string]
        $PulumiProviderVersion = [NullString]::Value
    )

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

        $resource.options.additionalSecretOutputs = $PulumiSecretOutputs
        $resource.options.aliases = $PulumiAliases
        $resource.options.customTimeouts = $PulumiCustomTimeouts
        $resource.options.deleteBeforeReplace = $PulumiDeleteBeforeReplace
        $resource.options.ignoreChanges = $PulumiIgnoreChanges
        $resource.options.import = if([string]::IsNullOrEmpty($PulumiImport)) { [NullString]::Value } else { $PulumiImport }
        $resource.options.protect = $PulumiProtect
        $resource.options.replaceOnChanges = $PulumiReplaceOnChanges
        $resource.options.retainOnDelete = $PulumiRetainOnDelete
        $resource.options.version = if([string]::IsNullOrEmpty($PulumiProviderVersion)) { [NullString]::Value } else { $PulumiProviderVersion }

        foreach($Dependency in $DependsOn)
        {
            if($Dependency -is [pulumiresource])
            {
                $resource.options.dependson += $Dependency.Reference()
            } else
            {
                $resource.options.dependson += $Dependency
            }
        }
        if($PulumiParent -is [pulumiresource])
        {
            $resource.options.parent = $PulumiParent.Reference()
        } else
        {
            $resource.options.parent = $PulumiParent
        }
        foreach($provider in $PulumiProviders)
        {
            if($provider -is [pulumiprovider])
            {
                $resource.options.providers += $provider.Reference()
            } else
            {
                $resource.options.providers += $provider
            }
        }
        if($PulumiProvider -is [pulumiprovider])
        {
            $resource.options.provider = $PulumiProvider.Reference()
        } else
        {
            $resource.options.provider = $PulumiProvider
        }
        $resource.properties["managedResourceGroupId"] = $managedResourceGroupId
        $resource.properties["resourceGroupName"] = $resourceGroupName

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

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

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

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
class VirtualNetworkPeeringPropertiesFormatDatabricksVirtualNetwork
{
    [string] $id
}
function New-AzureNativeTypeDatabricksVirtualNetworkPeeringPropertiesFormatDatabricksVirtualNetwork
{
    param (
        [parameter(mandatory=$False,HelpMessage='The Id of the databricks virtual network.)')]
        [string]
        $id
    )

    process
    {
        return $([VirtualNetworkPeeringPropertiesFormatDatabricksVirtualNetwork]$PSBoundParameters)
    }
}
class AddressSpace
{
    [string[]] $addressPrefixes
}
function New-AzureNativeTypeDatabricksAddressSpace
{
    param (
        [parameter(mandatory=$False,HelpMessage='A list of address blocks reserved for this virtual network in CIDR notation.)')]
        [string[]]
        $addressPrefixes
    )

    process
    {
        return $([AddressSpace]$PSBoundParameters)
    }
}
class VirtualNetworkPeeringPropertiesFormatRemoteVirtualNetwork
{
    [string] $id
}
function New-AzureNativeTypeDatabricksVirtualNetworkPeeringPropertiesFormatRemoteVirtualNetwork
{
    param (
        [parameter(mandatory=$False,HelpMessage='The Id of the remote virtual network.)')]
        [string]
        $id
    )

    process
    {
        return $([VirtualNetworkPeeringPropertiesFormatRemoteVirtualNetwork]$PSBoundParameters)
    }
}
function New-AzureNativeDatabricksVNetPeering
{
    [Alias('azure_native_databricks_vnetpeering')]
    param (
        [parameter(mandatory=$False,HelpMessage=' The remote virtual network should be in the same region. See here to learn more (https://docs.microsoft.com/en-us/azure/databricks/administration-guide/cloud-configurations/azure/vnet-peering).)')]
        [VirtualNetworkPeeringPropertiesFormatDatabricksVirtualNetwork]
        $databricksVirtualNetwork,
        [parameter(mandatory=$False,HelpMessage='If gateway links can be used in remote virtual networking to link to this virtual network.)')]
        [bool]
        $allowGatewayTransit,
        [parameter(mandatory=$False,HelpMessage='The reference to the remote virtual network address space.)')]
        [AddressSpace]
        $remoteAddressSpace,
        [parameter(mandatory=$False,HelpMessage='Whether the VMs in the local virtual network space would be able to access the VMs in remote virtual network space.)')]
        [bool]
        $allowVirtualNetworkAccess,
        [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 workspace.)')]
        [string]
        $workspaceName,
        [parameter(mandatory=$False,HelpMessage='If remote gateways can be used on this virtual network. If the flag is set to true, and allowGatewayTransit on remote peering is also true, virtual network will use gateways of remote virtual network for transit. Only one peering can have this flag set to true. This flag cannot be set if virtual network already has a gateway.)')]
        [bool]
        $useRemoteGateways,
        [parameter(mandatory=$False,HelpMessage='The name of the workspace vNet peering.)')]
        [string]
        $peeringName,
        [parameter(mandatory=$False,HelpMessage='The reference to the databricks virtual network address space.)')]
        [AddressSpace]
        $databricksAddressSpace,
        [parameter(mandatory=$False,HelpMessage='Whether the forwarded traffic from the VMs in the local virtual network will be allowed/disallowed in remote virtual network.)')]
        [bool]
        $allowForwardedTraffic,
        [parameter(mandatory=$False,HelpMessage=' The remote virtual network should be in the same region. See here to learn more (https://docs.microsoft.com/en-us/azure/databricks/administration-guide/cloud-configurations/azure/vnet-peering).)')]
        [VirtualNetworkPeeringPropertiesFormatRemoteVirtualNetwork]
        $remoteVirtualNetwork,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid,
        [parameter(HelpMessage='Specifies a list of named output properties that should be treated as secrets, which means they will be encrypted. It augments the list of values that Pulumi detects, based on secret inputs to the resource.')]
        [string[]]
        $PulumiSecretOutputs,
        [parameter(HelpMessage='The aliases parameter provides a list of aliases for a resource or component resource. If youre changing the name, type, or parent path of a resource or component resource, you can add the old name to the list of aliases for a resource to ensure that existing resources will be migrated to the new name instead of being deleted and replaced with the new named resource.')]
        [string[]]
        $PulumiAliases,
        [parameter(HelpMessage='The customTimeouts parameter provides a set of custom timeouts for create, update, and delete operations on a resource. These timeouts are specified using a duration string such as 5m (5 minutes), 40s (40 seconds), or 1d (1 day). Supported duration units are ns, us (or µs), ms, s, m, and h (nanoseconds, microseconds, milliseconds, seconds, minutes, and hours, respectively).')]
        [pulumicustomtimeouts]
        $PulumiCustomTimeouts,
        [parameter(HelpMessage='Setting the PulumiDeleteBeforeReplace parameter to true means that Pulumi will delete the existing resource before creating its replacement. Be aware that this behavior has a cascading impact on dependencies so more resources may be replaced, which can lead to downtime. However, this option may be necessary for some resources that manage scarce resources behind the scenes, and/or resources that cannot exist side-by-side.')]
        [bool]
        $PulumiDeleteBeforeReplace,
        [parameter(HelpMessage='Creates a list of explicit dependencies between resources.The DependsOn parameter ensures that resource creation, update, and deletion operations are done in the correct order.')]
        [object[]]
        $PulumiDependsOn,
        [parameter(HelpMessage='Specifies a list of properties that Pulumi will ignore when it updates existing resources. Any properties specified in this list that are also specified in the resources arguments will only be used when creating the resource.')]
        [string[]]
        $PulumiIgnoreChanges,
        [parameter(HelpMessage='Imports an existing cloud resource so that Pulumi can manage it. To import a resource, first specify the PulumiImport parameter with the resources ID')]
        [string]
        $PulumiImport = [NullString]::Value,
        [parameter(HelpMessage='Specifies a parent for a resource. It is used to associate children with the parents that encapsulate or are responsible for them.')]
        [object]
        $PulumiParent = [NullString]::Value,
        [parameter(HelpMessage='Marks a resource as protected. A protected resource cannot be deleted directly, and it will be an error to do a Pulumi deployment which tries to delete a protected resource for any reason.')]
        [bool]
        $PulumiProtect,
        [parameter(HelpMessage='Sets a provider for the resource. The default is to inherit this value from the parent resource, and to use the ambient provider specified by Pulumi configuration for resources without a parent.')]
        [object]
        $PulumiProvider = [NullString]::Value,
        [parameter(HelpMessage='Sets a list of providers for the resource and its children. This list is combined with resource parents providers lists. If no value is provided, the providers list is identical to the parent. When determining which provider to use for a resource, the providers list is used if provider is not supplied.')]
        [object[]]
        $PulumiProviders,
        [parameter(HelpMessage='Used to indicate that changes to certain properties on a resource should force a replacement of the resource instead of an in-place update. Typically users rely on the resource provider to make this decision based on whether the input property is one that the provider knows how to update in place, or if not, requires a replacement to modify. However, there are cases where users want to replace a resource on a change to an input property even if the resource provider itself doesnt believe it has to replace the resource.')]
        [string[]]
        $PulumiReplaceOnChanges,
        [parameter(HelpMessage='Marks a resource to be retained. If this option is set then Pulumi will not call through to the resource providers Delete method when deleting or replacing the resource during pulumi up or pulumi destroy. As a result, the resource will not be deleted from the backing cloud provider, but will be removed from the Pulumi state.')]
        [bool]
        $PulumiRetainOnDelete,
        [parameter(HelpMessage='Specifies a provider version to use when operating on a resource. This version overrides the version information inferred from the current package. This option should be used rarely.')]
        [string]
        $PulumiProviderVersion = [NullString]::Value
    )

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

        $resource.options.additionalSecretOutputs = $PulumiSecretOutputs
        $resource.options.aliases = $PulumiAliases
        $resource.options.customTimeouts = $PulumiCustomTimeouts
        $resource.options.deleteBeforeReplace = $PulumiDeleteBeforeReplace
        $resource.options.ignoreChanges = $PulumiIgnoreChanges
        $resource.options.import = if([string]::IsNullOrEmpty($PulumiImport)) { [NullString]::Value } else { $PulumiImport }
        $resource.options.protect = $PulumiProtect
        $resource.options.replaceOnChanges = $PulumiReplaceOnChanges
        $resource.options.retainOnDelete = $PulumiRetainOnDelete
        $resource.options.version = if([string]::IsNullOrEmpty($PulumiProviderVersion)) { [NullString]::Value } else { $PulumiProviderVersion }

        foreach($Dependency in $DependsOn)
        {
            if($Dependency -is [pulumiresource])
            {
                $resource.options.dependson += $Dependency.Reference()
            } else
            {
                $resource.options.dependson += $Dependency
            }
        }
        if($PulumiParent -is [pulumiresource])
        {
            $resource.options.parent = $PulumiParent.Reference()
        } else
        {
            $resource.options.parent = $PulumiParent
        }
        foreach($provider in $PulumiProviders)
        {
            if($provider -is [pulumiprovider])
            {
                $resource.options.providers += $provider.Reference()
            } else
            {
                $resource.options.providers += $provider
            }
        }
        if($PulumiProvider -is [pulumiprovider])
        {
            $resource.options.provider = $PulumiProvider.Reference()
        } else
        {
            $resource.options.provider = $PulumiProvider
        }
        $resource.properties["remoteVirtualNetwork"] = $remoteVirtualNetwork
        $resource.properties["resourceGroupName"] = $resourceGroupName
        $resource.properties["workspaceName"] = $workspaceName

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

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

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

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

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
class PrivateLinkServiceConnectionState
{
    [string] $actionRequired
    [ArgumentCompletions('Pending', 'Approved', 'Rejected', 'Disconnected')]
    [string] $status
    [string] $description
}
function New-AzureNativeTypeDatabricksPrivateLinkServiceConnectionState
{
    param (
        [parameter(mandatory=$False,HelpMessage='Actions required for a private endpoint connection)')]
        [string]
        $actionRequired,
        [parameter(mandatory=$False,HelpMessage='The status of a private endpoint connection)')]
        [string]
        [ArgumentCompletions('Pending', 'Approved', 'Rejected', 'Disconnected')]
        $status,
        [parameter(mandatory=$False,HelpMessage='The description for the current state of a private endpoint connection)')]
        [string]
        $description
    )

    process
    {
        return $([PrivateLinkServiceConnectionState]$PSBoundParameters)
    }
}
class PrivateEndpointConnectionProperties
{
    [PrivateLinkServiceConnectionState] $privateLinkServiceConnectionState
}
function New-AzureNativeTypeDatabricksPrivateEndpointConnectionProperties
{
    param (
        [parameter(mandatory=$False,HelpMessage='Private endpoint connection state)')]
        [PrivateLinkServiceConnectionState]
        $privateLinkServiceConnectionState
    )

    process
    {
        return $([PrivateEndpointConnectionProperties]$PSBoundParameters)
    }
}
function New-AzureNativeDatabricksPrivateEndpointConnection
{
    [Alias('azure_native_databricks_privateendpointconnection')]
    param (
        [parameter(mandatory=$False,HelpMessage='The private endpoint connection properties.)')]
        [PrivateEndpointConnectionProperties]
        $properties,
        [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 workspace.)')]
        [string]
        $workspaceName,
        [parameter(mandatory=$False,HelpMessage='The name of the private endpoint connection)')]
        [string]
        $privateEndpointConnectionName,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid,
        [parameter(HelpMessage='Specifies a list of named output properties that should be treated as secrets, which means they will be encrypted. It augments the list of values that Pulumi detects, based on secret inputs to the resource.')]
        [string[]]
        $PulumiSecretOutputs,
        [parameter(HelpMessage='The aliases parameter provides a list of aliases for a resource or component resource. If youre changing the name, type, or parent path of a resource or component resource, you can add the old name to the list of aliases for a resource to ensure that existing resources will be migrated to the new name instead of being deleted and replaced with the new named resource.')]
        [string[]]
        $PulumiAliases,
        [parameter(HelpMessage='The customTimeouts parameter provides a set of custom timeouts for create, update, and delete operations on a resource. These timeouts are specified using a duration string such as 5m (5 minutes), 40s (40 seconds), or 1d (1 day). Supported duration units are ns, us (or µs), ms, s, m, and h (nanoseconds, microseconds, milliseconds, seconds, minutes, and hours, respectively).')]
        [pulumicustomtimeouts]
        $PulumiCustomTimeouts,
        [parameter(HelpMessage='Setting the PulumiDeleteBeforeReplace parameter to true means that Pulumi will delete the existing resource before creating its replacement. Be aware that this behavior has a cascading impact on dependencies so more resources may be replaced, which can lead to downtime. However, this option may be necessary for some resources that manage scarce resources behind the scenes, and/or resources that cannot exist side-by-side.')]
        [bool]
        $PulumiDeleteBeforeReplace,
        [parameter(HelpMessage='Creates a list of explicit dependencies between resources.The DependsOn parameter ensures that resource creation, update, and deletion operations are done in the correct order.')]
        [object[]]
        $PulumiDependsOn,
        [parameter(HelpMessage='Specifies a list of properties that Pulumi will ignore when it updates existing resources. Any properties specified in this list that are also specified in the resources arguments will only be used when creating the resource.')]
        [string[]]
        $PulumiIgnoreChanges,
        [parameter(HelpMessage='Imports an existing cloud resource so that Pulumi can manage it. To import a resource, first specify the PulumiImport parameter with the resources ID')]
        [string]
        $PulumiImport = [NullString]::Value,
        [parameter(HelpMessage='Specifies a parent for a resource. It is used to associate children with the parents that encapsulate or are responsible for them.')]
        [object]
        $PulumiParent = [NullString]::Value,
        [parameter(HelpMessage='Marks a resource as protected. A protected resource cannot be deleted directly, and it will be an error to do a Pulumi deployment which tries to delete a protected resource for any reason.')]
        [bool]
        $PulumiProtect,
        [parameter(HelpMessage='Sets a provider for the resource. The default is to inherit this value from the parent resource, and to use the ambient provider specified by Pulumi configuration for resources without a parent.')]
        [object]
        $PulumiProvider = [NullString]::Value,
        [parameter(HelpMessage='Sets a list of providers for the resource and its children. This list is combined with resource parents providers lists. If no value is provided, the providers list is identical to the parent. When determining which provider to use for a resource, the providers list is used if provider is not supplied.')]
        [object[]]
        $PulumiProviders,
        [parameter(HelpMessage='Used to indicate that changes to certain properties on a resource should force a replacement of the resource instead of an in-place update. Typically users rely on the resource provider to make this decision based on whether the input property is one that the provider knows how to update in place, or if not, requires a replacement to modify. However, there are cases where users want to replace a resource on a change to an input property even if the resource provider itself doesnt believe it has to replace the resource.')]
        [string[]]
        $PulumiReplaceOnChanges,
        [parameter(HelpMessage='Marks a resource to be retained. If this option is set then Pulumi will not call through to the resource providers Delete method when deleting or replacing the resource during pulumi up or pulumi destroy. As a result, the resource will not be deleted from the backing cloud provider, but will be removed from the Pulumi state.')]
        [bool]
        $PulumiRetainOnDelete,
        [parameter(HelpMessage='Specifies a provider version to use when operating on a resource. This version overrides the version information inferred from the current package. This option should be used rarely.')]
        [string]
        $PulumiProviderVersion = [NullString]::Value
    )

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

        $resource.options.additionalSecretOutputs = $PulumiSecretOutputs
        $resource.options.aliases = $PulumiAliases
        $resource.options.customTimeouts = $PulumiCustomTimeouts
        $resource.options.deleteBeforeReplace = $PulumiDeleteBeforeReplace
        $resource.options.ignoreChanges = $PulumiIgnoreChanges
        $resource.options.import = if([string]::IsNullOrEmpty($PulumiImport)) { [NullString]::Value } else { $PulumiImport }
        $resource.options.protect = $PulumiProtect
        $resource.options.replaceOnChanges = $PulumiReplaceOnChanges
        $resource.options.retainOnDelete = $PulumiRetainOnDelete
        $resource.options.version = if([string]::IsNullOrEmpty($PulumiProviderVersion)) { [NullString]::Value } else { $PulumiProviderVersion }

        foreach($Dependency in $DependsOn)
        {
            if($Dependency -is [pulumiresource])
            {
                $resource.options.dependson += $Dependency.Reference()
            } else
            {
                $resource.options.dependson += $Dependency
            }
        }
        if($PulumiParent -is [pulumiresource])
        {
            $resource.options.parent = $PulumiParent.Reference()
        } else
        {
            $resource.options.parent = $PulumiParent
        }
        foreach($provider in $PulumiProviders)
        {
            if($provider -is [pulumiprovider])
            {
                $resource.options.providers += $provider.Reference()
            } else
            {
                $resource.options.providers += $provider
            }
        }
        if($PulumiProvider -is [pulumiprovider])
        {
            $resource.options.provider = $PulumiProvider.Reference()
        } else
        {
            $resource.options.provider = $PulumiProvider
        }
        $resource.properties["properties"] = $properties
        $resource.properties["resourceGroupName"] = $resourceGroupName
        $resource.properties["workspaceName"] = $workspaceName

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

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