pspulumiyaml.azurenative.migrate.psm1

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

    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-AzureNativeFunctionMigrateGetVMwareCollector
{
    param (
        [parameter(mandatory=$False,HelpMessage='Name of the Azure Migrate project.)')]
        [string]
        $projectName,
        [parameter(mandatory=$False,HelpMessage='Unique name of a VMware collector within a project.)')]
        [string]
        $vmWareCollectorName,
        [parameter(mandatory=$False,HelpMessage='Name of the Azure Resource Group that project is part of.)')]
        [string]
        $resourceGroupName
    )

    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-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 Migrate project.)')]
        [string]
        $projectName,
        [parameter(mandatory=$False,HelpMessage='Name of the Azure Resource Group that project is part of.)')]
        [string]
        $resourceGroupName
    )

    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-AzureNativeFunctionMigrateGetGroup
{
    param (
        [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,
        [parameter(mandatory=$False,HelpMessage='Name of the Azure Resource Group that project is part of.)')]
        [string]
        $resourceGroupName
    )

    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-AzureNativeFunctionMigrateGetHyperVCollector
{
    param (
        [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=$False,HelpMessage='Name of the Azure Resource Group that project is part of.)')]
        [string]
        $resourceGroupName
    )

    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-AzureNativeFunctionMigrateGetProject
{
    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
    )

    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-AzureNativeFunctionMigrateGetImportCollector
{
    param (
        [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,
        [parameter(mandatory=$False,HelpMessage='Name of the Azure Resource Group that project is part of.)')]
        [string]
        $resourceGroupName
    )

    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-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-AzureNativeFunctionMigrateGetSolutionConfig
{
    param (
        [parameter(mandatory=$False,HelpMessage='Name of the Azure Migrate project.)')]
        [string]
        $migrateProjectName,
        [parameter(mandatory=$False,HelpMessage='Unique name of a migration solution within a migrate project.)')]
        [string]
        $solutionName,
        [parameter(mandatory=$False,HelpMessage='Name of the Azure Resource Group that migrate project is part of.)')]
        [string]
        $resourceGroupName
    )

    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-AzureNativeFunctionMigrateGetAssessment
{
    param (
        [parameter(mandatory=$False,HelpMessage='Unique name of a group within a project.)')]
        [string]
        $groupName,
        [parameter(mandatory=$False,HelpMessage='Unique name of an assessment within a project.)')]
        [string]
        $assessmentName,
        [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
    )

    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-AzureNativeFunctionMigrateGetPrivateEndpointConnection
{
    param (
        [parameter(mandatory=$False,HelpMessage='Name of the Azure Migrate project.)')]
        [string]
        $projectName,
        [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
    )

    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-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-AzureNativeFunctionMigrateGetProjectKeys
{
    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
    )

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

        $functionObject = Invoke-PulumiFunction -Name azure-native:migrate:getProjectKeys -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionMigrateGetMoveCollection
{
    param (
        [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["resourceGroupName"] = $resourceGroupName

        $functionObject = Invoke-PulumiFunction -Name azure-native:migrate:getMoveCollection -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
class SolutionDetails
{
    [int] $assessmentCount
    [object] $extendedDetails
    [int] $groupCount
}
function New-AzureNativeTypeMigrateSolutionDetails
{
    param (
        [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,
        [parameter(mandatory=$False,HelpMessage='Gets or sets the count of groups reported by the solution.)')]
        [int]
        $groupCount
    )

    process
    {
        return $([SolutionDetails]$PSBoundParameters)
    }
}
class SolutionProperties
{
    [string] $purpose
    [string] $goal
    [string] $tool
    [string] $cleanupState
    [string] $status
    [SolutionDetails] $details
}
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 tool being used in the solution.)')]
        [string]
        $tool,
        [parameter(mandatory=$False,HelpMessage='Gets or sets the cleanup state of the solution.)')]
        [string]
        $cleanupState,
        [parameter(mandatory=$False,HelpMessage='Gets or sets the current status of the solution.)')]
        [string]
        $status,
        [parameter(mandatory=$False,HelpMessage='Gets or sets the details of the solution.)')]
        [SolutionDetails]
        $details
    )

    process
    {
        return $([SolutionProperties]$PSBoundParameters)
    }
}
function New-AzureNativeMigrateSolution
{
    [Alias('azure_native_migrate_solution')]
    param (
        [parameter(mandatory=$False,HelpMessage='Name of the Azure Migrate project.)')]
        [string]
        $migrateProjectName,
        [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 Resource Group that migrate project is part of.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid,
        [parameter(mandatory,HelpMessage='Pass in the resources you make to make this resource dependant on')]
        [object]
        $DependsOn
    )

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

        foreach($Dependency in $DependsOn)
        {
            if($Dependency -is [pulumiresource])
            {
                $resource.dependson += $Dependency.Reference()
            } else
            {
                $resource.dependson += $Dependency
            }
        }
        $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 Identity
{
    [ArgumentCompletions('None', 'SystemAssigned', 'UserAssigned')]
    [string] $type
    [string] $principalId
    [string] $tenantId
}
function New-AzureNativeTypeMigrateIdentity
{
    param (
        [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,
        [parameter(mandatory=$False,HelpMessage='Gets or sets the tenant id.)')]
        [string]
        $tenantId
    )

    process
    {
        return $([Identity]$PSBoundParameters)
    }
}
class MoveCollectionProperties
{
    [string] $targetRegion
    [string] $sourceRegion
}
function New-AzureNativeTypeMigrateMoveCollectionProperties
{
    param (
        [parameter(mandatory=$False,HelpMessage='Gets or sets the target region.)')]
        [string]
        $targetRegion,
        [parameter(mandatory=$False,HelpMessage='Gets or sets the source region.)')]
        [string]
        $sourceRegion
    )

    process
    {
        return $([MoveCollectionProperties]$PSBoundParameters)
    }
}
function New-AzureNativeMigrateMoveCollection
{
    [Alias('azure_native_migrate_movecollection')]
    param (
        [parameter(mandatory=$False,HelpMessage='Defines the MSI properties of the Move Collection.)')]
        [Identity]
        $identity,
        [parameter(mandatory=$False,HelpMessage='Defines the move collection properties.)')]
        [MoveCollectionProperties]
        $properties,
        [parameter(mandatory=$False,HelpMessage='The Resource Group Name.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The Move Collection Name.)')]
        [string]
        $moveCollectionName,
        [parameter(mandatory=$False,HelpMessage='Resource tags.)')]
        [hashtable]
        $tags,
        [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,
        [parameter(mandatory,HelpMessage='Pass in the resources you make to make this resource dependant on')]
        [object]
        $DependsOn
    )

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

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

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

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
class MigrateProjectProperties
{
    [ArgumentCompletions('Accepted', 'Creating', 'Deleting', 'Failed', 'Moving', 'Succeeded')]
    [string] $provisioningState
    [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)
    }
}
class MigrateProjectTags
{
    [string] $additionalProperties
}
function New-AzureNativeTypeMigrateMigrateProjectTags
{
    param (
        [parameter(mandatory=$False,HelpMessage=')')]
        [string]
        $additionalProperties
    )

    process
    {
        return $([MigrateProjectTags]$PSBoundParameters)
    }
}
function New-AzureNativeMigrateMigrateProject
{
    [Alias('azure_native_migrate_migrateproject')]
    param (
        [parameter(mandatory=$False,HelpMessage='Gets or sets the nested properties.)')]
        [MigrateProjectProperties]
        $properties,
        [parameter(mandatory=$False,HelpMessage='Name of the Azure Migrate project.)')]
        [string]
        $migrateProjectName,
        [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 eTag for concurrency control.)')]
        [string]
        $eTag,
        [parameter(mandatory=$False,HelpMessage='Gets or sets the tags.)')]
        [MigrateProjectTags]
        $tags,
        [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,
        [parameter(mandatory,HelpMessage='Pass in the resources you make to make this resource dependant on')]
        [object]
        $DependsOn
    )

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

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

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

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

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

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

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

        $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=')')]
        [ImportCollectorProperties]
        $properties,
        [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,
        [parameter(mandatory=$False,HelpMessage=')')]
        [string]
        $eTag,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid,
        [parameter(mandatory,HelpMessage='Pass in the resources you make to make this resource dependant on')]
        [object]
        $DependsOn
    )

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

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

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

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

        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='Unique name of a group within a project.)')]
        [string]
        $groupName,
        [parameter(mandatory=$False,HelpMessage='Properties of the group.)')]
        [GroupProperties]
        $properties,
        [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,
        [parameter(mandatory=$False,HelpMessage='For optimistic concurrency control.)')]
        [string]
        $eTag,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid,
        [parameter(mandatory,HelpMessage='Pass in the resources you make to make this resource dependant on')]
        [object]
        $DependsOn
    )

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

        foreach($Dependency in $DependsOn)
        {
            if($Dependency -is [pulumiresource])
            {
                $resource.dependson += $Dependency.Reference()
            } else
            {
                $resource.dependson += $Dependency
            }
        }
        $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 ProjectProperties
{
    [string] $assessmentSolutionId
    [ArgumentCompletions('Active', 'Inactive')]
    [string] $projectStatus
    [string] $customerStorageAccountArmId
    [string] $publicNetworkAccess
    [string] $customerWorkspaceId
    [string] $customerWorkspaceLocation
}
function New-AzureNativeTypeMigrateProjectProperties
{
    param (
        [parameter(mandatory=$False,HelpMessage='Assessment solution ARM id tracked by Microsoft.Migrate/migrateProjects.)')]
        [string]
        $assessmentSolutionId,
        [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='The ARM id of service map workspace created by customer.)')]
        [string]
        $customerWorkspaceId,
        [parameter(mandatory=$False,HelpMessage='Location of service map workspace created by customer.)')]
        [string]
        $customerWorkspaceLocation
    )

    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='Properties of the project.)')]
        [ProjectProperties]
        $properties,
        [parameter(mandatory=$False,HelpMessage='Name of the Azure Resource Group that project is part of.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='For optimistic concurrency control.)')]
        [string]
        $eTag,
        [parameter(mandatory=$False,HelpMessage='Tags provided by Azure Tagging service.)')]
        $tags,
        [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,
        [parameter(mandatory,HelpMessage='Pass in the resources you make to make this resource dependant on')]
        [object]
        $DependsOn
    )

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

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

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

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

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

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

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

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

    process
    {
        return $([VmUptime]$PSBoundParameters)
    }
}
class AssessmentProperties
{
    [VmUptime] $vmUptime
    [ArgumentCompletions('None', 'RI1Year', 'RI3Year')]
    [string] $reservedInstance
    [ArgumentCompletions('Day', 'Week', 'Month', 'Custom')]
    [string] $timeRange
    [int] $scalingFactor
    [ArgumentCompletions('Unknown', 'LocallyRedundant', 'ZoneRedundant', 'GeoRedundant', 'ReadAccessGeoRedundant')]
    [string] $azureStorageRedundancy
    [ArgumentCompletions('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
    [ArgumentCompletions('Unknown', 'Standard', 'Premium', 'StandardSSD', 'StandardOrPremium')]
    [string] $azureDiskType
    [ArgumentCompletions('Standard', 'Basic')]
    [string] $azurePricingTier
    [ArgumentCompletions('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
    [ArgumentCompletions('Unknown', 'Yes', 'No')]
    [string] $azureHybridUseBenefit
    [ArgumentCompletions('PerformanceBased', 'AsOnPremises')]
    [string] $sizingCriterion
    [ArgumentCompletions('InProgress', 'UnderReview', 'Approved')]
    [string] $stage
    [ArgumentCompletions('Percentile50', 'Percentile90', 'Percentile95', 'Percentile99')]
    [string] $percentile
    [ArgumentCompletions('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
    [string[]] $azureVmFamilies
    [int] $discountPercentage
}
function New-AzureNativeTypeMigrateAssessmentProperties
{
    param (
        [parameter(mandatory=$False,HelpMessage='Specify the duration for which the VMs are up in the on-premises environment.)')]
        [VmUptime]
        $vmUptime,
        [parameter(mandatory=$False,HelpMessage='Azure reserved instance.)')]
        [string]
        [ValidateSet('None', 'RI1Year', 'RI3Year')]
        $reservedInstance,
        [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='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='Storage Redundancy type offered by Azure.)')]
        [string]
        [ValidateSet('Unknown', 'LocallyRedundant', 'ZoneRedundant', 'GeoRedundant', 'ReadAccessGeoRedundant')]
        $azureStorageRedundancy,
        [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='Storage type selected for this disk.)')]
        [string]
        [ValidateSet('Unknown', 'Standard', 'Premium', 'StandardSSD', 'StandardOrPremium')]
        $azureDiskType,
        [parameter(mandatory=$False,HelpMessage='Pricing tier for Size evaluation.)')]
        [string]
        [ValidateSet('Standard', 'Basic')]
        $azurePricingTier,
        [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='AHUB discount on windows virtual machines.)')]
        [string]
        [ValidateSet('Unknown', 'Yes', 'No')]
        $azureHybridUseBenefit,
        [parameter(mandatory=$False,HelpMessage='Assessment sizing criterion.)')]
        [string]
        [ValidateSet('PerformanceBased', 'AsOnPremises')]
        $sizingCriterion,
        [parameter(mandatory=$False,HelpMessage='User configurable setting that describes the status of the assessment.)')]
        [string]
        [ValidateSet('InProgress', 'UnderReview', 'Approved')]
        $stage,
        [parameter(mandatory=$False,HelpMessage='Percentile of performance data used to recommend Azure size.)')]
        [string]
        [ValidateSet('Percentile50', 'Percentile90', 'Percentile95', 'Percentile99')]
        $percentile,
        [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='Custom discount percentage to be applied on final costs. Can be in the range [0, 100].)')]
        [int]
        $discountPercentage
    )

    process
    {
        return $([AssessmentProperties]$PSBoundParameters)
    }
}
function New-AzureNativeMigrateAssessment
{
    [Alias('azure_native_migrate_assessment')]
    param (
        [parameter(mandatory=$False,HelpMessage='Unique name of an assessment within a project.)')]
        [string]
        $assessmentName,
        [parameter(mandatory=$False,HelpMessage='Name of the Azure Migrate project.)')]
        [string]
        $projectName,
        [parameter(mandatory=$False,HelpMessage='Properties of the assessment.)')]
        [AssessmentProperties]
        $properties,
        [parameter(mandatory=$False,HelpMessage='Name of the Azure Resource Group that project is part of.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='For optimistic concurrency control.)')]
        [string]
        $eTag,
        [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,
        [parameter(mandatory,HelpMessage='Pass in the resources you make to make this resource dependant on')]
        [object]
        $DependsOn
    )

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
class CollectorBodyAgentSpnProperties
{
    [string] $tenantId
    [string] $audience
    [string] $objectId
    [string] $authority
    [string] $applicationId
}
function New-AzureNativeTypeMigrateCollectorBodyAgentSpnProperties
{
    param (
        [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,
        [parameter(mandatory=$False,HelpMessage='Intended audience for the service principal.)')]
        [string]
        $audience,
        [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='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
    )

    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='Unique name of a Hyper-V collector within a project.)')]
        [string]
        $hyperVCollectorName,
        [parameter(mandatory=$False,HelpMessage=')')]
        [CollectorProperties]
        $properties,
        [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,
        [parameter(mandatory=$False,HelpMessage=')')]
        [string]
        $eTag,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid,
        [parameter(mandatory,HelpMessage='Pass in the resources you make to make this resource dependant on')]
        [object]
        $DependsOn
    )

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

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
class PrivateLinkServiceConnectionState
{
    [string] $actionsRequired
    [string] $description
    [string] $status
}
function New-AzureNativeTypeMigratePrivateLinkServiceConnectionState
{
    param (
        [parameter(mandatory=$False,HelpMessage='Actions required on the private endpoint connection.)')]
        [string]
        $actionsRequired,
        [parameter(mandatory=$False,HelpMessage='Description of the private endpoint connection.)')]
        [string]
        $description,
        [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='Properties of the private endpoint endpoint connection.)')]
        [PrivateEndpointConnectionProperties]
        $properties,
        [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,
        [parameter(mandatory=$False,HelpMessage='Unique name of a private endpoint connection within a project.)')]
        [string]
        $privateEndpointConnectionName,
        [parameter(mandatory=$False,HelpMessage='For optimistic concurrency control.)')]
        [string]
        $eTag,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid,
        [parameter(mandatory,HelpMessage='Pass in the resources you make to make this resource dependant on')]
        [object]
        $DependsOn
    )

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

        foreach($Dependency in $DependsOn)
        {
            if($Dependency -is [pulumiresource])
            {
                $resource.dependson += $Dependency.Reference()
            } else
            {
                $resource.dependson += $Dependency
            }
        }
        $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
    }
}
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=')')]
        [CollectorProperties]
        $properties,
        [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,
        [parameter(mandatory=$False,HelpMessage=')')]
        [string]
        $eTag,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid,
        [parameter(mandatory,HelpMessage='Pass in the resources you make to make this resource dependant on')]
        [object]
        $DependsOn
    )

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

        foreach($Dependency in $DependsOn)
        {
            if($Dependency -is [pulumiresource])
            {
                $resource.dependson += $Dependency.Reference()
            } else
            {
                $resource.dependson += $Dependency
            }
        }
        $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 MoveResourceDependencyOverride
{
    [string] $targetId
    [string] $id
}
function New-AzureNativeTypeMigrateMoveResourceDependencyOverride
{
    param (
        [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,
        [parameter(mandatory=$False,HelpMessage='Gets or sets the ARM ID of the dependent resource.)')]
        [string]
        $id
    )

    process
    {
        return $([MoveResourceDependencyOverride]$PSBoundParameters)
    }
}
class MoveResourceProperties
{
    [string] $sourceId
    [MoveResourceDependencyOverride[]] $dependsOnOverrides
    [object] $resourceSettings #todo add class here
    [string] $existingTargetId
}
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
{
    [string[]] $addressSpace
    [SubnetResourceSettings[]] $subnets
    [bool] $enableDdosProtection
    [string] $targetResourceName
    [string[]] $dnsServers
    [string] $resourceType
}
function New-AzureNativeTypeMigrateVirtualNetworkResourceSettings
{
    param (
        [parameter(mandatory=$False,HelpMessage='Gets or sets the address prefixes for the virtual network.)')]
        [string[]]
        $addressSpace,
        [parameter(mandatory=$False,HelpMessage='Gets or sets List of subnets in a VirtualNetwork.)')]
        $subnets,
        [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 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,
        [parameter(mandatory=$False,HelpMessage='The resource type. For example, the value can be Microsoft.Compute/virtualMachines.
Expected value is ''Microsoft.Network/virtualNetworks''.)'
)]
        [string]
        $resourceType
    )

    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 move resource dependencies overrides.)')]
        $dependsOnOverrides,
        [parameter(mandatory=$False,HelpMessage='Gets or sets the resource settings.)')]
        [VirtualNetworkResourceSettings]
        $resourceSettings,
        [parameter(mandatory=$False,HelpMessage='Gets or sets the existing target ARM Id of the resource.)')]
        [string]
        $existingTargetId
    )

    process
    {
        return $([MoveResourceProperties]$PSBoundParameters)
    }
}
function New-AzureNativeMigrateMoveResource
{
    [Alias('azure_native_migrate_moveresource')]
    param (
        [parameter(mandatory=$False,HelpMessage='Defines the move resource properties.)')]
        [MoveResourceProperties]
        $properties,
        [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,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid,
        [parameter(mandatory,HelpMessage='Pass in the resources you make to make this resource dependant on')]
        [object]
        $DependsOn
    )

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
function New-AzureNativeMigrateVMwareCollector
{
    [Alias('azure_native_migrate_vmwarecollector')]
    param (
        [parameter(mandatory=$False,HelpMessage=')')]
        [CollectorProperties]
        $properties,
        [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,
        [parameter(mandatory=$False,HelpMessage='Unique name of a VMware collector within a project.)')]
        [string]
        $vmWareCollectorName,
        [parameter(mandatory=$False,HelpMessage=')')]
        [string]
        $eTag,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid,
        [parameter(mandatory,HelpMessage='Pass in the resources you make to make this resource dependant on')]
        [object]
        $DependsOn
    )

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

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

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

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

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

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