pspulumiyaml.azurenative.datamigration.psm1

using module pspulumiyaml
function Invoke-AzureNativeFunctionDatamigrationListSqlMigrationServiceAuthKeys
{
    param (
        [parameter(mandatory=$False,HelpMessage='Name of the SQL Migration Service.)')]
        [string]
        $sqlMigrationServiceName,
        [parameter(mandatory=$False,HelpMessage='Name of the resource group that contains the resource. You can obtain this value from the Azure Resource Manager API or the portal.)')]
        [string]
        $resourceGroupName
    )

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

        $functionObject = Invoke-PulumiFunction -Name azure-native:datamigration:listSqlMigrationServiceAuthKeys -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionDatamigrationGetDatabaseMigrationsSqlDb
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the target database.)')]
        [string]
        $targetDbName,
        [parameter(mandatory=$False,HelpMessage='Complete migration details be included in the response.)')]
        [string]
        $expand,
        [parameter(mandatory=$False,HelpMessage='Name of the resource group that contains the resource. You can obtain this value from the Azure Resource Manager API or the portal.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage=')')]
        [string]
        $sqlDbInstanceName,
        [parameter(mandatory=$False,HelpMessage='Optional migration operation ID. If this is provided, then details of migration operation for that ID are retrieved. If not provided (default), then details related to most recent or current operation are retrieved.)')]
        [string]
        $migrationOperationId
    )

    process
    {
        $arguments = @{}
        $arguments["resourceGroupName"] = $resourceGroupName
        $arguments["sqlDbInstanceName"] = $sqlDbInstanceName
        $arguments["targetDbName"] = $targetDbName

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

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

        $functionObject = Invoke-PulumiFunction -Name azure-native:datamigration:getDatabaseMigrationsSqlDb -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionDatamigrationGetFile
{
    param (
        [parameter(mandatory=$False,HelpMessage='Name of the resource group)')]
        [string]
        $groupName,
        [parameter(mandatory=$False,HelpMessage='Name of the service)')]
        [string]
        $serviceName,
        [parameter(mandatory=$False,HelpMessage='Name of the File)')]
        [string]
        $fileName,
        [parameter(mandatory=$False,HelpMessage='Name of the project)')]
        [string]
        $projectName
    )

    process
    {
        $arguments = @{}
        $arguments["fileName"] = $fileName
        $arguments["groupName"] = $groupName
        $arguments["projectName"] = $projectName
        $arguments["serviceName"] = $serviceName

        $functionObject = Invoke-PulumiFunction -Name azure-native:datamigration:getFile -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionDatamigrationGetService
{
    param (
        [parameter(mandatory=$False,HelpMessage='Name of the service)')]
        [string]
        $serviceName,
        [parameter(mandatory=$False,HelpMessage='Name of the resource group)')]
        [string]
        $groupName
    )

    process
    {
        $arguments = @{}
        $arguments["groupName"] = $groupName
        $arguments["serviceName"] = $serviceName

        $functionObject = Invoke-PulumiFunction -Name azure-native:datamigration:getService -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionDatamigrationGetSqlMigrationService
{
    param (
        [parameter(mandatory=$False,HelpMessage='Name of the SQL Migration Service.)')]
        [string]
        $sqlMigrationServiceName,
        [parameter(mandatory=$False,HelpMessage='Name of the resource group that contains the resource. You can obtain this value from the Azure Resource Manager API or the portal.)')]
        [string]
        $resourceGroupName
    )

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

        $functionObject = Invoke-PulumiFunction -Name azure-native:datamigration:getSqlMigrationService -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionDatamigrationGetTask
{
    param (
        [parameter(mandatory=$False,HelpMessage='Expand the response)')]
        [string]
        $expand,
        [parameter(mandatory=$False,HelpMessage='Name of the resource group)')]
        [string]
        $groupName,
        [parameter(mandatory=$False,HelpMessage='Name of the Task)')]
        [string]
        $taskName,
        [parameter(mandatory=$False,HelpMessage='Name of the service)')]
        [string]
        $serviceName,
        [parameter(mandatory=$False,HelpMessage='Name of the project)')]
        [string]
        $projectName
    )

    process
    {
        $arguments = @{}
        $arguments["groupName"] = $groupName
        $arguments["projectName"] = $projectName
        $arguments["serviceName"] = $serviceName
        $arguments["taskName"] = $taskName

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

        $functionObject = Invoke-PulumiFunction -Name azure-native:datamigration:getTask -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionDatamigrationListSqlMigrationServiceMonitoringData
{
    param (
        [parameter(mandatory=$False,HelpMessage='Name of the SQL Migration Service.)')]
        [string]
        $sqlMigrationServiceName,
        [parameter(mandatory=$False,HelpMessage='Name of the resource group that contains the resource. You can obtain this value from the Azure Resource Manager API or the portal.)')]
        [string]
        $resourceGroupName
    )

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

        $functionObject = Invoke-PulumiFunction -Name azure-native:datamigration:listSqlMigrationServiceMonitoringData -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionDatamigrationGetProject
{
    param (
        [parameter(mandatory=$False,HelpMessage='Name of the resource group)')]
        [string]
        $groupName,
        [parameter(mandatory=$False,HelpMessage='Name of the service)')]
        [string]
        $serviceName,
        [parameter(mandatory=$False,HelpMessage='Name of the project)')]
        [string]
        $projectName
    )

    process
    {
        $arguments = @{}
        $arguments["groupName"] = $groupName
        $arguments["projectName"] = $projectName
        $arguments["serviceName"] = $serviceName

        $functionObject = Invoke-PulumiFunction -Name azure-native:datamigration:getProject -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
class SqlConnectionInfo
{
    [string] $password
    [string] $type
    [string] $additionalSettings
    [string] $userName
    [bool] $trustServerCertificate
    [string] $dataSource
    [ValidateSet('SqlOnPrem')]
    [string] $platform
    [ValidateSet('None', 'WindowsAuthentication', 'SqlAuthentication', 'ActiveDirectoryIntegrated', 'ActiveDirectoryPassword')]
    [string] $authentication
    [ValidateSet('None', 'WindowsAuthentication', 'SqlAuthentication', 'ActiveDirectoryIntegrated', 'ActiveDirectoryPassword')]
    [bool] $encryptConnection
}
function New-AzureNativeTypeDatamigrationSqlConnectionInfo
{
    param (
        [parameter(mandatory=$False,HelpMessage='Password credential.)')]
        [string]
        $password,
        [parameter(mandatory=$False,HelpMessage='Type of connection info
Expected value is ''SqlConnectionInfo''.)'
)]
        [string]
        $type,
        [parameter(mandatory=$False,HelpMessage='Additional connection settings)')]
        [string]
        $additionalSettings,
        [parameter(mandatory=$False,HelpMessage='User name)')]
        [string]
        $userName,
        [parameter(mandatory=$False,HelpMessage='Whether to trust the server certificate)')]
        [bool]
        $trustServerCertificate,
        [parameter(mandatory=$False,HelpMessage='Data source in the format Protocol:MachineName\SQLServerInstanceName,PortNumber)')]
        [string]
        $dataSource,
        [parameter(mandatory=$False,HelpMessage='Server platform type for connection)')]
        [string]
        [ValidateSet('SqlOnPrem')]
        $platform,
        [parameter(mandatory=$False,HelpMessage='Authentication type to use for connection)')]
        [string]
        [ValidateSet('None', 'WindowsAuthentication', 'SqlAuthentication', 'ActiveDirectoryIntegrated', 'ActiveDirectoryPassword')]
        $authentication,
        [parameter(mandatory=$False,HelpMessage='Whether to encrypt the connection)')]
        [bool]
        $encryptConnection
    )

    process
    {
        return $([SqlConnectionInfo]$PSBoundParameters)
    }
}
function New-AzureNativeDatamigrationProject
{
    [Alias('azure_native_datamigration_project')]
    param (
        [parameter(mandatory=$False,HelpMessage='Name of the resource group)')]
        [string]
        $groupName,
        [parameter(mandatory=$False,HelpMessage='Information for connecting to target)')]
        [SqlConnectionInfo]
        $targetConnectionInfo,
        [parameter(mandatory=$False,HelpMessage='Name of the service)')]
        [string]
        $serviceName,
        [parameter(mandatory=$False,HelpMessage='Target platform for the project)')]
        [string]
        [ValidateSet('SQLDB', 'Unknown')]
        $targetPlatform,
        [parameter(mandatory=$False,HelpMessage='Source platform for the project)')]
        [string]
        [ValidateSet('SQL', 'Unknown')]
        $sourcePlatform,
        [parameter(mandatory=$False,HelpMessage='Resource tags.)')]
        [hashtable]
        $tags,
        [parameter(mandatory=$False,HelpMessage='List of DatabaseInfo)')]
        $databasesInfo,
        [parameter(mandatory=$False,HelpMessage='Information for connecting to source)')]
        [SqlConnectionInfo]
        $sourceConnectionInfo,
        [parameter(mandatory=$False,HelpMessage='Name of the project)')]
        [string]
        $projectName,
        [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:datamigration:Project")

        $resource.properties["groupName"] = $groupName
        $resource.properties["serviceName"] = $serviceName
        $resource.properties["sourcePlatform"] = $sourcePlatform
        $resource.properties["targetPlatform"] = $targetPlatform

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

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

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
function New-AzureNativeDatamigrationSqlMigrationService
{
    [Alias('azure_native_datamigration_sqlmigrationservice')]
    param (
        [parameter(mandatory=$False,HelpMessage='Name of the resource group that contains the resource. You can obtain this value from the Azure Resource Manager API or the portal.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage=')')]
        [hashtable]
        $tags,
        [parameter(mandatory=$False,HelpMessage='Name of the SQL Migration Service.)')]
        [string]
        $sqlMigrationServiceName,
        [parameter(mandatory=$False,HelpMessage=')')]
        [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:datamigration:SqlMigrationService")

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
class SqlConnectionInformation
{
    [string] $userName
    [bool] $encryptConnection
    [string] $authentication
    [bool] $trustServerCertificate
    [string] $dataSource
    [string] $password
}
function New-AzureNativeTypeDatamigrationSqlConnectionInformation
{
    param (
        [parameter(mandatory=$False,HelpMessage='User name to connect to source SQL.)')]
        [string]
        $userName,
        [parameter(mandatory=$False,HelpMessage='Whether to encrypt connection or not.)')]
        [bool]
        $encryptConnection,
        [parameter(mandatory=$False,HelpMessage='Authentication type.)')]
        [string]
        $authentication,
        [parameter(mandatory=$False,HelpMessage='Whether to trust server certificate or not.)')]
        [bool]
        $trustServerCertificate,
        [parameter(mandatory=$False,HelpMessage='Data source.)')]
        [string]
        $dataSource,
        [parameter(mandatory=$False,HelpMessage='Password to connect to source SQL.)')]
        [string]
        $password
    )

    process
    {
        return $([SqlConnectionInformation]$PSBoundParameters)
    }
}
class DatabaseMigrationPropertiesSqlDb
{
    [SqlConnectionInformation] $sourceSqlConnection
    [string] $migrationService
    [string] $targetDatabaseCollation
    [string] $migrationOperationId
    [string] $kind
    [string[]] $tableList
    [string] $provisioningError
    [string] $scope
    [SqlConnectionInformation] $targetSqlConnection
    [string] $sourceDatabaseName
}
function New-AzureNativeTypeDatamigrationDatabaseMigrationPropertiesSqlDb
{
    param (
        [parameter(mandatory=$False,HelpMessage='Source SQL Server connection details.)')]
        [SqlConnectionInformation]
        $sourceSqlConnection,
        [parameter(mandatory=$False,HelpMessage='Resource Id of the Migration Service.)')]
        [string]
        $migrationService,
        [parameter(mandatory=$False,HelpMessage='Database collation to be used for the target database.)')]
        [string]
        $targetDatabaseCollation,
        [parameter(mandatory=$False,HelpMessage='ID tracking current migration operation.)')]
        [string]
        $migrationOperationId,
        [parameter(mandatory=$False,HelpMessage='
Expected value is ''SqlDb''.)'
)]
        [string]
        $kind,
        [parameter(mandatory=$False,HelpMessage='List of tables to copy.)')]
        [string[]]
        $tableList,
        [parameter(mandatory=$False,HelpMessage='Error message for migration provisioning failure, if any.)')]
        [string]
        $provisioningError,
        [parameter(mandatory=$False,HelpMessage='Resource Id of the target resource (SQL VM or SQL Managed Instance).)')]
        [string]
        $scope,
        [parameter(mandatory=$False,HelpMessage='Target SQL DB connection details.)')]
        [SqlConnectionInformation]
        $targetSqlConnection,
        [parameter(mandatory=$False,HelpMessage='Name of the source database.)')]
        [string]
        $sourceDatabaseName
    )

    process
    {
        return $([DatabaseMigrationPropertiesSqlDb]$PSBoundParameters)
    }
}
function New-AzureNativeDatamigrationDatabaseMigrationsSqlDb
{
    [Alias('azure_native_datamigration_databasemigrationssqldb')]
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the target database.)')]
        [string]
        $targetDbName,
        [parameter(mandatory=$False,HelpMessage='Name of the resource group that contains the resource. You can obtain this value from the Azure Resource Manager API or the portal.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Database Migration Resource properties for SQL database.)')]
        [DatabaseMigrationPropertiesSqlDb]
        $properties,
        [parameter(mandatory=$False,HelpMessage=')')]
        [string]
        $sqlDbInstanceName,
        [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:datamigration:DatabaseMigrationsSqlDb")

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
class FileShare
{
    [ValidateSet('CreateBackup', 'ExistingBackup')]
    [string] $userName
    [ValidateSet('CreateBackup', 'ExistingBackup')]
    [string] $path
    [ValidateSet('CreateBackup', 'ExistingBackup')]
    [string] $password
}
function New-AzureNativeTypeDatamigrationFileShare
{
    param (
        [parameter(mandatory=$False,HelpMessage='User name credential to connect to the share location)')]
        [string]
        $userName,
        [parameter(mandatory=$False,HelpMessage='The folder path for this share.)')]
        [string]
        $path,
        [parameter(mandatory=$False,HelpMessage='Password credential used to connect to the share location.)')]
        [string]
        $password
    )

    process
    {
        return $([FileShare]$PSBoundParameters)
    }
}
class MigrateSqlServerSqlMIDatabaseInput
{
    [ValidateSet('CreateBackup', 'ExistingBackup')]
    [FileShare] $backupFileShare
    [ValidateSet('CreateBackup', 'ExistingBackup')]
    [string[]] $backupFilePaths
    [ValidateSet('CreateBackup', 'ExistingBackup')]
    [string] $restoreDatabaseName
    [ValidateSet('CreateBackup', 'ExistingBackup')]
    [string] $name
}
function New-AzureNativeTypeDatamigrationMigrateSqlServerSqlMIDatabaseInput
{
    param (
        [parameter(mandatory=$False,HelpMessage='Backup file share information for backing up this database.)')]
        [FileShare]
        $backupFileShare,
        [parameter(mandatory=$False,HelpMessage='The list of backup files to be used in case of existing backups.)')]
        [string[]]
        $backupFilePaths,
        [parameter(mandatory=$False,HelpMessage='Name of the database at destination)')]
        [string]
        $restoreDatabaseName,
        [parameter(mandatory=$False,HelpMessage='Name of the database)')]
        [string]
        $name
    )

    process
    {
        return $([MigrateSqlServerSqlMIDatabaseInput]$PSBoundParameters)
    }
}
class BlobShare
{
    [ValidateSet('CreateBackup', 'ExistingBackup')]
    [string] $sasUri
}
function New-AzureNativeTypeDatamigrationBlobShare
{
    param (
        [parameter(mandatory=$False,HelpMessage='SAS URI of Azure Storage Account Container.)')]
        [string]
        $sasUri
    )

    process
    {
        return $([BlobShare]$PSBoundParameters)
    }
}
class ValidateMigrationInputSqlServerSqlMITaskInput
{
    [string[]] $selectedLogins
    [ValidateSet('CreateBackup', 'ExistingBackup')]
    [string] $backupMode
    [ValidateSet('CreateBackup', 'ExistingBackup')]
    [MigrateSqlServerSqlMIDatabaseInput[]] $selectedDatabases
    [ValidateSet('CreateBackup', 'ExistingBackup')]
    [FileShare] $backupFileShare
    [ValidateSet('CreateBackup', 'ExistingBackup')]
    [SqlConnectionInfo] $targetConnectionInfo
    [ValidateSet('CreateBackup', 'ExistingBackup')]
    [SqlConnectionInfo] $sourceConnectionInfo
    [ValidateSet('CreateBackup', 'ExistingBackup')]
    [BlobShare] $backupBlobShare
}
function New-AzureNativeTypeDatamigrationValidateMigrationInputSqlServerSqlMITaskInput
{
    param (
        [parameter(mandatory=$False,HelpMessage='Logins to migrate)')]
        [string[]]
        $selectedLogins,
        [parameter(mandatory=$False,HelpMessage='Backup Mode to specify whether to use existing backup or create new backup.)')]
        [string]
        [ValidateSet('CreateBackup', 'ExistingBackup')]
        $backupMode,
        [parameter(mandatory=$False,HelpMessage='Databases to migrate)')]
        $selectedDatabases,
        [parameter(mandatory=$False,HelpMessage='Backup file share information for all selected databases.)')]
        [FileShare]
        $backupFileShare,
        [parameter(mandatory=$False,HelpMessage='Information for connecting to target)')]
        [SqlConnectionInfo]
        $targetConnectionInfo,
        [parameter(mandatory=$False,HelpMessage='Information for connecting to source)')]
        [SqlConnectionInfo]
        $sourceConnectionInfo,
        [parameter(mandatory=$False,HelpMessage='SAS URI of Azure Storage Account Container to be used for storing backup files.)')]
        [BlobShare]
        $backupBlobShare
    )

    process
    {
        return $([ValidateMigrationInputSqlServerSqlMITaskInput]$PSBoundParameters)
    }
}
class ValidateMigrationInputSqlServerSqlMITaskProperties
{
    [ValidateMigrationInputSqlServerSqlMITaskInput] $input
    [string] $taskType
}
function New-AzureNativeTypeDatamigrationValidateMigrationInputSqlServerSqlMITaskProperties
{
    param (
        [parameter(mandatory=$False,HelpMessage='Task input)')]
        [ValidateMigrationInputSqlServerSqlMITaskInput]
        $input,
        [parameter(mandatory=$False,HelpMessage='Task type.
Expected value is ''ValidateMigrationInput.SqlServer.AzureSqlDbMI''.)'
)]
        [string]
        $taskType
    )

    process
    {
        return $([ValidateMigrationInputSqlServerSqlMITaskProperties]$PSBoundParameters)
    }
}
function New-AzureNativeDatamigrationTask
{
    [Alias('azure_native_datamigration_task')]
    param (
        [parameter(mandatory=$False,HelpMessage='Name of the service)')]
        [string]
        $serviceName,
        [parameter(mandatory=$False,HelpMessage='Name of the resource group)')]
        [string]
        $groupName,
        [parameter(mandatory=$False,HelpMessage='Name of the Task)')]
        [string]
        $taskName,
        [parameter(mandatory=$False,HelpMessage='Custom task properties)')]
        [ValidateMigrationInputSqlServerSqlMITaskProperties]
        $properties,
        [parameter(mandatory=$False,HelpMessage='Name of the project)')]
        [string]
        $projectName,
        [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:datamigration:Task")

        $resource.properties["groupName"] = $groupName
        $resource.properties["projectName"] = $projectName
        $resource.properties["serviceName"] = $serviceName

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
class ProjectFileProperties
{
    [string] $filePath
    [string] $mediaType
    [string] $extension
}
function New-AzureNativeTypeDatamigrationProjectFileProperties
{
    param (
        [parameter(mandatory=$False,HelpMessage='Relative path of this file resource. This property can be set when creating or updating the file resource.)')]
        [string]
        $filePath,
        [parameter(mandatory=$False,HelpMessage='File content type. This property can be modified to reflect the file content type.)')]
        [string]
        $mediaType,
        [parameter(mandatory=$False,HelpMessage='Optional File extension. If submitted it should not have a leading period and must match the extension from filePath.)')]
        [string]
        $extension
    )

    process
    {
        return $([ProjectFileProperties]$PSBoundParameters)
    }
}
function New-AzureNativeDatamigrationFile
{
    [Alias('azure_native_datamigration_file')]
    param (
        [parameter(mandatory=$False,HelpMessage='Name of the service)')]
        [string]
        $serviceName,
        [parameter(mandatory=$False,HelpMessage='Name of the resource group)')]
        [string]
        $groupName,
        [parameter(mandatory=$False,HelpMessage='Custom file properties)')]
        [ProjectFileProperties]
        $properties,
        [parameter(mandatory=$False,HelpMessage='Name of the File)')]
        [string]
        $fileName,
        [parameter(mandatory=$False,HelpMessage='Name of the project)')]
        [string]
        $projectName,
        [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:datamigration:File")

        $resource.properties["groupName"] = $groupName
        $resource.properties["projectName"] = $projectName
        $resource.properties["serviceName"] = $serviceName

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
class ServiceSku
{
    [int] $capacity
    [string] $size
    [string] $family
    [string] $tier
    [string] $name
}
function New-AzureNativeTypeDatamigrationServiceSku
{
    param (
        [parameter(mandatory=$False,HelpMessage='The capacity of the SKU, if it supports scaling)')]
        [int]
        $capacity,
        [parameter(mandatory=$False,HelpMessage='The size of the SKU, used when the name alone does not denote a service size or when a SKU has multiple performance classes within a family, e.g. ''A1'' for virtual machines)')]
        [string]
        $size,
        [parameter(mandatory=$False,HelpMessage='The SKU family, used when the service has multiple performance classes within a tier, such as ''A'', ''D'', etc. for virtual machines)')]
        [string]
        $family,
        [parameter(mandatory=$False,HelpMessage='The tier of the SKU, such as ''Free'', ''Basic'', ''Standard'', or ''Premium'')')]
        [string]
        $tier,
        [parameter(mandatory=$False,HelpMessage='The unique name of the SKU, such as ''P3'')')]
        [string]
        $name
    )

    process
    {
        return $([ServiceSku]$PSBoundParameters)
    }
}
function New-AzureNativeDatamigrationService
{
    [Alias('azure_native_datamigration_service')]
    param (
        [parameter(mandatory=$False,HelpMessage='Service SKU)')]
        [ServiceSku]
        $sku,
        [parameter(mandatory=$False,HelpMessage='Resource tags.)')]
        [hashtable]
        $tags,
        [parameter(mandatory=$False,HelpMessage='Name of the service)')]
        [string]
        $serviceName,
        [parameter(mandatory=$False,HelpMessage='The public key of the service, used to encrypt secrets sent to the service)')]
        [string]
        $publicKey,
        [parameter(mandatory=$False,HelpMessage='Resource location.)')]
        [string]
        $location,
        [parameter(mandatory=$False,HelpMessage='Name of the resource group)')]
        [string]
        $groupName,
        [parameter(mandatory=$False,HelpMessage='The resource kind. Only ''vm'' (the default) is supported.)')]
        [string]
        $kind,
        [parameter(mandatory=$False,HelpMessage='The ID of the Microsoft.Network/virtualNetworks/subnets resource to which the service should be joined)')]
        [string]
        $virtualSubnetId,
        [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:datamigration:Service")

        $resource.properties["groupName"] = $groupName
        $resource.properties["virtualSubnetId"] = $virtualSubnetId

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

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

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

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

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

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

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