pspulumiyaml.azurenative.migrate.psm1

using module pspulumiyaml
function Invoke-AzureNativeFunctionMigrateGetMigrateProject
{
    param (
        [parameter(mandatory=$False,HelpMessage='Name of the Azure Resource Group that migrate project is part of.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Name of the Azure Migrate project.)')]
        [string]
        $migrateProjectName
    )

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

        $functionObject = Invoke-PulumiFunction -Name azure-native:migrate:getMigrateProject -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionMigrateGetVMwareCollector
{
    param (
        [parameter(mandatory=$False,HelpMessage='Name of the Azure Resource Group that project is part of.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Unique name of a VMware collector within a project.)')]
        [string]
        $vmWareCollectorName,
        [parameter(mandatory=$False,HelpMessage='Name of the Azure Migrate project.)')]
        [string]
        $projectName
    )

    process
    {
        $arguments = @{}
        $arguments["projectName"] = $projectName
        $arguments["resourceGroupName"] = $resourceGroupName
        $arguments["vmWareCollectorName"] = $vmWareCollectorName

        $functionObject = Invoke-PulumiFunction -Name azure-native:migrate:getVMwareCollector -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionMigrateGetSolution
{
    param (
        [parameter(mandatory=$False,HelpMessage='Name of the Azure Resource Group that migrate project is part of.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Unique name of a migration solution within a migrate project.)')]
        [string]
        $solutionName,
        [parameter(mandatory=$False,HelpMessage='Name of the Azure Migrate project.)')]
        [string]
        $migrateProjectName
    )

    process
    {
        $arguments = @{}
        $arguments["migrateProjectName"] = $migrateProjectName
        $arguments["resourceGroupName"] = $resourceGroupName
        $arguments["solutionName"] = $solutionName

        $functionObject = Invoke-PulumiFunction -Name azure-native:migrate:getSolution -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionMigrateGetMoveResource
{
    param (
        [parameter(mandatory=$False,HelpMessage='The Move Resource Name.)')]
        [string]
        $moveResourceName,
        [parameter(mandatory=$False,HelpMessage='The Resource Group Name.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The Move Collection Name.)')]
        [string]
        $moveCollectionName
    )

    process
    {
        $arguments = @{}
        $arguments["moveCollectionName"] = $moveCollectionName
        $arguments["moveResourceName"] = $moveResourceName
        $arguments["resourceGroupName"] = $resourceGroupName

        $functionObject = Invoke-PulumiFunction -Name azure-native:migrate:getMoveResource -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionMigrateGetPrivateEndpointConnection
{
    param (
        [parameter(mandatory=$False,HelpMessage='Unique name of a private endpoint connection within a project.)')]
        [string]
        $privateEndpointConnectionName,
        [parameter(mandatory=$False,HelpMessage='Name of the Azure Resource Group that project is part of.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Name of the Azure Migrate project.)')]
        [string]
        $projectName
    )

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

        $functionObject = Invoke-PulumiFunction -Name azure-native:migrate:getPrivateEndpointConnection -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionMigrateGetImportCollector
{
    param (
        [parameter(mandatory=$False,HelpMessage='Name of the Azure Resource Group that project is part of.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Unique name of a Import collector within a project.)')]
        [string]
        $importCollectorName,
        [parameter(mandatory=$False,HelpMessage='Name of the Azure Migrate project.)')]
        [string]
        $projectName
    )

    process
    {
        $arguments = @{}
        $arguments["importCollectorName"] = $importCollectorName
        $arguments["projectName"] = $projectName
        $arguments["resourceGroupName"] = $resourceGroupName

        $functionObject = Invoke-PulumiFunction -Name azure-native:migrate:getImportCollector -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionMigrateGetMoveCollection
{
    param (
        [parameter(mandatory=$False,HelpMessage='The Move Collection Name.)')]
        [string]
        $moveCollectionName,
        [parameter(mandatory=$False,HelpMessage='The Resource Group Name.)')]
        [string]
        $resourceGroupName
    )

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

        $functionObject = Invoke-PulumiFunction -Name azure-native:migrate:getMoveCollection -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionMigrateGetAssessment
{
    param (
        [parameter(mandatory=$False,HelpMessage='Name of the Azure Resource Group that project is part of.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Unique name of an assessment within a project.)')]
        [string]
        $assessmentName,
        [parameter(mandatory=$False,HelpMessage='Unique name of a group within a project.)')]
        [string]
        $groupName,
        [parameter(mandatory=$False,HelpMessage='Name of the Azure Migrate project.)')]
        [string]
        $projectName
    )

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

        $functionObject = Invoke-PulumiFunction -Name azure-native:migrate:getAssessment -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionMigrateGetServerCollector
{
    param (
        [parameter(mandatory=$False,HelpMessage='Unique name of a Server collector within a project.)')]
        [string]
        $serverCollectorName,
        [parameter(mandatory=$False,HelpMessage='Name of the Azure Resource Group that project is part of.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Name of the Azure Migrate project.)')]
        [string]
        $projectName
    )

    process
    {
        $arguments = @{}
        $arguments["projectName"] = $projectName
        $arguments["resourceGroupName"] = $resourceGroupName
        $arguments["serverCollectorName"] = $serverCollectorName

        $functionObject = Invoke-PulumiFunction -Name azure-native:migrate:getServerCollector -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionMigrateGetSolutionConfig
{
    param (
        [parameter(mandatory=$False,HelpMessage='Name of the Azure Resource Group that migrate project is part of.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Unique name of a migration solution within a migrate project.)')]
        [string]
        $solutionName,
        [parameter(mandatory=$False,HelpMessage='Name of the Azure Migrate project.)')]
        [string]
        $migrateProjectName
    )

    process
    {
        $arguments = @{}
        $arguments["migrateProjectName"] = $migrateProjectName
        $arguments["resourceGroupName"] = $resourceGroupName
        $arguments["solutionName"] = $solutionName

        $functionObject = Invoke-PulumiFunction -Name azure-native:migrate:getSolutionConfig -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionMigrateGetGroup
{
    param (
        [parameter(mandatory=$False,HelpMessage='Name of the Azure Resource Group that project is part of.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Unique name of a group within a project.)')]
        [string]
        $groupName,
        [parameter(mandatory=$False,HelpMessage='Name of the Azure Migrate project.)')]
        [string]
        $projectName
    )

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

        $functionObject = Invoke-PulumiFunction -Name azure-native:migrate:getGroup -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionMigrateGetProject
{
    param (
        [parameter(mandatory=$False,HelpMessage='Name of the Azure Resource Group that project is part of.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Name of the Azure Migrate project.)')]
        [string]
        $projectName
    )

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

        $functionObject = Invoke-PulumiFunction -Name azure-native:migrate:getProject -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionMigrateGetHyperVCollector
{
    param (
        [parameter(mandatory=$False,HelpMessage='Name of the Azure Resource Group that project is part of.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Unique name of a Hyper-V collector within a project.)')]
        [string]
        $hyperVCollectorName,
        [parameter(mandatory=$False,HelpMessage='Name of the Azure Migrate project.)')]
        [string]
        $projectName
    )

    process
    {
        $arguments = @{}
        $arguments["hyperVCollectorName"] = $hyperVCollectorName
        $arguments["projectName"] = $projectName
        $arguments["resourceGroupName"] = $resourceGroupName

        $functionObject = Invoke-PulumiFunction -Name azure-native:migrate:getHyperVCollector -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionMigrateGetProjectKeys
{
    param (
        [parameter(mandatory=$False,HelpMessage='Name of the Azure Resource Group that project is part of.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Name of the Azure Migrate project.)')]
        [string]
        $projectName
    )

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

        $functionObject = Invoke-PulumiFunction -Name azure-native:migrate:getProjectKeys -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
class CollectorBodyAgentSpnProperties
{
    [string] $audience
    [string] $authority
    [string] $applicationId
    [string] $objectId
    [string] $tenantId
}
function New-AzureNativeTypeMigrateCollectorBodyAgentSpnProperties
{
    param (
        [parameter(mandatory=$False,HelpMessage='Intended audience for the service principal.)')]
        [string]
        $audience,
        [parameter(mandatory=$False,HelpMessage='AAD Authority URL which was used to request the token for the service principal.)')]
        [string]
        $authority,
        [parameter(mandatory=$False,HelpMessage='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='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='Tenant Id for the service principal with which the on-premise management/data plane components would communicate with our Azure services.)')]
        [string]
        $tenantId
    )

    process
    {
        return $([CollectorBodyAgentSpnProperties]$PSBoundParameters)
    }
}
class CollectorAgentProperties
{
    [CollectorBodyAgentSpnProperties] $spnDetails
}
function New-AzureNativeTypeMigrateCollectorAgentProperties
{
    param (
        [parameter(mandatory=$False,HelpMessage=')')]
        [CollectorBodyAgentSpnProperties]
        $spnDetails
    )

    process
    {
        return $([CollectorAgentProperties]$PSBoundParameters)
    }
}
class CollectorProperties
{
    [string] $discoverySiteId
    [CollectorAgentProperties] $agentProperties
}
function New-AzureNativeTypeMigrateCollectorProperties
{
    param (
        [parameter(mandatory=$False,HelpMessage='The ARM id of the discovery service site.)')]
        [string]
        $discoverySiteId,
        [parameter(mandatory=$False,HelpMessage=')')]
        [CollectorAgentProperties]
        $agentProperties
    )

    process
    {
        return $([CollectorProperties]$PSBoundParameters)
    }
}
function New-AzureNativeMigrateHyperVCollector
{
    [Alias('azure_native_migrate_hypervcollector')]
    param (
        [parameter(mandatory=$False,HelpMessage='Name of the Azure Resource Group that project is part of.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage=')')]
        [CollectorProperties]
        $properties,
        [parameter(mandatory=$False,HelpMessage=')')]
        [string]
        $eTag,
        [parameter(mandatory=$False,HelpMessage='Unique name of a Hyper-V collector within a project.)')]
        [string]
        $hyperVCollectorName,
        [parameter(mandatory=$False,HelpMessage='Name of the Azure Migrate 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:migrate:HyperVCollector")

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
class MoveResourceDependencyOverride
{
    [string] $id
    [string] $targetId
}
function New-AzureNativeTypeMigrateMoveResourceDependencyOverride
{
    param (
        [parameter(mandatory=$False,HelpMessage='Gets or sets the ARM ID of the dependent resource.)')]
        [string]
        $id,
        [parameter(mandatory=$False,HelpMessage='Gets or sets the resource ARM id of either the MoveResource or the resource ARM ID of
the dependent resource.)'
)]
        [string]
        $targetId
    )

    process
    {
        return $([MoveResourceDependencyOverride]$PSBoundParameters)
    }
}
class MoveResourceProperties
{
    [string] $sourceId
    [string] $existingTargetId
    [MoveResourceDependencyOverride[]] $dependsOnOverrides
    [object] $resourceSettings #todo add class here
}
class NsgReference
{
    [string] $sourceArmResourceId
}
function New-AzureNativeTypeMigrateNsgReference
{
    param (
        [parameter(mandatory=$False,HelpMessage='Gets the ARM resource ID of the tracked resource being referenced.)')]
        [string]
        $sourceArmResourceId
    )

    process
    {
        return $([NsgReference]$PSBoundParameters)
    }
}
class SubnetResourceSettings
{
    [string] $name
    [string] $addressPrefix
    [NsgReference] $networkSecurityGroup
}
function New-AzureNativeTypeMigrateSubnetResourceSettings
{
    param (
        [parameter(mandatory=$False,HelpMessage='Gets or sets the Subnet name.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='Gets or sets address prefix for the subnet.)')]
        [string]
        $addressPrefix,
        [parameter(mandatory=$False,HelpMessage='Defines reference to NSG.)')]
        [NsgReference]
        $networkSecurityGroup
    )

    process
    {
        return $([SubnetResourceSettings]$PSBoundParameters)
    }
}
class VirtualNetworkResourceSettings
{
    [bool] $enableDdosProtection
    [string[]] $addressSpace
    [string] $resourceType
    [SubnetResourceSettings[]] $subnets
    [string] $targetResourceName
    [string[]] $dnsServers
}
function New-AzureNativeTypeMigrateVirtualNetworkResourceSettings
{
    param (
        [parameter(mandatory=$False,HelpMessage='Gets or sets a value indicating whether gets or sets whether the
DDOS protection should be switched on.)'
)]
        [bool]
        $enableDdosProtection,
        [parameter(mandatory=$False,HelpMessage='Gets or sets the address prefixes for the virtual network.)')]
        [string[]]
        $addressSpace,
        [parameter(mandatory=$False,HelpMessage='The resource type. For example, the value can be Microsoft.Compute/virtualMachines.
Expected value is ''Microsoft.Network/virtualNetworks''.)'
)]
        [string]
        $resourceType,
        [parameter(mandatory=$False,HelpMessage='Gets or sets List of subnets in a VirtualNetwork.)')]
        $subnets,
        [parameter(mandatory=$False,HelpMessage='Gets or sets the target Resource name.)')]
        [string]
        $targetResourceName,
        [parameter(mandatory=$False,HelpMessage='Gets or sets DHCPOptions that contains an array of DNS servers available to VMs
deployed in the virtual network.)'
)]
        [string[]]
        $dnsServers
    )

    process
    {
        return $([VirtualNetworkResourceSettings]$PSBoundParameters)
    }
}
function New-AzureNativeTypeMigrateMoveResourceProperties
{
    param (
        [parameter(mandatory=$False,HelpMessage='Gets or sets the Source ARM Id of the resource.)')]
        [string]
        $sourceId,
        [parameter(mandatory=$False,HelpMessage='Gets or sets the existing target ARM Id of the resource.)')]
        [string]
        $existingTargetId,
        [parameter(mandatory=$False,HelpMessage='Gets or sets the move resource dependencies overrides.)')]
        $dependsOnOverrides,
        [parameter(mandatory=$False,HelpMessage='Gets or sets the resource settings.)')]
        [VirtualNetworkResourceSettings]
        $resourceSettings
    )

    process
    {
        return $([MoveResourceProperties]$PSBoundParameters)
    }
}
function New-AzureNativeMigrateMoveResource
{
    [Alias('azure_native_migrate_moveresource')]
    param (
        [parameter(mandatory=$False,HelpMessage='The Move Resource Name.)')]
        [string]
        $moveResourceName,
        [parameter(mandatory=$False,HelpMessage='The Resource Group Name.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Defines the move resource properties.)')]
        [MoveResourceProperties]
        $properties,
        [parameter(mandatory=$False,HelpMessage='The Move Collection Name.)')]
        [string]
        $moveCollectionName,
        [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:migrate:MoveResource")

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
function New-AzureNativeMigrateVMwareCollector
{
    [Alias('azure_native_migrate_vmwarecollector')]
    param (
        [parameter(mandatory=$False,HelpMessage='Name of the Azure Resource Group that project is part of.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage=')')]
        [CollectorProperties]
        $properties,
        [parameter(mandatory=$False,HelpMessage=')')]
        [string]
        $eTag,
        [parameter(mandatory=$False,HelpMessage='Unique name of a VMware collector within a project.)')]
        [string]
        $vmWareCollectorName,
        [parameter(mandatory=$False,HelpMessage='Name of the Azure Migrate 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:migrate:VMwareCollector")

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
class ProjectProperties
{
    [string] $customerWorkspaceLocation
    [string] $customerWorkspaceId
    [ValidateSet('Active', 'Inactive')]
    [string] $projectStatus
    [ValidateSet('Active', 'Inactive')]
    [string] $customerStorageAccountArmId
    [ValidateSet('Active', 'Inactive')]
    [string] $publicNetworkAccess
    [ValidateSet('Active', 'Inactive')]
    [string] $assessmentSolutionId
}
function New-AzureNativeTypeMigrateProjectProperties
{
    param (
        [parameter(mandatory=$False,HelpMessage='Location of service map workspace created by customer.)')]
        [string]
        $customerWorkspaceLocation,
        [parameter(mandatory=$False,HelpMessage='The ARM id of service map workspace created by customer.)')]
        [string]
        $customerWorkspaceId,
        [parameter(mandatory=$False,HelpMessage='Assessment project status.)')]
        [string]
        [ValidateSet('Active', 'Inactive')]
        $projectStatus,
        [parameter(mandatory=$False,HelpMessage='The ARM id of the storage account used for interactions when public access is disabled.)')]
        [string]
        $customerStorageAccountArmId,
        [parameter(mandatory=$False,HelpMessage='This value can be set to ''enabled'' to avoid breaking changes on existing customer resources and templates. If set to ''disabled'', traffic over public interface is not allowed, and private endpoint connections would be the exclusive access method.)')]
        [string]
        $publicNetworkAccess,
        [parameter(mandatory=$False,HelpMessage='Assessment solution ARM id tracked by Microsoft.Migrate/migrateProjects.)')]
        [string]
        $assessmentSolutionId
    )

    process
    {
        return $([ProjectProperties]$PSBoundParameters)
    }
}
function New-AzureNativeMigrateProject
{
    [Alias('azure_native_migrate_project')]
    param (
        [parameter(mandatory=$False,HelpMessage='Name of the Azure Migrate project.)')]
        [string]
        $projectName,
        [parameter(mandatory=$False,HelpMessage='Name of the Azure Resource Group that project is part of.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Tags provided by Azure Tagging service.)')]
        $tags,
        [parameter(mandatory=$False,HelpMessage='Properties of the project.)')]
        [ProjectProperties]
        $properties,
        [parameter(mandatory=$False,HelpMessage='For optimistic concurrency control.)')]
        [string]
        $eTag,
        [parameter(mandatory=$False,HelpMessage='Azure location in which project is created.)')]
        [string]
        $location,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid
    )

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

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

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

        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
    }
}
function New-AzureNativeMigrateServerCollector
{
    [Alias('azure_native_migrate_servercollector')]
    param (
        [parameter(mandatory=$False,HelpMessage='Unique name of a Server collector within a project.)')]
        [string]
        $serverCollectorName,
        [parameter(mandatory=$False,HelpMessage='Name of the Azure Resource Group that project is part of.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage=')')]
        [CollectorProperties]
        $properties,
        [parameter(mandatory=$False,HelpMessage=')')]
        [string]
        $eTag,
        [parameter(mandatory=$False,HelpMessage='Name of the Azure Migrate 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:migrate:ServerCollector")

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
class GroupProperties
{
    [string] $groupType
}
function New-AzureNativeTypeMigrateGroupProperties
{
    param (
        [parameter(mandatory=$False,HelpMessage='The type of group.)')]
        [string]
        $groupType
    )

    process
    {
        return $([GroupProperties]$PSBoundParameters)
    }
}
function New-AzureNativeMigrateGroup
{
    [Alias('azure_native_migrate_group')]
    param (
        [parameter(mandatory=$False,HelpMessage='Name of the Azure Resource Group that project is part of.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Properties of the group.)')]
        [GroupProperties]
        $properties,
        [parameter(mandatory=$False,HelpMessage='Unique name of a group within a project.)')]
        [string]
        $groupName,
        [parameter(mandatory=$False,HelpMessage='For optimistic concurrency control.)')]
        [string]
        $eTag,
        [parameter(mandatory=$False,HelpMessage='Name of the Azure Migrate 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:migrate:Group")

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
class PrivateLinkServiceConnectionState
{
    [string] $description
    [string] $actionsRequired
    [string] $status
}
function New-AzureNativeTypeMigratePrivateLinkServiceConnectionState
{
    param (
        [parameter(mandatory=$False,HelpMessage='Description of the private endpoint connection.)')]
        [string]
        $description,
        [parameter(mandatory=$False,HelpMessage='Actions required on the private endpoint connection.)')]
        [string]
        $actionsRequired,
        [parameter(mandatory=$False,HelpMessage='Connection status of the private endpoint connection.)')]
        [string]
        $status
    )

    process
    {
        return $([PrivateLinkServiceConnectionState]$PSBoundParameters)
    }
}
class PrivateEndpointConnectionProperties
{
    [PrivateLinkServiceConnectionState] $privateLinkServiceConnectionState
}
function New-AzureNativeTypeMigratePrivateEndpointConnectionProperties
{
    param (
        [parameter(mandatory=$False,HelpMessage='State of the private endpoint connection.)')]
        [PrivateLinkServiceConnectionState]
        $privateLinkServiceConnectionState
    )

    process
    {
        return $([PrivateEndpointConnectionProperties]$PSBoundParameters)
    }
}
function New-AzureNativeMigratePrivateEndpointConnection
{
    [Alias('azure_native_migrate_privateendpointconnection')]
    param (
        [parameter(mandatory=$False,HelpMessage='Name of the Azure Resource Group that project is part of.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Unique name of a private endpoint connection within a project.)')]
        [string]
        $privateEndpointConnectionName,
        [parameter(mandatory=$False,HelpMessage='Properties of the private endpoint endpoint connection.)')]
        [PrivateEndpointConnectionProperties]
        $properties,
        [parameter(mandatory=$False,HelpMessage='For optimistic concurrency control.)')]
        [string]
        $eTag,
        [parameter(mandatory=$False,HelpMessage='Name of the Azure Migrate 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:migrate:PrivateEndpointConnection")

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
class VmUptime
{
    [ValidateSet('Standard', 'Basic')]
    [int] $daysPerMonth
    [ValidateSet('Standard', 'Basic')]
    [int] $hoursPerDay
}
function New-AzureNativeTypeMigrateVmUptime
{
    param (
        [parameter(mandatory=$False,HelpMessage='Number of days in a month for VM uptime.)')]
        [int]
        $daysPerMonth,
        [parameter(mandatory=$False,HelpMessage='Number of hours per day for VM uptime.)')]
        [int]
        $hoursPerDay
    )

    process
    {
        return $([VmUptime]$PSBoundParameters)
    }
}
class AssessmentProperties
{
    [ValidateSet('Unknown', 'EastAsia', 'SoutheastAsia', 'AustraliaEast', 'AustraliaSoutheast', 'BrazilSouth', 'CanadaCentral', 'CanadaEast', 'WestEurope', 'NorthEurope', 'CentralIndia', 'SouthIndia', 'WestIndia', 'JapanEast', 'JapanWest', 'KoreaCentral', 'KoreaSouth', 'UkWest', 'UkSouth', 'NorthCentralUs', 'EastUs', 'WestUs2', 'SouthCentralUs', 'CentralUs', 'EastUs2', 'WestUs', 'WestCentralUs', 'GermanyCentral', 'GermanyNortheast', 'ChinaNorth', 'ChinaEast', 'USGovArizona', 'USGovTexas', 'USGovIowa', 'USGovVirginia', 'USDoDCentral', 'USDoDEast')]
    [string] $azureLocation
    [ValidateSet('Day', 'Week', 'Month', 'Custom')]
    [string] $timeRange
    [ValidateSet('Unknown', 'USD', 'DKK', 'CAD', 'IDR', 'JPY', 'KRW', 'NZD', 'NOK', 'RUB', 'SAR', 'ZAR', 'SEK', 'TRY', 'GBP', 'MXN', 'MYR', 'INR', 'HKD', 'BRL', 'TWD', 'EUR', 'CHF', 'ARS', 'AUD', 'CNY')]
    [string] $currency
    [ValidateSet('Percentile50', 'Percentile90', 'Percentile95', 'Percentile99')]
    [string] $percentile
    [ValidateSet('Percentile50', 'Percentile90', 'Percentile95', 'Percentile99')]
    [int] $scalingFactor
    [ValidateSet('Standard', 'Basic')]
    [string] $azurePricingTier
    [ValidateSet('Standard', 'Basic')]
    [VmUptime] $vmUptime
    [ValidateSet('Unknown', 'LocallyRedundant', 'ZoneRedundant', 'GeoRedundant', 'ReadAccessGeoRedundant')]
    [string] $azureStorageRedundancy
    [ValidateSet('Unknown', 'LocallyRedundant', 'ZoneRedundant', 'GeoRedundant', 'ReadAccessGeoRedundant')]
    [int] $discountPercentage
    [ValidateSet('Unknown', 'MSAZR0003P', 'MSAZR0044P', 'MSAZR0059P', 'MSAZR0060P', 'MSAZR0062P', 'MSAZR0063P', 'MSAZR0064P', 'MSAZR0029P', 'MSAZR0022P', 'MSAZR0023P', 'MSAZR0148P', 'MSAZR0025P', 'MSAZR0036P', 'MSAZR0120P', 'MSAZR0121P', 'MSAZR0122P', 'MSAZR0123P', 'MSAZR0124P', 'MSAZR0125P', 'MSAZR0126P', 'MSAZR0127P', 'MSAZR0128P', 'MSAZR0129P', 'MSAZR0130P', 'MSAZR0111P', 'MSAZR0144P', 'MSAZR0149P', 'MSMCAZR0044P', 'MSMCAZR0059P', 'MSMCAZR0060P', 'MSMCAZR0063P', 'MSMCAZR0120P', 'MSMCAZR0121P', 'MSMCAZR0125P', 'MSMCAZR0128P', 'MSAZRDE0003P', 'MSAZRDE0044P', 'MSAZRUSGOV0003P', 'EA')]
    [string] $azureOfferCode
    [ValidateSet('Unknown', 'MSAZR0003P', 'MSAZR0044P', 'MSAZR0059P', 'MSAZR0060P', 'MSAZR0062P', 'MSAZR0063P', 'MSAZR0064P', 'MSAZR0029P', 'MSAZR0022P', 'MSAZR0023P', 'MSAZR0148P', 'MSAZR0025P', 'MSAZR0036P', 'MSAZR0120P', 'MSAZR0121P', 'MSAZR0122P', 'MSAZR0123P', 'MSAZR0124P', 'MSAZR0125P', 'MSAZR0126P', 'MSAZR0127P', 'MSAZR0128P', 'MSAZR0129P', 'MSAZR0130P', 'MSAZR0111P', 'MSAZR0144P', 'MSAZR0149P', 'MSMCAZR0044P', 'MSMCAZR0059P', 'MSMCAZR0060P', 'MSMCAZR0063P', 'MSMCAZR0120P', 'MSMCAZR0121P', 'MSMCAZR0125P', 'MSMCAZR0128P', 'MSAZRDE0003P', 'MSAZRDE0044P', 'MSAZRUSGOV0003P', 'EA')]
    [string[]] $azureVmFamilies
    [ValidateSet('Unknown', 'Standard', 'Premium', 'StandardSSD', 'StandardOrPremium')]
    [string] $azureDiskType
    [ValidateSet('Unknown', 'Yes', 'No')]
    [string] $azureHybridUseBenefit
    [ValidateSet('InProgress', 'UnderReview', 'Approved')]
    [string] $stage
    [ValidateSet('None', 'RI1Year', 'RI3Year')]
    [string] $reservedInstance
    [ValidateSet('PerformanceBased', 'AsOnPremises')]
    [string] $sizingCriterion
}
function New-AzureNativeTypeMigrateAssessmentProperties
{
    param (
        [parameter(mandatory=$False,HelpMessage='Target Azure location for which the machines should be assessed. These enums are the same as used by Compute API.)')]
        [string]
        [ValidateSet('Unknown', 'EastAsia', 'SoutheastAsia', 'AustraliaEast', 'AustraliaSoutheast', 'BrazilSouth', 'CanadaCentral', 'CanadaEast', 'WestEurope', 'NorthEurope', 'CentralIndia', 'SouthIndia', 'WestIndia', 'JapanEast', 'JapanWest', 'KoreaCentral', 'KoreaSouth', 'UkWest', 'UkSouth', 'NorthCentralUs', 'EastUs', 'WestUs2', 'SouthCentralUs', 'CentralUs', 'EastUs2', 'WestUs', 'WestCentralUs', 'GermanyCentral', 'GermanyNortheast', 'ChinaNorth', 'ChinaEast', 'USGovArizona', 'USGovTexas', 'USGovIowa', 'USGovVirginia', 'USDoDCentral', 'USDoDEast')]
        $azureLocation,
        [parameter(mandatory=$False,HelpMessage='Time range of performance data used to recommend a size.)')]
        [string]
        [ValidateSet('Day', 'Week', 'Month', 'Custom')]
        $timeRange,
        [parameter(mandatory=$False,HelpMessage='Currency to report prices in.)')]
        [string]
        [ValidateSet('Unknown', 'USD', 'DKK', 'CAD', 'IDR', 'JPY', 'KRW', 'NZD', 'NOK', 'RUB', 'SAR', 'ZAR', 'SEK', 'TRY', 'GBP', 'MXN', 'MYR', 'INR', 'HKD', 'BRL', 'TWD', 'EUR', 'CHF', 'ARS', 'AUD', 'CNY')]
        $currency,
        [parameter(mandatory=$False,HelpMessage='Percentile of performance data used to recommend Azure size.)')]
        [string]
        [ValidateSet('Percentile50', 'Percentile90', 'Percentile95', 'Percentile99')]
        $percentile,
        [parameter(mandatory=$False,HelpMessage='Scaling factor used over utilization data to add a performance buffer for new machines to be created in Azure. Min Value = 1.0, Max value = 1.9, Default = 1.3.)')]
        [int]
        $scalingFactor,
        [parameter(mandatory=$False,HelpMessage='Pricing tier for Size evaluation.)')]
        [string]
        [ValidateSet('Standard', 'Basic')]
        $azurePricingTier,
        [parameter(mandatory=$False,HelpMessage='Specify the duration for which the VMs are up in the on-premises environment.)')]
        [VmUptime]
        $vmUptime,
        [parameter(mandatory=$False,HelpMessage='Storage Redundancy type offered by Azure.)')]
        [string]
        [ValidateSet('Unknown', 'LocallyRedundant', 'ZoneRedundant', 'GeoRedundant', 'ReadAccessGeoRedundant')]
        $azureStorageRedundancy,
        [parameter(mandatory=$False,HelpMessage='Custom discount percentage to be applied on final costs. Can be in the range [0, 100].)')]
        [int]
        $discountPercentage,
        [parameter(mandatory=$False,HelpMessage='Offer code according to which cost estimation is done.)')]
        [string]
        [ValidateSet('Unknown', 'MSAZR0003P', 'MSAZR0044P', 'MSAZR0059P', 'MSAZR0060P', 'MSAZR0062P', 'MSAZR0063P', 'MSAZR0064P', 'MSAZR0029P', 'MSAZR0022P', 'MSAZR0023P', 'MSAZR0148P', 'MSAZR0025P', 'MSAZR0036P', 'MSAZR0120P', 'MSAZR0121P', 'MSAZR0122P', 'MSAZR0123P', 'MSAZR0124P', 'MSAZR0125P', 'MSAZR0126P', 'MSAZR0127P', 'MSAZR0128P', 'MSAZR0129P', 'MSAZR0130P', 'MSAZR0111P', 'MSAZR0144P', 'MSAZR0149P', 'MSMCAZR0044P', 'MSMCAZR0059P', 'MSMCAZR0060P', 'MSMCAZR0063P', 'MSMCAZR0120P', 'MSMCAZR0121P', 'MSMCAZR0125P', 'MSMCAZR0128P', 'MSAZRDE0003P', 'MSAZRDE0044P', 'MSAZRUSGOV0003P', 'EA')]
        $azureOfferCode,
        [parameter(mandatory=$False,HelpMessage='List of azure VM families.)')]
        $azureVmFamilies,
        [parameter(mandatory=$False,HelpMessage='Storage type selected for this disk.)')]
        [string]
        [ValidateSet('Unknown', 'Standard', 'Premium', 'StandardSSD', 'StandardOrPremium')]
        $azureDiskType,
        [parameter(mandatory=$False,HelpMessage='AHUB discount on windows virtual machines.)')]
        [string]
        [ValidateSet('Unknown', 'Yes', 'No')]
        $azureHybridUseBenefit,
        [parameter(mandatory=$False,HelpMessage='User configurable setting that describes the status of the assessment.)')]
        [string]
        [ValidateSet('InProgress', 'UnderReview', 'Approved')]
        $stage,
        [parameter(mandatory=$False,HelpMessage='Azure reserved instance.)')]
        [string]
        [ValidateSet('None', 'RI1Year', 'RI3Year')]
        $reservedInstance,
        [parameter(mandatory=$False,HelpMessage='Assessment sizing criterion.)')]
        [string]
        [ValidateSet('PerformanceBased', 'AsOnPremises')]
        $sizingCriterion
    )

    process
    {
        return $([AssessmentProperties]$PSBoundParameters)
    }
}
function New-AzureNativeMigrateAssessment
{
    [Alias('azure_native_migrate_assessment')]
    param (
        [parameter(mandatory=$False,HelpMessage='For optimistic concurrency control.)')]
        [string]
        $eTag,
        [parameter(mandatory=$False,HelpMessage='Name of the Azure Migrate project.)')]
        [string]
        $projectName,
        [parameter(mandatory=$False,HelpMessage='Name of the Azure Resource Group that project is part of.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Properties of the assessment.)')]
        [AssessmentProperties]
        $properties,
        [parameter(mandatory=$False,HelpMessage='Unique name of an assessment within a project.)')]
        [string]
        $assessmentName,
        [parameter(mandatory=$False,HelpMessage='Unique name of a group within a project.)')]
        [string]
        $groupName,
        [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:migrate:Assessment")

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
class MigrateProjectTags
{
    [string] $additionalProperties
}
function New-AzureNativeTypeMigrateMigrateProjectTags
{
    param (
        [parameter(mandatory=$False,HelpMessage=')')]
        [string]
        $additionalProperties
    )

    process
    {
        return $([MigrateProjectTags]$PSBoundParameters)
    }
}
class MigrateProjectProperties
{
    [ValidateSet('Accepted', 'Creating', 'Deleting', 'Failed', 'Moving', 'Succeeded')]
    [string] $provisioningState
    [ValidateSet('Accepted', 'Creating', 'Deleting', 'Failed', 'Moving', 'Succeeded')]
    [string[]] $registeredTools
}
function New-AzureNativeTypeMigrateMigrateProjectProperties
{
    param (
        [parameter(mandatory=$False,HelpMessage='Provisioning state of the migrate project.)')]
        [string]
        [ValidateSet('Accepted', 'Creating', 'Deleting', 'Failed', 'Moving', 'Succeeded')]
        $provisioningState,
        [parameter(mandatory=$False,HelpMessage='Gets or sets the list of tools registered with the migrate project.)')]
        [string[]]
        $registeredTools
    )

    process
    {
        return $([MigrateProjectProperties]$PSBoundParameters)
    }
}
function New-AzureNativeMigrateMigrateProject
{
    [Alias('azure_native_migrate_migrateproject')]
    param (
        [parameter(mandatory=$False,HelpMessage='Name of the Azure Resource Group that migrate project is part of.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Name of the Azure Migrate project.)')]
        [string]
        $migrateProjectName,
        [parameter(mandatory=$False,HelpMessage='Gets or sets the tags.)')]
        [MigrateProjectTags]
        $tags,
        [parameter(mandatory=$False,HelpMessage='Gets or sets the nested properties.)')]
        [MigrateProjectProperties]
        $properties,
        [parameter(mandatory=$False,HelpMessage='Gets or sets the eTag for concurrency control.)')]
        [string]
        $eTag,
        [parameter(mandatory=$False,HelpMessage='Gets or sets the Azure location in which migrate project is created.)')]
        [string]
        $location,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid
    )

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

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

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

        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 MoveCollectionProperties
{
    [string] $sourceRegion
    [string] $targetRegion
}
function New-AzureNativeTypeMigrateMoveCollectionProperties
{
    param (
        [parameter(mandatory=$False,HelpMessage='Gets or sets the source region.)')]
        [string]
        $sourceRegion,
        [parameter(mandatory=$False,HelpMessage='Gets or sets the target region.)')]
        [string]
        $targetRegion
    )

    process
    {
        return $([MoveCollectionProperties]$PSBoundParameters)
    }
}
class Identity
{
    [string] $tenantId
    [ValidateSet('None', 'SystemAssigned', 'UserAssigned')]
    [string] $type
    [ValidateSet('None', 'SystemAssigned', 'UserAssigned')]
    [string] $principalId
}
function New-AzureNativeTypeMigrateIdentity
{
    param (
        [parameter(mandatory=$False,HelpMessage='Gets or sets the tenant id.)')]
        [string]
        $tenantId,
        [parameter(mandatory=$False,HelpMessage='The type of identity used for the resource mover service.)')]
        [string]
        [ValidateSet('None', 'SystemAssigned', 'UserAssigned')]
        $type,
        [parameter(mandatory=$False,HelpMessage='Gets or sets the principal id.)')]
        [string]
        $principalId
    )

    process
    {
        return $([Identity]$PSBoundParameters)
    }
}
function New-AzureNativeMigrateMoveCollection
{
    [Alias('azure_native_migrate_movecollection')]
    param (
        [parameter(mandatory=$False,HelpMessage='The Resource Group Name.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The Move Collection Name.)')]
        [string]
        $moveCollectionName,
        [parameter(mandatory=$False,HelpMessage='Defines the move collection properties.)')]
        [MoveCollectionProperties]
        $properties,
        [parameter(mandatory=$False,HelpMessage='Resource tags.)')]
        [hashtable]
        $tags,
        [parameter(mandatory=$False,HelpMessage='Defines the MSI properties of the Move Collection.)')]
        [Identity]
        $identity,
        [parameter(mandatory=$False,HelpMessage='The geo-location where the resource lives.)')]
        [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:migrate:MoveCollection")

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

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

        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 'location')
        {
            $resource.properties["location"] = $location
        }

        $global:pulumiresources += $resource
        return $resource
    }
}
class SolutionDetails
{
    [int] $groupCount
    [int] $assessmentCount
    [object] $extendedDetails
}
function New-AzureNativeTypeMigrateSolutionDetails
{
    param (
        [parameter(mandatory=$False,HelpMessage='Gets or sets the count of groups reported by the solution.)')]
        [int]
        $groupCount,
        [parameter(mandatory=$False,HelpMessage='Gets or sets the count of assessments reported by the solution.)')]
        [int]
        $assessmentCount,
        [parameter(mandatory=$False,HelpMessage='Gets or sets the extended details reported by the solution.)')]
        [hashtable]
        $extendedDetails
    )

    process
    {
        return $([SolutionDetails]$PSBoundParameters)
    }
}
class SolutionProperties
{
    [string] $purpose
    [string] $goal
    [SolutionDetails] $details
    [string] $status
    [string] $cleanupState
    [string] $tool
}
function New-AzureNativeTypeMigrateSolutionProperties
{
    param (
        [parameter(mandatory=$False,HelpMessage='Gets or sets the purpose of the solution.)')]
        [string]
        $purpose,
        [parameter(mandatory=$False,HelpMessage='Gets or sets the goal of the solution.)')]
        [string]
        $goal,
        [parameter(mandatory=$False,HelpMessage='Gets or sets the details of the solution.)')]
        [SolutionDetails]
        $details,
        [parameter(mandatory=$False,HelpMessage='Gets or sets the current status of the solution.)')]
        [string]
        $status,
        [parameter(mandatory=$False,HelpMessage='Gets or sets the cleanup state of the solution.)')]
        [string]
        $cleanupState,
        [parameter(mandatory=$False,HelpMessage='Gets or sets the tool being used in the solution.)')]
        [string]
        $tool
    )

    process
    {
        return $([SolutionProperties]$PSBoundParameters)
    }
}
function New-AzureNativeMigrateSolution
{
    [Alias('azure_native_migrate_solution')]
    param (
        [parameter(mandatory=$False,HelpMessage='Name of the Azure Resource Group that migrate project is part of.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Gets or sets the properties of the solution.)')]
        [SolutionProperties]
        $properties,
        [parameter(mandatory=$False,HelpMessage='Unique name of a migration solution within a migrate project.)')]
        [string]
        $solutionName,
        [parameter(mandatory=$False,HelpMessage='Name of the Azure Migrate project.)')]
        [string]
        $migrateProjectName,
        [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:migrate:Solution")

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
class ImportCollectorProperties
{
    [string] $discoverySiteId
}
function New-AzureNativeTypeMigrateImportCollectorProperties
{
    param (
        [parameter(mandatory=$False,HelpMessage=')')]
        [string]
        $discoverySiteId
    )

    process
    {
        return $([ImportCollectorProperties]$PSBoundParameters)
    }
}
function New-AzureNativeMigrateImportCollector
{
    [Alias('azure_native_migrate_importcollector')]
    param (
        [parameter(mandatory=$False,HelpMessage='Name of the Azure Resource Group that project is part of.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Unique name of a Import collector within a project.)')]
        [string]
        $importCollectorName,
        [parameter(mandatory=$False,HelpMessage=')')]
        [ImportCollectorProperties]
        $properties,
        [parameter(mandatory=$False,HelpMessage=')')]
        [string]
        $eTag,
        [parameter(mandatory=$False,HelpMessage='Name of the Azure Migrate 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:migrate:ImportCollector")

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

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

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

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

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