pspulumiyaml.azurenative.netapp.psm1

using module pspulumiyaml
function Invoke-AzureNativeFunctionNetappGetSubvolume
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the capacity pool)')]
        [string]
        $poolName,
        [parameter(mandatory=$False,HelpMessage='The name of the volume)')]
        [string]
        $volumeName,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of the subvolume.)')]
        [string]
        $subvolumeName,
        [parameter(mandatory=$False,HelpMessage='The name of the NetApp account)')]
        [string]
        $accountName
    )

    process
    {
        $arguments = @{}
        $arguments["accountName"] = $accountName
        $arguments["poolName"] = $poolName
        $arguments["resourceGroupName"] = $resourceGroupName
        $arguments["subvolumeName"] = $subvolumeName
        $arguments["volumeName"] = $volumeName

        $functionObject = Invoke-PulumiFunction -Name azure-native:netapp:getSubvolume -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionNetappGetSubvolumeMetadata
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the capacity pool)')]
        [string]
        $poolName,
        [parameter(mandatory=$False,HelpMessage='The name of the volume)')]
        [string]
        $volumeName,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of the subvolume.)')]
        [string]
        $subvolumeName,
        [parameter(mandatory=$False,HelpMessage='The name of the NetApp account)')]
        [string]
        $accountName
    )

    process
    {
        $arguments = @{}
        $arguments["accountName"] = $accountName
        $arguments["poolName"] = $poolName
        $arguments["resourceGroupName"] = $resourceGroupName
        $arguments["subvolumeName"] = $subvolumeName
        $arguments["volumeName"] = $volumeName

        $functionObject = Invoke-PulumiFunction -Name azure-native:netapp:getSubvolumeMetadata -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionNetappGetVolume
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the capacity pool)')]
        [string]
        $poolName,
        [parameter(mandatory=$False,HelpMessage='The name of the volume)')]
        [string]
        $volumeName,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of the NetApp account)')]
        [string]
        $accountName
    )

    process
    {
        $arguments = @{}
        $arguments["accountName"] = $accountName
        $arguments["poolName"] = $poolName
        $arguments["resourceGroupName"] = $resourceGroupName
        $arguments["volumeName"] = $volumeName

        $functionObject = Invoke-PulumiFunction -Name azure-native:netapp:getVolume -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionNetappGetPool
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the capacity pool)')]
        [string]
        $poolName,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of the NetApp account)')]
        [string]
        $accountName
    )

    process
    {
        $arguments = @{}
        $arguments["accountName"] = $accountName
        $arguments["poolName"] = $poolName
        $arguments["resourceGroupName"] = $resourceGroupName

        $functionObject = Invoke-PulumiFunction -Name azure-native:netapp:getPool -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionNetappGetBackup
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of the capacity pool)')]
        [string]
        $poolName,
        [parameter(mandatory=$False,HelpMessage='The name of the volume)')]
        [string]
        $volumeName,
        [parameter(mandatory=$False,HelpMessage='The name of the backup)')]
        [string]
        $backupName,
        [parameter(mandatory=$False,HelpMessage='The name of the NetApp account)')]
        [string]
        $accountName
    )

    process
    {
        $arguments = @{}
        $arguments["accountName"] = $accountName
        $arguments["backupName"] = $backupName
        $arguments["poolName"] = $poolName
        $arguments["resourceGroupName"] = $resourceGroupName
        $arguments["volumeName"] = $volumeName

        $functionObject = Invoke-PulumiFunction -Name azure-native:netapp:getBackup -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionNetappGetSnapshotPolicy
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the snapshot policy)')]
        [string]
        $snapshotPolicyName,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of the NetApp account)')]
        [string]
        $accountName
    )

    process
    {
        $arguments = @{}
        $arguments["accountName"] = $accountName
        $arguments["resourceGroupName"] = $resourceGroupName
        $arguments["snapshotPolicyName"] = $snapshotPolicyName

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

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

        $functionObject = Invoke-PulumiFunction -Name azure-native:netapp:getAccount -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionNetappGetVolumeQuotaRule
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the capacity pool)')]
        [string]
        $poolName,
        [parameter(mandatory=$False,HelpMessage='The name of the volume)')]
        [string]
        $volumeName,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of volume quota rule)')]
        [string]
        $volumeQuotaRuleName,
        [parameter(mandatory=$False,HelpMessage='The name of the NetApp account)')]
        [string]
        $accountName
    )

    process
    {
        $arguments = @{}
        $arguments["accountName"] = $accountName
        $arguments["poolName"] = $poolName
        $arguments["resourceGroupName"] = $resourceGroupName
        $arguments["volumeName"] = $volumeName
        $arguments["volumeQuotaRuleName"] = $volumeQuotaRuleName

        $functionObject = Invoke-PulumiFunction -Name azure-native:netapp:getVolumeQuotaRule -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionNetappGetVolumeGroup
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the volumeGroup)')]
        [string]
        $volumeGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of the NetApp account)')]
        [string]
        $accountName
    )

    process
    {
        $arguments = @{}
        $arguments["accountName"] = $accountName
        $arguments["resourceGroupName"] = $resourceGroupName
        $arguments["volumeGroupName"] = $volumeGroupName

        $functionObject = Invoke-PulumiFunction -Name azure-native:netapp:getVolumeGroup -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionNetappGetBackupPolicy
{
    param (
        [parameter(mandatory=$False,HelpMessage='Backup policy Name which uniquely identify backup policy.)')]
        [string]
        $backupPolicyName,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of the NetApp account)')]
        [string]
        $accountName
    )

    process
    {
        $arguments = @{}
        $arguments["accountName"] = $accountName
        $arguments["backupPolicyName"] = $backupPolicyName
        $arguments["resourceGroupName"] = $resourceGroupName

        $functionObject = Invoke-PulumiFunction -Name azure-native:netapp:getBackupPolicy -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionNetappGetSnapshot
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the capacity pool)')]
        [string]
        $poolName,
        [parameter(mandatory=$False,HelpMessage='The name of the snapshot)')]
        [string]
        $snapshotName,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of the volume)')]
        [string]
        $volumeName,
        [parameter(mandatory=$False,HelpMessage='The name of the NetApp account)')]
        [string]
        $accountName
    )

    process
    {
        $arguments = @{}
        $arguments["accountName"] = $accountName
        $arguments["poolName"] = $poolName
        $arguments["resourceGroupName"] = $resourceGroupName
        $arguments["snapshotName"] = $snapshotName
        $arguments["volumeName"] = $volumeName

        $functionObject = Invoke-PulumiFunction -Name azure-native:netapp:getSnapshot -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionNetappListVolumeReplications
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the capacity pool)')]
        [string]
        $poolName,
        [parameter(mandatory=$False,HelpMessage='The name of the volume)')]
        [string]
        $volumeName,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of the NetApp account)')]
        [string]
        $accountName
    )

    process
    {
        $arguments = @{}
        $arguments["accountName"] = $accountName
        $arguments["poolName"] = $poolName
        $arguments["resourceGroupName"] = $resourceGroupName
        $arguments["volumeName"] = $volumeName

        $functionObject = Invoke-PulumiFunction -Name azure-native:netapp:listVolumeReplications -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
class PlacementKeyValuePairs
{
    [string] $key
    [string] $value
}
function New-AzureNativeTypeNetappPlacementKeyValuePairs
{
    param (
        [parameter(mandatory=$False,HelpMessage='Key for an application specific parameter for the placement of volumes in the volume group)')]
        [string]
        $key,
        [parameter(mandatory=$False,HelpMessage='Value for an application specific parameter for the placement of volumes in the volume group)')]
        [string]
        $value
    )

    process
    {
        return $([PlacementKeyValuePairs]$PSBoundParameters)
    }
}
class VolumeGroupMetaData
{
    [PlacementKeyValuePairs[]] $globalPlacementRules
    [ArgumentCompletions('SAP-HANA')]
    [string] $applicationType
    [string] $deploymentSpecId
    [string] $groupDescription
    [string] $applicationIdentifier
}
function New-AzureNativeTypeNetappVolumeGroupMetaData
{
    param (
        [parameter(mandatory=$False,HelpMessage='Application specific placement rules for the volume group)')]
        $globalPlacementRules,
        [parameter(mandatory=$False,HelpMessage='Application Type)')]
        [string]
        [ValidateSet('SAP-HANA')]
        $applicationType,
        [parameter(mandatory=$False,HelpMessage='Application specific identifier of deployment rules for the volume group)')]
        [string]
        $deploymentSpecId,
        [parameter(mandatory=$False,HelpMessage='Group Description)')]
        [string]
        $groupDescription,
        [parameter(mandatory=$False,HelpMessage='Application specific identifier)')]
        [string]
        $applicationIdentifier
    )

    process
    {
        return $([VolumeGroupMetaData]$PSBoundParameters)
    }
}
function New-AzureNativeNetappVolumeGroup
{
    [Alias('azure_native_netapp_volumegroup')]
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of the NetApp account)')]
        [string]
        $accountName,
        [parameter(mandatory=$False,HelpMessage='List of volumes from group)')]
        $volumes,
        [parameter(mandatory=$False,HelpMessage='Volume group details)')]
        [VolumeGroupMetaData]
        $groupMetaData,
        [parameter(mandatory=$False,HelpMessage='Resource tags)')]
        [hashtable]
        $tags,
        [parameter(mandatory=$False,HelpMessage='The name of the volumeGroup)')]
        [string]
        $volumeGroupName,
        [parameter(mandatory=$False,HelpMessage='Resource location)')]
        [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:netapp:VolumeGroup")

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

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

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
function New-AzureNativeNetappVolumeQuotaRule
{
    [Alias('azure_native_netapp_volumequotarule')]
    param (
        [parameter(mandatory=$False,HelpMessage='Size of quota)')]
        [int]
        $quotaSizeInKiBs,
        [parameter(mandatory=$False,HelpMessage='The name of the NetApp account)')]
        [string]
        $accountName,
        [parameter(mandatory=$False,HelpMessage='Type of quota)')]
        [string]
        [ValidateSet('DefaultUserQuota', 'DefaultGroupQuota', 'IndividualUserQuota', 'IndividualGroupQuota')]
        $quotaType,
        [parameter(mandatory=$False,HelpMessage='UserID/GroupID/SID based on the quota target type. UserID and groupID can be found by running ''id'' or ''getent'' command for the user or group and SID can be found by running <wmic useraccount where name=''user-name'' get sid>)')]
        [string]
        $quotaTarget,
        [parameter(mandatory=$False,HelpMessage='Resource tags.)')]
        [hashtable]
        $tags,
        [parameter(mandatory=$False,HelpMessage='The name of the volume)')]
        [string]
        $volumeName,
        [parameter(mandatory=$False,HelpMessage='The name of volume quota rule)')]
        [string]
        $volumeQuotaRuleName,
        [parameter(mandatory=$False,HelpMessage='The name of the capacity pool)')]
        [string]
        $poolName,
        [parameter(mandatory=$False,HelpMessage='The geo-location where the resource lives)')]
        [string]
        $location,
        [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:netapp:VolumeQuotaRule")

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

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

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

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
function New-AzureNativeNetappPool
{
    [Alias('azure_native_netapp_pool')]
    param (
        [parameter(mandatory=$False,HelpMessage='The service level of the file system)')]
        [string]
        [ValidateSet('Standard', 'Premium', 'Ultra', 'StandardZRS')]
        $serviceLevel,
        [parameter(mandatory=$False,HelpMessage='Provisioned size of the pool (in bytes). Allowed values are in 4TiB chunks (value must be multiply of 4398046511104).)')]
        [int]
        $size,
        [parameter(mandatory=$False,HelpMessage='The name of the NetApp account)')]
        [string]
        $accountName,
        [parameter(mandatory=$False,HelpMessage='The name of the capacity pool)')]
        [string]
        $poolName,
        [parameter(mandatory=$False,HelpMessage='Resource location)')]
        [string]
        $location,
        [parameter(mandatory=$False,HelpMessage='The qos type of the pool)')]
        [string]
        [ValidateSet('Auto', 'Manual')]
        $qosType,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Resource tags)')]
        [hashtable]
        $tags,
        [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:netapp:Pool")

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

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
function New-AzureNativeNetappBackup
{
    [Alias('azure_native_netapp_backup')]
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the capacity pool)')]
        [string]
        $poolName,
        [parameter(mandatory=$False,HelpMessage='The name of the NetApp account)')]
        [string]
        $accountName,
        [parameter(mandatory=$False,HelpMessage='The name of the volume)')]
        [string]
        $volumeName,
        [parameter(mandatory=$False,HelpMessage='Label for backup)')]
        [string]
        $label,
        [parameter(mandatory=$False,HelpMessage='The name of the backup)')]
        [string]
        $backupName,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Resource location)')]
        [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:netapp:Backup")

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
class AccountEncryption
{
    [string] $keySource
}
function New-AzureNativeTypeNetappAccountEncryption
{
    param (
        [parameter(mandatory=$False,HelpMessage='Encryption Key Source. Possible values are: ''Microsoft.NetApp''.)')]
        [string]
        $keySource
    )

    process
    {
        return $([AccountEncryption]$PSBoundParameters)
    }
}
function New-AzureNativeNetappAccount
{
    [Alias('azure_native_netapp_account')]
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of the NetApp account)')]
        [string]
        $accountName,
        [parameter(mandatory=$False,HelpMessage='Resource tags)')]
        [hashtable]
        $tags,
        [parameter(mandatory=$False,HelpMessage='Active Directories)')]
        $activeDirectories,
        [parameter(mandatory=$False,HelpMessage='Encryption settings)')]
        [AccountEncryption]
        $encryption,
        [parameter(mandatory=$False,HelpMessage='Resource location)')]
        [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:netapp:Account")

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

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

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
function New-AzureNativeNetappBackupPolicy
{
    [Alias('azure_native_netapp_backuppolicy')]
    param (
        [parameter(mandatory=$False,HelpMessage='Monthly backups count to keep)')]
        [int]
        $monthlyBackupsToKeep,
        [parameter(mandatory=$False,HelpMessage='The name of the NetApp account)')]
        [string]
        $accountName,
        [parameter(mandatory=$False,HelpMessage='A list of volumes assigned to this policy)')]
        $volumeBackups,
        [parameter(mandatory=$False,HelpMessage='Weekly backups count to keep)')]
        [int]
        $weeklyBackupsToKeep,
        [parameter(mandatory=$False,HelpMessage='Daily backups count to keep)')]
        [int]
        $dailyBackupsToKeep,
        [parameter(mandatory=$False,HelpMessage='Resource tags)')]
        [hashtable]
        $tags,
        [parameter(mandatory=$False,HelpMessage='The property to decide policy is enabled or not)')]
        [bool]
        $enabled,
        [parameter(mandatory=$False,HelpMessage='Yearly backups count to keep)')]
        [int]
        $yearlyBackupsToKeep,
        [parameter(mandatory=$False,HelpMessage='Resource location)')]
        [string]
        $location,
        [parameter(mandatory=$False,HelpMessage='Volumes using current backup policy)')]
        [int]
        $volumesAssigned,
        [parameter(mandatory=$False,HelpMessage='Backup policy Name which uniquely identify backup policy.)')]
        [string]
        $backupPolicyName,
        [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:netapp:BackupPolicy")

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

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

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

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

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

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

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

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
function New-AzureNativeNetappSubvolume
{
    [Alias('azure_native_netapp_subvolume')]
    param (
        [parameter(mandatory=$False,HelpMessage='Truncate subvolume to the provided size in bytes)')]
        [int]
        $size,
        [parameter(mandatory=$False,HelpMessage='The name of the NetApp account)')]
        [string]
        $accountName,
        [parameter(mandatory=$False,HelpMessage='The name of the volume)')]
        [string]
        $volumeName,
        [parameter(mandatory=$False,HelpMessage='The name of the capacity pool)')]
        [string]
        $poolName,
        [parameter(mandatory=$False,HelpMessage='Path to the subvolume)')]
        [string]
        $path,
        [parameter(mandatory=$False,HelpMessage='parent path to the subvolume)')]
        [string]
        $parentPath,
        [parameter(mandatory=$False,HelpMessage='The name of the subvolume.)')]
        [string]
        $subvolumeName,
        [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:netapp:Subvolume")

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

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
class HourlySchedule
{
    [int] $usedBytes
    [int] $snapshotsToKeep
    [int] $minute
}
function New-AzureNativeTypeNetappHourlySchedule
{
    param (
        [parameter(mandatory=$False,HelpMessage='Resource size in bytes, current storage usage for the volume in bytes)')]
        [int]
        $usedBytes,
        [parameter(mandatory=$False,HelpMessage='Hourly snapshot count to keep)')]
        [int]
        $snapshotsToKeep,
        [parameter(mandatory=$False,HelpMessage='Indicates which minute snapshot should be taken)')]
        [int]
        $minute
    )

    process
    {
        return $([HourlySchedule]$PSBoundParameters)
    }
}
class DailySchedule
{
    [int] $usedBytes
    [int] $snapshotsToKeep
    [int] $minute
    [int] $hour
}
function New-AzureNativeTypeNetappDailySchedule
{
    param (
        [parameter(mandatory=$False,HelpMessage='Resource size in bytes, current storage usage for the volume in bytes)')]
        [int]
        $usedBytes,
        [parameter(mandatory=$False,HelpMessage='Daily snapshot count to keep)')]
        [int]
        $snapshotsToKeep,
        [parameter(mandatory=$False,HelpMessage='Indicates which minute snapshot should be taken)')]
        [int]
        $minute,
        [parameter(mandatory=$False,HelpMessage='Indicates which hour in UTC timezone a snapshot should be taken)')]
        [int]
        $hour
    )

    process
    {
        return $([DailySchedule]$PSBoundParameters)
    }
}
class WeeklySchedule
{
    [int] $usedBytes
    [int] $snapshotsToKeep
    [string] $day
    [int] $minute
    [int] $hour
}
function New-AzureNativeTypeNetappWeeklySchedule
{
    param (
        [parameter(mandatory=$False,HelpMessage='Resource size in bytes, current storage usage for the volume in bytes)')]
        [int]
        $usedBytes,
        [parameter(mandatory=$False,HelpMessage='Weekly snapshot count to keep)')]
        [int]
        $snapshotsToKeep,
        [parameter(mandatory=$False,HelpMessage='Indicates which weekdays snapshot should be taken, accepts a comma separated list of week day names in english)')]
        [string]
        $day,
        [parameter(mandatory=$False,HelpMessage='Indicates which minute snapshot should be taken)')]
        [int]
        $minute,
        [parameter(mandatory=$False,HelpMessage='Indicates which hour in UTC timezone a snapshot should be taken)')]
        [int]
        $hour
    )

    process
    {
        return $([WeeklySchedule]$PSBoundParameters)
    }
}
class MonthlySchedule
{
    [int] $usedBytes
    [int] $snapshotsToKeep
    [int] $minute
    [string] $daysOfMonth
    [int] $hour
}
function New-AzureNativeTypeNetappMonthlySchedule
{
    param (
        [parameter(mandatory=$False,HelpMessage='Resource size in bytes, current storage usage for the volume in bytes)')]
        [int]
        $usedBytes,
        [parameter(mandatory=$False,HelpMessage='Monthly snapshot count to keep)')]
        [int]
        $snapshotsToKeep,
        [parameter(mandatory=$False,HelpMessage='Indicates which minute snapshot should be taken)')]
        [int]
        $minute,
        [parameter(mandatory=$False,HelpMessage='Indicates which days of the month snapshot should be taken. A comma delimited string.)')]
        [string]
        $daysOfMonth,
        [parameter(mandatory=$False,HelpMessage='Indicates which hour in UTC timezone a snapshot should be taken)')]
        [int]
        $hour
    )

    process
    {
        return $([MonthlySchedule]$PSBoundParameters)
    }
}
function New-AzureNativeNetappSnapshotPolicy
{
    [Alias('azure_native_netapp_snapshotpolicy')]
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the snapshot policy)')]
        [string]
        $snapshotPolicyName,
        [parameter(mandatory=$False,HelpMessage='Schedule for hourly snapshots)')]
        [HourlySchedule]
        $hourlySchedule,
        [parameter(mandatory=$False,HelpMessage='The name of the NetApp account)')]
        [string]
        $accountName,
        [parameter(mandatory=$False,HelpMessage='Resource tags)')]
        [hashtable]
        $tags,
        [parameter(mandatory=$False,HelpMessage='Schedule for daily snapshots)')]
        [DailySchedule]
        $dailySchedule,
        [parameter(mandatory=$False,HelpMessage='Schedule for weekly snapshots)')]
        [WeeklySchedule]
        $weeklySchedule,
        [parameter(mandatory=$False,HelpMessage='Resource location)')]
        [string]
        $location,
        [parameter(mandatory=$False,HelpMessage='The property to decide policy is enabled or not)')]
        [bool]
        $enabled,
        [parameter(mandatory=$False,HelpMessage='Schedule for monthly snapshots)')]
        [MonthlySchedule]
        $monthlySchedule,
        [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:netapp:SnapshotPolicy")

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

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

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

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

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

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
function New-AzureNativeNetappSnapshot
{
    [Alias('azure_native_netapp_snapshot')]
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the NetApp account)')]
        [string]
        $accountName,
        [parameter(mandatory=$False,HelpMessage='The name of the volume)')]
        [string]
        $volumeName,
        [parameter(mandatory=$False,HelpMessage='The name of the capacity pool)')]
        [string]
        $poolName,
        [parameter(mandatory=$False,HelpMessage='The name of the snapshot)')]
        [string]
        $snapshotName,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Resource location)')]
        [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:netapp:Snapshot")

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
class ExportPolicyRule
{
    [bool] $kerberos5ReadOnly
    [bool] $hasRootAccess
    [bool] $cifs
    [int] $ruleIndex
    [bool] $unixReadWrite
    [bool] $kerberos5pReadWrite
    [string] $allowedClients
    [bool] $nfsv41
    [bool] $nfsv3
    [bool] $unixReadOnly
    [bool] $kerberos5pReadOnly
    [bool] $kerberos5iReadOnly
    [bool] $kerberos5iReadWrite
    [bool] $kerberos5ReadWrite
    [ArgumentCompletions('Restricted', 'Unrestricted')]
    [string] $chownMode
}
function New-AzureNativeTypeNetappExportPolicyRule
{
    param (
        [parameter(mandatory=$False,HelpMessage='Kerberos5 Read only access. To be use with swagger version 2020-05-01 or later)')]
        [bool]
        $kerberos5ReadOnly,
        [parameter(mandatory=$False,HelpMessage='Has root access to volume)')]
        [bool]
        $hasRootAccess,
        [parameter(mandatory=$False,HelpMessage='Allows CIFS protocol)')]
        [bool]
        $cifs,
        [parameter(mandatory=$False,HelpMessage='Order index)')]
        [int]
        $ruleIndex,
        [parameter(mandatory=$False,HelpMessage='Read and write access)')]
        [bool]
        $unixReadWrite,
        [parameter(mandatory=$False,HelpMessage='Kerberos5p Read and write access. To be use with swagger version 2020-05-01 or later)')]
        [bool]
        $kerberos5pReadWrite,
        [parameter(mandatory=$False,HelpMessage='Client ingress specification as comma separated string with IPv4 CIDRs, IPv4 host addresses and host names)')]
        [string]
        $allowedClients,
        [parameter(mandatory=$False,HelpMessage='Allows NFSv4.1 protocol. Enable only for NFSv4.1 type volumes)')]
        [bool]
        $nfsv41,
        [parameter(mandatory=$False,HelpMessage='Allows NFSv3 protocol. Enable only for NFSv3 type volumes)')]
        [bool]
        $nfsv3,
        [parameter(mandatory=$False,HelpMessage='Read only access)')]
        [bool]
        $unixReadOnly,
        [parameter(mandatory=$False,HelpMessage='Kerberos5p Read only access. To be use with swagger version 2020-05-01 or later)')]
        [bool]
        $kerberos5pReadOnly,
        [parameter(mandatory=$False,HelpMessage='Kerberos5i Read only access. To be use with swagger version 2020-05-01 or later)')]
        [bool]
        $kerberos5iReadOnly,
        [parameter(mandatory=$False,HelpMessage='Kerberos5i Read and write access. To be use with swagger version 2020-05-01 or later)')]
        [bool]
        $kerberos5iReadWrite,
        [parameter(mandatory=$False,HelpMessage='Kerberos5 Read and write access. To be use with swagger version 2020-05-01 or later)')]
        [bool]
        $kerberos5ReadWrite,
        [parameter(mandatory=$False,HelpMessage='This parameter specifies who is authorized to change the ownership of a file. restricted - Only root user can change the ownership of the file. unrestricted - Non-root users can change ownership of files that they own.)')]
        [string]
        [ValidateSet('Restricted', 'Unrestricted')]
        $chownMode
    )

    process
    {
        return $([ExportPolicyRule]$PSBoundParameters)
    }
}
class VolumePropertiesExportPolicy
{
    [ExportPolicyRule[]] $rules
}
function New-AzureNativeTypeNetappVolumePropertiesExportPolicy
{
    param (
        [parameter(mandatory=$False,HelpMessage='Export policy rule)')]
        $rules
    )

    process
    {
        return $([VolumePropertiesExportPolicy]$PSBoundParameters)
    }
}
class ReplicationObject
{
    [ArgumentCompletions('_10minutely', 'hourly', 'daily')]
    [string] $replicationSchedule
    [string] $remoteVolumeResourceId
    [ArgumentCompletions('src', 'dst')]
    [string] $endpointType
    [string] $remoteVolumeRegion
    [string] $replicationId
}
function New-AzureNativeTypeNetappReplicationObject
{
    param (
        [parameter(mandatory=$False,HelpMessage='Schedule)')]
        [string]
        [ValidateSet('_10minutely', 'hourly', 'daily')]
        $replicationSchedule,
        [parameter(mandatory=$False,HelpMessage='The resource ID of the remote volume.)')]
        [string]
        $remoteVolumeResourceId,
        [parameter(mandatory=$False,HelpMessage='Indicates whether the local volume is the source or destination for the Volume Replication)')]
        [string]
        [ValidateSet('src', 'dst')]
        $endpointType,
        [parameter(mandatory=$False,HelpMessage='The remote region for the other end of the Volume Replication.)')]
        [string]
        $remoteVolumeRegion,
        [parameter(mandatory=$False,HelpMessage='Id)')]
        [string]
        $replicationId
    )

    process
    {
        return $([ReplicationObject]$PSBoundParameters)
    }
}
class VolumeSnapshotProperties
{
    [string] $snapshotPolicyId
}
function New-AzureNativeTypeNetappVolumeSnapshotProperties
{
    param (
        [parameter(mandatory=$False,HelpMessage='Snapshot Policy ResourceId)')]
        [string]
        $snapshotPolicyId
    )

    process
    {
        return $([VolumeSnapshotProperties]$PSBoundParameters)
    }
}
class VolumeBackupProperties
{
    [bool] $backupEnabled
    [string] $vaultId
    [string] $backupPolicyId
    [bool] $policyEnforced
}
function New-AzureNativeTypeNetappVolumeBackupProperties
{
    param (
        [parameter(mandatory=$False,HelpMessage='Backup Enabled)')]
        [bool]
        $backupEnabled,
        [parameter(mandatory=$False,HelpMessage='Vault Resource ID)')]
        [string]
        $vaultId,
        [parameter(mandatory=$False,HelpMessage='Backup Policy Resource ID)')]
        [string]
        $backupPolicyId,
        [parameter(mandatory=$False,HelpMessage='Policy Enforced)')]
        [bool]
        $policyEnforced
    )

    process
    {
        return $([VolumeBackupProperties]$PSBoundParameters)
    }
}
class VolumePropertiesDataProtection
{
    [ReplicationObject] $replication
    [VolumeSnapshotProperties] $snapshot
    [VolumeBackupProperties] $backup
}
function New-AzureNativeTypeNetappVolumePropertiesDataProtection
{
    param (
        [parameter(mandatory=$False,HelpMessage='Replication properties)')]
        [ReplicationObject]
        $replication,
        [parameter(mandatory=$False,HelpMessage='Snapshot properties.)')]
        [VolumeSnapshotProperties]
        $snapshot,
        [parameter(mandatory=$False,HelpMessage='Backup Properties)')]
        [VolumeBackupProperties]
        $backup
    )

    process
    {
        return $([VolumePropertiesDataProtection]$PSBoundParameters)
    }
}
function New-AzureNativeNetappVolume
{
    [Alias('azure_native_netapp_volume')]
    param (
        [parameter(mandatory=$False,HelpMessage='Set of protocol types, default NFSv3, CIFS for SMB protocol)')]
        [string[]]
        $protocolTypes,
        [parameter(mandatory=$False,HelpMessage='If enabled (true) the volume will contain a read-only snapshot directory which provides access to each of the volume''s snapshots (default to true).)')]
        [bool]
        $snapshotDirectoryVisible,
        [parameter(mandatory=$False,HelpMessage='Enables encryption for in-flight smb3 data. Only applicable for SMB/DualProtocol volume. To be used with swagger version 2020-08-01 or later)')]
        [bool]
        $smbEncryption,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of the volume)')]
        [string]
        $volumeName,
        [parameter(mandatory=$False,HelpMessage='Specifies whether LDAP is enabled or not for a given NFS volume.)')]
        [bool]
        $ldapEnabled,
        [parameter(mandatory=$False,HelpMessage='Enables continuously available share property for smb volume. Only applicable for SMB volume)')]
        [bool]
        $smbContinuouslyAvailable,
        [parameter(mandatory=$False,HelpMessage='UUID v4 or resource identifier used to identify the Backup.)')]
        [string]
        $backupId,
        [parameter(mandatory=$False,HelpMessage='The service level of the file system)')]
        [string]
        [ValidateSet('Standard', 'Premium', 'Ultra', 'StandardZRS')]
        $serviceLevel,
        [parameter(mandatory=$False,HelpMessage='The name of the NetApp account)')]
        [string]
        $accountName,
        [parameter(mandatory=$False,HelpMessage='Describe if a volume is KerberosEnabled. To be use with swagger version 2020-05-01 or later)')]
        [bool]
        $kerberosEnabled,
        [parameter(mandatory=$False,HelpMessage='What type of volume is this)')]
        [string]
        $volumeType,
        [parameter(mandatory=$False,HelpMessage='Resource tags)')]
        [hashtable]
        $tags,
        [parameter(mandatory=$False,HelpMessage='Resource location)')]
        [string]
        $location,
        [parameter(mandatory=$False,HelpMessage='The security style of volume, default unix, defaults to ntfs for dual protocol or CIFS protocol)')]
        [string]
        [ValidateSet('ntfs', 'unix')]
        $securityStyle,
        [parameter(mandatory=$False,HelpMessage='Restoring)')]
        [bool]
        $isRestoring,
        [parameter(mandatory=$False,HelpMessage=')')]
        [int]
        $throughputMibps,
        [parameter(mandatory=$False,HelpMessage='The Azure Resource URI for a delegated subnet. Must have the delegation Microsoft.NetApp/volumes)')]
        [string]
        $subnetId,
        [parameter(mandatory=$False,HelpMessage='Set of export policy rules)')]
        [VolumePropertiesExportPolicy]
        $exportPolicy,
        [parameter(mandatory=$False,HelpMessage='DataProtection type volumes include an object containing details of the replication)')]
        [VolumePropertiesDataProtection]
        $dataProtection,
        [parameter(mandatory=$False,HelpMessage='The name of the capacity pool)')]
        [string]
        $poolName,
        [parameter(mandatory=$False,HelpMessage='Maximum storage quota allowed for a file system in bytes. This is a soft quota used for alerting only. Minimum size is 100 GiB. Upper limit is 100TiB. Specified in bytes.)')]
        [int]
        $usageThreshold,
        [parameter(mandatory=$False,HelpMessage='UUID v4 or resource identifier used to identify the Snapshot.)')]
        [string]
        $snapshotId,
        [parameter(mandatory=$False,HelpMessage='A unique file path for the volume. Used when creating mount targets)')]
        [string]
        $creationToken,
        [parameter(mandatory=$False,HelpMessage='Encryption Key Source. Possible values are: ''Microsoft.NetApp'')')]
        [string]
        $encryptionKeySource,
        [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:netapp:Volume")

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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