pspulumiyaml.azurenative.recoveryservices.psm1

using module pspulumiyaml
function Invoke-AzureNativeFunctionRecoveryservicesGetReplicationvCenter
{
    param (
        [parameter(mandatory=$False,HelpMessage='vCenter name.)')]
        [string]
        $vCenterName,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group where the recovery services vault is present.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Fabric name.)')]
        [string]
        $fabricName,
        [parameter(mandatory=$False,HelpMessage='The name of the recovery services vault.)')]
        [string]
        $resourceName
    )

    process
    {
        $arguments = @{}
        $arguments["fabricName"] = $fabricName
        $arguments["resourceGroupName"] = $resourceGroupName
        $arguments["resourceName"] = $resourceName
        $arguments["vCenterName"] = $vCenterName

        $functionObject = Invoke-PulumiFunction -Name azure-native:recoveryservices:getReplicationvCenter -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionRecoveryservicesGetReplicationPolicy
{
    param (
        [parameter(mandatory=$False,HelpMessage='Replication policy name.)')]
        [string]
        $policyName,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group where the recovery services vault is present.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of the recovery services vault.)')]
        [string]
        $resourceName
    )

    process
    {
        $arguments = @{}
        $arguments["policyName"] = $policyName
        $arguments["resourceGroupName"] = $resourceGroupName
        $arguments["resourceName"] = $resourceName

        $functionObject = Invoke-PulumiFunction -Name azure-native:recoveryservices:getReplicationPolicy -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionRecoveryservicesGetReplicationMigrationItem
{
    param (
        [parameter(mandatory=$False,HelpMessage='Migration item name.)')]
        [string]
        $migrationItemName,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group where the recovery services vault is present.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Fabric unique name.)')]
        [string]
        $fabricName,
        [parameter(mandatory=$False,HelpMessage='The name of the recovery services vault.)')]
        [string]
        $resourceName,
        [parameter(mandatory=$False,HelpMessage='Protection container name.)')]
        [string]
        $protectionContainerName
    )

    process
    {
        $arguments = @{}
        $arguments["fabricName"] = $fabricName
        $arguments["migrationItemName"] = $migrationItemName
        $arguments["protectionContainerName"] = $protectionContainerName
        $arguments["resourceGroupName"] = $resourceGroupName
        $arguments["resourceName"] = $resourceName

        $functionObject = Invoke-PulumiFunction -Name azure-native:recoveryservices:getReplicationMigrationItem -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionRecoveryservicesGetReplicationStorageClassificationMapping
{
    param (
        [parameter(mandatory=$False,HelpMessage='Storage classification mapping name.)')]
        [string]
        $storageClassificationMappingName,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group where the recovery services vault is present.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Fabric name.)')]
        [string]
        $fabricName,
        [parameter(mandatory=$False,HelpMessage='Storage classification name.)')]
        [string]
        $storageClassificationName,
        [parameter(mandatory=$False,HelpMessage='The name of the recovery services vault.)')]
        [string]
        $resourceName
    )

    process
    {
        $arguments = @{}
        $arguments["fabricName"] = $fabricName
        $arguments["resourceGroupName"] = $resourceGroupName
        $arguments["resourceName"] = $resourceName
        $arguments["storageClassificationMappingName"] = $storageClassificationMappingName
        $arguments["storageClassificationName"] = $storageClassificationName

        $functionObject = Invoke-PulumiFunction -Name azure-native:recoveryservices:getReplicationStorageClassificationMapping -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionRecoveryservicesGetResourceGuardProxy
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the recovery services vault.)')]
        [string]
        $vaultName,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group where the recovery services vault is present.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage=')')]
        [string]
        $resourceGuardProxyName
    )

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

        $functionObject = Invoke-PulumiFunction -Name azure-native:recoveryservices:getResourceGuardProxy -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionRecoveryservicesGetProtectedItem
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the resource group where the recovery services vault is present.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='OData filter options.)')]
        [string]
        $filter,
        [parameter(mandatory=$False,HelpMessage='Container name associated with the backed up item.)')]
        [string]
        $containerName,
        [parameter(mandatory=$False,HelpMessage='The name of the recovery services vault.)')]
        [string]
        $vaultName,
        [parameter(mandatory=$False,HelpMessage='Fabric name associated with the backed up item.)')]
        [string]
        $fabricName,
        [parameter(mandatory=$False,HelpMessage='Backed up item name whose details are to be fetched.)')]
        [string]
        $protectedItemName
    )

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

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

        $functionObject = Invoke-PulumiFunction -Name azure-native:recoveryservices:getProtectedItem -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionRecoveryservicesGetReplicationRecoveryPlan
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the resource group where the recovery services vault is present.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of the recovery services vault.)')]
        [string]
        $resourceName,
        [parameter(mandatory=$False,HelpMessage='Name of the recovery plan.)')]
        [string]
        $recoveryPlanName
    )

    process
    {
        $arguments = @{}
        $arguments["recoveryPlanName"] = $recoveryPlanName
        $arguments["resourceGroupName"] = $resourceGroupName
        $arguments["resourceName"] = $resourceName

        $functionObject = Invoke-PulumiFunction -Name azure-native:recoveryservices:getReplicationRecoveryPlan -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionRecoveryservicesGetVault
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the resource group where the recovery services vault is present.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of the recovery services vault.)')]
        [string]
        $vaultName
    )

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

        $functionObject = Invoke-PulumiFunction -Name azure-native:recoveryservices:getVault -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionRecoveryservicesGetProtectionIntent
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the resource group where the recovery services vault is present.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Backed up item name whose details are to be fetched.)')]
        [string]
        $intentObjectName,
        [parameter(mandatory=$False,HelpMessage='Fabric name associated with the backed up item.)')]
        [string]
        $fabricName,
        [parameter(mandatory=$False,HelpMessage='The name of the recovery services vault.)')]
        [string]
        $vaultName
    )

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

        $functionObject = Invoke-PulumiFunction -Name azure-native:recoveryservices:getProtectionIntent -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionRecoveryservicesGetReplicationNetworkMapping
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the resource group where the recovery services vault is present.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Primary fabric name.)')]
        [string]
        $fabricName,
        [parameter(mandatory=$False,HelpMessage='Network mapping name.)')]
        [string]
        $networkMappingName,
        [parameter(mandatory=$False,HelpMessage='Primary network name.)')]
        [string]
        $networkName,
        [parameter(mandatory=$False,HelpMessage='The name of the recovery services vault.)')]
        [string]
        $resourceName
    )

    process
    {
        $arguments = @{}
        $arguments["fabricName"] = $fabricName
        $arguments["networkMappingName"] = $networkMappingName
        $arguments["networkName"] = $networkName
        $arguments["resourceGroupName"] = $resourceGroupName
        $arguments["resourceName"] = $resourceName

        $functionObject = Invoke-PulumiFunction -Name azure-native:recoveryservices:getReplicationNetworkMapping -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionRecoveryservicesGetReplicationRecoveryServicesProvider
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the resource group where the recovery services vault is present.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Fabric name.)')]
        [string]
        $fabricName,
        [parameter(mandatory=$False,HelpMessage='The name of the recovery services vault.)')]
        [string]
        $resourceName,
        [parameter(mandatory=$False,HelpMessage='Recovery services provider name)')]
        [string]
        $providerName
    )

    process
    {
        $arguments = @{}
        $arguments["fabricName"] = $fabricName
        $arguments["providerName"] = $providerName
        $arguments["resourceGroupName"] = $resourceGroupName
        $arguments["resourceName"] = $resourceName

        $functionObject = Invoke-PulumiFunction -Name azure-native:recoveryservices:getReplicationRecoveryServicesProvider -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionRecoveryservicesGetPrivateEndpointConnection
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the private endpoint connection.)')]
        [string]
        $privateEndpointConnectionName,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group where the recovery services vault is present.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of the recovery services vault.)')]
        [string]
        $vaultName
    )

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

        $functionObject = Invoke-PulumiFunction -Name azure-native:recoveryservices:getPrivateEndpointConnection -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
class AADProperties
{
    [string] $audience
    [string] $authority
    [string] $servicePrincipalObjectId
    [string] $tenantId
    [string] $servicePrincipalClientId
}
function New-AzureNativeTypeRecoveryservicesAADProperties
{
    param (
        [parameter(mandatory=$False,HelpMessage=')')]
        [string]
        $audience,
        [parameter(mandatory=$False,HelpMessage=')')]
        [string]
        $authority,
        [parameter(mandatory=$False,HelpMessage=')')]
        [string]
        $servicePrincipalObjectId,
        [parameter(mandatory=$False,HelpMessage=')')]
        [string]
        $tenantId,
        [parameter(mandatory=$False,HelpMessage=')')]
        [string]
        $servicePrincipalClientId
    )

    process
    {
        return $([AADProperties]$PSBoundParameters)
    }
}
function Invoke-AzureNativeFunctionRecoveryservicesGetRecoveryPointAccessToken
{
    param (
        [parameter(mandatory=$False,HelpMessage='Fabric name associated with the container.)')]
        [string]
        $fabricName,
        [parameter(mandatory=$False,HelpMessage='The name of the recovery services vault.)')]
        [string]
        $vaultName,
        [parameter(mandatory=$False,HelpMessage='Name of the Protected Item.)')]
        [string]
        $protectedItemName,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group where the recovery services vault is present.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='AADPropertiesResource properties)')]
        [AADProperties]
        $properties,
        [parameter(mandatory=$False,HelpMessage='Name of the container.)')]
        [string]
        $containerName,
        [parameter(mandatory=$False,HelpMessage='Resource tags.)')]
        [hashtable]
        $tags,
        [parameter(mandatory=$False,HelpMessage='Optional ETag.)')]
        [string]
        $eTag,
        [parameter(mandatory=$False,HelpMessage='Recovery Point Id)')]
        [string]
        $recoveryPointId,
        [parameter(mandatory=$False,HelpMessage='Resource location.)')]
        [string]
        $location
    )

    process
    {
        $arguments = @{}
        $arguments["containerName"] = $containerName
        $arguments["fabricName"] = $fabricName
        $arguments["protectedItemName"] = $protectedItemName
        $arguments["recoveryPointId"] = $recoveryPointId
        $arguments["resourceGroupName"] = $resourceGroupName
        $arguments["vaultName"] = $vaultName

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

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

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

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

        $functionObject = Invoke-PulumiFunction -Name azure-native:recoveryservices:getRecoveryPointAccessToken -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionRecoveryservicesGetReplicationProtectionContainerMapping
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the resource group where the recovery services vault is present.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Fabric name.)')]
        [string]
        $fabricName,
        [parameter(mandatory=$False,HelpMessage='Protection Container mapping name.)')]
        [string]
        $mappingName,
        [parameter(mandatory=$False,HelpMessage='The name of the recovery services vault.)')]
        [string]
        $resourceName,
        [parameter(mandatory=$False,HelpMessage='Protection container name.)')]
        [string]
        $protectionContainerName
    )

    process
    {
        $arguments = @{}
        $arguments["fabricName"] = $fabricName
        $arguments["mappingName"] = $mappingName
        $arguments["protectionContainerName"] = $protectionContainerName
        $arguments["resourceGroupName"] = $resourceGroupName
        $arguments["resourceName"] = $resourceName

        $functionObject = Invoke-PulumiFunction -Name azure-native:recoveryservices:getReplicationProtectionContainerMapping -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionRecoveryservicesGetProtectionContainer
{
    param (
        [parameter(mandatory=$False,HelpMessage='Name of the container whose details need to be fetched.)')]
        [string]
        $containerName,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group where the recovery services vault is present.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Name of the fabric where the container belongs.)')]
        [string]
        $fabricName,
        [parameter(mandatory=$False,HelpMessage='The name of the recovery services vault.)')]
        [string]
        $vaultName
    )

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

        $functionObject = Invoke-PulumiFunction -Name azure-native:recoveryservices:getProtectionContainer -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionRecoveryservicesGetProtectionPolicy
{
    param (
        [parameter(mandatory=$False,HelpMessage='Backup policy information to be fetched.)')]
        [string]
        $policyName,
        [parameter(mandatory=$False,HelpMessage='The name of the recovery services vault.)')]
        [string]
        $vaultName,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group where the recovery services vault is present.)')]
        [string]
        $resourceGroupName
    )

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

        $functionObject = Invoke-PulumiFunction -Name azure-native:recoveryservices:getProtectionPolicy -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionRecoveryservicesGetReplicationProtectedItem
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the resource group where the recovery services vault is present.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Fabric unique name.)')]
        [string]
        $fabricName,
        [parameter(mandatory=$False,HelpMessage='Replication protected item name.)')]
        [string]
        $replicatedProtectedItemName,
        [parameter(mandatory=$False,HelpMessage='The name of the recovery services vault.)')]
        [string]
        $resourceName,
        [parameter(mandatory=$False,HelpMessage='Protection container name.)')]
        [string]
        $protectionContainerName
    )

    process
    {
        $arguments = @{}
        $arguments["fabricName"] = $fabricName
        $arguments["protectionContainerName"] = $protectionContainerName
        $arguments["replicatedProtectedItemName"] = $replicatedProtectedItemName
        $arguments["resourceGroupName"] = $resourceGroupName
        $arguments["resourceName"] = $resourceName

        $functionObject = Invoke-PulumiFunction -Name azure-native:recoveryservices:getReplicationProtectedItem -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionRecoveryservicesGetReplicationFabric
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the resource group where the recovery services vault is present.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Fabric name.)')]
        [string]
        $fabricName,
        [parameter(mandatory=$False,HelpMessage='The name of the recovery services vault.)')]
        [string]
        $resourceName
    )

    process
    {
        $arguments = @{}
        $arguments["fabricName"] = $fabricName
        $arguments["resourceGroupName"] = $resourceGroupName
        $arguments["resourceName"] = $resourceName

        $functionObject = Invoke-PulumiFunction -Name azure-native:recoveryservices:getReplicationFabric -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
class MabFileFolderProtectedItemExtendedInfo
{
    [ValidateSet('Invalid', 'AzureIaasVM', 'MAB', 'DPM', 'AzureBackupServer', 'AzureSql', 'AzureStorage', 'AzureWorkload', 'DefaultBackup')]
    [string] $oldestRecoveryPoint
    [ValidateSet('Invalid', 'AzureIaasVM', 'MAB', 'DPM', 'AzureBackupServer', 'AzureSql', 'AzureStorage', 'AzureWorkload', 'DefaultBackup')]
    [int] $recoveryPointCount
    [ValidateSet('Invalid', 'AzureIaasVM', 'MAB', 'DPM', 'AzureBackupServer', 'AzureSql', 'AzureStorage', 'AzureWorkload', 'DefaultBackup')]
    [string] $lastRefreshedAt
}
function New-AzureNativeTypeRecoveryservicesMabFileFolderProtectedItemExtendedInfo
{
    param (
        [parameter(mandatory=$False,HelpMessage='The oldest backup copy available.)')]
        [string]
        $oldestRecoveryPoint,
        [parameter(mandatory=$False,HelpMessage='Number of backup copies associated with the backup item.)')]
        [int]
        $recoveryPointCount,
        [parameter(mandatory=$False,HelpMessage='Last time when the agent data synced to service.)')]
        [string]
        $lastRefreshedAt
    )

    process
    {
        return $([MabFileFolderProtectedItemExtendedInfo]$PSBoundParameters)
    }
}
class MabFileFolderProtectedItem
{
    [string] $policyId
    [bool] $isRehydrate
    [ValidateSet('Invalid', 'AzureIaasVM', 'MAB', 'DPM', 'AzureBackupServer', 'AzureSql', 'AzureStorage', 'AzureWorkload', 'DefaultBackup')]
    [string] $backupManagementType
    [ValidateSet('Invalid', 'AzureIaasVM', 'MAB', 'DPM', 'AzureBackupServer', 'AzureSql', 'AzureStorage', 'AzureWorkload', 'DefaultBackup')]
    [string] $friendlyName
    [ValidateSet('Invalid', 'AzureIaasVM', 'MAB', 'DPM', 'AzureBackupServer', 'AzureSql', 'AzureStorage', 'AzureWorkload', 'DefaultBackup')]
    [bool] $isScheduledForDeferredDelete
    [ValidateSet('Invalid', 'AzureIaasVM', 'MAB', 'DPM', 'AzureBackupServer', 'AzureSql', 'AzureStorage', 'AzureWorkload', 'DefaultBackup')]
    [string] $protectionState
    [ValidateSet('Invalid', 'AzureIaasVM', 'MAB', 'DPM', 'AzureBackupServer', 'AzureSql', 'AzureStorage', 'AzureWorkload', 'DefaultBackup')]
    [string] $deferredDeleteTimeRemaining
    [ValidateSet('Invalid', 'AzureIaasVM', 'MAB', 'DPM', 'AzureBackupServer', 'AzureSql', 'AzureStorage', 'AzureWorkload', 'DefaultBackup')]
    [string] $containerName
    [ValidateSet('Invalid', 'AzureIaasVM', 'MAB', 'DPM', 'AzureBackupServer', 'AzureSql', 'AzureStorage', 'AzureWorkload', 'DefaultBackup')]
    [string] $backupSetName
    [ValidateSet('Invalid', 'AzureIaasVM', 'MAB', 'DPM', 'AzureBackupServer', 'AzureSql', 'AzureStorage', 'AzureWorkload', 'DefaultBackup')]
    [string] $lastBackupStatus
    [ValidateSet('Invalid', 'AzureIaasVM', 'MAB', 'DPM', 'AzureBackupServer', 'AzureSql', 'AzureStorage', 'AzureWorkload', 'DefaultBackup')]
    [string] $computerName
    [ValidateSet('Invalid', 'AzureIaasVM', 'MAB', 'DPM', 'AzureBackupServer', 'AzureSql', 'AzureStorage', 'AzureWorkload', 'DefaultBackup')]
    [string] $deferredDeleteTimeInUTC
    [ValidateSet('Invalid', 'AzureIaasVM', 'MAB', 'DPM', 'AzureBackupServer', 'AzureSql', 'AzureStorage', 'AzureWorkload', 'DefaultBackup')]
    [string] $protectedItemType
    [ValidateSet('Invalid', 'AzureIaasVM', 'MAB', 'DPM', 'AzureBackupServer', 'AzureSql', 'AzureStorage', 'AzureWorkload', 'DefaultBackup')]
    [bool] $isDeferredDeleteScheduleUpcoming
    [ValidateSet('Invalid', 'AzureIaasVM', 'MAB', 'DPM', 'AzureBackupServer', 'AzureSql', 'AzureStorage', 'AzureWorkload', 'DefaultBackup')]
    [MabFileFolderProtectedItemExtendedInfo] $extendedInfo
    [ValidateSet('Invalid', 'Default', 'Recover')]
    [string] $createMode
    [ValidateSet('Invalid', 'VM', 'FileFolder', 'AzureSqlDb', 'SQLDB', 'Exchange', 'Sharepoint', 'VMwareVM', 'SystemState', 'Client', 'GenericDataSource', 'SQLDataBase', 'AzureFileShare', 'SAPHanaDatabase', 'SAPAseDatabase')]
    [string] $workloadType
    [ValidateSet('Invalid', 'VM', 'FileFolder', 'AzureSqlDb', 'SQLDB', 'Exchange', 'Sharepoint', 'VMwareVM', 'SystemState', 'Client', 'GenericDataSource', 'SQLDataBase', 'AzureFileShare', 'SAPHanaDatabase', 'SAPAseDatabase')]
    [string] $lastRecoveryPoint
    [ValidateSet('Invalid', 'VM', 'FileFolder', 'AzureSqlDb', 'SQLDB', 'Exchange', 'Sharepoint', 'VMwareVM', 'SystemState', 'Client', 'GenericDataSource', 'SQLDataBase', 'AzureFileShare', 'SAPHanaDatabase', 'SAPAseDatabase')]
    [int] $deferredDeleteSyncTimeInUTC
    [ValidateSet('Invalid', 'VM', 'FileFolder', 'AzureSqlDb', 'SQLDB', 'Exchange', 'Sharepoint', 'VMwareVM', 'SystemState', 'Client', 'GenericDataSource', 'SQLDataBase', 'AzureFileShare', 'SAPHanaDatabase', 'SAPAseDatabase')]
    [string] $lastBackupTime
    [ValidateSet('Invalid', 'VM', 'FileFolder', 'AzureSqlDb', 'SQLDB', 'Exchange', 'Sharepoint', 'VMwareVM', 'SystemState', 'Client', 'GenericDataSource', 'SQLDataBase', 'AzureFileShare', 'SAPHanaDatabase', 'SAPAseDatabase')]
    [string] $sourceResourceId
}
function New-AzureNativeTypeRecoveryservicesMabFileFolderProtectedItem
{
    param (
        [parameter(mandatory=$False,HelpMessage='ID of the backup policy with which this item is backed up.)')]
        [string]
        $policyId,
        [parameter(mandatory=$False,HelpMessage='Flag to identify that deferred deleted DS is to be moved into Pause state)')]
        [bool]
        $isRehydrate,
        [parameter(mandatory=$False,HelpMessage='Type of backup management for the backed up item.)')]
        [string]
        [ValidateSet('Invalid', 'AzureIaasVM', 'MAB', 'DPM', 'AzureBackupServer', 'AzureSql', 'AzureStorage', 'AzureWorkload', 'DefaultBackup')]
        $backupManagementType,
        [parameter(mandatory=$False,HelpMessage='Friendly name of this backup item.)')]
        [string]
        $friendlyName,
        [parameter(mandatory=$False,HelpMessage='Flag to identify whether the DS is scheduled for deferred delete)')]
        [bool]
        $isScheduledForDeferredDelete,
        [parameter(mandatory=$False,HelpMessage='Protected, ProtectionStopped, IRPending or ProtectionError)')]
        [string]
        $protectionState,
        [parameter(mandatory=$False,HelpMessage='Time remaining before the DS marked for deferred delete is permanently deleted)')]
        [string]
        $deferredDeleteTimeRemaining,
        [parameter(mandatory=$False,HelpMessage='Unique name of container)')]
        [string]
        $containerName,
        [parameter(mandatory=$False,HelpMessage='Name of the backup set the backup item belongs to)')]
        [string]
        $backupSetName,
        [parameter(mandatory=$False,HelpMessage='Status of last backup operation.)')]
        [string]
        $lastBackupStatus,
        [parameter(mandatory=$False,HelpMessage='Name of the computer associated with this backup item.)')]
        [string]
        $computerName,
        [parameter(mandatory=$False,HelpMessage='Time for deferred deletion in UTC)')]
        [string]
        $deferredDeleteTimeInUTC,
        [parameter(mandatory=$False,HelpMessage='backup item type.
Expected value is ''MabFileFolderProtectedItem''.)'
)]
        [string]
        $protectedItemType,
        [parameter(mandatory=$False,HelpMessage='Flag to identify whether the deferred deleted DS is to be purged soon)')]
        [bool]
        $isDeferredDeleteScheduleUpcoming,
        [parameter(mandatory=$False,HelpMessage='Additional information with this backup item.)')]
        [MabFileFolderProtectedItemExtendedInfo]
        $extendedInfo,
        [parameter(mandatory=$False,HelpMessage='Create mode to indicate recovery of existing soft deleted data source or creation of new data source.)')]
        [string]
        [ValidateSet('Invalid', 'Default', 'Recover')]
        $createMode,
        [parameter(mandatory=$False,HelpMessage='Type of workload this item represents.)')]
        [string]
        [ValidateSet('Invalid', 'VM', 'FileFolder', 'AzureSqlDb', 'SQLDB', 'Exchange', 'Sharepoint', 'VMwareVM', 'SystemState', 'Client', 'GenericDataSource', 'SQLDataBase', 'AzureFileShare', 'SAPHanaDatabase', 'SAPAseDatabase')]
        $workloadType,
        [parameter(mandatory=$False,HelpMessage='Timestamp when the last (latest) backup copy was created for this backup item.)')]
        [string]
        $lastRecoveryPoint,
        [parameter(mandatory=$False,HelpMessage='Sync time for deferred deletion in UTC)')]
        [int]
        $deferredDeleteSyncTimeInUTC,
        [parameter(mandatory=$False,HelpMessage='Timestamp of the last backup operation on this backup item.)')]
        [string]
        $lastBackupTime,
        [parameter(mandatory=$False,HelpMessage='ARM ID of the resource to be backed up.)')]
        [string]
        $sourceResourceId
    )

    process
    {
        return $([MabFileFolderProtectedItem]$PSBoundParameters)
    }
}
function New-AzureNativeRecoveryservicesProtectedItem
{
    [Alias('azure_native_recoveryservices_protecteditem')]
    param (
        [parameter(mandatory=$False,HelpMessage='Fabric name associated with the backup item.)')]
        [string]
        $fabricName,
        [parameter(mandatory=$False,HelpMessage='The name of the recovery services vault.)')]
        [string]
        $vaultName,
        [parameter(mandatory=$False,HelpMessage='Item name to be backed up.)')]
        [string]
        $protectedItemName,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group where the recovery services vault is present.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='ProtectedItemResource properties)')]
        [MabFileFolderProtectedItem]
        $properties,
        [parameter(mandatory=$False,HelpMessage='Container name associated with the backup item.)')]
        [string]
        $containerName,
        [parameter(mandatory=$False,HelpMessage='Resource tags.)')]
        [hashtable]
        $tags,
        [parameter(mandatory=$False,HelpMessage='Optional ETag.)')]
        [string]
        $eTag,
        [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
    )

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

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

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

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
function New-AzureNativeRecoveryservicesResourceGuardProxy
{
    [Alias('azure_native_recoveryservices_resourceguardproxy')]
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the recovery services vault.)')]
        [string]
        $vaultName,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group where the recovery services vault is present.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage=')')]
        [string]
        $resourceGuardProxyName,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid
    )

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
class CreateProtectionContainerMappingInputProperties
{
    [object] $providerSpecificInput #todo add class here
    [string] $targetProtectionContainerId
    [string] $policyId
}
class VMwareCbtContainerMappingInput
{
    [string] $serviceBusConnectionStringSecretName
    [string] $storageAccountId
    [string] $targetLocation
    [string] $instanceType
    [string] $keyVaultId
    [string] $storageAccountSasSecretName
    [string] $keyVaultUri
}
function New-AzureNativeTypeRecoveryservicesVMwareCbtContainerMappingInput
{
    param (
        [parameter(mandatory=$False,HelpMessage='The secret name of the service bus connection string.)')]
        [string]
        $serviceBusConnectionStringSecretName,
        [parameter(mandatory=$False,HelpMessage='The storage account ARM Id.)')]
        [string]
        $storageAccountId,
        [parameter(mandatory=$False,HelpMessage='The target location.)')]
        [string]
        $targetLocation,
        [parameter(mandatory=$False,HelpMessage='The class type.
Expected value is ''VMwareCbt''.)'
)]
        [string]
        $instanceType,
        [parameter(mandatory=$False,HelpMessage='The target key vault ARM Id.)')]
        [string]
        $keyVaultId,
        [parameter(mandatory=$False,HelpMessage='The secret name of the storage account.)')]
        [string]
        $storageAccountSasSecretName,
        [parameter(mandatory=$False,HelpMessage='The target key vault URL.)')]
        [string]
        $keyVaultUri
    )

    process
    {
        return $([VMwareCbtContainerMappingInput]$PSBoundParameters)
    }
}
function New-AzureNativeTypeRecoveryservicesCreateProtectionContainerMappingInputProperties
{
    param (
        [parameter(mandatory=$False,HelpMessage='Provider specific input for pairing.)')]
        [VMwareCbtContainerMappingInput]
        $providerSpecificInput,
        [parameter(mandatory=$False,HelpMessage='The target unique protection container name.)')]
        [string]
        $targetProtectionContainerId,
        [parameter(mandatory=$False,HelpMessage='Applicable policy.)')]
        [string]
        $policyId
    )

    process
    {
        return $([CreateProtectionContainerMappingInputProperties]$PSBoundParameters)
    }
}
function New-AzureNativeRecoveryservicesReplicationProtectionContainerMapping
{
    [Alias('azure_native_recoveryservices_replicationprotectioncontainermapping')]
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the recovery services vault.)')]
        [string]
        $resourceName,
        [parameter(mandatory=$False,HelpMessage='Protection container mapping name.)')]
        [string]
        $mappingName,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group where the recovery services vault is present.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Configure protection input properties.)')]
        [CreateProtectionContainerMappingInputProperties]
        $properties,
        [parameter(mandatory=$False,HelpMessage='Fabric name.)')]
        [string]
        $fabricName,
        [parameter(mandatory=$False,HelpMessage='Protection container name.)')]
        [string]
        $protectionContainerName,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid
    )

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

        $resource.properties["fabricName"] = $fabricName
        $resource.properties["protectionContainerName"] = $protectionContainerName
        $resource.properties["resourceGroupName"] = $resourceGroupName
        $resource.properties["resourceName"] = $resourceName

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
class FabricCreationInputProperties
{
    [object] $customDetails #todo add class here
}
class VMwareV2FabricCreationInput
{
    [string] $vmwareSiteId
    [string] $instanceType
    [string] $migrationSolutionId
}
function New-AzureNativeTypeRecoveryservicesVMwareV2FabricCreationInput
{
    param (
        [parameter(mandatory=$False,HelpMessage='The ARM Id of the VMware site.)')]
        [string]
        $vmwareSiteId,
        [parameter(mandatory=$False,HelpMessage='Gets the class type.
Expected value is ''VMwareV2''.)'
)]
        [string]
        $instanceType,
        [parameter(mandatory=$False,HelpMessage='The ARM Id of the migration solution.)')]
        [string]
        $migrationSolutionId
    )

    process
    {
        return $([VMwareV2FabricCreationInput]$PSBoundParameters)
    }
}
function New-AzureNativeTypeRecoveryservicesFabricCreationInputProperties
{
    param (
        [parameter(mandatory=$False,HelpMessage='Fabric provider specific creation input.)')]
        [VMwareV2FabricCreationInput]
        $customDetails
    )

    process
    {
        return $([FabricCreationInputProperties]$PSBoundParameters)
    }
}
function New-AzureNativeRecoveryservicesReplicationFabric
{
    [Alias('azure_native_recoveryservices_replicationfabric')]
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the resource group where the recovery services vault is present.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Name of the ASR fabric.)')]
        [string]
        $fabricName,
        [parameter(mandatory=$False,HelpMessage='Fabric creation input.)')]
        [FabricCreationInputProperties]
        $properties,
        [parameter(mandatory=$False,HelpMessage='The name of the recovery services vault.)')]
        [string]
        $resourceName,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid
    )

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
class CreatePolicyInputProperties
{
    [object] $providerSpecificInput #todo add class here
}
class VMwareCbtPolicyCreationInput
{
    [int] $recoveryPointHistoryInMinutes
    [int] $appConsistentFrequencyInMinutes
    [string] $instanceType
    [int] $crashConsistentFrequencyInMinutes
}
function New-AzureNativeTypeRecoveryservicesVMwareCbtPolicyCreationInput
{
    param (
        [parameter(mandatory=$False,HelpMessage='The duration in minutes until which the recovery points need to be stored.)')]
        [int]
        $recoveryPointHistoryInMinutes,
        [parameter(mandatory=$False,HelpMessage='The app consistent snapshot frequency (in minutes).)')]
        [int]
        $appConsistentFrequencyInMinutes,
        [parameter(mandatory=$False,HelpMessage='The class type.
Expected value is ''VMwareCbt''.)'
)]
        [string]
        $instanceType,
        [parameter(mandatory=$False,HelpMessage='The crash consistent snapshot frequency (in minutes).)')]
        [int]
        $crashConsistentFrequencyInMinutes
    )

    process
    {
        return $([VMwareCbtPolicyCreationInput]$PSBoundParameters)
    }
}
function New-AzureNativeTypeRecoveryservicesCreatePolicyInputProperties
{
    param (
        [parameter(mandatory=$False,HelpMessage='The ReplicationProviderSettings.)')]
        [VMwareCbtPolicyCreationInput]
        $providerSpecificInput
    )

    process
    {
        return $([CreatePolicyInputProperties]$PSBoundParameters)
    }
}
function New-AzureNativeRecoveryservicesReplicationPolicy
{
    [Alias('azure_native_recoveryservices_replicationpolicy')]
    param (
        [parameter(mandatory=$False,HelpMessage='Replication policy name)')]
        [string]
        $policyName,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group where the recovery services vault is present.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Policy creation properties.)')]
        [CreatePolicyInputProperties]
        $properties,
        [parameter(mandatory=$False,HelpMessage='The name of the recovery services vault.)')]
        [string]
        $resourceName,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid
    )

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
class RecoveryPlanAction
{
    [string] $actionName
    [string[]] $failoverTypes
    [string[]] $failoverDirections
}
function New-AzureNativeTypeRecoveryservicesRecoveryPlanAction
{
    param (
        [parameter(mandatory=$False,HelpMessage='The action name.)')]
        [string]
        $actionName,
        [parameter(mandatory=$False,HelpMessage='The list of failover types.)')]
        $failoverTypes,
        [parameter(mandatory=$False,HelpMessage='The list of failover directions.)')]
        $failoverDirections
    )

    process
    {
        return $([RecoveryPlanAction]$PSBoundParameters)
    }
}
class RecoveryPlanProtectedItem
{
    [ValidateSet('Shutdown', 'Boot', 'Failover')]
    [string] $id
    [ValidateSet('Shutdown', 'Boot', 'Failover')]
    [string] $virtualMachineId
}
function New-AzureNativeTypeRecoveryservicesRecoveryPlanProtectedItem
{
    param (
        [parameter(mandatory=$False,HelpMessage='The ARM Id of the recovery plan protected item.)')]
        [string]
        $id,
        [parameter(mandatory=$False,HelpMessage='The virtual machine Id.)')]
        [string]
        $virtualMachineId
    )

    process
    {
        return $([RecoveryPlanProtectedItem]$PSBoundParameters)
    }
}
class RecoveryPlanGroup
{
    [RecoveryPlanAction[]] $startGroupActions
    [ValidateSet('Shutdown', 'Boot', 'Failover')]
    [string] $groupType
    [ValidateSet('Shutdown', 'Boot', 'Failover')]
    [RecoveryPlanAction[]] $endGroupActions
    [ValidateSet('Shutdown', 'Boot', 'Failover')]
    [RecoveryPlanProtectedItem[]] $replicationProtectedItems
}
function New-AzureNativeTypeRecoveryservicesRecoveryPlanGroup
{
    param (
        [parameter(mandatory=$False,HelpMessage='The start group actions.)')]
        $startGroupActions,
        [parameter(mandatory=$False,HelpMessage='The group type.)')]
        [string]
        [ValidateSet('Shutdown', 'Boot', 'Failover')]
        $groupType,
        [parameter(mandatory=$False,HelpMessage='The end group actions.)')]
        $endGroupActions,
        [parameter(mandatory=$False,HelpMessage='The list of protected items.)')]
        $replicationProtectedItems
    )

    process
    {
        return $([RecoveryPlanGroup]$PSBoundParameters)
    }
}
class RecoveryPlanA2AInput
{
    [ValidateSet('NotApplicable', 'Classic', 'ResourceManager')]
    [string] $primaryZone
    [ValidateSet('NotApplicable', 'Classic', 'ResourceManager')]
    [string] $instanceType
    [ValidateSet('NotApplicable', 'Classic', 'ResourceManager')]
    [string] $recoveryZone
}
function New-AzureNativeTypeRecoveryservicesRecoveryPlanA2AInput
{
    param (
        [parameter(mandatory=$False,HelpMessage='The primary zone.)')]
        [string]
        $primaryZone,
        [parameter(mandatory=$False,HelpMessage='Gets the Instance type.
Expected value is ''A2A''.)'
)]
        [string]
        $instanceType,
        [parameter(mandatory=$False,HelpMessage='The recovery zone.)')]
        [string]
        $recoveryZone
    )

    process
    {
        return $([RecoveryPlanA2AInput]$PSBoundParameters)
    }
}
class CreateRecoveryPlanInputProperties
{
    [string] $primaryFabricId
    [string] $recoveryFabricId
    [RecoveryPlanGroup[]] $groups
    [ValidateSet('NotApplicable', 'Classic', 'ResourceManager')]
    [string] $failoverDeploymentModel
    [ValidateSet('NotApplicable', 'Classic', 'ResourceManager')]
    [RecoveryPlanA2AInput[]] $providerSpecificInput
}
function New-AzureNativeTypeRecoveryservicesCreateRecoveryPlanInputProperties
{
    param (
        [parameter(mandatory=$False,HelpMessage='The primary fabric Id.)')]
        [string]
        $primaryFabricId,
        [parameter(mandatory=$False,HelpMessage='The recovery fabric Id.)')]
        [string]
        $recoveryFabricId,
        [parameter(mandatory=$False,HelpMessage='The recovery plan groups.)')]
        $groups,
        [parameter(mandatory=$False,HelpMessage='The failover deployment model.)')]
        [string]
        [ValidateSet('NotApplicable', 'Classic', 'ResourceManager')]
        $failoverDeploymentModel,
        [parameter(mandatory=$False,HelpMessage='The provider specific input.)')]
        $providerSpecificInput
    )

    process
    {
        return $([CreateRecoveryPlanInputProperties]$PSBoundParameters)
    }
}
function New-AzureNativeRecoveryservicesReplicationRecoveryPlan
{
    [Alias('azure_native_recoveryservices_replicationrecoveryplan')]
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the resource group where the recovery services vault is present.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Recovery plan creation properties.)')]
        [CreateRecoveryPlanInputProperties]
        $properties,
        [parameter(mandatory=$False,HelpMessage='The name of the recovery services vault.)')]
        [string]
        $resourceName,
        [parameter(mandatory=$False,HelpMessage='Recovery plan name.)')]
        [string]
        $recoveryPlanName,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid
    )

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
class IdentityProviderInput
{
    [string] $audience
    [string] $tenantId
    [string] $applicationId
    [string] $objectId
    [string] $aadAuthority
}
function New-AzureNativeTypeRecoveryservicesIdentityProviderInput
{
    param (
        [parameter(mandatory=$False,HelpMessage='The intended Audience of the service principal with which the on-premise management/data plane components would communicate with our Azure services.)')]
        [string]
        $audience,
        [parameter(mandatory=$False,HelpMessage='The tenant Id for the service principal with which the on-premise management/data plane components would communicate with our Azure services.)')]
        [string]
        $tenantId,
        [parameter(mandatory=$False,HelpMessage='The application/client Id for the service principal with which the on-premise management/data plane components would communicate with our Azure services.)')]
        [string]
        $applicationId,
        [parameter(mandatory=$False,HelpMessage='The object Id of the service principal with which the on-premise management/data plane components would communicate with our Azure services.)')]
        [string]
        $objectId,
        [parameter(mandatory=$False,HelpMessage='The base authority for Azure Active Directory authentication.)')]
        [string]
        $aadAuthority
    )

    process
    {
        return $([IdentityProviderInput]$PSBoundParameters)
    }
}
class AddRecoveryServicesProviderInputProperties
{
    [IdentityProviderInput] $authenticationIdentityInput
    [string] $machineId
    [IdentityProviderInput] $dataPlaneAuthenticationIdentityInput
    [IdentityProviderInput] $resourceAccessIdentityInput
    [string] $machineName
}
function New-AzureNativeTypeRecoveryservicesAddRecoveryServicesProviderInputProperties
{
    param (
        [parameter(mandatory=$False,HelpMessage='The identity provider input for DRA authentication.)')]
        [IdentityProviderInput]
        $authenticationIdentityInput,
        [parameter(mandatory=$False,HelpMessage='The Id of the machine where the provider is getting added.)')]
        [string]
        $machineId,
        [parameter(mandatory=$False,HelpMessage='The identity provider input for data plane authentication.)')]
        [IdentityProviderInput]
        $dataPlaneAuthenticationIdentityInput,
        [parameter(mandatory=$False,HelpMessage='The identity provider input for resource access.)')]
        [IdentityProviderInput]
        $resourceAccessIdentityInput,
        [parameter(mandatory=$False,HelpMessage='The name of the machine where the provider is getting added.)')]
        [string]
        $machineName
    )

    process
    {
        return $([AddRecoveryServicesProviderInputProperties]$PSBoundParameters)
    }
}
function New-AzureNativeRecoveryservicesReplicationRecoveryServicesProvider
{
    [Alias('azure_native_recoveryservices_replicationrecoveryservicesprovider')]
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the resource group where the recovery services vault is present.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Fabric name.)')]
        [string]
        $fabricName,
        [parameter(mandatory=$False,HelpMessage='The properties of an add provider request.)')]
        [AddRecoveryServicesProviderInputProperties]
        $properties,
        [parameter(mandatory=$False,HelpMessage='The name of the recovery services vault.)')]
        [string]
        $resourceName,
        [parameter(mandatory=$False,HelpMessage='Recovery services provider name.)')]
        [string]
        $providerName,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid
    )

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
class Sku
{
    [ValidateSet('Standard', 'RS0')]
    [string] $name
    [ValidateSet('Standard', 'RS0')]
    [string] $tier
}
function New-AzureNativeTypeRecoveryservicesSku
{
    param (
        [parameter(mandatory=$False,HelpMessage='The Sku name.)')]
        [string]
        [ValidateSet('Standard', 'RS0')]
        $name,
        [parameter(mandatory=$False,HelpMessage='The Sku tier.)')]
        [string]
        $tier
    )

    process
    {
        return $([Sku]$PSBoundParameters)
    }
}
class CmkKekIdentity
{
    [bool] $useSystemAssignedIdentity
    [string] $userAssignedIdentity
}
function New-AzureNativeTypeRecoveryservicesCmkKekIdentity
{
    param (
        [parameter(mandatory=$False,HelpMessage='Indicate that system assigned identity should be used. Mutually exclusive with ''userAssignedIdentity'' field)')]
        [bool]
        $useSystemAssignedIdentity,
        [parameter(mandatory=$False,HelpMessage='The user assigned identity to be used to grant permissions in case the type of identity used is UserAssigned)')]
        [string]
        $userAssignedIdentity
    )

    process
    {
        return $([CmkKekIdentity]$PSBoundParameters)
    }
}
class CmkKeyVaultProperties
{
    [ValidateSet('Enabled', 'Disabled')]
    [string] $keyUri
}
function New-AzureNativeTypeRecoveryservicesCmkKeyVaultProperties
{
    param (
        [parameter(mandatory=$False,HelpMessage='The key uri of the Customer Managed Key)')]
        [string]
        $keyUri
    )

    process
    {
        return $([CmkKeyVaultProperties]$PSBoundParameters)
    }
}
class VaultPropertiesEncryption
{
    [CmkKekIdentity] $kekIdentity
    [ValidateSet('Enabled', 'Disabled')]
    [string] $infrastructureEncryption
    [ValidateSet('Enabled', 'Disabled')]
    [CmkKeyVaultProperties] $keyVaultProperties
}
function New-AzureNativeTypeRecoveryservicesVaultPropertiesEncryption
{
    param (
        [parameter(mandatory=$False,HelpMessage='The details of the identity used for CMK)')]
        [CmkKekIdentity]
        $kekIdentity,
        [parameter(mandatory=$False,HelpMessage='Enabling/Disabling the Double Encryption state)')]
        [string]
        [ValidateSet('Enabled', 'Disabled')]
        $infrastructureEncryption,
        [parameter(mandatory=$False,HelpMessage='The properties of the Key Vault which hosts CMK)')]
        [CmkKeyVaultProperties]
        $keyVaultProperties
    )

    process
    {
        return $([VaultPropertiesEncryption]$PSBoundParameters)
    }
}
class VaultProperties
{
    [VaultPropertiesEncryption] $encryption
}
function New-AzureNativeTypeRecoveryservicesVaultProperties
{
    param (
        [parameter(mandatory=$False,HelpMessage='Customer Managed Key details of the resource.)')]
        [VaultPropertiesEncryption]
        $encryption
    )

    process
    {
        return $([VaultProperties]$PSBoundParameters)
    }
}
class IdentityData
{
    [ValidateSet('SystemAssigned', 'None', 'UserAssigned', 'SystemAssigned, UserAssigned')]
    [string] $type
    [ValidateSet('SystemAssigned', 'None', 'UserAssigned', 'SystemAssigned, UserAssigned')]
    [object] $userAssignedIdentities
}
function New-AzureNativeTypeRecoveryservicesIdentityData
{
    param (
        [parameter(mandatory=$False,HelpMessage='The type of managed identity used. The type ''SystemAssigned, UserAssigned'' includes both an implicitly created identity and a set of user-assigned identities. The type ''None'' will remove any identities.)')]
        [string]
        [ValidateSet('SystemAssigned', 'None', 'UserAssigned', 'SystemAssigned, UserAssigned')]
        $type,
        [parameter(mandatory=$False,HelpMessage='The list of user-assigned identities associated with the resource. The user-assigned identity dictionary keys will be ARM resource ids in the form: ''/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{identityName}''.)')]
        [object]
        $userAssignedIdentities
    )

    process
    {
        return $([IdentityData]$PSBoundParameters)
    }
}
function New-AzureNativeRecoveryservicesVault
{
    [Alias('azure_native_recoveryservices_vault')]
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the resource group where the recovery services vault is present.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Identifies the unique system identifier for each Azure resource.)')]
        [Sku]
        $sku,
        [parameter(mandatory=$False,HelpMessage='Properties of the vault.)')]
        [VaultProperties]
        $properties,
        [parameter(mandatory=$False,HelpMessage='Resource tags.)')]
        [hashtable]
        $tags,
        [parameter(mandatory=$False,HelpMessage='Identity for the resource.)')]
        [IdentityData]
        $identity,
        [parameter(mandatory=$False,HelpMessage='The name of the recovery services vault.)')]
        [string]
        $vaultName,
        [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
    )

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

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

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

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

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
class AzureWorkloadSQLAutoProtectionIntent
{
    [string] $protectionIntentItemType
    [string] $itemId
    [ValidateSet('Invalid', 'AzureIaasVM', 'MAB', 'DPM', 'AzureBackupServer', 'AzureSql', 'AzureStorage', 'AzureWorkload', 'DefaultBackup')]
    [string] $backupManagementType
    [ValidateSet('Invalid', 'NotProtected', 'Protecting', 'Protected', 'ProtectionFailed')]
    [string] $protectionState
    [ValidateSet('Invalid', 'NotProtected', 'Protecting', 'Protected', 'ProtectionFailed')]
    [string] $policyId
    [ValidateSet('Invalid', 'NotProtected', 'Protecting', 'Protected', 'ProtectionFailed')]
    [string] $sourceResourceId
    [ValidateSet('Invalid', 'SQLInstance', 'SQLDataBase', 'SAPHanaSystem', 'SAPHanaDatabase', 'SAPAseSystem', 'SAPAseDatabase')]
    [string] $workloadItemType
}
function New-AzureNativeTypeRecoveryservicesAzureWorkloadSQLAutoProtectionIntent
{
    param (
        [parameter(mandatory=$False,HelpMessage='backup protectionIntent type.
Expected value is ''AzureWorkloadSQLAutoProtectionIntent''.)'
)]
        [string]
        $protectionIntentItemType,
        [parameter(mandatory=$False,HelpMessage='ID of the item which is getting protected, In case of Azure Vm , it is ProtectedItemId)')]
        [string]
        $itemId,
        [parameter(mandatory=$False,HelpMessage='Type of backup management for the backed up item.)')]
        [string]
        [ValidateSet('Invalid', 'AzureIaasVM', 'MAB', 'DPM', 'AzureBackupServer', 'AzureSql', 'AzureStorage', 'AzureWorkload', 'DefaultBackup')]
        $backupManagementType,
        [parameter(mandatory=$False,HelpMessage='Backup state of this backup item.)')]
        [string]
        [ValidateSet('Invalid', 'NotProtected', 'Protecting', 'Protected', 'ProtectionFailed')]
        $protectionState,
        [parameter(mandatory=$False,HelpMessage='ID of the backup policy with which this item is backed up.)')]
        [string]
        $policyId,
        [parameter(mandatory=$False,HelpMessage='ARM ID of the resource to be backed up.)')]
        [string]
        $sourceResourceId,
        [parameter(mandatory=$False,HelpMessage='Workload item type of the item for which intent is to be set)')]
        [string]
        [ValidateSet('Invalid', 'SQLInstance', 'SQLDataBase', 'SAPHanaSystem', 'SAPHanaDatabase', 'SAPAseSystem', 'SAPAseDatabase')]
        $workloadItemType
    )

    process
    {
        return $([AzureWorkloadSQLAutoProtectionIntent]$PSBoundParameters)
    }
}
function New-AzureNativeRecoveryservicesProtectionIntent
{
    [Alias('azure_native_recoveryservices_protectionintent')]
    param (
        [parameter(mandatory=$False,HelpMessage='Resource tags.)')]
        [hashtable]
        $tags,
        [parameter(mandatory=$False,HelpMessage='Optional ETag.)')]
        [string]
        $eTag,
        [parameter(mandatory=$False,HelpMessage='ProtectionIntentResource properties)')]
        [AzureWorkloadSQLAutoProtectionIntent]
        $properties,
        [parameter(mandatory=$False,HelpMessage='Resource location.)')]
        [string]
        $location,
        [parameter(mandatory=$False,HelpMessage='Fabric name associated with the backup item.)')]
        [string]
        $fabricName,
        [parameter(mandatory=$False,HelpMessage='Intent object name.)')]
        [string]
        $intentObjectName,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group where the recovery services vault is present.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of the recovery services vault.)')]
        [string]
        $vaultName,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid
    )

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

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

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

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
class MabContainerExtendedInfo
{
    [string] $policyName
    [ValidateSet('Invalid', 'VM', 'FileFolder', 'AzureSqlDb', 'SQLDB', 'Exchange', 'Sharepoint', 'VMwareVM', 'SystemState', 'Client', 'GenericDataSource', 'SQLDataBase', 'AzureFileShare', 'SAPHanaDatabase', 'SAPAseDatabase')]
    [string] $backupItemType
    [ValidateSet('Invalid', 'VM', 'FileFolder', 'AzureSqlDb', 'SQLDB', 'Exchange', 'Sharepoint', 'VMwareVM', 'SystemState', 'Client', 'GenericDataSource', 'SQLDataBase', 'AzureFileShare', 'SAPHanaDatabase', 'SAPAseDatabase')]
    [string[]] $backupItems
    [ValidateSet('Invalid', 'VM', 'FileFolder', 'AzureSqlDb', 'SQLDB', 'Exchange', 'Sharepoint', 'VMwareVM', 'SystemState', 'Client', 'GenericDataSource', 'SQLDataBase', 'AzureFileShare', 'SAPHanaDatabase', 'SAPAseDatabase')]
    [string] $lastBackupStatus
    [ValidateSet('Invalid', 'VM', 'FileFolder', 'AzureSqlDb', 'SQLDB', 'Exchange', 'Sharepoint', 'VMwareVM', 'SystemState', 'Client', 'GenericDataSource', 'SQLDataBase', 'AzureFileShare', 'SAPHanaDatabase', 'SAPAseDatabase')]
    [string] $lastRefreshedAt
}
function New-AzureNativeTypeRecoveryservicesMabContainerExtendedInfo
{
    param (
        [parameter(mandatory=$False,HelpMessage='Backup policy associated with this container.)')]
        [string]
        $policyName,
        [parameter(mandatory=$False,HelpMessage='Type of backup items associated with this container.)')]
        [string]
        [ValidateSet('Invalid', 'VM', 'FileFolder', 'AzureSqlDb', 'SQLDB', 'Exchange', 'Sharepoint', 'VMwareVM', 'SystemState', 'Client', 'GenericDataSource', 'SQLDataBase', 'AzureFileShare', 'SAPHanaDatabase', 'SAPAseDatabase')]
        $backupItemType,
        [parameter(mandatory=$False,HelpMessage='List of backup items associated with this container.)')]
        [string[]]
        $backupItems,
        [parameter(mandatory=$False,HelpMessage='Latest backup status of this container.)')]
        [string]
        $lastBackupStatus,
        [parameter(mandatory=$False,HelpMessage='Time stamp when this container was refreshed.)')]
        [string]
        $lastRefreshedAt
    )

    process
    {
        return $([MabContainerExtendedInfo]$PSBoundParameters)
    }
}
class MABContainerHealthDetails
{
    [string] $title
    [int] $code
    [string[]] $recommendations
    [string] $message
}
function New-AzureNativeTypeRecoveryservicesMABContainerHealthDetails
{
    param (
        [parameter(mandatory=$False,HelpMessage='Health Title)')]
        [string]
        $title,
        [parameter(mandatory=$False,HelpMessage='Health Code)')]
        [int]
        $code,
        [parameter(mandatory=$False,HelpMessage='Health Recommended Actions)')]
        [string[]]
        $recommendations,
        [parameter(mandatory=$False,HelpMessage='Health Message)')]
        [string]
        $message
    )

    process
    {
        return $([MABContainerHealthDetails]$PSBoundParameters)
    }
}
class MabContainer
{
    [int] $containerId
    [MabContainerExtendedInfo] $extendedInfo
    [string] $containerType
    [string] $friendlyName
    [int] $protectedItemCount
    [string] $containerHealthState
    [string] $registrationStatus
    [string] $healthStatus
    [string] $agentVersion
    [bool] $canReRegister
    [MABContainerHealthDetails[]] $mabContainerHealthDetails
    [ValidateSet('Invalid', 'AzureIaasVM', 'MAB', 'DPM', 'AzureBackupServer', 'AzureSql', 'AzureStorage', 'AzureWorkload', 'DefaultBackup')]
    [string] $backupManagementType
}
function New-AzureNativeTypeRecoveryservicesMabContainer
{
    param (
        [parameter(mandatory=$False,HelpMessage='ContainerID represents the container.)')]
        [int]
        $containerId,
        [parameter(mandatory=$False,HelpMessage='Additional information for this container)')]
        [MabContainerExtendedInfo]
        $extendedInfo,
        [parameter(mandatory=$False,HelpMessage='Type of the container. The value of this property for: 1. Compute Azure VM is Microsoft.Compute/virtualMachines 2.
Classic Compute Azure VM is Microsoft.ClassicCompute/virtualMachines 3. Windows machines (like MAB, DPM etc) is
Windows 4. Azure SQL instance is AzureSqlContainer. 5. Storage containers is StorageContainer. 6. Azure workload
Backup is VMAppContainer
Expected value is ''Windows''.)'
)]
        [string]
        $containerType,
        [parameter(mandatory=$False,HelpMessage='Friendly name of the container.)')]
        [string]
        $friendlyName,
        [parameter(mandatory=$False,HelpMessage='Number of items backed up in this container.)')]
        [int]
        $protectedItemCount,
        [parameter(mandatory=$False,HelpMessage='Health state of mab container.)')]
        [string]
        $containerHealthState,
        [parameter(mandatory=$False,HelpMessage='Status of registration of the container with the Recovery Services Vault.)')]
        [string]
        $registrationStatus,
        [parameter(mandatory=$False,HelpMessage='Status of health of the container.)')]
        [string]
        $healthStatus,
        [parameter(mandatory=$False,HelpMessage='Agent version of this container.)')]
        [string]
        $agentVersion,
        [parameter(mandatory=$False,HelpMessage='Can the container be registered one more time.)')]
        [bool]
        $canReRegister,
        [parameter(mandatory=$False,HelpMessage='Health details on this mab container.)')]
        $mabContainerHealthDetails,
        [parameter(mandatory=$False,HelpMessage='Type of backup management for the container.)')]
        [string]
        [ValidateSet('Invalid', 'AzureIaasVM', 'MAB', 'DPM', 'AzureBackupServer', 'AzureSql', 'AzureStorage', 'AzureWorkload', 'DefaultBackup')]
        $backupManagementType
    )

    process
    {
        return $([MabContainer]$PSBoundParameters)
    }
}
function New-AzureNativeRecoveryservicesProtectionContainer
{
    [Alias('azure_native_recoveryservices_protectioncontainer')]
    param (
        [parameter(mandatory=$False,HelpMessage='Resource tags.)')]
        [hashtable]
        $tags,
        [parameter(mandatory=$False,HelpMessage='Optional ETag.)')]
        [string]
        $eTag,
        [parameter(mandatory=$False,HelpMessage='ProtectionContainerResource properties)')]
        [MabContainer]
        $properties,
        [parameter(mandatory=$False,HelpMessage='Resource location.)')]
        [string]
        $location,
        [parameter(mandatory=$False,HelpMessage='Fabric name associated with the container.)')]
        [string]
        $fabricName,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group where the recovery services vault is present.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of the recovery services vault.)')]
        [string]
        $vaultName,
        [parameter(mandatory=$False,HelpMessage='Name of the container to be registered.)')]
        [string]
        $containerName,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid
    )

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

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

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

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
class StorageMappingInputProperties
{
    [string] $targetStorageClassificationId
}
function New-AzureNativeTypeRecoveryservicesStorageMappingInputProperties
{
    param (
        [parameter(mandatory=$False,HelpMessage='The ID of the storage object.)')]
        [string]
        $targetStorageClassificationId
    )

    process
    {
        return $([StorageMappingInputProperties]$PSBoundParameters)
    }
}
function New-AzureNativeRecoveryservicesReplicationStorageClassificationMapping
{
    [Alias('azure_native_recoveryservices_replicationstorageclassificationmapping')]
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the recovery services vault.)')]
        [string]
        $resourceName,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group where the recovery services vault is present.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Storage classification name.)')]
        [string]
        $storageClassificationName,
        [parameter(mandatory=$False,HelpMessage='Storage mapping input properties.)')]
        [StorageMappingInputProperties]
        $properties,
        [parameter(mandatory=$False,HelpMessage='Fabric name.)')]
        [string]
        $fabricName,
        [parameter(mandatory=$False,HelpMessage='Storage classification mapping name.)')]
        [string]
        $storageClassificationMappingName,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid
    )

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

        $resource.properties["fabricName"] = $fabricName
        $resource.properties["resourceGroupName"] = $resourceGroupName
        $resource.properties["resourceName"] = $resourceName
        $resource.properties["storageClassificationName"] = $storageClassificationName

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
class AddVCenterRequestProperties
{
    [string] $port
    [string] $ipAddress
    [string] $runAsAccountId
    [string] $processServerId
    [string] $friendlyName
}
function New-AzureNativeTypeRecoveryservicesAddVCenterRequestProperties
{
    param (
        [parameter(mandatory=$False,HelpMessage='The port number for discovery.)')]
        [string]
        $port,
        [parameter(mandatory=$False,HelpMessage='The IP address of the vCenter to be discovered.)')]
        [string]
        $ipAddress,
        [parameter(mandatory=$False,HelpMessage='The account Id which has privileges to discover the vCenter.)')]
        [string]
        $runAsAccountId,
        [parameter(mandatory=$False,HelpMessage='The process server Id from where the discovery is orchestrated.)')]
        [string]
        $processServerId,
        [parameter(mandatory=$False,HelpMessage='The friendly name of the vCenter.)')]
        [string]
        $friendlyName
    )

    process
    {
        return $([AddVCenterRequestProperties]$PSBoundParameters)
    }
}
function New-AzureNativeRecoveryservicesReplicationvCenter
{
    [Alias('azure_native_recoveryservices_replicationvcenter')]
    param (
        [parameter(mandatory=$False,HelpMessage='vCenter name.)')]
        [string]
        $vCenterName,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group where the recovery services vault is present.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Fabric name.)')]
        [string]
        $fabricName,
        [parameter(mandatory=$False,HelpMessage='The properties of an add vCenter request.)')]
        [AddVCenterRequestProperties]
        $properties,
        [parameter(mandatory=$False,HelpMessage='The name of the recovery services vault.)')]
        [string]
        $resourceName,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid
    )

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
class MabProtectionPolicy
{
    [string] $backupManagementType
    [object] $schedulePolicy #todo add class here
    [object] $retentionPolicy #todo add class here
    [int] $protectedItemsCount
}
class SimpleSchedulePolicy
{
    [int] $scheduleWeeklyFrequency
    [string[]] $scheduleRunTimes
    [ValidateSet('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday')]
    [string] $scheduleRunDays
    [ValidateSet('Invalid', 'Daily', 'Weekly')]
    [string] $scheduleRunFrequency
    [ValidateSet('Invalid', 'Daily', 'Weekly')]
    [string] $schedulePolicyType
}
function New-AzureNativeTypeRecoveryservicesSimpleSchedulePolicy
{
    param (
        [parameter(mandatory=$False,HelpMessage='At every number weeks this schedule has to be run.)')]
        [int]
        $scheduleWeeklyFrequency,
        [parameter(mandatory=$False,HelpMessage='List of times of day this schedule has to be run.)')]
        [string[]]
        $scheduleRunTimes,
        [parameter(mandatory=$False,HelpMessage='List of days of week this schedule has to be run.)')]
        $scheduleRunDays,
        [parameter(mandatory=$False,HelpMessage='Frequency of the schedule operation of this policy.)')]
        [string]
        [ValidateSet('Invalid', 'Daily', 'Weekly')]
        $scheduleRunFrequency,
        [parameter(mandatory=$False,HelpMessage='This property will be used as the discriminator for deciding the specific types in the polymorphic chain of types.
Expected value is ''SimpleSchedulePolicy''.)'
)]
        [string]
        $schedulePolicyType
    )

    process
    {
        return $([SimpleSchedulePolicy]$PSBoundParameters)
    }
}
class RetentionDuration
{
    [int] $count
    [ValidateSet('Invalid', 'Days', 'Weeks', 'Months', 'Years')]
    [string] $durationType
}
function New-AzureNativeTypeRecoveryservicesRetentionDuration
{
    param (
        [parameter(mandatory=$False,HelpMessage='Count of duration types. Retention duration is obtained by the counting the duration type Count times.
For example, when Count = 3 and DurationType = Weeks, retention duration will be three weeks.)'
)]
        [int]
        $count,
        [parameter(mandatory=$False,HelpMessage='Retention duration type of retention policy.)')]
        [string]
        [ValidateSet('Invalid', 'Days', 'Weeks', 'Months', 'Years')]
        $durationType
    )

    process
    {
        return $([RetentionDuration]$PSBoundParameters)
    }
}
class SimpleRetentionPolicy
{
    [string] $retentionPolicyType
    [RetentionDuration] $retentionDuration
}
function New-AzureNativeTypeRecoveryservicesSimpleRetentionPolicy
{
    param (
        [parameter(mandatory=$False,HelpMessage='This property will be used as the discriminator for deciding the specific types in the polymorphic chain of types.
Expected value is ''SimpleRetentionPolicy''.)'
)]
        [string]
        $retentionPolicyType,
        [parameter(mandatory=$False,HelpMessage='Retention duration of the protection policy.)')]
        [RetentionDuration]
        $retentionDuration
    )

    process
    {
        return $([SimpleRetentionPolicy]$PSBoundParameters)
    }
}
function New-AzureNativeTypeRecoveryservicesMabProtectionPolicy
{
    param (
        [parameter(mandatory=$False,HelpMessage='This property will be used as the discriminator for deciding the specific types in the polymorphic chain of types.
Expected value is ''MAB''.)'
)]
        [string]
        $backupManagementType,
        [parameter(mandatory=$False,HelpMessage='Backup schedule of backup policy.)')]
        [SimpleSchedulePolicy]
        $schedulePolicy,
        [parameter(mandatory=$False,HelpMessage='Retention policy details.)')]
        [SimpleRetentionPolicy]
        $retentionPolicy,
        [parameter(mandatory=$False,HelpMessage='Number of items associated with this policy.)')]
        [int]
        $protectedItemsCount
    )

    process
    {
        return $([MabProtectionPolicy]$PSBoundParameters)
    }
}
function New-AzureNativeRecoveryservicesProtectionPolicy
{
    [Alias('azure_native_recoveryservices_protectionpolicy')]
    param (
        [parameter(mandatory=$False,HelpMessage='Resource tags.)')]
        [hashtable]
        $tags,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group where the recovery services vault is present.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Backup policy to be created.)')]
        [string]
        $policyName,
        [parameter(mandatory=$False,HelpMessage='ProtectionPolicyResource properties)')]
        [MabProtectionPolicy]
        $properties,
        [parameter(mandatory=$False,HelpMessage='Optional ETag.)')]
        [string]
        $eTag,
        [parameter(mandatory=$False,HelpMessage='The name of the recovery services vault.)')]
        [string]
        $vaultName,
        [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
    )

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

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

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

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
class PrivateEndpoint
{
    [string] $id
}
function New-AzureNativeTypeRecoveryservicesPrivateEndpoint
{
    param (
        [parameter(mandatory=$False,HelpMessage='Gets or sets id)')]
        [string]
        $id
    )

    process
    {
        return $([PrivateEndpoint]$PSBoundParameters)
    }
}
class PrivateLinkServiceConnectionState
{
    [string] $description
    [string] $actionRequired
    [ValidateSet('Pending', 'Approved', 'Rejected', 'Disconnected')]
    [string] $status
}
function New-AzureNativeTypeRecoveryservicesPrivateLinkServiceConnectionState
{
    param (
        [parameter(mandatory=$False,HelpMessage='Gets or sets description)')]
        [string]
        $description,
        [parameter(mandatory=$False,HelpMessage='Gets or sets actions required)')]
        [string]
        $actionRequired,
        [parameter(mandatory=$False,HelpMessage='Gets or sets the status)')]
        [string]
        [ValidateSet('Pending', 'Approved', 'Rejected', 'Disconnected')]
        $status
    )

    process
    {
        return $([PrivateLinkServiceConnectionState]$PSBoundParameters)
    }
}
class PrivateEndpointConnection
{
    [PrivateEndpoint] $privateEndpoint
    [PrivateLinkServiceConnectionState] $privateLinkServiceConnectionState
    [ValidateSet('Succeeded', 'Deleting', 'Failed', 'Pending')]
    [string] $provisioningState
}
function New-AzureNativeTypeRecoveryservicesPrivateEndpointConnection
{
    param (
        [parameter(mandatory=$False,HelpMessage='Gets or sets private endpoint associated with the private endpoint connection)')]
        [PrivateEndpoint]
        $privateEndpoint,
        [parameter(mandatory=$False,HelpMessage='Gets or sets private link service connection state)')]
        [PrivateLinkServiceConnectionState]
        $privateLinkServiceConnectionState,
        [parameter(mandatory=$False,HelpMessage='Gets or sets provisioning state of the private endpoint connection)')]
        [string]
        [ValidateSet('Succeeded', 'Deleting', 'Failed', 'Pending')]
        $provisioningState
    )

    process
    {
        return $([PrivateEndpointConnection]$PSBoundParameters)
    }
}
function New-AzureNativeRecoveryservicesPrivateEndpointConnection
{
    [Alias('azure_native_recoveryservices_privateendpointconnection')]
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the resource group where the recovery services vault is present.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of the private endpoint connection.)')]
        [string]
        $privateEndpointConnectionName,
        [parameter(mandatory=$False,HelpMessage='Resource tags.)')]
        [hashtable]
        $tags,
        [parameter(mandatory=$False,HelpMessage='PrivateEndpointConnectionResource properties)')]
        [PrivateEndpointConnection]
        $properties,
        [parameter(mandatory=$False,HelpMessage='Optional ETag.)')]
        [string]
        $eTag,
        [parameter(mandatory=$False,HelpMessage='The name of the recovery services vault.)')]
        [string]
        $vaultName,
        [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
    )

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

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

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

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
class EnableProtectionInputProperties
{
    [string] $protectableItemId
    [string] $policyId
    [object] $providerSpecificDetails #todo add class here
}
class SanEnableProtectionInput
{
    [string] $instanceType
}
function New-AzureNativeTypeRecoveryservicesSanEnableProtectionInput
{
    param (
        [parameter(mandatory=$False,HelpMessage='The class type.
Expected value is ''San''.)'
)]
        [string]
        $instanceType
    )

    process
    {
        return $([SanEnableProtectionInput]$PSBoundParameters)
    }
}
function New-AzureNativeTypeRecoveryservicesEnableProtectionInputProperties
{
    param (
        [parameter(mandatory=$False,HelpMessage='The protectable item Id.)')]
        [string]
        $protectableItemId,
        [parameter(mandatory=$False,HelpMessage='The Policy Id.)')]
        [string]
        $policyId,
        [parameter(mandatory=$False,HelpMessage='The ReplicationProviderInput. For HyperVReplicaAzure provider, it will be AzureEnableProtectionInput object. For San provider, it will be SanEnableProtectionInput object. For HyperVReplicaAzure provider, it can be null.)')]
        [SanEnableProtectionInput]
        $providerSpecificDetails
    )

    process
    {
        return $([EnableProtectionInputProperties]$PSBoundParameters)
    }
}
function New-AzureNativeRecoveryservicesReplicationProtectedItem
{
    [Alias('azure_native_recoveryservices_replicationprotecteditem')]
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the recovery services vault.)')]
        [string]
        $resourceName,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group where the recovery services vault is present.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='A name for the replication protected item.)')]
        [string]
        $replicatedProtectedItemName,
        [parameter(mandatory=$False,HelpMessage='Enable protection input properties.)')]
        [EnableProtectionInputProperties]
        $properties,
        [parameter(mandatory=$False,HelpMessage='Name of the fabric.)')]
        [string]
        $fabricName,
        [parameter(mandatory=$False,HelpMessage='Protection container name.)')]
        [string]
        $protectionContainerName,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid
    )

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

        $resource.properties["fabricName"] = $fabricName
        $resource.properties["protectionContainerName"] = $protectionContainerName
        $resource.properties["resourceGroupName"] = $resourceGroupName
        $resource.properties["resourceName"] = $resourceName

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
class VMwareCbtDiskInput
{
    [string] $isOSDisk
    [string] $diskId
    [string] $logStorageAccountId
    [string] $logStorageAccountSasSecretName
    [ValidateSet('Standard_LRS', 'Premium_LRS', 'StandardSSD_LRS')]
    [string] $diskType
}
function New-AzureNativeTypeRecoveryservicesVMwareCbtDiskInput
{
    param (
        [parameter(mandatory=$False,HelpMessage='A value indicating whether the disk is the OS disk.)')]
        [string]
        $isOSDisk,
        [parameter(mandatory=$False,HelpMessage='The disk Id.)')]
        [string]
        $diskId,
        [parameter(mandatory=$False,HelpMessage='The log storage account ARM Id.)')]
        [string]
        $logStorageAccountId,
        [parameter(mandatory=$False,HelpMessage='The key vault secret name of the log storage account.)')]
        [string]
        $logStorageAccountSasSecretName,
        [parameter(mandatory=$False,HelpMessage='The disk type.)')]
        [string]
        [ValidateSet('Standard_LRS', 'Premium_LRS', 'StandardSSD_LRS')]
        $diskType
    )

    process
    {
        return $([VMwareCbtDiskInput]$PSBoundParameters)
    }
}
class VMwareCbtEnableMigrationInput
{
    [VMwareCbtDiskInput[]] $disksToInclude
    [string] $targetBootDiagnosticsStorageAccountId
    [string] $targetNetworkId
    [string] $vmwareMachineId
    [string] $targetSubnetName
    [ValidateSet('NotSpecified', 'NoLicenseType', 'WindowsServer')]
    [string] $licenseType
    [ValidateSet('NotSpecified', 'NoLicenseType', 'WindowsServer')]
    [string] $targetAvailabilitySetId
    [ValidateSet('NotSpecified', 'NoLicenseType', 'WindowsServer')]
    [string] $dataMoverRunAsAccountId
    [ValidateSet('NotSpecified', 'NoLicenseType', 'WindowsServer')]
    [string] $targetVmSize
    [ValidateSet('NotSpecified', 'NoLicenseType', 'WindowsServer')]
    [string] $snapshotRunAsAccountId
    [ValidateSet('NotSpecified', 'NoLicenseType', 'WindowsServer')]
    [string] $targetVmName
    [ValidateSet('NotSpecified', 'NoLicenseType', 'WindowsServer')]
    [string] $targetResourceGroupId
    [ValidateSet('NotSpecified', 'NoLicenseType', 'WindowsServer')]
    [string] $instanceType
}
function New-AzureNativeTypeRecoveryservicesVMwareCbtEnableMigrationInput
{
    param (
        [parameter(mandatory=$False,HelpMessage='The disks to include list.)')]
        $disksToInclude,
        [parameter(mandatory=$False,HelpMessage='The target boot diagnostics storage account ARM Id.)')]
        [string]
        $targetBootDiagnosticsStorageAccountId,
        [parameter(mandatory=$False,HelpMessage='The target network ARM Id.)')]
        [string]
        $targetNetworkId,
        [parameter(mandatory=$False,HelpMessage='The ARM Id of the VM discovered in VMware.)')]
        [string]
        $vmwareMachineId,
        [parameter(mandatory=$False,HelpMessage='The target subnet name.)')]
        [string]
        $targetSubnetName,
        [parameter(mandatory=$False,HelpMessage='License type.)')]
        [string]
        [ValidateSet('NotSpecified', 'NoLicenseType', 'WindowsServer')]
        $licenseType,
        [parameter(mandatory=$False,HelpMessage='The target availability set ARM Id.)')]
        [string]
        $targetAvailabilitySetId,
        [parameter(mandatory=$False,HelpMessage='The data mover RunAs account Id.)')]
        [string]
        $dataMoverRunAsAccountId,
        [parameter(mandatory=$False,HelpMessage='The target VM size.)')]
        [string]
        $targetVmSize,
        [parameter(mandatory=$False,HelpMessage='The snapshot RunAs account Id.)')]
        [string]
        $snapshotRunAsAccountId,
        [parameter(mandatory=$False,HelpMessage='The target VM name.)')]
        [string]
        $targetVmName,
        [parameter(mandatory=$False,HelpMessage='The target resource group ARM Id.)')]
        [string]
        $targetResourceGroupId,
        [parameter(mandatory=$False,HelpMessage='The class type.
Expected value is ''VMwareCbt''.)'
)]
        [string]
        $instanceType
    )

    process
    {
        return $([VMwareCbtEnableMigrationInput]$PSBoundParameters)
    }
}
class EnableMigrationInputProperties
{
    [VMwareCbtEnableMigrationInput] $providerSpecificDetails
    [string] $policyId
}
function New-AzureNativeTypeRecoveryservicesEnableMigrationInputProperties
{
    param (
        [parameter(mandatory=$False,HelpMessage='The provider specific details.)')]
        [VMwareCbtEnableMigrationInput]
        $providerSpecificDetails,
        [parameter(mandatory=$False,HelpMessage='The policy Id.)')]
        [string]
        $policyId
    )

    process
    {
        return $([EnableMigrationInputProperties]$PSBoundParameters)
    }
}
function New-AzureNativeRecoveryservicesReplicationMigrationItem
{
    [Alias('azure_native_recoveryservices_replicationmigrationitem')]
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the resource group where the recovery services vault is present.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of the recovery services vault.)')]
        [string]
        $resourceName,
        [parameter(mandatory=$False,HelpMessage='Migration item name.)')]
        [string]
        $migrationItemName,
        [parameter(mandatory=$False,HelpMessage='Enable migration input properties.)')]
        [EnableMigrationInputProperties]
        $properties,
        [parameter(mandatory=$False,HelpMessage='Fabric name.)')]
        [string]
        $fabricName,
        [parameter(mandatory=$False,HelpMessage='Protection container name.)')]
        [string]
        $protectionContainerName,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid
    )

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

        $resource.properties["fabricName"] = $fabricName
        $resource.properties["properties"] = $properties
        $resource.properties["protectionContainerName"] = $protectionContainerName
        $resource.properties["resourceGroupName"] = $resourceGroupName
        $resource.properties["resourceName"] = $resourceName

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

        $global:pulumiresources += $resource
        return $resource
    }
}
class CreateNetworkMappingInputProperties
{
    [object] $fabricSpecificDetails #todo add class here
    [string] $recoveryNetworkId
    [string] $recoveryFabricName
}
class VmmToVmmCreateNetworkMappingInput
{
    [string] $instanceType
}
function New-AzureNativeTypeRecoveryservicesVmmToVmmCreateNetworkMappingInput
{
    param (
        [parameter(mandatory=$False,HelpMessage='The instance type.
Expected value is ''VmmToVmm''.)'
)]
        [string]
        $instanceType
    )

    process
    {
        return $([VmmToVmmCreateNetworkMappingInput]$PSBoundParameters)
    }
}
function New-AzureNativeTypeRecoveryservicesCreateNetworkMappingInputProperties
{
    param (
        [parameter(mandatory=$False,HelpMessage='Fabric specific input properties.)')]
        [VmmToVmmCreateNetworkMappingInput]
        $fabricSpecificDetails,
        [parameter(mandatory=$False,HelpMessage='Recovery network Id.)')]
        [string]
        $recoveryNetworkId,
        [parameter(mandatory=$False,HelpMessage='Recovery fabric Name.)')]
        [string]
        $recoveryFabricName
    )

    process
    {
        return $([CreateNetworkMappingInputProperties]$PSBoundParameters)
    }
}
function New-AzureNativeRecoveryservicesReplicationNetworkMapping
{
    [Alias('azure_native_recoveryservices_replicationnetworkmapping')]
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the recovery services vault.)')]
        [string]
        $resourceName,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group where the recovery services vault is present.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Network mapping name.)')]
        [string]
        $networkMappingName,
        [parameter(mandatory=$False,HelpMessage='Input properties for creating network mapping.)')]
        [CreateNetworkMappingInputProperties]
        $properties,
        [parameter(mandatory=$False,HelpMessage='Primary fabric name.)')]
        [string]
        $fabricName,
        [parameter(mandatory=$False,HelpMessage='Primary network name.)')]
        [string]
        $networkName,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid
    )

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

        $resource.properties["fabricName"] = $fabricName
        $resource.properties["networkName"] = $networkName
        $resource.properties["resourceGroupName"] = $resourceGroupName
        $resource.properties["resourceName"] = $resourceName

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

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

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