pspulumiyaml.azurenative.machinelearningservices.psm1

using module @{ ModuleName = "PSPulumiYaml"; ModuleVersion = "0.0.3"; GUID = "909344e0-a08f-45f6-8177-80e36bb2ba58" }
function Invoke-AzureNativeFunctionMachinelearningservicesGetOnlineEndpoint
{
    param (
        [parameter(mandatory=$False,HelpMessage='Online Endpoint name.)')]
        [string]
        $endpointName,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group. The name is case insensitive.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Name of Azure Machine Learning workspace.)')]
        [string]
        $workspaceName
    )

    process
    {
        $arguments = @{}
        $arguments["endpointName"] = $endpointName
        $arguments["resourceGroupName"] = $resourceGroupName
        $arguments["workspaceName"] = $workspaceName

        $functionObject = Invoke-PulumiFunction -Name azure-native:machinelearningservices:getOnlineEndpoint -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionMachinelearningservicesGetComponentContainer
{
    param (
        [parameter(mandatory=$False,HelpMessage='Container name.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group. The name is case insensitive.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Name of Azure Machine Learning workspace.)')]
        [string]
        $workspaceName
    )

    process
    {
        $arguments = @{}
        $arguments["name"] = $name
        $arguments["resourceGroupName"] = $resourceGroupName
        $arguments["workspaceName"] = $workspaceName

        $functionObject = Invoke-PulumiFunction -Name azure-native:machinelearningservices:getComponentContainer -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionMachinelearningservicesGetACIService
{
    param (
        [parameter(mandatory=$False,HelpMessage='Set to True to include Model details.)')]
        [bool]
        $expand,
        [parameter(mandatory=$False,HelpMessage='Name of the resource group in which workspace is located.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Name of Azure Machine Learning workspace.)')]
        [string]
        $workspaceName,
        [parameter(mandatory=$False,HelpMessage='Name of the Azure Machine Learning service.)')]
        [string]
        $serviceName
    )

    process
    {
        $arguments = @{}
        $arguments["resourceGroupName"] = $resourceGroupName
        $arguments["serviceName"] = $serviceName
        $arguments["workspaceName"] = $workspaceName

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

        $functionObject = Invoke-PulumiFunction -Name azure-native:machinelearningservices:getACIService -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionMachinelearningservicesGetEnvironmentContainer
{
    param (
        [parameter(mandatory=$False,HelpMessage='Container name.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group. The name is case insensitive.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Name of Azure Machine Learning workspace.)')]
        [string]
        $workspaceName
    )

    process
    {
        $arguments = @{}
        $arguments["name"] = $name
        $arguments["resourceGroupName"] = $resourceGroupName
        $arguments["workspaceName"] = $workspaceName

        $functionObject = Invoke-PulumiFunction -Name azure-native:machinelearningservices:getEnvironmentContainer -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionMachinelearningservicesGetAKSService
{
    param (
        [parameter(mandatory=$False,HelpMessage='Set to True to include Model details.)')]
        [bool]
        $expand,
        [parameter(mandatory=$False,HelpMessage='Name of the resource group in which workspace is located.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Name of Azure Machine Learning workspace.)')]
        [string]
        $workspaceName,
        [parameter(mandatory=$False,HelpMessage='Name of the Azure Machine Learning service.)')]
        [string]
        $serviceName
    )

    process
    {
        $arguments = @{}
        $arguments["resourceGroupName"] = $resourceGroupName
        $arguments["serviceName"] = $serviceName
        $arguments["workspaceName"] = $workspaceName

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

        $functionObject = Invoke-PulumiFunction -Name azure-native:machinelearningservices:getAKSService -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionMachinelearningservicesGetOnlineDeployment
{
    param (
        [parameter(mandatory=$False,HelpMessage='Inference endpoint name.)')]
        [string]
        $endpointName,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group. The name is case insensitive.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Inference Endpoint Deployment name.)')]
        [string]
        $deploymentName,
        [parameter(mandatory=$False,HelpMessage='Name of Azure Machine Learning workspace.)')]
        [string]
        $workspaceName
    )

    process
    {
        $arguments = @{}
        $arguments["deploymentName"] = $deploymentName
        $arguments["endpointName"] = $endpointName
        $arguments["resourceGroupName"] = $resourceGroupName
        $arguments["workspaceName"] = $workspaceName

        $functionObject = Invoke-PulumiFunction -Name azure-native:machinelearningservices:getOnlineDeployment -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionMachinelearningservicesListBatchEndpointKeys
{
    param (
        [parameter(mandatory=$False,HelpMessage='Inference Endpoint name.)')]
        [string]
        $endpointName,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group. The name is case insensitive.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Name of Azure Machine Learning workspace.)')]
        [string]
        $workspaceName
    )

    process
    {
        $arguments = @{}
        $arguments["endpointName"] = $endpointName
        $arguments["resourceGroupName"] = $resourceGroupName
        $arguments["workspaceName"] = $workspaceName

        $functionObject = Invoke-PulumiFunction -Name azure-native:machinelearningservices:listBatchEndpointKeys -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionMachinelearningservicesListOnlineEndpointKeys
{
    param (
        [parameter(mandatory=$False,HelpMessage='Online Endpoint name.)')]
        [string]
        $endpointName,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group. The name is case insensitive.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Name of Azure Machine Learning workspace.)')]
        [string]
        $workspaceName
    )

    process
    {
        $arguments = @{}
        $arguments["endpointName"] = $endpointName
        $arguments["resourceGroupName"] = $resourceGroupName
        $arguments["workspaceName"] = $workspaceName

        $functionObject = Invoke-PulumiFunction -Name azure-native:machinelearningservices:listOnlineEndpointKeys -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionMachinelearningservicesGetJob
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the resource group. The name is case insensitive.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Name of Azure Machine Learning workspace.)')]
        [string]
        $workspaceName,
        [parameter(mandatory=$False,HelpMessage='The name and identifier for the Job.)')]
        [string]
        $id
    )

    process
    {
        $arguments = @{}
        $arguments["id"] = $id
        $arguments["resourceGroupName"] = $resourceGroupName
        $arguments["workspaceName"] = $workspaceName

        $functionObject = Invoke-PulumiFunction -Name azure-native:machinelearningservices:getJob -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionMachinelearningservicesGetModelVersion
{
    param (
        [parameter(mandatory=$False,HelpMessage='Version identifier.)')]
        [string]
        $version,
        [parameter(mandatory=$False,HelpMessage='Container name.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group. The name is case insensitive.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Name of Azure Machine Learning workspace.)')]
        [string]
        $workspaceName
    )

    process
    {
        $arguments = @{}
        $arguments["name"] = $name
        $arguments["resourceGroupName"] = $resourceGroupName
        $arguments["version"] = $version
        $arguments["workspaceName"] = $workspaceName

        $functionObject = Invoke-PulumiFunction -Name azure-native:machinelearningservices:getModelVersion -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionMachinelearningservicesGetEnvironmentSpecificationVersion
{
    param (
        [parameter(mandatory=$False,HelpMessage='Version identifier.)')]
        [string]
        $version,
        [parameter(mandatory=$False,HelpMessage='Container name.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group. The name is case insensitive.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Name of Azure Machine Learning workspace.)')]
        [string]
        $workspaceName
    )

    process
    {
        $arguments = @{}
        $arguments["name"] = $name
        $arguments["resourceGroupName"] = $resourceGroupName
        $arguments["version"] = $version
        $arguments["workspaceName"] = $workspaceName

        $functionObject = Invoke-PulumiFunction -Name azure-native:machinelearningservices:getEnvironmentSpecificationVersion -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionMachinelearningservicesGetLinkedService
{
    param (
        [parameter(mandatory=$False,HelpMessage='Name of the resource group in which workspace is located.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Friendly name of the linked workspace)')]
        [string]
        $linkName,
        [parameter(mandatory=$False,HelpMessage='Name of Azure Machine Learning workspace.)')]
        [string]
        $workspaceName
    )

    process
    {
        $arguments = @{}
        $arguments["linkName"] = $linkName
        $arguments["resourceGroupName"] = $resourceGroupName
        $arguments["workspaceName"] = $workspaceName

        $functionObject = Invoke-PulumiFunction -Name azure-native:machinelearningservices:getLinkedService -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionMachinelearningservicesGetMachineLearningService
{
    param (
        [parameter(mandatory=$False,HelpMessage='Set to True to include Model details.)')]
        [bool]
        $expand,
        [parameter(mandatory=$False,HelpMessage='Name of the resource group in which workspace is located.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Name of Azure Machine Learning workspace.)')]
        [string]
        $workspaceName,
        [parameter(mandatory=$False,HelpMessage='Name of the Azure Machine Learning service.)')]
        [string]
        $serviceName
    )

    process
    {
        $arguments = @{}
        $arguments["resourceGroupName"] = $resourceGroupName
        $arguments["serviceName"] = $serviceName
        $arguments["workspaceName"] = $workspaceName

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

        $functionObject = Invoke-PulumiFunction -Name azure-native:machinelearningservices:getMachineLearningService -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionMachinelearningservicesGetMachineLearningDatastore
{
    param (
        [parameter(mandatory=$False,HelpMessage='The Datastore name.)')]
        [string]
        $datastoreName,
        [parameter(mandatory=$False,HelpMessage='Name of the resource group in which workspace is located.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Name of Azure Machine Learning workspace.)')]
        [string]
        $workspaceName
    )

    process
    {
        $arguments = @{}
        $arguments["datastoreName"] = $datastoreName
        $arguments["resourceGroupName"] = $resourceGroupName
        $arguments["workspaceName"] = $workspaceName

        $functionObject = Invoke-PulumiFunction -Name azure-native:machinelearningservices:getMachineLearningDatastore -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionMachinelearningservicesListMachineLearningComputeNodes
{
    param (
        [parameter(mandatory=$False,HelpMessage='Name of the resource group in which workspace is located.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Name of Azure Machine Learning workspace.)')]
        [string]
        $workspaceName,
        [parameter(mandatory=$False,HelpMessage='Name of the Azure Machine Learning compute.)')]
        [string]
        $computeName
    )

    process
    {
        $arguments = @{}
        $arguments["computeName"] = $computeName
        $arguments["resourceGroupName"] = $resourceGroupName
        $arguments["workspaceName"] = $workspaceName

        $functionObject = Invoke-PulumiFunction -Name azure-native:machinelearningservices:listMachineLearningComputeNodes -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionMachinelearningservicesGetOnlineEndpointToken
{
    param (
        [parameter(mandatory=$False,HelpMessage='Online Endpoint name.)')]
        [string]
        $endpointName,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group. The name is case insensitive.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Name of Azure Machine Learning workspace.)')]
        [string]
        $workspaceName
    )

    process
    {
        $arguments = @{}
        $arguments["endpointName"] = $endpointName
        $arguments["resourceGroupName"] = $resourceGroupName
        $arguments["workspaceName"] = $workspaceName

        $functionObject = Invoke-PulumiFunction -Name azure-native:machinelearningservices:getOnlineEndpointToken -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionMachinelearningservicesGetCodeVersion
{
    param (
        [parameter(mandatory=$False,HelpMessage='Version identifier.)')]
        [string]
        $version,
        [parameter(mandatory=$False,HelpMessage='Container name.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group. The name is case insensitive.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Name of Azure Machine Learning workspace.)')]
        [string]
        $workspaceName
    )

    process
    {
        $arguments = @{}
        $arguments["name"] = $name
        $arguments["resourceGroupName"] = $resourceGroupName
        $arguments["version"] = $version
        $arguments["workspaceName"] = $workspaceName

        $functionObject = Invoke-PulumiFunction -Name azure-native:machinelearningservices:getCodeVersion -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionMachinelearningservicesGetWorkspaceConnection
{
    param (
        [parameter(mandatory=$False,HelpMessage='Friendly name of the workspace connection)')]
        [string]
        $connectionName,
        [parameter(mandatory=$False,HelpMessage='Name of the resource group in which workspace is located.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Name of Azure Machine Learning workspace.)')]
        [string]
        $workspaceName
    )

    process
    {
        $arguments = @{}
        $arguments["connectionName"] = $connectionName
        $arguments["resourceGroupName"] = $resourceGroupName
        $arguments["workspaceName"] = $workspaceName

        $functionObject = Invoke-PulumiFunction -Name azure-native:machinelearningservices:getWorkspaceConnection -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionMachinelearningservicesListNotebookKeys
{
    param (
        [parameter(mandatory=$False,HelpMessage='Name of the resource group in which workspace is located.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Name of Azure Machine Learning workspace.)')]
        [string]
        $workspaceName
    )

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

        $functionObject = Invoke-PulumiFunction -Name azure-native:machinelearningservices:listNotebookKeys -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionMachinelearningservicesGetLabelingJob
{
    param (
        [parameter(mandatory=$False,HelpMessage='Name of the resource group in which workspace is located.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Boolean value to indicate whether to include LabelCategories in response.)')]
        [bool]
        $includeLabelCategories,
        [parameter(mandatory=$False,HelpMessage='Name of Azure Machine Learning workspace.)')]
        [string]
        $workspaceName,
        [parameter(mandatory=$False,HelpMessage='Name and identifier for LabelingJob.)')]
        [string]
        $labelingJobId,
        [parameter(mandatory=$False,HelpMessage='Boolean value to indicate whether to include JobInstructions in response.)')]
        [bool]
        $includeJobInstructions
    )

    process
    {
        $arguments = @{}
        $arguments["labelingJobId"] = $labelingJobId
        $arguments["resourceGroupName"] = $resourceGroupName
        $arguments["workspaceName"] = $workspaceName

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

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

        $functionObject = Invoke-PulumiFunction -Name azure-native:machinelearningservices:getLabelingJob -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionMachinelearningservicesGetMachineLearningDataset
{
    param (
        [parameter(mandatory=$False,HelpMessage='Name of the resource group in which workspace is located.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The Dataset name.)')]
        [string]
        $datasetName,
        [parameter(mandatory=$False,HelpMessage='Name of Azure Machine Learning workspace.)')]
        [string]
        $workspaceName
    )

    process
    {
        $arguments = @{}
        $arguments["datasetName"] = $datasetName
        $arguments["resourceGroupName"] = $resourceGroupName
        $arguments["workspaceName"] = $workspaceName

        $functionObject = Invoke-PulumiFunction -Name azure-native:machinelearningservices:getMachineLearningDataset -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionMachinelearningservicesListDatastoreSecrets
{
    param (
        [parameter(mandatory=$False,HelpMessage='Datastore name.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group. The name is case insensitive.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Name of Azure Machine Learning workspace.)')]
        [string]
        $workspaceName
    )

    process
    {
        $arguments = @{}
        $arguments["name"] = $name
        $arguments["resourceGroupName"] = $resourceGroupName
        $arguments["workspaceName"] = $workspaceName

        $functionObject = Invoke-PulumiFunction -Name azure-native:machinelearningservices:listDatastoreSecrets -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionMachinelearningservicesGetPrivateEndpointConnection
{
    param (
        [parameter(mandatory=$False,HelpMessage='Name of the resource group in which workspace is located.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Name of Azure Machine Learning workspace.)')]
        [string]
        $workspaceName,
        [parameter(mandatory=$False,HelpMessage='The name of the private endpoint connection associated with the workspace)')]
        [string]
        $privateEndpointConnectionName
    )

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

        $functionObject = Invoke-PulumiFunction -Name azure-native:machinelearningservices:getPrivateEndpointConnection -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionMachinelearningservicesGetEndpointVariant
{
    param (
        [parameter(mandatory=$False,HelpMessage='Set to True to include Model details.)')]
        [bool]
        $expand,
        [parameter(mandatory=$False,HelpMessage='Name of the resource group in which workspace is located.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Name of Azure Machine Learning workspace.)')]
        [string]
        $workspaceName,
        [parameter(mandatory=$False,HelpMessage='Name of the Azure Machine Learning service.)')]
        [string]
        $serviceName
    )

    process
    {
        $arguments = @{}
        $arguments["resourceGroupName"] = $resourceGroupName
        $arguments["serviceName"] = $serviceName
        $arguments["workspaceName"] = $workspaceName

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

        $functionObject = Invoke-PulumiFunction -Name azure-native:machinelearningservices:getEndpointVariant -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionMachinelearningservicesGetOnlineDeploymentLogs
{
    param (
        [parameter(mandatory=$False,HelpMessage='Inference endpoint name.)')]
        [string]
        $endpointName,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group. The name is case insensitive.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name and identifier for the endpoint.)')]
        [string]
        $deploymentName,
        [parameter(mandatory=$False,HelpMessage='The maximum number of lines to tail.)')]
        [int]
        $tail,
        [parameter(mandatory=$False,HelpMessage='The type of container to retrieve logs from.)')]
        [string]
        [ArgumentCompletions('StorageInitializer', 'InferenceServer')]
        $containerType,
        [parameter(mandatory=$False,HelpMessage='Name of Azure Machine Learning workspace.)')]
        [string]
        $workspaceName
    )

    process
    {
        $arguments = @{}
        $arguments["deploymentName"] = $deploymentName
        $arguments["endpointName"] = $endpointName
        $arguments["resourceGroupName"] = $resourceGroupName
        $arguments["workspaceName"] = $workspaceName

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

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

        $functionObject = Invoke-PulumiFunction -Name azure-native:machinelearningservices:getOnlineDeploymentLogs -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionMachinelearningservicesGetBatchDeployment
{
    param (
        [parameter(mandatory=$False,HelpMessage='Endpoint name)')]
        [string]
        $endpointName,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group. The name is case insensitive.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The identifier for the Batch deployments.)')]
        [string]
        $deploymentName,
        [parameter(mandatory=$False,HelpMessage='Name of Azure Machine Learning workspace.)')]
        [string]
        $workspaceName
    )

    process
    {
        $arguments = @{}
        $arguments["deploymentName"] = $deploymentName
        $arguments["endpointName"] = $endpointName
        $arguments["resourceGroupName"] = $resourceGroupName
        $arguments["workspaceName"] = $workspaceName

        $functionObject = Invoke-PulumiFunction -Name azure-native:machinelearningservices:getBatchDeployment -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionMachinelearningservicesGetComponentVersion
{
    param (
        [parameter(mandatory=$False,HelpMessage='Version identifier.)')]
        [string]
        $version,
        [parameter(mandatory=$False,HelpMessage='Container name.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group. The name is case insensitive.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Name of Azure Machine Learning workspace.)')]
        [string]
        $workspaceName
    )

    process
    {
        $arguments = @{}
        $arguments["name"] = $name
        $arguments["resourceGroupName"] = $resourceGroupName
        $arguments["version"] = $version
        $arguments["workspaceName"] = $workspaceName

        $functionObject = Invoke-PulumiFunction -Name azure-native:machinelearningservices:getComponentVersion -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionMachinelearningservicesGetWorkspace
{
    param (
        [parameter(mandatory=$False,HelpMessage='Name of the resource group in which workspace is located.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Name of Azure Machine Learning workspace.)')]
        [string]
        $workspaceName
    )

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

        $functionObject = Invoke-PulumiFunction -Name azure-native:machinelearningservices:getWorkspace -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionMachinelearningservicesGetMachineLearningCompute
{
    param (
        [parameter(mandatory=$False,HelpMessage='Name of the resource group in which workspace is located.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Name of Azure Machine Learning workspace.)')]
        [string]
        $workspaceName,
        [parameter(mandatory=$False,HelpMessage='Name of the Azure Machine Learning compute.)')]
        [string]
        $computeName
    )

    process
    {
        $arguments = @{}
        $arguments["computeName"] = $computeName
        $arguments["resourceGroupName"] = $resourceGroupName
        $arguments["workspaceName"] = $workspaceName

        $functionObject = Invoke-PulumiFunction -Name azure-native:machinelearningservices:getMachineLearningCompute -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionMachinelearningservicesGetModelContainer
{
    param (
        [parameter(mandatory=$False,HelpMessage='Container name.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group. The name is case insensitive.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Name of Azure Machine Learning workspace.)')]
        [string]
        $workspaceName
    )

    process
    {
        $arguments = @{}
        $arguments["name"] = $name
        $arguments["resourceGroupName"] = $resourceGroupName
        $arguments["workspaceName"] = $workspaceName

        $functionObject = Invoke-PulumiFunction -Name azure-native:machinelearningservices:getModelContainer -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionMachinelearningservicesGetLinkedWorkspace
{
    param (
        [parameter(mandatory=$False,HelpMessage='Name of the resource group in which workspace is located.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Friendly name of the linked workspace)')]
        [string]
        $linkName,
        [parameter(mandatory=$False,HelpMessage='Name of Azure Machine Learning workspace.)')]
        [string]
        $workspaceName
    )

    process
    {
        $arguments = @{}
        $arguments["linkName"] = $linkName
        $arguments["resourceGroupName"] = $resourceGroupName
        $arguments["workspaceName"] = $workspaceName

        $functionObject = Invoke-PulumiFunction -Name azure-native:machinelearningservices:getLinkedWorkspace -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionMachinelearningservicesGetBatchEndpoint
{
    param (
        [parameter(mandatory=$False,HelpMessage='Name for the Batch Endpoint.)')]
        [string]
        $endpointName,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group. The name is case insensitive.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Name of Azure Machine Learning workspace.)')]
        [string]
        $workspaceName
    )

    process
    {
        $arguments = @{}
        $arguments["endpointName"] = $endpointName
        $arguments["resourceGroupName"] = $resourceGroupName
        $arguments["workspaceName"] = $workspaceName

        $functionObject = Invoke-PulumiFunction -Name azure-native:machinelearningservices:getBatchEndpoint -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionMachinelearningservicesListMachineLearningComputeKeys
{
    param (
        [parameter(mandatory=$False,HelpMessage='Name of the resource group in which workspace is located.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Name of Azure Machine Learning workspace.)')]
        [string]
        $workspaceName,
        [parameter(mandatory=$False,HelpMessage='Name of the Azure Machine Learning compute.)')]
        [string]
        $computeName
    )

    process
    {
        $arguments = @{}
        $arguments["computeName"] = $computeName
        $arguments["resourceGroupName"] = $resourceGroupName
        $arguments["workspaceName"] = $workspaceName

        $functionObject = Invoke-PulumiFunction -Name azure-native:machinelearningservices:listMachineLearningComputeKeys -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionMachinelearningservicesListStorageAccountKeys
{
    param (
        [parameter(mandatory=$False,HelpMessage='Name of the resource group in which workspace is located.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Name of Azure Machine Learning workspace.)')]
        [string]
        $workspaceName
    )

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

        $functionObject = Invoke-PulumiFunction -Name azure-native:machinelearningservices:listStorageAccountKeys -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionMachinelearningservicesGetDataContainer
{
    param (
        [parameter(mandatory=$False,HelpMessage='Container name.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group. The name is case insensitive.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Name of Azure Machine Learning workspace.)')]
        [string]
        $workspaceName
    )

    process
    {
        $arguments = @{}
        $arguments["name"] = $name
        $arguments["resourceGroupName"] = $resourceGroupName
        $arguments["workspaceName"] = $workspaceName

        $functionObject = Invoke-PulumiFunction -Name azure-native:machinelearningservices:getDataContainer -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionMachinelearningservicesListWorkspaceNotebookAccessToken
{
    param (
        [parameter(mandatory=$False,HelpMessage='Name of the resource group in which workspace is located.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Name of Azure Machine Learning workspace.)')]
        [string]
        $workspaceName
    )

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

        $functionObject = Invoke-PulumiFunction -Name azure-native:machinelearningservices:listWorkspaceNotebookAccessToken -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionMachinelearningservicesGetDataVersion
{
    param (
        [parameter(mandatory=$False,HelpMessage='Version identifier.)')]
        [string]
        $version,
        [parameter(mandatory=$False,HelpMessage='Container name.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group. The name is case insensitive.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Name of Azure Machine Learning workspace.)')]
        [string]
        $workspaceName
    )

    process
    {
        $arguments = @{}
        $arguments["name"] = $name
        $arguments["resourceGroupName"] = $resourceGroupName
        $arguments["version"] = $version
        $arguments["workspaceName"] = $workspaceName

        $functionObject = Invoke-PulumiFunction -Name azure-native:machinelearningservices:getDataVersion -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionMachinelearningservicesGetCodeContainer
{
    param (
        [parameter(mandatory=$False,HelpMessage='Container name.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group. The name is case insensitive.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Name of Azure Machine Learning workspace.)')]
        [string]
        $workspaceName
    )

    process
    {
        $arguments = @{}
        $arguments["name"] = $name
        $arguments["resourceGroupName"] = $resourceGroupName
        $arguments["workspaceName"] = $workspaceName

        $functionObject = Invoke-PulumiFunction -Name azure-native:machinelearningservices:getCodeContainer -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionMachinelearningservicesListWorkspaceKeys
{
    param (
        [parameter(mandatory=$False,HelpMessage='Name of the resource group in which workspace is located.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Name of Azure Machine Learning workspace.)')]
        [string]
        $workspaceName
    )

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

        $functionObject = Invoke-PulumiFunction -Name azure-native:machinelearningservices:listWorkspaceKeys -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
class DataContainer
{
    [object] $properties
    [string] $description
    [object] $tags
}
function New-AzureNativeTypeMachinelearningservicesDataContainer
{
    param (
        [parameter(mandatory=$False,HelpMessage='The asset property dictionary.)')]
        [hashtable]
        $properties,
        [parameter(mandatory=$False,HelpMessage='The asset description text.)')]
        [string]
        $description,
        [parameter(mandatory=$False,HelpMessage='Tag dictionary. Tags can be added, removed, and updated.)')]
        [hashtable]
        $tags
    )

    process
    {
        return $([DataContainer]$PSBoundParameters)
    }
}
function New-AzureNativeMachinelearningservicesDataContainer
{
    [Alias('azure_native_machinelearningservices_datacontainer')]
    param (
        [parameter(mandatory=$False,HelpMessage='Container name.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group. The name is case insensitive.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Name of Azure Machine Learning workspace.)')]
        [string]
        $workspaceName,
        [parameter(mandatory=$False,HelpMessage='[Required] Additional attributes of the entity.)')]
        [DataContainer]
        $properties,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid,
        [parameter(HelpMessage='Specifies a list of named output properties that should be treated as secrets, which means they will be encrypted. It augments the list of values that Pulumi detects, based on secret inputs to the resource.')]
        [string[]]
        $PulumiSecretOutputs,
        [parameter(HelpMessage='The aliases parameter provides a list of aliases for a resource or component resource. If youre changing the name, type, or parent path of a resource or component resource, you can add the old name to the list of aliases for a resource to ensure that existing resources will be migrated to the new name instead of being deleted and replaced with the new named resource.')]
        [string[]]
        $PulumiAliases,
        [parameter(HelpMessage='The customTimeouts parameter provides a set of custom timeouts for create, update, and delete operations on a resource. These timeouts are specified using a duration string such as 5m (5 minutes), 40s (40 seconds), or 1d (1 day). Supported duration units are ns, us (or µs), ms, s, m, and h (nanoseconds, microseconds, milliseconds, seconds, minutes, and hours, respectively).')]
        [pulumicustomtimeouts]
        $PulumiCustomTimeouts,
        [parameter(HelpMessage='Setting the PulumiDeleteBeforeReplace parameter to true means that Pulumi will delete the existing resource before creating its replacement. Be aware that this behavior has a cascading impact on dependencies so more resources may be replaced, which can lead to downtime. However, this option may be necessary for some resources that manage scarce resources behind the scenes, and/or resources that cannot exist side-by-side.')]
        [bool]
        $PulumiDeleteBeforeReplace,
        [parameter(HelpMessage='Creates a list of explicit dependencies between resources.The DependsOn parameter ensures that resource creation, update, and deletion operations are done in the correct order.')]
        [object[]]
        $PulumiDependsOn,
        [parameter(HelpMessage='Specifies a list of properties that Pulumi will ignore when it updates existing resources. Any properties specified in this list that are also specified in the resources arguments will only be used when creating the resource.')]
        [string[]]
        $PulumiIgnoreChanges,
        [parameter(HelpMessage='Imports an existing cloud resource so that Pulumi can manage it. To import a resource, first specify the PulumiImport parameter with the resources ID')]
        [string]
        $PulumiImport = [NullString]::Value,
        [parameter(HelpMessage='Specifies a parent for a resource. It is used to associate children with the parents that encapsulate or are responsible for them.')]
        [object]
        $PulumiParent = [NullString]::Value,
        [parameter(HelpMessage='Marks a resource as protected. A protected resource cannot be deleted directly, and it will be an error to do a Pulumi deployment which tries to delete a protected resource for any reason.')]
        [bool]
        $PulumiProtect,
        [parameter(HelpMessage='Sets a provider for the resource. The default is to inherit this value from the parent resource, and to use the ambient provider specified by Pulumi configuration for resources without a parent.')]
        [object]
        $PulumiProvider = [NullString]::Value,
        [parameter(HelpMessage='Sets a list of providers for the resource and its children. This list is combined with resource parents providers lists. If no value is provided, the providers list is identical to the parent. When determining which provider to use for a resource, the providers list is used if provider is not supplied.')]
        [object[]]
        $PulumiProviders,
        [parameter(HelpMessage='Used to indicate that changes to certain properties on a resource should force a replacement of the resource instead of an in-place update. Typically users rely on the resource provider to make this decision based on whether the input property is one that the provider knows how to update in place, or if not, requires a replacement to modify. However, there are cases where users want to replace a resource on a change to an input property even if the resource provider itself doesnt believe it has to replace the resource.')]
        [string[]]
        $PulumiReplaceOnChanges,
        [parameter(HelpMessage='Marks a resource to be retained. If this option is set then Pulumi will not call through to the resource providers Delete method when deleting or replacing the resource during pulumi up or pulumi destroy. As a result, the resource will not be deleted from the backing cloud provider, but will be removed from the Pulumi state.')]
        [bool]
        $PulumiRetainOnDelete,
        [parameter(HelpMessage='Specifies a provider version to use when operating on a resource. This version overrides the version information inferred from the current package. This option should be used rarely.')]
        [string]
        $PulumiProviderVersion = [NullString]::Value
    )

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

        $resource.options.additionalSecretOutputs = $PulumiSecretOutputs
        $resource.options.aliases = $PulumiAliases
        $resource.options.customTimeouts = $PulumiCustomTimeouts
        $resource.options.deleteBeforeReplace = $PulumiDeleteBeforeReplace
        $resource.options.ignoreChanges = $PulumiIgnoreChanges
        $resource.options.import = if([string]::IsNullOrEmpty($PulumiImport)) { [NullString]::Value } else { $PulumiImport }
        $resource.options.protect = $PulumiProtect
        $resource.options.replaceOnChanges = $PulumiReplaceOnChanges
        $resource.options.retainOnDelete = $PulumiRetainOnDelete
        $resource.options.version = if([string]::IsNullOrEmpty($PulumiProviderVersion)) { [NullString]::Value } else { $PulumiProviderVersion }

        foreach($Dependency in $DependsOn)
        {
            if($Dependency -is [pulumiresource])
            {
                $resource.options.dependson += $Dependency.Reference()
            } else
            {
                $resource.options.dependson += $Dependency
            }
        }
        if($PulumiParent -is [pulumiresource])
        {
            $resource.options.parent = $PulumiParent.Reference()
        } else
        {
            $resource.options.parent = $PulumiParent
        }
        foreach($provider in $PulumiProviders)
        {
            if($provider -is [pulumiprovider])
            {
                $resource.options.providers += $provider.Reference()
            } else
            {
                $resource.options.providers += $provider
            }
        }
        if($PulumiProvider -is [pulumiprovider])
        {
            $resource.options.provider = $PulumiProvider.Reference()
        } else
        {
            $resource.options.provider = $PulumiProvider
        }
        $resource.properties["properties"] = $properties
        $resource.properties["resourceGroupName"] = $resourceGroupName
        $resource.properties["workspaceName"] = $workspaceName

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

        $global:pulumiresources += $resource
        return $resource
    }
}
function New-AzureNativeMachinelearningservicesMachineLearningDatastore
{
    [Alias('azure_native_machinelearningservices_machinelearningdatastore')]
    param (
        [parameter(mandatory=$False,HelpMessage='The Datastore name.)')]
        [string]
        $datastoreName,
        [parameter(mandatory=$False,HelpMessage='The name of the storage account.)')]
        [string]
        $accountName,
        [parameter(mandatory=$False,HelpMessage='The username of the database user.)')]
        [string]
        $userName,
        [parameter(mandatory=$False,HelpMessage='This sets the ssl value of the server. Defaults to true if not set.)')]
        [bool]
        $enforceSSL,
        [parameter(mandatory=$False,HelpMessage='Name of the resource group in which workspace is located.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of the azure blob container.)')]
        [string]
        $containerName,
        [parameter(mandatory=$False,HelpMessage='Name of Azure Machine Learning workspace.)')]
        [string]
        $workspaceName,
        [parameter(mandatory=$False,HelpMessage='The subscription ID of the storage account. Defaults to selected subscription)')]
        [string]
        $storageAccountSubscriptionId,
        [parameter(mandatory=$False,HelpMessage='The ADLS store name.)')]
        [string]
        $storeName,
        [parameter(mandatory=$False,HelpMessage='Authority url used to authenticate the user.)')]
        [string]
        $authorityUrl,
        [parameter(mandatory=$False,HelpMessage='If set to true, datastore support data access authenticated with Workspace MSI.)')]
        [bool]
        $workspaceSystemAssignedIdentity,
        [parameter(mandatory=$False,HelpMessage='The port number.)')]
        [string]
        $port,
        [parameter(mandatory=$False,HelpMessage='Include datastore secret in response.)')]
        [bool]
        $includeSecret,
        [parameter(mandatory=$False,HelpMessage='The resource group of the storage account. Defaults to selected resource group)')]
        [string]
        $storageAccountResourceGroup,
        [parameter(mandatory=$False,HelpMessage='The resource group the ADLS store belongs to. Defaults to selected resource group.)')]
        [string]
        $adlsResourceGroup,
        [parameter(mandatory=$False,HelpMessage='Skip validation that ensures data can be loaded from the dataset before registration.)')]
        [bool]
        $skipValidation,
        [parameter(mandatory=$False,HelpMessage='Determines what operations will be performed.)')]
        [string]
        $resourceUrl,
        [parameter(mandatory=$False,HelpMessage='The name of the file share.)')]
        [string]
        $shareName,
        [parameter(mandatory=$False,HelpMessage='Account Key of storage account.)')]
        [string]
        $accountKey,
        [parameter(mandatory=$False,HelpMessage='The service principal Tenant ID.)')]
        [string]
        $tenantId,
        [parameter(mandatory=$False,HelpMessage='The user ID.)')]
        [string]
        $userId,
        [parameter(mandatory=$False,HelpMessage='Specifies datastore type.)')]
        [string]
        [ArgumentCompletions('blob', 'adls', 'adls-gen2', 'dbfs', 'file', 'mysqldb', 'sqldb', 'psqldb')]
        $dataStoreType,
        [parameter(mandatory=$False,HelpMessage='The protocol to be used)')]
        [string]
        $protocol,
        [parameter(mandatory=$False,HelpMessage='The SQL/MySQL/PostgreSQL server name)')]
        [string]
        $serverName,
        [parameter(mandatory=$False,HelpMessage='The database name.)')]
        [string]
        $databaseName,
        [parameter(mandatory=$False,HelpMessage='The description of the datastore.)')]
        [string]
        $description,
        [parameter(mandatory=$False,HelpMessage='Sas Token of storage account.)')]
        [string]
        $sasToken,
        [parameter(mandatory=$False,HelpMessage='The service principal''s secret.)')]
        [string]
        $clientSecret,
        [parameter(mandatory=$False,HelpMessage='The file system name of the ADLS Gen2.)')]
        [string]
        $fileSystem,
        [parameter(mandatory=$False,HelpMessage='The password.)')]
        [string]
        $password,
        [parameter(mandatory=$False,HelpMessage='The service principal''s client/application ID.)')]
        [string]
        $clientId,
        [parameter(mandatory=$False,HelpMessage='The ID of the subscription the ADLS store belongs to. Defaults to selected subscription.)')]
        [string]
        $adlsSubscriptionId,
        [parameter(mandatory=$False,HelpMessage='The name of the datastore.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='The endpoint of the server.)')]
        [string]
        $endpoint,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid,
        [parameter(HelpMessage='Specifies a list of named output properties that should be treated as secrets, which means they will be encrypted. It augments the list of values that Pulumi detects, based on secret inputs to the resource.')]
        [string[]]
        $PulumiSecretOutputs,
        [parameter(HelpMessage='The aliases parameter provides a list of aliases for a resource or component resource. If youre changing the name, type, or parent path of a resource or component resource, you can add the old name to the list of aliases for a resource to ensure that existing resources will be migrated to the new name instead of being deleted and replaced with the new named resource.')]
        [string[]]
        $PulumiAliases,
        [parameter(HelpMessage='The customTimeouts parameter provides a set of custom timeouts for create, update, and delete operations on a resource. These timeouts are specified using a duration string such as 5m (5 minutes), 40s (40 seconds), or 1d (1 day). Supported duration units are ns, us (or µs), ms, s, m, and h (nanoseconds, microseconds, milliseconds, seconds, minutes, and hours, respectively).')]
        [pulumicustomtimeouts]
        $PulumiCustomTimeouts,
        [parameter(HelpMessage='Setting the PulumiDeleteBeforeReplace parameter to true means that Pulumi will delete the existing resource before creating its replacement. Be aware that this behavior has a cascading impact on dependencies so more resources may be replaced, which can lead to downtime. However, this option may be necessary for some resources that manage scarce resources behind the scenes, and/or resources that cannot exist side-by-side.')]
        [bool]
        $PulumiDeleteBeforeReplace,
        [parameter(HelpMessage='Creates a list of explicit dependencies between resources.The DependsOn parameter ensures that resource creation, update, and deletion operations are done in the correct order.')]
        [object[]]
        $PulumiDependsOn,
        [parameter(HelpMessage='Specifies a list of properties that Pulumi will ignore when it updates existing resources. Any properties specified in this list that are also specified in the resources arguments will only be used when creating the resource.')]
        [string[]]
        $PulumiIgnoreChanges,
        [parameter(HelpMessage='Imports an existing cloud resource so that Pulumi can manage it. To import a resource, first specify the PulumiImport parameter with the resources ID')]
        [string]
        $PulumiImport = [NullString]::Value,
        [parameter(HelpMessage='Specifies a parent for a resource. It is used to associate children with the parents that encapsulate or are responsible for them.')]
        [object]
        $PulumiParent = [NullString]::Value,
        [parameter(HelpMessage='Marks a resource as protected. A protected resource cannot be deleted directly, and it will be an error to do a Pulumi deployment which tries to delete a protected resource for any reason.')]
        [bool]
        $PulumiProtect,
        [parameter(HelpMessage='Sets a provider for the resource. The default is to inherit this value from the parent resource, and to use the ambient provider specified by Pulumi configuration for resources without a parent.')]
        [object]
        $PulumiProvider = [NullString]::Value,
        [parameter(HelpMessage='Sets a list of providers for the resource and its children. This list is combined with resource parents providers lists. If no value is provided, the providers list is identical to the parent. When determining which provider to use for a resource, the providers list is used if provider is not supplied.')]
        [object[]]
        $PulumiProviders,
        [parameter(HelpMessage='Used to indicate that changes to certain properties on a resource should force a replacement of the resource instead of an in-place update. Typically users rely on the resource provider to make this decision based on whether the input property is one that the provider knows how to update in place, or if not, requires a replacement to modify. However, there are cases where users want to replace a resource on a change to an input property even if the resource provider itself doesnt believe it has to replace the resource.')]
        [string[]]
        $PulumiReplaceOnChanges,
        [parameter(HelpMessage='Marks a resource to be retained. If this option is set then Pulumi will not call through to the resource providers Delete method when deleting or replacing the resource during pulumi up or pulumi destroy. As a result, the resource will not be deleted from the backing cloud provider, but will be removed from the Pulumi state.')]
        [bool]
        $PulumiRetainOnDelete,
        [parameter(HelpMessage='Specifies a provider version to use when operating on a resource. This version overrides the version information inferred from the current package. This option should be used rarely.')]
        [string]
        $PulumiProviderVersion = [NullString]::Value
    )

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

        $resource.options.additionalSecretOutputs = $PulumiSecretOutputs
        $resource.options.aliases = $PulumiAliases
        $resource.options.customTimeouts = $PulumiCustomTimeouts
        $resource.options.deleteBeforeReplace = $PulumiDeleteBeforeReplace
        $resource.options.ignoreChanges = $PulumiIgnoreChanges
        $resource.options.import = if([string]::IsNullOrEmpty($PulumiImport)) { [NullString]::Value } else { $PulumiImport }
        $resource.options.protect = $PulumiProtect
        $resource.options.replaceOnChanges = $PulumiReplaceOnChanges
        $resource.options.retainOnDelete = $PulumiRetainOnDelete
        $resource.options.version = if([string]::IsNullOrEmpty($PulumiProviderVersion)) { [NullString]::Value } else { $PulumiProviderVersion }

        foreach($Dependency in $DependsOn)
        {
            if($Dependency -is [pulumiresource])
            {
                $resource.options.dependson += $Dependency.Reference()
            } else
            {
                $resource.options.dependson += $Dependency
            }
        }
        if($PulumiParent -is [pulumiresource])
        {
            $resource.options.parent = $PulumiParent.Reference()
        } else
        {
            $resource.options.parent = $PulumiParent
        }
        foreach($provider in $PulumiProviders)
        {
            if($provider -is [pulumiprovider])
            {
                $resource.options.providers += $provider.Reference()
            } else
            {
                $resource.options.providers += $provider
            }
        }
        if($PulumiProvider -is [pulumiprovider])
        {
            $resource.options.provider = $PulumiProvider.Reference()
        } else
        {
            $resource.options.provider = $PulumiProvider
        }
        $resource.properties["dataStoreType"] = $dataStoreType
        $resource.properties["resourceGroupName"] = $resourceGroupName
        $resource.properties["workspaceName"] = $workspaceName

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
class EndpointAuthKeys
{
    [string] $secondaryKey
    [string] $primaryKey
}
function New-AzureNativeTypeMachinelearningservicesEndpointAuthKeys
{
    param (
        [parameter(mandatory=$False,HelpMessage='The secondary key.)')]
        [string]
        $secondaryKey,
        [parameter(mandatory=$False,HelpMessage='The primary key.)')]
        [string]
        $primaryKey
    )

    process
    {
        return $([EndpointAuthKeys]$PSBoundParameters)
    }
}
class OnlineEndpoint
{
    [object] $traffic
    [string] $description
    [EndpointAuthKeys] $keys
    [ArgumentCompletions('AMLToken', 'Key', 'AADToken')]
    [string] $authMode
    [object] $properties
    [string] $target
}
function New-AzureNativeTypeMachinelearningservicesOnlineEndpoint
{
    param (
        [parameter(mandatory=$False,HelpMessage='Traffic rules on how the traffic will be routed across deployments.)')]
        [object]
        $traffic,
        [parameter(mandatory=$False,HelpMessage='Description of the inference endpoint.)')]
        [string]
        $description,
        [parameter(mandatory=$False,HelpMessage='EndpointAuthKeys to set initially on an Endpoint.
This property will always be returned as null. AuthKey values must be retrieved using the ListKeys API.)'
)]
        [EndpointAuthKeys]
        $keys,
        [parameter(mandatory=$False,HelpMessage='[Required] Inference endpoint authentication mode type)')]
        [string]
        [ArgumentCompletions('AMLToken', 'Key', 'AADToken')]
        $authMode,
        [parameter(mandatory=$False,HelpMessage='Property dictionary. Properties can be added, but not removed or altered.)')]
        [hashtable]
        $properties,
        [parameter(mandatory=$False,HelpMessage='ARM resource ID of the compute if it exists.
optional)'
)]
        [string]
        $target
    )

    process
    {
        return $([OnlineEndpoint]$PSBoundParameters)
    }
}
class ResourceIdentity
{
    [ArgumentCompletions('SystemAssigned', 'UserAssigned', 'SystemAssigned,UserAssigned', 'None')]
    [string] $type
    [object] $userAssignedIdentities
}
class UserAssignedIdentityMeta
{
    [string] $clientId
    [string] $principalId
}
function New-AzureNativeTypeMachinelearningservicesUserAssignedIdentityMeta
{
    param (
        [parameter(mandatory=$False,HelpMessage='Aka application ID, a unique identifier generated by Azure AD that is tied to an application and service principal during its initial provisioning.)')]
        [string]
        $clientId,
        [parameter(mandatory=$False,HelpMessage='The object ID of the service principal object for your managed identity that is used to grant role-based access to an Azure resource.)')]
        [string]
        $principalId
    )

    process
    {
        return $([UserAssignedIdentityMeta]$PSBoundParameters)
    }
}
function New-AzureNativeTypeMachinelearningservicesResourceIdentity
{
    param (
        [parameter(mandatory=$False,HelpMessage='Defines values for a ResourceIdentity''s type.)')]
        [string]
        [ArgumentCompletions('SystemAssigned', 'UserAssigned', 'SystemAssigned,UserAssigned', 'None')]
        $type,
        [parameter(mandatory=$False,HelpMessage='Dictionary of the user assigned identities, key is ARM resource ID of the UAI.)')]
        [UserAssignedIdentityMeta]
        $userAssignedIdentities
    )

    process
    {
        return $([ResourceIdentity]$PSBoundParameters)
    }
}
function New-AzureNativeMachinelearningservicesOnlineEndpoint
{
    [Alias('azure_native_machinelearningservices_onlineendpoint')]
    param (
        [parameter(mandatory=$False,HelpMessage='Online Endpoint name.)')]
        [string]
        $endpointName,
        [parameter(mandatory=$False,HelpMessage='[Required] Additional attributes of the entity.)')]
        [OnlineEndpoint]
        $properties,
        [parameter(mandatory=$False,HelpMessage='Resource tags.)')]
        [hashtable]
        $tags,
        [parameter(mandatory=$False,HelpMessage='The geo-location where the resource lives)')]
        [string]
        $location,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group. The name is case insensitive.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Name of Azure Machine Learning workspace.)')]
        [string]
        $workspaceName,
        [parameter(mandatory=$False,HelpMessage='Service identity associated with a resource.)')]
        [ResourceIdentity]
        $identity,
        [parameter(mandatory=$False,HelpMessage='Metadata used by portal/tooling/etc to render different UX experiences for resources of the same type.)')]
        [string]
        $kind,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid,
        [parameter(HelpMessage='Specifies a list of named output properties that should be treated as secrets, which means they will be encrypted. It augments the list of values that Pulumi detects, based on secret inputs to the resource.')]
        [string[]]
        $PulumiSecretOutputs,
        [parameter(HelpMessage='The aliases parameter provides a list of aliases for a resource or component resource. If youre changing the name, type, or parent path of a resource or component resource, you can add the old name to the list of aliases for a resource to ensure that existing resources will be migrated to the new name instead of being deleted and replaced with the new named resource.')]
        [string[]]
        $PulumiAliases,
        [parameter(HelpMessage='The customTimeouts parameter provides a set of custom timeouts for create, update, and delete operations on a resource. These timeouts are specified using a duration string such as 5m (5 minutes), 40s (40 seconds), or 1d (1 day). Supported duration units are ns, us (or µs), ms, s, m, and h (nanoseconds, microseconds, milliseconds, seconds, minutes, and hours, respectively).')]
        [pulumicustomtimeouts]
        $PulumiCustomTimeouts,
        [parameter(HelpMessage='Setting the PulumiDeleteBeforeReplace parameter to true means that Pulumi will delete the existing resource before creating its replacement. Be aware that this behavior has a cascading impact on dependencies so more resources may be replaced, which can lead to downtime. However, this option may be necessary for some resources that manage scarce resources behind the scenes, and/or resources that cannot exist side-by-side.')]
        [bool]
        $PulumiDeleteBeforeReplace,
        [parameter(HelpMessage='Creates a list of explicit dependencies between resources.The DependsOn parameter ensures that resource creation, update, and deletion operations are done in the correct order.')]
        [object[]]
        $PulumiDependsOn,
        [parameter(HelpMessage='Specifies a list of properties that Pulumi will ignore when it updates existing resources. Any properties specified in this list that are also specified in the resources arguments will only be used when creating the resource.')]
        [string[]]
        $PulumiIgnoreChanges,
        [parameter(HelpMessage='Imports an existing cloud resource so that Pulumi can manage it. To import a resource, first specify the PulumiImport parameter with the resources ID')]
        [string]
        $PulumiImport = [NullString]::Value,
        [parameter(HelpMessage='Specifies a parent for a resource. It is used to associate children with the parents that encapsulate or are responsible for them.')]
        [object]
        $PulumiParent = [NullString]::Value,
        [parameter(HelpMessage='Marks a resource as protected. A protected resource cannot be deleted directly, and it will be an error to do a Pulumi deployment which tries to delete a protected resource for any reason.')]
        [bool]
        $PulumiProtect,
        [parameter(HelpMessage='Sets a provider for the resource. The default is to inherit this value from the parent resource, and to use the ambient provider specified by Pulumi configuration for resources without a parent.')]
        [object]
        $PulumiProvider = [NullString]::Value,
        [parameter(HelpMessage='Sets a list of providers for the resource and its children. This list is combined with resource parents providers lists. If no value is provided, the providers list is identical to the parent. When determining which provider to use for a resource, the providers list is used if provider is not supplied.')]
        [object[]]
        $PulumiProviders,
        [parameter(HelpMessage='Used to indicate that changes to certain properties on a resource should force a replacement of the resource instead of an in-place update. Typically users rely on the resource provider to make this decision based on whether the input property is one that the provider knows how to update in place, or if not, requires a replacement to modify. However, there are cases where users want to replace a resource on a change to an input property even if the resource provider itself doesnt believe it has to replace the resource.')]
        [string[]]
        $PulumiReplaceOnChanges,
        [parameter(HelpMessage='Marks a resource to be retained. If this option is set then Pulumi will not call through to the resource providers Delete method when deleting or replacing the resource during pulumi up or pulumi destroy. As a result, the resource will not be deleted from the backing cloud provider, but will be removed from the Pulumi state.')]
        [bool]
        $PulumiRetainOnDelete,
        [parameter(HelpMessage='Specifies a provider version to use when operating on a resource. This version overrides the version information inferred from the current package. This option should be used rarely.')]
        [string]
        $PulumiProviderVersion = [NullString]::Value
    )

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

        $resource.options.additionalSecretOutputs = $PulumiSecretOutputs
        $resource.options.aliases = $PulumiAliases
        $resource.options.customTimeouts = $PulumiCustomTimeouts
        $resource.options.deleteBeforeReplace = $PulumiDeleteBeforeReplace
        $resource.options.ignoreChanges = $PulumiIgnoreChanges
        $resource.options.import = if([string]::IsNullOrEmpty($PulumiImport)) { [NullString]::Value } else { $PulumiImport }
        $resource.options.protect = $PulumiProtect
        $resource.options.replaceOnChanges = $PulumiReplaceOnChanges
        $resource.options.retainOnDelete = $PulumiRetainOnDelete
        $resource.options.version = if([string]::IsNullOrEmpty($PulumiProviderVersion)) { [NullString]::Value } else { $PulumiProviderVersion }

        foreach($Dependency in $DependsOn)
        {
            if($Dependency -is [pulumiresource])
            {
                $resource.options.dependson += $Dependency.Reference()
            } else
            {
                $resource.options.dependson += $Dependency
            }
        }
        if($PulumiParent -is [pulumiresource])
        {
            $resource.options.parent = $PulumiParent.Reference()
        } else
        {
            $resource.options.parent = $PulumiParent
        }
        foreach($provider in $PulumiProviders)
        {
            if($provider -is [pulumiprovider])
            {
                $resource.options.providers += $provider.Reference()
            } else
            {
                $resource.options.providers += $provider
            }
        }
        if($PulumiProvider -is [pulumiprovider])
        {
            $resource.options.provider = $PulumiProvider.Reference()
        } else
        {
            $resource.options.provider = $PulumiProvider
        }
        $resource.properties["properties"] = $properties
        $resource.properties["resourceGroupName"] = $resourceGroupName
        $resource.properties["workspaceName"] = $workspaceName

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

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
class ProbeSettings
{
    [int] $failureThreshold
    [int] $successThreshold
    [string] $period
    [string] $initialDelay
    [string] $timeout
}
function New-AzureNativeTypeMachinelearningservicesProbeSettings
{
    param (
        [parameter(mandatory=$False,HelpMessage='The number of failures to allow before returning an unhealthy status.)')]
        [int]
        $failureThreshold,
        [parameter(mandatory=$False,HelpMessage='The number of successful probes before returning a healthy status.)')]
        [int]
        $successThreshold,
        [parameter(mandatory=$False,HelpMessage='The length of time between probes in ISO 8601 format.)')]
        [string]
        $period,
        [parameter(mandatory=$False,HelpMessage='The delay before the first probe in ISO 8601 format.)')]
        [string]
        $initialDelay,
        [parameter(mandatory=$False,HelpMessage='The probe timeout in ISO 8601 format.)')]
        [string]
        $timeout
    )

    process
    {
        return $([ProbeSettings]$PSBoundParameters)
    }
}
class CodeConfiguration
{
    [string] $scoringScript
    [string] $codeId
}
function New-AzureNativeTypeMachinelearningservicesCodeConfiguration
{
    param (
        [parameter(mandatory=$False,HelpMessage='[Required] The script to execute on startup. eg. "score.py")')]
        [string]
        $scoringScript,
        [parameter(mandatory=$False,HelpMessage='ARM resource ID of the code asset.)')]
        [string]
        $codeId
    )

    process
    {
        return $([CodeConfiguration]$PSBoundParameters)
    }
}
class OnlineRequestSettings
{
    [int] $maxConcurrentRequestsPerInstance
    [string] $maxQueueWait
    [string] $requestTimeout
}
function New-AzureNativeTypeMachinelearningservicesOnlineRequestSettings
{
    param (
        [parameter(mandatory=$False,HelpMessage='The number of requests allowed to queue at once for this deployment.)')]
        [int]
        $maxConcurrentRequestsPerInstance,
        [parameter(mandatory=$False,HelpMessage='The maximum queue wait time in ISO 8601 format. Supports millisecond precision.)')]
        [string]
        $maxQueueWait,
        [parameter(mandatory=$False,HelpMessage='The request timeout in ISO 8601 format. Supports millisecond precision.)')]
        [string]
        $requestTimeout
    )

    process
    {
        return $([OnlineRequestSettings]$PSBoundParameters)
    }
}
class ManagedOnlineDeployment
{
    [ProbeSettings] $livenessProbe
    [ProbeSettings] $readinessProbe
    [string] $environmentId
    [object] $properties
    [object] $model #todo add class here
    [object] $environmentVariables
    [string] $endpointComputeType
    [object] $scaleSettings #todo add class here
    [string] $instanceType
    [string] $description
    [bool] $appInsightsEnabled
    [CodeConfiguration] $codeConfiguration
    [OnlineRequestSettings] $requestSettings
}
class OutputPathAssetReference
{
    [string] $jobId
    [string] $path
    [string] $referenceType
}
function New-AzureNativeTypeMachinelearningservicesOutputPathAssetReference
{
    param (
        [parameter(mandatory=$False,HelpMessage='ARM resource ID of the job.)')]
        [string]
        $jobId,
        [parameter(mandatory=$False,HelpMessage='The path of the file/directory in the job output.)')]
        [string]
        $path,
        [parameter(mandatory=$False,HelpMessage='Enum to determine which reference method to use for an asset.
Expected value is ''OutputPath''.)'
)]
        [string]
        $referenceType
    )

    process
    {
        return $([OutputPathAssetReference]$PSBoundParameters)
    }
}
class ManualScaleSettings
{
    [int] $minInstances
    [int] $maxInstances
    [int] $instanceCount
    [string] $scaleType
}
function New-AzureNativeTypeMachinelearningservicesManualScaleSettings
{
    param (
        [parameter(mandatory=$False,HelpMessage='Minimum number of instances for this deployment.)')]
        [int]
        $minInstances,
        [parameter(mandatory=$False,HelpMessage='Maximum number of instances for this deployment.)')]
        [int]
        $maxInstances,
        [parameter(mandatory=$False,HelpMessage='Fixed number of instances for this deployment.)')]
        [int]
        $instanceCount,
        [parameter(mandatory=$False,HelpMessage='
Expected value is ''Manual''.)'
)]
        [string]
        $scaleType
    )

    process
    {
        return $([ManualScaleSettings]$PSBoundParameters)
    }
}
function New-AzureNativeTypeMachinelearningservicesManagedOnlineDeployment
{
    param (
        [parameter(mandatory=$False,HelpMessage='Deployment container liveness/readiness probe configuration.)')]
        [ProbeSettings]
        $livenessProbe,
        [parameter(mandatory=$False,HelpMessage='Deployment container liveness/readiness probe configuration.)')]
        [ProbeSettings]
        $readinessProbe,
        [parameter(mandatory=$False,HelpMessage='ARM resource ID of the environment specification for the endpoint deployment.)')]
        [string]
        $environmentId,
        [parameter(mandatory=$False,HelpMessage='Property dictionary. Properties can be added, but not removed or altered.)')]
        [hashtable]
        $properties,
        [parameter(mandatory=$False,HelpMessage='Reference to the model asset for the endpoint deployment.)')]
        [OutputPathAssetReference]
        $model,
        [parameter(mandatory=$False,HelpMessage='Environment variables configuration for the deployment.)')]
        [hashtable]
        $environmentVariables,
        [parameter(mandatory=$False,HelpMessage='Enum to determine endpoint compute type.
Expected value is ''Managed''.)'
)]
        [string]
        $endpointComputeType,
        [parameter(mandatory=$False,HelpMessage='Online deployment scaling configuration.)')]
        [ManualScaleSettings]
        $scaleSettings,
        [parameter(mandatory=$False,HelpMessage='Compute instance type.)')]
        [string]
        $instanceType,
        [parameter(mandatory=$False,HelpMessage='Description of the endpoint deployment.)')]
        [string]
        $description,
        [parameter(mandatory=$False,HelpMessage='If true, enables Application Insights logging.)')]
        [bool]
        $appInsightsEnabled,
        [parameter(mandatory=$False,HelpMessage='Code configuration for the endpoint deployment.)')]
        [CodeConfiguration]
        $codeConfiguration,
        [parameter(mandatory=$False,HelpMessage='Online deployment scoring requests configuration.)')]
        [OnlineRequestSettings]
        $requestSettings
    )

    process
    {
        return $([ManagedOnlineDeployment]$PSBoundParameters)
    }
}
function New-AzureNativeMachinelearningservicesOnlineDeployment
{
    [Alias('azure_native_machinelearningservices_onlinedeployment')]
    param (
        [parameter(mandatory=$False,HelpMessage='Resource tags.)')]
        [hashtable]
        $tags,
        [parameter(mandatory=$False,HelpMessage='Metadata used by portal/tooling/etc to render different UX experiences for resources of the same type.)')]
        [string]
        $kind,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group. The name is case insensitive.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='[Required] Additional attributes of the entity.)')]
        [ManagedOnlineDeployment]
        $properties,
        [parameter(mandatory=$False,HelpMessage='Service identity associated with a resource.)')]
        [ResourceIdentity]
        $identity,
        [parameter(mandatory=$False,HelpMessage='Inference Endpoint Deployment name.)')]
        [string]
        $deploymentName,
        [parameter(mandatory=$False,HelpMessage='Inference endpoint name.)')]
        [string]
        $endpointName,
        [parameter(mandatory=$False,HelpMessage='Name of Azure Machine Learning workspace.)')]
        [string]
        $workspaceName,
        [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(HelpMessage='Specifies a list of named output properties that should be treated as secrets, which means they will be encrypted. It augments the list of values that Pulumi detects, based on secret inputs to the resource.')]
        [string[]]
        $PulumiSecretOutputs,
        [parameter(HelpMessage='The aliases parameter provides a list of aliases for a resource or component resource. If youre changing the name, type, or parent path of a resource or component resource, you can add the old name to the list of aliases for a resource to ensure that existing resources will be migrated to the new name instead of being deleted and replaced with the new named resource.')]
        [string[]]
        $PulumiAliases,
        [parameter(HelpMessage='The customTimeouts parameter provides a set of custom timeouts for create, update, and delete operations on a resource. These timeouts are specified using a duration string such as 5m (5 minutes), 40s (40 seconds), or 1d (1 day). Supported duration units are ns, us (or µs), ms, s, m, and h (nanoseconds, microseconds, milliseconds, seconds, minutes, and hours, respectively).')]
        [pulumicustomtimeouts]
        $PulumiCustomTimeouts,
        [parameter(HelpMessage='Setting the PulumiDeleteBeforeReplace parameter to true means that Pulumi will delete the existing resource before creating its replacement. Be aware that this behavior has a cascading impact on dependencies so more resources may be replaced, which can lead to downtime. However, this option may be necessary for some resources that manage scarce resources behind the scenes, and/or resources that cannot exist side-by-side.')]
        [bool]
        $PulumiDeleteBeforeReplace,
        [parameter(HelpMessage='Creates a list of explicit dependencies between resources.The DependsOn parameter ensures that resource creation, update, and deletion operations are done in the correct order.')]
        [object[]]
        $PulumiDependsOn,
        [parameter(HelpMessage='Specifies a list of properties that Pulumi will ignore when it updates existing resources. Any properties specified in this list that are also specified in the resources arguments will only be used when creating the resource.')]
        [string[]]
        $PulumiIgnoreChanges,
        [parameter(HelpMessage='Imports an existing cloud resource so that Pulumi can manage it. To import a resource, first specify the PulumiImport parameter with the resources ID')]
        [string]
        $PulumiImport = [NullString]::Value,
        [parameter(HelpMessage='Specifies a parent for a resource. It is used to associate children with the parents that encapsulate or are responsible for them.')]
        [object]
        $PulumiParent = [NullString]::Value,
        [parameter(HelpMessage='Marks a resource as protected. A protected resource cannot be deleted directly, and it will be an error to do a Pulumi deployment which tries to delete a protected resource for any reason.')]
        [bool]
        $PulumiProtect,
        [parameter(HelpMessage='Sets a provider for the resource. The default is to inherit this value from the parent resource, and to use the ambient provider specified by Pulumi configuration for resources without a parent.')]
        [object]
        $PulumiProvider = [NullString]::Value,
        [parameter(HelpMessage='Sets a list of providers for the resource and its children. This list is combined with resource parents providers lists. If no value is provided, the providers list is identical to the parent. When determining which provider to use for a resource, the providers list is used if provider is not supplied.')]
        [object[]]
        $PulumiProviders,
        [parameter(HelpMessage='Used to indicate that changes to certain properties on a resource should force a replacement of the resource instead of an in-place update. Typically users rely on the resource provider to make this decision based on whether the input property is one that the provider knows how to update in place, or if not, requires a replacement to modify. However, there are cases where users want to replace a resource on a change to an input property even if the resource provider itself doesnt believe it has to replace the resource.')]
        [string[]]
        $PulumiReplaceOnChanges,
        [parameter(HelpMessage='Marks a resource to be retained. If this option is set then Pulumi will not call through to the resource providers Delete method when deleting or replacing the resource during pulumi up or pulumi destroy. As a result, the resource will not be deleted from the backing cloud provider, but will be removed from the Pulumi state.')]
        [bool]
        $PulumiRetainOnDelete,
        [parameter(HelpMessage='Specifies a provider version to use when operating on a resource. This version overrides the version information inferred from the current package. This option should be used rarely.')]
        [string]
        $PulumiProviderVersion = [NullString]::Value
    )

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

        $resource.options.additionalSecretOutputs = $PulumiSecretOutputs
        $resource.options.aliases = $PulumiAliases
        $resource.options.customTimeouts = $PulumiCustomTimeouts
        $resource.options.deleteBeforeReplace = $PulumiDeleteBeforeReplace
        $resource.options.ignoreChanges = $PulumiIgnoreChanges
        $resource.options.import = if([string]::IsNullOrEmpty($PulumiImport)) { [NullString]::Value } else { $PulumiImport }
        $resource.options.protect = $PulumiProtect
        $resource.options.replaceOnChanges = $PulumiReplaceOnChanges
        $resource.options.retainOnDelete = $PulumiRetainOnDelete
        $resource.options.version = if([string]::IsNullOrEmpty($PulumiProviderVersion)) { [NullString]::Value } else { $PulumiProviderVersion }

        foreach($Dependency in $DependsOn)
        {
            if($Dependency -is [pulumiresource])
            {
                $resource.options.dependson += $Dependency.Reference()
            } else
            {
                $resource.options.dependson += $Dependency
            }
        }
        if($PulumiParent -is [pulumiresource])
        {
            $resource.options.parent = $PulumiParent.Reference()
        } else
        {
            $resource.options.parent = $PulumiParent
        }
        foreach($provider in $PulumiProviders)
        {
            if($provider -is [pulumiprovider])
            {
                $resource.options.providers += $provider.Reference()
            } else
            {
                $resource.options.providers += $provider
            }
        }
        if($PulumiProvider -is [pulumiprovider])
        {
            $resource.options.provider = $PulumiProvider.Reference()
        } else
        {
            $resource.options.provider = $PulumiProvider
        }
        $resource.properties["endpointName"] = $endpointName
        $resource.properties["properties"] = $properties
        $resource.properties["resourceGroupName"] = $resourceGroupName
        $resource.properties["workspaceName"] = $workspaceName

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

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
class ModelVersion
{
    [string] $description
    [bool] $isAnonymous
    [object] $flavors
    [object] $properties
    [object] $tags
    [string] $path
    [string] $datastoreId
}
class FlavorData
{
    [object] $data
}
function New-AzureNativeTypeMachinelearningservicesFlavorData
{
    param (
        [parameter(mandatory=$False,HelpMessage='Model flavor-specific data.)')]
        [hashtable]
        $data
    )

    process
    {
        return $([FlavorData]$PSBoundParameters)
    }
}
function New-AzureNativeTypeMachinelearningservicesModelVersion
{
    param (
        [parameter(mandatory=$False,HelpMessage='The asset description text.)')]
        [string]
        $description,
        [parameter(mandatory=$False,HelpMessage='If the name version are system generated (anonymous registration).)')]
        [bool]
        $isAnonymous,
        [parameter(mandatory=$False,HelpMessage='Mapping of model flavors to their properties.)')]
        [FlavorData]
        $flavors,
        [parameter(mandatory=$False,HelpMessage='The asset property dictionary.)')]
        [hashtable]
        $properties,
        [parameter(mandatory=$False,HelpMessage='Tag dictionary. Tags can be added, removed, and updated.)')]
        [hashtable]
        $tags,
        [parameter(mandatory=$False,HelpMessage='[Required] The path of the file/directory in the datastore.)')]
        [string]
        $path,
        [parameter(mandatory=$False,HelpMessage='ARM resource ID of the datastore where the asset is located.)')]
        [string]
        $datastoreId
    )

    process
    {
        return $([ModelVersion]$PSBoundParameters)
    }
}
function New-AzureNativeMachinelearningservicesModelVersion
{
    [Alias('azure_native_machinelearningservices_modelversion')]
    param (
        [parameter(mandatory=$False,HelpMessage='Version identifier.)')]
        [string]
        $version,
        [parameter(mandatory=$False,HelpMessage='Container name.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group. The name is case insensitive.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Name of Azure Machine Learning workspace.)')]
        [string]
        $workspaceName,
        [parameter(mandatory=$False,HelpMessage='[Required] Additional attributes of the entity.)')]
        [ModelVersion]
        $properties,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid,
        [parameter(HelpMessage='Specifies a list of named output properties that should be treated as secrets, which means they will be encrypted. It augments the list of values that Pulumi detects, based on secret inputs to the resource.')]
        [string[]]
        $PulumiSecretOutputs,
        [parameter(HelpMessage='The aliases parameter provides a list of aliases for a resource or component resource. If youre changing the name, type, or parent path of a resource or component resource, you can add the old name to the list of aliases for a resource to ensure that existing resources will be migrated to the new name instead of being deleted and replaced with the new named resource.')]
        [string[]]
        $PulumiAliases,
        [parameter(HelpMessage='The customTimeouts parameter provides a set of custom timeouts for create, update, and delete operations on a resource. These timeouts are specified using a duration string such as 5m (5 minutes), 40s (40 seconds), or 1d (1 day). Supported duration units are ns, us (or µs), ms, s, m, and h (nanoseconds, microseconds, milliseconds, seconds, minutes, and hours, respectively).')]
        [pulumicustomtimeouts]
        $PulumiCustomTimeouts,
        [parameter(HelpMessage='Setting the PulumiDeleteBeforeReplace parameter to true means that Pulumi will delete the existing resource before creating its replacement. Be aware that this behavior has a cascading impact on dependencies so more resources may be replaced, which can lead to downtime. However, this option may be necessary for some resources that manage scarce resources behind the scenes, and/or resources that cannot exist side-by-side.')]
        [bool]
        $PulumiDeleteBeforeReplace,
        [parameter(HelpMessage='Creates a list of explicit dependencies between resources.The DependsOn parameter ensures that resource creation, update, and deletion operations are done in the correct order.')]
        [object[]]
        $PulumiDependsOn,
        [parameter(HelpMessage='Specifies a list of properties that Pulumi will ignore when it updates existing resources. Any properties specified in this list that are also specified in the resources arguments will only be used when creating the resource.')]
        [string[]]
        $PulumiIgnoreChanges,
        [parameter(HelpMessage='Imports an existing cloud resource so that Pulumi can manage it. To import a resource, first specify the PulumiImport parameter with the resources ID')]
        [string]
        $PulumiImport = [NullString]::Value,
        [parameter(HelpMessage='Specifies a parent for a resource. It is used to associate children with the parents that encapsulate or are responsible for them.')]
        [object]
        $PulumiParent = [NullString]::Value,
        [parameter(HelpMessage='Marks a resource as protected. A protected resource cannot be deleted directly, and it will be an error to do a Pulumi deployment which tries to delete a protected resource for any reason.')]
        [bool]
        $PulumiProtect,
        [parameter(HelpMessage='Sets a provider for the resource. The default is to inherit this value from the parent resource, and to use the ambient provider specified by Pulumi configuration for resources without a parent.')]
        [object]
        $PulumiProvider = [NullString]::Value,
        [parameter(HelpMessage='Sets a list of providers for the resource and its children. This list is combined with resource parents providers lists. If no value is provided, the providers list is identical to the parent. When determining which provider to use for a resource, the providers list is used if provider is not supplied.')]
        [object[]]
        $PulumiProviders,
        [parameter(HelpMessage='Used to indicate that changes to certain properties on a resource should force a replacement of the resource instead of an in-place update. Typically users rely on the resource provider to make this decision based on whether the input property is one that the provider knows how to update in place, or if not, requires a replacement to modify. However, there are cases where users want to replace a resource on a change to an input property even if the resource provider itself doesnt believe it has to replace the resource.')]
        [string[]]
        $PulumiReplaceOnChanges,
        [parameter(HelpMessage='Marks a resource to be retained. If this option is set then Pulumi will not call through to the resource providers Delete method when deleting or replacing the resource during pulumi up or pulumi destroy. As a result, the resource will not be deleted from the backing cloud provider, but will be removed from the Pulumi state.')]
        [bool]
        $PulumiRetainOnDelete,
        [parameter(HelpMessage='Specifies a provider version to use when operating on a resource. This version overrides the version information inferred from the current package. This option should be used rarely.')]
        [string]
        $PulumiProviderVersion = [NullString]::Value
    )

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

        $resource.options.additionalSecretOutputs = $PulumiSecretOutputs
        $resource.options.aliases = $PulumiAliases
        $resource.options.customTimeouts = $PulumiCustomTimeouts
        $resource.options.deleteBeforeReplace = $PulumiDeleteBeforeReplace
        $resource.options.ignoreChanges = $PulumiIgnoreChanges
        $resource.options.import = if([string]::IsNullOrEmpty($PulumiImport)) { [NullString]::Value } else { $PulumiImport }
        $resource.options.protect = $PulumiProtect
        $resource.options.replaceOnChanges = $PulumiReplaceOnChanges
        $resource.options.retainOnDelete = $PulumiRetainOnDelete
        $resource.options.version = if([string]::IsNullOrEmpty($PulumiProviderVersion)) { [NullString]::Value } else { $PulumiProviderVersion }

        foreach($Dependency in $DependsOn)
        {
            if($Dependency -is [pulumiresource])
            {
                $resource.options.dependson += $Dependency.Reference()
            } else
            {
                $resource.options.dependson += $Dependency
            }
        }
        if($PulumiParent -is [pulumiresource])
        {
            $resource.options.parent = $PulumiParent.Reference()
        } else
        {
            $resource.options.parent = $PulumiParent
        }
        foreach($provider in $PulumiProviders)
        {
            if($provider -is [pulumiprovider])
            {
                $resource.options.providers += $provider.Reference()
            } else
            {
                $resource.options.providers += $provider
            }
        }
        if($PulumiProvider -is [pulumiprovider])
        {
            $resource.options.provider = $PulumiProvider.Reference()
        } else
        {
            $resource.options.provider = $PulumiProvider
        }
        $resource.properties["name"] = $name
        $resource.properties["properties"] = $properties
        $resource.properties["resourceGroupName"] = $resourceGroupName
        $resource.properties["workspaceName"] = $workspaceName

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

        $global:pulumiresources += $resource
        return $resource
    }
}
class CodeContainer
{
    [object] $properties
    [string] $description
    [object] $tags
}
function New-AzureNativeTypeMachinelearningservicesCodeContainer
{
    param (
        [parameter(mandatory=$False,HelpMessage='The asset property dictionary.)')]
        [hashtable]
        $properties,
        [parameter(mandatory=$False,HelpMessage='The asset description text.)')]
        [string]
        $description,
        [parameter(mandatory=$False,HelpMessage='Tag dictionary. Tags can be added, removed, and updated.)')]
        [hashtable]
        $tags
    )

    process
    {
        return $([CodeContainer]$PSBoundParameters)
    }
}
function New-AzureNativeMachinelearningservicesCodeContainer
{
    [Alias('azure_native_machinelearningservices_codecontainer')]
    param (
        [parameter(mandatory=$False,HelpMessage='Container name.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group. The name is case insensitive.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Name of Azure Machine Learning workspace.)')]
        [string]
        $workspaceName,
        [parameter(mandatory=$False,HelpMessage='[Required] Additional attributes of the entity.)')]
        [CodeContainer]
        $properties,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid,
        [parameter(HelpMessage='Specifies a list of named output properties that should be treated as secrets, which means they will be encrypted. It augments the list of values that Pulumi detects, based on secret inputs to the resource.')]
        [string[]]
        $PulumiSecretOutputs,
        [parameter(HelpMessage='The aliases parameter provides a list of aliases for a resource or component resource. If youre changing the name, type, or parent path of a resource or component resource, you can add the old name to the list of aliases for a resource to ensure that existing resources will be migrated to the new name instead of being deleted and replaced with the new named resource.')]
        [string[]]
        $PulumiAliases,
        [parameter(HelpMessage='The customTimeouts parameter provides a set of custom timeouts for create, update, and delete operations on a resource. These timeouts are specified using a duration string such as 5m (5 minutes), 40s (40 seconds), or 1d (1 day). Supported duration units are ns, us (or µs), ms, s, m, and h (nanoseconds, microseconds, milliseconds, seconds, minutes, and hours, respectively).')]
        [pulumicustomtimeouts]
        $PulumiCustomTimeouts,
        [parameter(HelpMessage='Setting the PulumiDeleteBeforeReplace parameter to true means that Pulumi will delete the existing resource before creating its replacement. Be aware that this behavior has a cascading impact on dependencies so more resources may be replaced, which can lead to downtime. However, this option may be necessary for some resources that manage scarce resources behind the scenes, and/or resources that cannot exist side-by-side.')]
        [bool]
        $PulumiDeleteBeforeReplace,
        [parameter(HelpMessage='Creates a list of explicit dependencies between resources.The DependsOn parameter ensures that resource creation, update, and deletion operations are done in the correct order.')]
        [object[]]
        $PulumiDependsOn,
        [parameter(HelpMessage='Specifies a list of properties that Pulumi will ignore when it updates existing resources. Any properties specified in this list that are also specified in the resources arguments will only be used when creating the resource.')]
        [string[]]
        $PulumiIgnoreChanges,
        [parameter(HelpMessage='Imports an existing cloud resource so that Pulumi can manage it. To import a resource, first specify the PulumiImport parameter with the resources ID')]
        [string]
        $PulumiImport = [NullString]::Value,
        [parameter(HelpMessage='Specifies a parent for a resource. It is used to associate children with the parents that encapsulate or are responsible for them.')]
        [object]
        $PulumiParent = [NullString]::Value,
        [parameter(HelpMessage='Marks a resource as protected. A protected resource cannot be deleted directly, and it will be an error to do a Pulumi deployment which tries to delete a protected resource for any reason.')]
        [bool]
        $PulumiProtect,
        [parameter(HelpMessage='Sets a provider for the resource. The default is to inherit this value from the parent resource, and to use the ambient provider specified by Pulumi configuration for resources without a parent.')]
        [object]
        $PulumiProvider = [NullString]::Value,
        [parameter(HelpMessage='Sets a list of providers for the resource and its children. This list is combined with resource parents providers lists. If no value is provided, the providers list is identical to the parent. When determining which provider to use for a resource, the providers list is used if provider is not supplied.')]
        [object[]]
        $PulumiProviders,
        [parameter(HelpMessage='Used to indicate that changes to certain properties on a resource should force a replacement of the resource instead of an in-place update. Typically users rely on the resource provider to make this decision based on whether the input property is one that the provider knows how to update in place, or if not, requires a replacement to modify. However, there are cases where users want to replace a resource on a change to an input property even if the resource provider itself doesnt believe it has to replace the resource.')]
        [string[]]
        $PulumiReplaceOnChanges,
        [parameter(HelpMessage='Marks a resource to be retained. If this option is set then Pulumi will not call through to the resource providers Delete method when deleting or replacing the resource during pulumi up or pulumi destroy. As a result, the resource will not be deleted from the backing cloud provider, but will be removed from the Pulumi state.')]
        [bool]
        $PulumiRetainOnDelete,
        [parameter(HelpMessage='Specifies a provider version to use when operating on a resource. This version overrides the version information inferred from the current package. This option should be used rarely.')]
        [string]
        $PulumiProviderVersion = [NullString]::Value
    )

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

        $resource.options.additionalSecretOutputs = $PulumiSecretOutputs
        $resource.options.aliases = $PulumiAliases
        $resource.options.customTimeouts = $PulumiCustomTimeouts
        $resource.options.deleteBeforeReplace = $PulumiDeleteBeforeReplace
        $resource.options.ignoreChanges = $PulumiIgnoreChanges
        $resource.options.import = if([string]::IsNullOrEmpty($PulumiImport)) { [NullString]::Value } else { $PulumiImport }
        $resource.options.protect = $PulumiProtect
        $resource.options.replaceOnChanges = $PulumiReplaceOnChanges
        $resource.options.retainOnDelete = $PulumiRetainOnDelete
        $resource.options.version = if([string]::IsNullOrEmpty($PulumiProviderVersion)) { [NullString]::Value } else { $PulumiProviderVersion }

        foreach($Dependency in $DependsOn)
        {
            if($Dependency -is [pulumiresource])
            {
                $resource.options.dependson += $Dependency.Reference()
            } else
            {
                $resource.options.dependson += $Dependency
            }
        }
        if($PulumiParent -is [pulumiresource])
        {
            $resource.options.parent = $PulumiParent.Reference()
        } else
        {
            $resource.options.parent = $PulumiParent
        }
        foreach($provider in $PulumiProviders)
        {
            if($provider -is [pulumiprovider])
            {
                $resource.options.providers += $provider.Reference()
            } else
            {
                $resource.options.providers += $provider
            }
        }
        if($PulumiProvider -is [pulumiprovider])
        {
            $resource.options.provider = $PulumiProvider.Reference()
        } else
        {
            $resource.options.provider = $PulumiProvider
        }
        $resource.properties["properties"] = $properties
        $resource.properties["resourceGroupName"] = $resourceGroupName
        $resource.properties["workspaceName"] = $workspaceName

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

        $global:pulumiresources += $resource
        return $resource
    }
}
class ComponentContainer
{
    [object] $properties
    [bool] $isArchived
    [string] $description
    [object] $tags
}
function New-AzureNativeTypeMachinelearningservicesComponentContainer
{
    param (
        [parameter(mandatory=$False,HelpMessage='The asset property dictionary.)')]
        [hashtable]
        $properties,
        [parameter(mandatory=$False,HelpMessage='Is the asset archived?)')]
        [bool]
        $isArchived,
        [parameter(mandatory=$False,HelpMessage='The asset description text.)')]
        [string]
        $description,
        [parameter(mandatory=$False,HelpMessage='Tag dictionary. Tags can be added, removed, and updated.)')]
        [hashtable]
        $tags
    )

    process
    {
        return $([ComponentContainer]$PSBoundParameters)
    }
}
function New-AzureNativeMachinelearningservicesComponentContainer
{
    [Alias('azure_native_machinelearningservices_componentcontainer')]
    param (
        [parameter(mandatory=$False,HelpMessage='Container name.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group. The name is case insensitive.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='[Required] Additional attributes of the entity.)')]
        [ComponentContainer]
        $componentContainerDetails,
        [parameter(mandatory=$False,HelpMessage='Name of Azure Machine Learning workspace.)')]
        [string]
        $workspaceName,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid,
        [parameter(HelpMessage='Specifies a list of named output properties that should be treated as secrets, which means they will be encrypted. It augments the list of values that Pulumi detects, based on secret inputs to the resource.')]
        [string[]]
        $PulumiSecretOutputs,
        [parameter(HelpMessage='The aliases parameter provides a list of aliases for a resource or component resource. If youre changing the name, type, or parent path of a resource or component resource, you can add the old name to the list of aliases for a resource to ensure that existing resources will be migrated to the new name instead of being deleted and replaced with the new named resource.')]
        [string[]]
        $PulumiAliases,
        [parameter(HelpMessage='The customTimeouts parameter provides a set of custom timeouts for create, update, and delete operations on a resource. These timeouts are specified using a duration string such as 5m (5 minutes), 40s (40 seconds), or 1d (1 day). Supported duration units are ns, us (or µs), ms, s, m, and h (nanoseconds, microseconds, milliseconds, seconds, minutes, and hours, respectively).')]
        [pulumicustomtimeouts]
        $PulumiCustomTimeouts,
        [parameter(HelpMessage='Setting the PulumiDeleteBeforeReplace parameter to true means that Pulumi will delete the existing resource before creating its replacement. Be aware that this behavior has a cascading impact on dependencies so more resources may be replaced, which can lead to downtime. However, this option may be necessary for some resources that manage scarce resources behind the scenes, and/or resources that cannot exist side-by-side.')]
        [bool]
        $PulumiDeleteBeforeReplace,
        [parameter(HelpMessage='Creates a list of explicit dependencies between resources.The DependsOn parameter ensures that resource creation, update, and deletion operations are done in the correct order.')]
        [object[]]
        $PulumiDependsOn,
        [parameter(HelpMessage='Specifies a list of properties that Pulumi will ignore when it updates existing resources. Any properties specified in this list that are also specified in the resources arguments will only be used when creating the resource.')]
        [string[]]
        $PulumiIgnoreChanges,
        [parameter(HelpMessage='Imports an existing cloud resource so that Pulumi can manage it. To import a resource, first specify the PulumiImport parameter with the resources ID')]
        [string]
        $PulumiImport = [NullString]::Value,
        [parameter(HelpMessage='Specifies a parent for a resource. It is used to associate children with the parents that encapsulate or are responsible for them.')]
        [object]
        $PulumiParent = [NullString]::Value,
        [parameter(HelpMessage='Marks a resource as protected. A protected resource cannot be deleted directly, and it will be an error to do a Pulumi deployment which tries to delete a protected resource for any reason.')]
        [bool]
        $PulumiProtect,
        [parameter(HelpMessage='Sets a provider for the resource. The default is to inherit this value from the parent resource, and to use the ambient provider specified by Pulumi configuration for resources without a parent.')]
        [object]
        $PulumiProvider = [NullString]::Value,
        [parameter(HelpMessage='Sets a list of providers for the resource and its children. This list is combined with resource parents providers lists. If no value is provided, the providers list is identical to the parent. When determining which provider to use for a resource, the providers list is used if provider is not supplied.')]
        [object[]]
        $PulumiProviders,
        [parameter(HelpMessage='Used to indicate that changes to certain properties on a resource should force a replacement of the resource instead of an in-place update. Typically users rely on the resource provider to make this decision based on whether the input property is one that the provider knows how to update in place, or if not, requires a replacement to modify. However, there are cases where users want to replace a resource on a change to an input property even if the resource provider itself doesnt believe it has to replace the resource.')]
        [string[]]
        $PulumiReplaceOnChanges,
        [parameter(HelpMessage='Marks a resource to be retained. If this option is set then Pulumi will not call through to the resource providers Delete method when deleting or replacing the resource during pulumi up or pulumi destroy. As a result, the resource will not be deleted from the backing cloud provider, but will be removed from the Pulumi state.')]
        [bool]
        $PulumiRetainOnDelete,
        [parameter(HelpMessage='Specifies a provider version to use when operating on a resource. This version overrides the version information inferred from the current package. This option should be used rarely.')]
        [string]
        $PulumiProviderVersion = [NullString]::Value
    )

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

        $resource.options.additionalSecretOutputs = $PulumiSecretOutputs
        $resource.options.aliases = $PulumiAliases
        $resource.options.customTimeouts = $PulumiCustomTimeouts
        $resource.options.deleteBeforeReplace = $PulumiDeleteBeforeReplace
        $resource.options.ignoreChanges = $PulumiIgnoreChanges
        $resource.options.import = if([string]::IsNullOrEmpty($PulumiImport)) { [NullString]::Value } else { $PulumiImport }
        $resource.options.protect = $PulumiProtect
        $resource.options.replaceOnChanges = $PulumiReplaceOnChanges
        $resource.options.retainOnDelete = $PulumiRetainOnDelete
        $resource.options.version = if([string]::IsNullOrEmpty($PulumiProviderVersion)) { [NullString]::Value } else { $PulumiProviderVersion }

        foreach($Dependency in $DependsOn)
        {
            if($Dependency -is [pulumiresource])
            {
                $resource.options.dependson += $Dependency.Reference()
            } else
            {
                $resource.options.dependson += $Dependency
            }
        }
        if($PulumiParent -is [pulumiresource])
        {
            $resource.options.parent = $PulumiParent.Reference()
        } else
        {
            $resource.options.parent = $PulumiParent
        }
        foreach($provider in $PulumiProviders)
        {
            if($provider -is [pulumiprovider])
            {
                $resource.options.providers += $provider.Reference()
            } else
            {
                $resource.options.providers += $provider
            }
        }
        if($PulumiProvider -is [pulumiprovider])
        {
            $resource.options.provider = $PulumiProvider.Reference()
        } else
        {
            $resource.options.provider = $PulumiProvider
        }
        $resource.properties["componentContainerDetails"] = $componentContainerDetails
        $resource.properties["resourceGroupName"] = $resourceGroupName
        $resource.properties["workspaceName"] = $workspaceName

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

        $global:pulumiresources += $resource
        return $resource
    }
}
class DataVersion
{
    [object] $properties
    [string] $description
    [bool] $isAnonymous
    [ArgumentCompletions('tabular', 'file')]
    [string] $datasetType
    [object] $tags
    [string] $path
    [string] $datastoreId
}
function New-AzureNativeTypeMachinelearningservicesDataVersion
{
    param (
        [parameter(mandatory=$False,HelpMessage='The asset property dictionary.)')]
        [hashtable]
        $properties,
        [parameter(mandatory=$False,HelpMessage='The asset description text.)')]
        [string]
        $description,
        [parameter(mandatory=$False,HelpMessage='If the name version are system generated (anonymous registration).)')]
        [bool]
        $isAnonymous,
        [parameter(mandatory=$False,HelpMessage='The Format of dataset.)')]
        [string]
        [ArgumentCompletions('tabular', 'file')]
        $datasetType,
        [parameter(mandatory=$False,HelpMessage='Tag dictionary. Tags can be added, removed, and updated.)')]
        [hashtable]
        $tags,
        [parameter(mandatory=$False,HelpMessage='[Required] The path of the file/directory in the datastore.)')]
        [string]
        $path,
        [parameter(mandatory=$False,HelpMessage='ARM resource ID of the datastore where the asset is located.)')]
        [string]
        $datastoreId
    )

    process
    {
        return $([DataVersion]$PSBoundParameters)
    }
}
function New-AzureNativeMachinelearningservicesDataVersion
{
    [Alias('azure_native_machinelearningservices_dataversion')]
    param (
        [parameter(mandatory=$False,HelpMessage='Version identifier.)')]
        [string]
        $version,
        [parameter(mandatory=$False,HelpMessage='Container name.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group. The name is case insensitive.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Name of Azure Machine Learning workspace.)')]
        [string]
        $workspaceName,
        [parameter(mandatory=$False,HelpMessage='[Required] Additional attributes of the entity.)')]
        [DataVersion]
        $properties,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid,
        [parameter(HelpMessage='Specifies a list of named output properties that should be treated as secrets, which means they will be encrypted. It augments the list of values that Pulumi detects, based on secret inputs to the resource.')]
        [string[]]
        $PulumiSecretOutputs,
        [parameter(HelpMessage='The aliases parameter provides a list of aliases for a resource or component resource. If youre changing the name, type, or parent path of a resource or component resource, you can add the old name to the list of aliases for a resource to ensure that existing resources will be migrated to the new name instead of being deleted and replaced with the new named resource.')]
        [string[]]
        $PulumiAliases,
        [parameter(HelpMessage='The customTimeouts parameter provides a set of custom timeouts for create, update, and delete operations on a resource. These timeouts are specified using a duration string such as 5m (5 minutes), 40s (40 seconds), or 1d (1 day). Supported duration units are ns, us (or µs), ms, s, m, and h (nanoseconds, microseconds, milliseconds, seconds, minutes, and hours, respectively).')]
        [pulumicustomtimeouts]
        $PulumiCustomTimeouts,
        [parameter(HelpMessage='Setting the PulumiDeleteBeforeReplace parameter to true means that Pulumi will delete the existing resource before creating its replacement. Be aware that this behavior has a cascading impact on dependencies so more resources may be replaced, which can lead to downtime. However, this option may be necessary for some resources that manage scarce resources behind the scenes, and/or resources that cannot exist side-by-side.')]
        [bool]
        $PulumiDeleteBeforeReplace,
        [parameter(HelpMessage='Creates a list of explicit dependencies between resources.The DependsOn parameter ensures that resource creation, update, and deletion operations are done in the correct order.')]
        [object[]]
        $PulumiDependsOn,
        [parameter(HelpMessage='Specifies a list of properties that Pulumi will ignore when it updates existing resources. Any properties specified in this list that are also specified in the resources arguments will only be used when creating the resource.')]
        [string[]]
        $PulumiIgnoreChanges,
        [parameter(HelpMessage='Imports an existing cloud resource so that Pulumi can manage it. To import a resource, first specify the PulumiImport parameter with the resources ID')]
        [string]
        $PulumiImport = [NullString]::Value,
        [parameter(HelpMessage='Specifies a parent for a resource. It is used to associate children with the parents that encapsulate or are responsible for them.')]
        [object]
        $PulumiParent = [NullString]::Value,
        [parameter(HelpMessage='Marks a resource as protected. A protected resource cannot be deleted directly, and it will be an error to do a Pulumi deployment which tries to delete a protected resource for any reason.')]
        [bool]
        $PulumiProtect,
        [parameter(HelpMessage='Sets a provider for the resource. The default is to inherit this value from the parent resource, and to use the ambient provider specified by Pulumi configuration for resources without a parent.')]
        [object]
        $PulumiProvider = [NullString]::Value,
        [parameter(HelpMessage='Sets a list of providers for the resource and its children. This list is combined with resource parents providers lists. If no value is provided, the providers list is identical to the parent. When determining which provider to use for a resource, the providers list is used if provider is not supplied.')]
        [object[]]
        $PulumiProviders,
        [parameter(HelpMessage='Used to indicate that changes to certain properties on a resource should force a replacement of the resource instead of an in-place update. Typically users rely on the resource provider to make this decision based on whether the input property is one that the provider knows how to update in place, or if not, requires a replacement to modify. However, there are cases where users want to replace a resource on a change to an input property even if the resource provider itself doesnt believe it has to replace the resource.')]
        [string[]]
        $PulumiReplaceOnChanges,
        [parameter(HelpMessage='Marks a resource to be retained. If this option is set then Pulumi will not call through to the resource providers Delete method when deleting or replacing the resource during pulumi up or pulumi destroy. As a result, the resource will not be deleted from the backing cloud provider, but will be removed from the Pulumi state.')]
        [bool]
        $PulumiRetainOnDelete,
        [parameter(HelpMessage='Specifies a provider version to use when operating on a resource. This version overrides the version information inferred from the current package. This option should be used rarely.')]
        [string]
        $PulumiProviderVersion = [NullString]::Value
    )

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

        $resource.options.additionalSecretOutputs = $PulumiSecretOutputs
        $resource.options.aliases = $PulumiAliases
        $resource.options.customTimeouts = $PulumiCustomTimeouts
        $resource.options.deleteBeforeReplace = $PulumiDeleteBeforeReplace
        $resource.options.ignoreChanges = $PulumiIgnoreChanges
        $resource.options.import = if([string]::IsNullOrEmpty($PulumiImport)) { [NullString]::Value } else { $PulumiImport }
        $resource.options.protect = $PulumiProtect
        $resource.options.replaceOnChanges = $PulumiReplaceOnChanges
        $resource.options.retainOnDelete = $PulumiRetainOnDelete
        $resource.options.version = if([string]::IsNullOrEmpty($PulumiProviderVersion)) { [NullString]::Value } else { $PulumiProviderVersion }

        foreach($Dependency in $DependsOn)
        {
            if($Dependency -is [pulumiresource])
            {
                $resource.options.dependson += $Dependency.Reference()
            } else
            {
                $resource.options.dependson += $Dependency
            }
        }
        if($PulumiParent -is [pulumiresource])
        {
            $resource.options.parent = $PulumiParent.Reference()
        } else
        {
            $resource.options.parent = $PulumiParent
        }
        foreach($provider in $PulumiProviders)
        {
            if($provider -is [pulumiprovider])
            {
                $resource.options.providers += $provider.Reference()
            } else
            {
                $resource.options.providers += $provider
            }
        }
        if($PulumiProvider -is [pulumiprovider])
        {
            $resource.options.provider = $PulumiProvider.Reference()
        } else
        {
            $resource.options.provider = $PulumiProvider
        }
        $resource.properties["name"] = $name
        $resource.properties["properties"] = $properties
        $resource.properties["resourceGroupName"] = $resourceGroupName
        $resource.properties["workspaceName"] = $workspaceName

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

        $global:pulumiresources += $resource
        return $resource
    }
}
class ACIServiceCreateRequestDataCollection
{
    [bool] $eventHubEnabled
    [bool] $storageEnabled
}
function New-AzureNativeTypeMachinelearningservicesACIServiceCreateRequestDataCollection
{
    param (
        [parameter(mandatory=$False,HelpMessage='Option for enabling/disabling Event Hub.)')]
        [bool]
        $eventHubEnabled,
        [parameter(mandatory=$False,HelpMessage='Option for enabling/disabling storage.)')]
        [bool]
        $storageEnabled
    )

    process
    {
        return $([ACIServiceCreateRequestDataCollection]$PSBoundParameters)
    }
}
class CreateServiceRequestKeys
{
    [string] $secondaryKey
    [string] $primaryKey
}
function New-AzureNativeTypeMachinelearningservicesCreateServiceRequestKeys
{
    param (
        [parameter(mandatory=$False,HelpMessage='The secondary key.)')]
        [string]
        $secondaryKey,
        [parameter(mandatory=$False,HelpMessage='The primary key.)')]
        [string]
        $primaryKey
    )

    process
    {
        return $([CreateServiceRequestKeys]$PSBoundParameters)
    }
}
class ACIServiceCreateRequestEncryptionProperties
{
    [string] $keyVersion
    [string] $vaultBaseUrl
    [string] $keyName
}
function New-AzureNativeTypeMachinelearningservicesACIServiceCreateRequestEncryptionProperties
{
    param (
        [parameter(mandatory=$False,HelpMessage='Encryption Key Version)')]
        [string]
        $keyVersion,
        [parameter(mandatory=$False,HelpMessage='vault base Url)')]
        [string]
        $vaultBaseUrl,
        [parameter(mandatory=$False,HelpMessage='Encryption Key name)')]
        [string]
        $keyName
    )

    process
    {
        return $([ACIServiceCreateRequestEncryptionProperties]$PSBoundParameters)
    }
}
class ImageAsset
{
    [string] $url
    [bool] $unpack
    [string] $mimeType
    [string] $id
}
function New-AzureNativeTypeMachinelearningservicesImageAsset
{
    param (
        [parameter(mandatory=$False,HelpMessage='The Url of the Asset.)')]
        [string]
        $url,
        [parameter(mandatory=$False,HelpMessage='Whether the Asset is unpacked.)')]
        [bool]
        $unpack,
        [parameter(mandatory=$False,HelpMessage='The mime type.)')]
        [string]
        $mimeType,
        [parameter(mandatory=$False,HelpMessage='The Asset Id.)')]
        [string]
        $id
    )

    process
    {
        return $([ImageAsset]$PSBoundParameters)
    }
}
class EnvironmentImageRequestEnvironmentReference
{
    [string] $name
    [string] $version
}
function New-AzureNativeTypeMachinelearningservicesEnvironmentImageRequestEnvironmentReference
{
    param (
        [parameter(mandatory=$False,HelpMessage='Name of the environment.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='Version of the environment.)')]
        [string]
        $version
    )

    process
    {
        return $([EnvironmentImageRequestEnvironmentReference]$PSBoundParameters)
    }
}
class ModelEnvironmentDefinitionPython
{
    [bool] $userManagedDependencies
    [string] $baseCondaEnvironment
    [object] $condaDependencies
    [string] $interpreterPath
}
function New-AzureNativeTypeMachinelearningservicesModelEnvironmentDefinitionPython
{
    param (
        [parameter(mandatory=$False,HelpMessage='True means that AzureML reuses an existing python environment; False means that AzureML will create a python environment based on the Conda dependencies specification.)')]
        [bool]
        $userManagedDependencies,
        [parameter(mandatory=$False,HelpMessage=')')]
        [string]
        $baseCondaEnvironment,
        [parameter(mandatory=$False,HelpMessage='A JObject containing Conda dependencies.)')]
        $condaDependencies,
        [parameter(mandatory=$False,HelpMessage='The python interpreter path to use if an environment build is not required. The path specified gets used to call the user script.)')]
        [string]
        $interpreterPath
    )

    process
    {
        return $([ModelEnvironmentDefinitionPython]$PSBoundParameters)
    }
}
class RGitHubPackage
{
    [string] $repository
    [string] $authToken
}
function New-AzureNativeTypeMachinelearningservicesRGitHubPackage
{
    param (
        [parameter(mandatory=$False,HelpMessage='Repository address in the format username/repo[/subdir][@ref|#pull].)')]
        [string]
        $repository,
        [parameter(mandatory=$False,HelpMessage='Personal access token to install from a private repo)')]
        [string]
        $authToken
    )

    process
    {
        return $([RGitHubPackage]$PSBoundParameters)
    }
}
class RCranPackage
{
    [string] $name
    [string] $repository
}
function New-AzureNativeTypeMachinelearningservicesRCranPackage
{
    param (
        [parameter(mandatory=$False,HelpMessage='The package name.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='The repository name.)')]
        [string]
        $repository
    )

    process
    {
        return $([RCranPackage]$PSBoundParameters)
    }
}
class ModelEnvironmentDefinitionR
{
    [string[]] $customUrlPackages
    [bool] $userManaged
    [RGitHubPackage[]] $gitHubPackages
    [string] $rscriptPath
    [string] $snapshotDate
    [string[]] $bioConductorPackages
    [string] $rVersion
    [RCranPackage[]] $cranPackages
}
function New-AzureNativeTypeMachinelearningservicesModelEnvironmentDefinitionR
{
    param (
        [parameter(mandatory=$False,HelpMessage='The packages from custom urls.)')]
        [string[]]
        $customUrlPackages,
        [parameter(mandatory=$False,HelpMessage='Indicates whether the environment is managed by user or by AzureML.)')]
        [bool]
        $userManaged,
        [parameter(mandatory=$False,HelpMessage='The packages directly from GitHub.)')]
        $gitHubPackages,
        [parameter(mandatory=$False,HelpMessage='The Rscript path to use if an environment build is not required.
The path specified gets used to call the user script.)'
)]
        [string]
        $rscriptPath,
        [parameter(mandatory=$False,HelpMessage='Date of MRAN snapshot to use in YYYY-MM-DD format, e.g. "2019-04-17")')]
        [string]
        $snapshotDate,
        [parameter(mandatory=$False,HelpMessage='The packages from Bioconductor.)')]
        [string[]]
        $bioConductorPackages,
        [parameter(mandatory=$False,HelpMessage='The version of R to be installed)')]
        [string]
        $rVersion,
        [parameter(mandatory=$False,HelpMessage='The CRAN packages to use.)')]
        $cranPackages
    )

    process
    {
        return $([ModelEnvironmentDefinitionR]$PSBoundParameters)
    }
}
class ModelDockerSectionBaseImageRegistry
{
    [string] $username
    [string] $address
    [string] $password
}
function New-AzureNativeTypeMachinelearningservicesModelDockerSectionBaseImageRegistry
{
    param (
        [parameter(mandatory=$False,HelpMessage=')')]
        [string]
        $username,
        [parameter(mandatory=$False,HelpMessage=')')]
        [string]
        $address,
        [parameter(mandatory=$False,HelpMessage=')')]
        [string]
        $password
    )

    process
    {
        return $([ModelDockerSectionBaseImageRegistry]$PSBoundParameters)
    }
}
class ModelEnvironmentDefinitionDocker
{
    [ModelDockerSectionBaseImageRegistry] $baseImageRegistry
    [string] $baseImage
    [string] $baseDockerfile
}
function New-AzureNativeTypeMachinelearningservicesModelEnvironmentDefinitionDocker
{
    param (
        [parameter(mandatory=$False,HelpMessage='Image registry that contains the base image.)')]
        [ModelDockerSectionBaseImageRegistry]
        $baseImageRegistry,
        [parameter(mandatory=$False,HelpMessage='Base image used for Docker-based runs. Mutually exclusive with BaseDockerfile.)')]
        [string]
        $baseImage,
        [parameter(mandatory=$False,HelpMessage='Base Dockerfile used for Docker-based runs. Mutually exclusive with BaseImage.)')]
        [string]
        $baseDockerfile
    )

    process
    {
        return $([ModelEnvironmentDefinitionDocker]$PSBoundParameters)
    }
}
class SparkMavenPackage
{
    [string] $version
    [string] $artifact
    [string] $group
}
function New-AzureNativeTypeMachinelearningservicesSparkMavenPackage
{
    param (
        [parameter(mandatory=$False,HelpMessage=')')]
        [string]
        $version,
        [parameter(mandatory=$False,HelpMessage=')')]
        [string]
        $artifact,
        [parameter(mandatory=$False,HelpMessage=')')]
        [string]
        $group
    )

    process
    {
        return $([SparkMavenPackage]$PSBoundParameters)
    }
}
class ModelEnvironmentDefinitionSpark
{
    [SparkMavenPackage[]] $packages
    [string[]] $repositories
    [bool] $precachePackages
}
function New-AzureNativeTypeMachinelearningservicesModelEnvironmentDefinitionSpark
{
    param (
        [parameter(mandatory=$False,HelpMessage='The Spark packages to use.)')]
        $packages,
        [parameter(mandatory=$False,HelpMessage='The list of spark repositories.)')]
        [string[]]
        $repositories,
        [parameter(mandatory=$False,HelpMessage='Whether to precache the packages.)')]
        [bool]
        $precachePackages
    )

    process
    {
        return $([ModelEnvironmentDefinitionSpark]$PSBoundParameters)
    }
}
class EnvironmentImageRequestEnvironment
{
    [ModelEnvironmentDefinitionPython] $python
    [string] $inferencingStackVersion
    [object] $environmentVariables
    [ModelEnvironmentDefinitionR] $r
    [string] $name
    [ModelEnvironmentDefinitionDocker] $docker
    [string] $version
    [ModelEnvironmentDefinitionSpark] $spark
}
function New-AzureNativeTypeMachinelearningservicesEnvironmentImageRequestEnvironment
{
    param (
        [parameter(mandatory=$False,HelpMessage='Settings for a Python environment.)')]
        [ModelEnvironmentDefinitionPython]
        $python,
        [parameter(mandatory=$False,HelpMessage='The inferencing stack version added to the image. To avoid adding an inferencing stack, do not set this value. Valid values: "latest".)')]
        [string]
        $inferencingStackVersion,
        [parameter(mandatory=$False,HelpMessage='Definition of environment variables to be defined in the environment.)')]
        [hashtable]
        $environmentVariables,
        [parameter(mandatory=$False,HelpMessage='Settings for a R environment.)')]
        [ModelEnvironmentDefinitionR]
        $r,
        [parameter(mandatory=$False,HelpMessage='The name of the environment.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='The definition of a Docker container.)')]
        [ModelEnvironmentDefinitionDocker]
        $docker,
        [parameter(mandatory=$False,HelpMessage='The environment version.)')]
        [string]
        $version,
        [parameter(mandatory=$False,HelpMessage='The configuration for a Spark environment.)')]
        [ModelEnvironmentDefinitionSpark]
        $spark
    )

    process
    {
        return $([EnvironmentImageRequestEnvironment]$PSBoundParameters)
    }
}
class DatasetReference
{
    [string] $id
    [string] $name
}
function New-AzureNativeTypeMachinelearningservicesDatasetReference
{
    param (
        [parameter(mandatory=$False,HelpMessage='The id of the dataset reference.)')]
        [string]
        $id,
        [parameter(mandatory=$False,HelpMessage='The name of the dataset reference.)')]
        [string]
        $name
    )

    process
    {
        return $([DatasetReference]$PSBoundParameters)
    }
}
class ContainerResourceRequirements
{
    [int] $memoryInGB
    [int] $cpuLimit
    [int] $cpu
    [int] $memoryInGBLimit
    [int] $fpga
    [int] $gpu
}
function New-AzureNativeTypeMachinelearningservicesContainerResourceRequirements
{
    param (
        [parameter(mandatory=$False,HelpMessage='The minimum amount of memory (in GB) to be used by the container. More info:
https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/)'
)]
        [int]
        $memoryInGB,
        [parameter(mandatory=$False,HelpMessage='The maximum amount of CPU cores allowed to be used by the container. More info:
https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/)'
)]
        [int]
        $cpuLimit,
        [parameter(mandatory=$False,HelpMessage='The minimum amount of CPU cores to be used by the container. More info:
https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/)'
)]
        [int]
        $cpu,
        [parameter(mandatory=$False,HelpMessage='The maximum amount of memory (in GB) allowed to be used by the container. More info:
https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/)'
)]
        [int]
        $memoryInGBLimit,
        [parameter(mandatory=$False,HelpMessage='The number of FPGA PCIE devices exposed to the container. Must be multiple of 2.)')]
        [int]
        $fpga,
        [parameter(mandatory=$False,HelpMessage='The number of GPU cores in the container.)')]
        [int]
        $gpu
    )

    process
    {
        return $([ContainerResourceRequirements]$PSBoundParameters)
    }
}
class Model
{
    [string] $mimeType
    [string[]] $derivedModelIds
    [DatasetReference[]] $datasets
    [bool] $unpack
    [string] $id
    [string] $runId
    [string] $name
    [string] $sampleInputData
    [string] $createdTime
    [string] $url
    [ContainerResourceRequirements] $resourceRequirements
    [string] $framework
    [string] $description
    [string] $modifiedTime
    [object] $properties
    [int] $version
    [object] $kvTags
    [string] $sampleOutputData
    [string] $frameworkVersion
    [string] $experimentName
    [string] $parentModelId
}
function New-AzureNativeTypeMachinelearningservicesModel
{
    param (
        [parameter(mandatory=$False,HelpMessage='The MIME type of Model content. For more details about MIME type, please open https://www.iana.org/assignments/media-types/media-types.xhtml)')]
        [string]
        $mimeType,
        [parameter(mandatory=$False,HelpMessage='Models derived from this model)')]
        [string[]]
        $derivedModelIds,
        [parameter(mandatory=$False,HelpMessage='The list of datasets associated with the model.)')]
        $datasets,
        [parameter(mandatory=$False,HelpMessage='Indicates whether we need to unpack the Model during docker Image creation.)')]
        [bool]
        $unpack,
        [parameter(mandatory=$False,HelpMessage='The Model Id.)')]
        [string]
        $id,
        [parameter(mandatory=$False,HelpMessage='The RunId that created this model.)')]
        [string]
        $runId,
        [parameter(mandatory=$False,HelpMessage='The Model name.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='Sample Input Data for the Model. A reference to a dataset in the workspace in the format aml://dataset/{datasetId})')]
        [string]
        $sampleInputData,
        [parameter(mandatory=$False,HelpMessage='The Model creation time (UTC).)')]
        [string]
        $createdTime,
        [parameter(mandatory=$False,HelpMessage='The URL of the Model. Usually a SAS URL.)')]
        [string]
        $url,
        [parameter(mandatory=$False,HelpMessage='Resource requirements for the model)')]
        [ContainerResourceRequirements]
        $resourceRequirements,
        [parameter(mandatory=$False,HelpMessage='The Model framework.)')]
        [string]
        $framework,
        [parameter(mandatory=$False,HelpMessage='The Model description text.)')]
        [string]
        $description,
        [parameter(mandatory=$False,HelpMessage='The Model last modified time (UTC).)')]
        [string]
        $modifiedTime,
        [parameter(mandatory=$False,HelpMessage='The Model property dictionary. Properties are immutable.)')]
        [hashtable]
        $properties,
        [parameter(mandatory=$False,HelpMessage='The Model version assigned by Model Management Service.)')]
        [int]
        $version,
        [parameter(mandatory=$False,HelpMessage='The Model tag dictionary. Items are mutable.)')]
        [hashtable]
        $kvTags,
        [parameter(mandatory=$False,HelpMessage='Sample Output Data for the Model. A reference to a dataset in the workspace in the format aml://dataset/{datasetId})')]
        [string]
        $sampleOutputData,
        [parameter(mandatory=$False,HelpMessage='The Model framework version.)')]
        [string]
        $frameworkVersion,
        [parameter(mandatory=$False,HelpMessage='The name of the experiment where this model was created.)')]
        [string]
        $experimentName,
        [parameter(mandatory=$False,HelpMessage='The Parent Model Id.)')]
        [string]
        $parentModelId
    )

    process
    {
        return $([Model]$PSBoundParameters)
    }
}
class CreateServiceRequestEnvironmentImageRequest
{
    [ImageAsset[]] $assets
    [EnvironmentImageRequestEnvironmentReference] $environmentReference
    [string[]] $modelIds
    [EnvironmentImageRequestEnvironment] $environment
    [string] $driverProgram
    [Model[]] $models
}
function New-AzureNativeTypeMachinelearningservicesCreateServiceRequestEnvironmentImageRequest
{
    param (
        [parameter(mandatory=$False,HelpMessage='The list of assets.)')]
        $assets,
        [parameter(mandatory=$False,HelpMessage='The unique identifying details of the AZURE ML environment.)')]
        [EnvironmentImageRequestEnvironmentReference]
        $environmentReference,
        [parameter(mandatory=$False,HelpMessage='The list of model Ids.)')]
        [string[]]
        $modelIds,
        [parameter(mandatory=$False,HelpMessage='The details of the AZURE ML environment.)')]
        [EnvironmentImageRequestEnvironment]
        $environment,
        [parameter(mandatory=$False,HelpMessage='The name of the driver file.)')]
        [string]
        $driverProgram,
        [parameter(mandatory=$False,HelpMessage='The list of models.)')]
        $models
    )

    process
    {
        return $([CreateServiceRequestEnvironmentImageRequest]$PSBoundParameters)
    }
}
class ACIServiceCreateRequestVnetConfiguration
{
    [string] $subnetName
    [string] $vnetName
}
function New-AzureNativeTypeMachinelearningservicesACIServiceCreateRequestVnetConfiguration
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the virtual network subnet.)')]
        [string]
        $subnetName,
        [parameter(mandatory=$False,HelpMessage='The name of the virtual network.)')]
        [string]
        $vnetName
    )

    process
    {
        return $([ACIServiceCreateRequestVnetConfiguration]$PSBoundParameters)
    }
}
function New-AzureNativeMachinelearningservicesACIService
{
    [Alias('azure_native_machinelearningservices_aciservice')]
    param (
        [parameter(mandatory=$False,HelpMessage='Details of the data collection options specified.)')]
        [ACIServiceCreateRequestDataCollection]
        $dataCollection,
        [parameter(mandatory=$False,HelpMessage='The public SSL certificate in PEM format to use if SSL is enabled.)')]
        [string]
        $sslCertificate,
        [parameter(mandatory=$False,HelpMessage='Whether or not authentication is enabled on the service.)')]
        [bool]
        $authEnabled,
        [parameter(mandatory=$False,HelpMessage='The authentication keys.)')]
        [CreateServiceRequestKeys]
        $keys,
        [parameter(mandatory=$False,HelpMessage='The compute environment type for the service.
Expected value is ''ACI''.)'
)]
        [string]
        $computeType,
        [parameter(mandatory=$False,HelpMessage='The encryption properties.)')]
        [ACIServiceCreateRequestEncryptionProperties]
        $encryptionProperties,
        [parameter(mandatory=$False,HelpMessage='The Environment, models and assets needed for inferencing.)')]
        [CreateServiceRequestEnvironmentImageRequest]
        $environmentImageRequest,
        [parameter(mandatory=$False,HelpMessage='Name of the resource group in which workspace is located.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The service tag dictionary. Tags are mutable.)')]
        [hashtable]
        $kvTags,
        [parameter(mandatory=$False,HelpMessage='The Dns label for the service.)')]
        [string]
        $dnsNameLabel,
        [parameter(mandatory=$False,HelpMessage='Name of the Azure Machine Learning service.)')]
        [string]
        $serviceName,
        [parameter(mandatory=$False,HelpMessage='Whether or not Application Insights is enabled.)')]
        [bool]
        $appInsightsEnabled,
        [parameter(mandatory=$False,HelpMessage='The description of the service.)')]
        [string]
        $description,
        [parameter(mandatory=$False,HelpMessage='Name of Azure Machine Learning workspace.)')]
        [string]
        $workspaceName,
        [parameter(mandatory=$False,HelpMessage='The container resource requirements.)')]
        [ContainerResourceRequirements]
        $containerResourceRequirements,
        [parameter(mandatory=$False,HelpMessage='The name of the Azure location/region.)')]
        [string]
        $location,
        [parameter(mandatory=$False,HelpMessage='The virtual network configuration.)')]
        [ACIServiceCreateRequestVnetConfiguration]
        $vnetConfiguration,
        [parameter(mandatory=$False,HelpMessage='The service properties dictionary. Properties are immutable.)')]
        [hashtable]
        $properties,
        [parameter(mandatory=$False,HelpMessage='The public SSL key in PEM format for the certificate.)')]
        [string]
        $sslKey,
        [parameter(mandatory=$False,HelpMessage='Whether or not SSL is enabled.)')]
        [bool]
        $sslEnabled,
        [parameter(mandatory=$False,HelpMessage='The CName for the service.)')]
        [string]
        $cname,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid,
        [parameter(HelpMessage='Specifies a list of named output properties that should be treated as secrets, which means they will be encrypted. It augments the list of values that Pulumi detects, based on secret inputs to the resource.')]
        [string[]]
        $PulumiSecretOutputs,
        [parameter(HelpMessage='The aliases parameter provides a list of aliases for a resource or component resource. If youre changing the name, type, or parent path of a resource or component resource, you can add the old name to the list of aliases for a resource to ensure that existing resources will be migrated to the new name instead of being deleted and replaced with the new named resource.')]
        [string[]]
        $PulumiAliases,
        [parameter(HelpMessage='The customTimeouts parameter provides a set of custom timeouts for create, update, and delete operations on a resource. These timeouts are specified using a duration string such as 5m (5 minutes), 40s (40 seconds), or 1d (1 day). Supported duration units are ns, us (or µs), ms, s, m, and h (nanoseconds, microseconds, milliseconds, seconds, minutes, and hours, respectively).')]
        [pulumicustomtimeouts]
        $PulumiCustomTimeouts,
        [parameter(HelpMessage='Setting the PulumiDeleteBeforeReplace parameter to true means that Pulumi will delete the existing resource before creating its replacement. Be aware that this behavior has a cascading impact on dependencies so more resources may be replaced, which can lead to downtime. However, this option may be necessary for some resources that manage scarce resources behind the scenes, and/or resources that cannot exist side-by-side.')]
        [bool]
        $PulumiDeleteBeforeReplace,
        [parameter(HelpMessage='Creates a list of explicit dependencies between resources.The DependsOn parameter ensures that resource creation, update, and deletion operations are done in the correct order.')]
        [object[]]
        $PulumiDependsOn,
        [parameter(HelpMessage='Specifies a list of properties that Pulumi will ignore when it updates existing resources. Any properties specified in this list that are also specified in the resources arguments will only be used when creating the resource.')]
        [string[]]
        $PulumiIgnoreChanges,
        [parameter(HelpMessage='Imports an existing cloud resource so that Pulumi can manage it. To import a resource, first specify the PulumiImport parameter with the resources ID')]
        [string]
        $PulumiImport = [NullString]::Value,
        [parameter(HelpMessage='Specifies a parent for a resource. It is used to associate children with the parents that encapsulate or are responsible for them.')]
        [object]
        $PulumiParent = [NullString]::Value,
        [parameter(HelpMessage='Marks a resource as protected. A protected resource cannot be deleted directly, and it will be an error to do a Pulumi deployment which tries to delete a protected resource for any reason.')]
        [bool]
        $PulumiProtect,
        [parameter(HelpMessage='Sets a provider for the resource. The default is to inherit this value from the parent resource, and to use the ambient provider specified by Pulumi configuration for resources without a parent.')]
        [object]
        $PulumiProvider = [NullString]::Value,
        [parameter(HelpMessage='Sets a list of providers for the resource and its children. This list is combined with resource parents providers lists. If no value is provided, the providers list is identical to the parent. When determining which provider to use for a resource, the providers list is used if provider is not supplied.')]
        [object[]]
        $PulumiProviders,
        [parameter(HelpMessage='Used to indicate that changes to certain properties on a resource should force a replacement of the resource instead of an in-place update. Typically users rely on the resource provider to make this decision based on whether the input property is one that the provider knows how to update in place, or if not, requires a replacement to modify. However, there are cases where users want to replace a resource on a change to an input property even if the resource provider itself doesnt believe it has to replace the resource.')]
        [string[]]
        $PulumiReplaceOnChanges,
        [parameter(HelpMessage='Marks a resource to be retained. If this option is set then Pulumi will not call through to the resource providers Delete method when deleting or replacing the resource during pulumi up or pulumi destroy. As a result, the resource will not be deleted from the backing cloud provider, but will be removed from the Pulumi state.')]
        [bool]
        $PulumiRetainOnDelete,
        [parameter(HelpMessage='Specifies a provider version to use when operating on a resource. This version overrides the version information inferred from the current package. This option should be used rarely.')]
        [string]
        $PulumiProviderVersion = [NullString]::Value
    )

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

        $resource.options.additionalSecretOutputs = $PulumiSecretOutputs
        $resource.options.aliases = $PulumiAliases
        $resource.options.customTimeouts = $PulumiCustomTimeouts
        $resource.options.deleteBeforeReplace = $PulumiDeleteBeforeReplace
        $resource.options.ignoreChanges = $PulumiIgnoreChanges
        $resource.options.import = if([string]::IsNullOrEmpty($PulumiImport)) { [NullString]::Value } else { $PulumiImport }
        $resource.options.protect = $PulumiProtect
        $resource.options.replaceOnChanges = $PulumiReplaceOnChanges
        $resource.options.retainOnDelete = $PulumiRetainOnDelete
        $resource.options.version = if([string]::IsNullOrEmpty($PulumiProviderVersion)) { [NullString]::Value } else { $PulumiProviderVersion }

        foreach($Dependency in $DependsOn)
        {
            if($Dependency -is [pulumiresource])
            {
                $resource.options.dependson += $Dependency.Reference()
            } else
            {
                $resource.options.dependson += $Dependency
            }
        }
        if($PulumiParent -is [pulumiresource])
        {
            $resource.options.parent = $PulumiParent.Reference()
        } else
        {
            $resource.options.parent = $PulumiParent
        }
        foreach($provider in $PulumiProviders)
        {
            if($provider -is [pulumiprovider])
            {
                $resource.options.providers += $provider.Reference()
            } else
            {
                $resource.options.providers += $provider
            }
        }
        if($PulumiProvider -is [pulumiprovider])
        {
            $resource.options.provider = $PulumiProvider.Reference()
        } else
        {
            $resource.options.provider = $PulumiProvider
        }
        $resource.properties["computeType"] = $computeType
        $resource.properties["resourceGroupName"] = $resourceGroupName
        $resource.properties["workspaceName"] = $workspaceName

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
class BatchEndpoint
{
    [object] $properties
    [object] $traffic
    [EndpointAuthKeys] $keys
    [string] $description
    [ArgumentCompletions('AMLToken', 'Key', 'AADToken')]
    [string] $authMode
}
function New-AzureNativeTypeMachinelearningservicesBatchEndpoint
{
    param (
        [parameter(mandatory=$False,HelpMessage='Property dictionary. Properties can be added, but not removed or altered.)')]
        [hashtable]
        $properties,
        [parameter(mandatory=$False,HelpMessage='Traffic rules on how the traffic will be routed across deployments.)')]
        [object]
        $traffic,
        [parameter(mandatory=$False,HelpMessage='EndpointAuthKeys to set initially on an Endpoint.
This property will always be returned as null. AuthKey values must be retrieved using the ListKeys API.)'
)]
        [EndpointAuthKeys]
        $keys,
        [parameter(mandatory=$False,HelpMessage='Description of the inference endpoint.)')]
        [string]
        $description,
        [parameter(mandatory=$False,HelpMessage='[Required] Inference endpoint authentication mode type)')]
        [string]
        [ArgumentCompletions('AMLToken', 'Key', 'AADToken')]
        $authMode
    )

    process
    {
        return $([BatchEndpoint]$PSBoundParameters)
    }
}
function New-AzureNativeMachinelearningservicesBatchEndpoint
{
    [Alias('azure_native_machinelearningservices_batchendpoint')]
    param (
        [parameter(mandatory=$False,HelpMessage='Name for the Batch inference endpoint.)')]
        [string]
        $endpointName,
        [parameter(mandatory=$False,HelpMessage='[Required] Additional attributes of the entity.)')]
        [BatchEndpoint]
        $properties,
        [parameter(mandatory=$False,HelpMessage='Resource tags.)')]
        [hashtable]
        $tags,
        [parameter(mandatory=$False,HelpMessage='The geo-location where the resource lives)')]
        [string]
        $location,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group. The name is case insensitive.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Name of Azure Machine Learning workspace.)')]
        [string]
        $workspaceName,
        [parameter(mandatory=$False,HelpMessage='Service identity associated with a resource.)')]
        [ResourceIdentity]
        $identity,
        [parameter(mandatory=$False,HelpMessage='Metadata used by portal/tooling/etc to render different UX experiences for resources of the same type.)')]
        [string]
        $kind,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid,
        [parameter(HelpMessage='Specifies a list of named output properties that should be treated as secrets, which means they will be encrypted. It augments the list of values that Pulumi detects, based on secret inputs to the resource.')]
        [string[]]
        $PulumiSecretOutputs,
        [parameter(HelpMessage='The aliases parameter provides a list of aliases for a resource or component resource. If youre changing the name, type, or parent path of a resource or component resource, you can add the old name to the list of aliases for a resource to ensure that existing resources will be migrated to the new name instead of being deleted and replaced with the new named resource.')]
        [string[]]
        $PulumiAliases,
        [parameter(HelpMessage='The customTimeouts parameter provides a set of custom timeouts for create, update, and delete operations on a resource. These timeouts are specified using a duration string such as 5m (5 minutes), 40s (40 seconds), or 1d (1 day). Supported duration units are ns, us (or µs), ms, s, m, and h (nanoseconds, microseconds, milliseconds, seconds, minutes, and hours, respectively).')]
        [pulumicustomtimeouts]
        $PulumiCustomTimeouts,
        [parameter(HelpMessage='Setting the PulumiDeleteBeforeReplace parameter to true means that Pulumi will delete the existing resource before creating its replacement. Be aware that this behavior has a cascading impact on dependencies so more resources may be replaced, which can lead to downtime. However, this option may be necessary for some resources that manage scarce resources behind the scenes, and/or resources that cannot exist side-by-side.')]
        [bool]
        $PulumiDeleteBeforeReplace,
        [parameter(HelpMessage='Creates a list of explicit dependencies between resources.The DependsOn parameter ensures that resource creation, update, and deletion operations are done in the correct order.')]
        [object[]]
        $PulumiDependsOn,
        [parameter(HelpMessage='Specifies a list of properties that Pulumi will ignore when it updates existing resources. Any properties specified in this list that are also specified in the resources arguments will only be used when creating the resource.')]
        [string[]]
        $PulumiIgnoreChanges,
        [parameter(HelpMessage='Imports an existing cloud resource so that Pulumi can manage it. To import a resource, first specify the PulumiImport parameter with the resources ID')]
        [string]
        $PulumiImport = [NullString]::Value,
        [parameter(HelpMessage='Specifies a parent for a resource. It is used to associate children with the parents that encapsulate or are responsible for them.')]
        [object]
        $PulumiParent = [NullString]::Value,
        [parameter(HelpMessage='Marks a resource as protected. A protected resource cannot be deleted directly, and it will be an error to do a Pulumi deployment which tries to delete a protected resource for any reason.')]
        [bool]
        $PulumiProtect,
        [parameter(HelpMessage='Sets a provider for the resource. The default is to inherit this value from the parent resource, and to use the ambient provider specified by Pulumi configuration for resources without a parent.')]
        [object]
        $PulumiProvider = [NullString]::Value,
        [parameter(HelpMessage='Sets a list of providers for the resource and its children. This list is combined with resource parents providers lists. If no value is provided, the providers list is identical to the parent. When determining which provider to use for a resource, the providers list is used if provider is not supplied.')]
        [object[]]
        $PulumiProviders,
        [parameter(HelpMessage='Used to indicate that changes to certain properties on a resource should force a replacement of the resource instead of an in-place update. Typically users rely on the resource provider to make this decision based on whether the input property is one that the provider knows how to update in place, or if not, requires a replacement to modify. However, there are cases where users want to replace a resource on a change to an input property even if the resource provider itself doesnt believe it has to replace the resource.')]
        [string[]]
        $PulumiReplaceOnChanges,
        [parameter(HelpMessage='Marks a resource to be retained. If this option is set then Pulumi will not call through to the resource providers Delete method when deleting or replacing the resource during pulumi up or pulumi destroy. As a result, the resource will not be deleted from the backing cloud provider, but will be removed from the Pulumi state.')]
        [bool]
        $PulumiRetainOnDelete,
        [parameter(HelpMessage='Specifies a provider version to use when operating on a resource. This version overrides the version information inferred from the current package. This option should be used rarely.')]
        [string]
        $PulumiProviderVersion = [NullString]::Value
    )

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

        $resource.options.additionalSecretOutputs = $PulumiSecretOutputs
        $resource.options.aliases = $PulumiAliases
        $resource.options.customTimeouts = $PulumiCustomTimeouts
        $resource.options.deleteBeforeReplace = $PulumiDeleteBeforeReplace
        $resource.options.ignoreChanges = $PulumiIgnoreChanges
        $resource.options.import = if([string]::IsNullOrEmpty($PulumiImport)) { [NullString]::Value } else { $PulumiImport }
        $resource.options.protect = $PulumiProtect
        $resource.options.replaceOnChanges = $PulumiReplaceOnChanges
        $resource.options.retainOnDelete = $PulumiRetainOnDelete
        $resource.options.version = if([string]::IsNullOrEmpty($PulumiProviderVersion)) { [NullString]::Value } else { $PulumiProviderVersion }

        foreach($Dependency in $DependsOn)
        {
            if($Dependency -is [pulumiresource])
            {
                $resource.options.dependson += $Dependency.Reference()
            } else
            {
                $resource.options.dependson += $Dependency
            }
        }
        if($PulumiParent -is [pulumiresource])
        {
            $resource.options.parent = $PulumiParent.Reference()
        } else
        {
            $resource.options.parent = $PulumiParent
        }
        foreach($provider in $PulumiProviders)
        {
            if($provider -is [pulumiprovider])
            {
                $resource.options.providers += $provider.Reference()
            } else
            {
                $resource.options.providers += $provider
            }
        }
        if($PulumiProvider -is [pulumiprovider])
        {
            $resource.options.provider = $PulumiProvider.Reference()
        } else
        {
            $resource.options.provider = $PulumiProvider
        }
        $resource.properties["properties"] = $properties
        $resource.properties["resourceGroupName"] = $resourceGroupName
        $resource.properties["workspaceName"] = $workspaceName

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

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
class BatchOutputConfiguration
{
    [ArgumentCompletions('SummaryOnly', 'AppendRow')]
    [string] $outputAction
    [string] $appendRowFileName
}
function New-AzureNativeTypeMachinelearningservicesBatchOutputConfiguration
{
    param (
        [parameter(mandatory=$False,HelpMessage='Indicates how the output will be organized.)')]
        [string]
        [ArgumentCompletions('SummaryOnly', 'AppendRow')]
        $outputAction,
        [parameter(mandatory=$False,HelpMessage='Customized output file name for append_row output action.)')]
        [string]
        $appendRowFileName
    )

    process
    {
        return $([BatchOutputConfiguration]$PSBoundParameters)
    }
}
class BatchRetrySettings
{
    [string] $timeout
    [int] $maxRetries
}
function New-AzureNativeTypeMachinelearningservicesBatchRetrySettings
{
    param (
        [parameter(mandatory=$False,HelpMessage='Invocation timeout for a mini-batch, in ISO 8601 format.)')]
        [string]
        $timeout,
        [parameter(mandatory=$False,HelpMessage='Maximum retry count for a mini-batch)')]
        [int]
        $maxRetries
    )

    process
    {
        return $([BatchRetrySettings]$PSBoundParameters)
    }
}
class ComputeConfiguration
{
    [int] $instanceCount
    [string] $instanceType
    [string] $location
    [object] $properties
    [bool] $isLocal
    [string] $target
}
function New-AzureNativeTypeMachinelearningservicesComputeConfiguration
{
    param (
        [parameter(mandatory=$False,HelpMessage='Number of instances or nodes.)')]
        [int]
        $instanceCount,
        [parameter(mandatory=$False,HelpMessage='SKU type to run on.)')]
        [string]
        $instanceType,
        [parameter(mandatory=$False,HelpMessage='Location for virtual cluster run.)')]
        [string]
        $location,
        [parameter(mandatory=$False,HelpMessage='Additional properties.)')]
        [hashtable]
        $properties,
        [parameter(mandatory=$False,HelpMessage='Set to true for jobs running on local compute.)')]
        [bool]
        $isLocal,
        [parameter(mandatory=$False,HelpMessage='ARM resource ID of the Compute you are targeting. If not provided the resource will be deployed as Managed.)')]
        [string]
        $target
    )

    process
    {
        return $([ComputeConfiguration]$PSBoundParameters)
    }
}
class BatchDeployment
{
    [int] $miniBatchSize
    [ArgumentCompletions('Info', 'Warning', 'Debug')]
    [string] $loggingLevel
    [int] $errorThreshold
    [string] $environmentId
    [BatchOutputConfiguration] $outputConfiguration
    [object] $model #todo add class here
    [object] $environmentVariables
    [BatchRetrySettings] $retrySettings
    [string[]] $partitionKeys
    [string] $description
    [CodeConfiguration] $codeConfiguration
    [ComputeConfiguration] $compute
    [object] $properties
}
function New-AzureNativeTypeMachinelearningservicesBatchDeployment
{
    param (
        [parameter(mandatory=$False,HelpMessage='Size of the mini-batch passed to each batch invocation.
For FileDataset, this is the number of files per mini-batch.
For TabularDataset, this is the size of the records in bytes, per mini-batch.)'
)]
        [int]
        $miniBatchSize,
        [parameter(mandatory=$False,HelpMessage='Logging level for batch inference operation.)')]
        [string]
        [ArgumentCompletions('Info', 'Warning', 'Debug')]
        $loggingLevel,
        [parameter(mandatory=$False,HelpMessage='Error threshold, if the error count for the entire input goes above this value,
the batch inference will be aborted. Range is [-1, int.MaxValue].
For FileDataset, this value is the count of file failures.
For TabularDataset, this value is the count of record failures.
If set to -1 (the lower bound), all failures during batch inference will be ignored.)'
)]
        [int]
        $errorThreshold,
        [parameter(mandatory=$False,HelpMessage='ARM resource ID of the environment specification for the endpoint deployment.)')]
        [string]
        $environmentId,
        [parameter(mandatory=$False,HelpMessage='Output configuration for the batch inference operation.)')]
        [BatchOutputConfiguration]
        $outputConfiguration,
        [parameter(mandatory=$False,HelpMessage='Reference to the model asset for the endpoint deployment.)')]
        [OutputPathAssetReference]
        $model,
        [parameter(mandatory=$False,HelpMessage='Environment variables configuration for the deployment.)')]
        [hashtable]
        $environmentVariables,
        [parameter(mandatory=$False,HelpMessage='Retry Settings for the batch inference operation.)')]
        [BatchRetrySettings]
        $retrySettings,
        [parameter(mandatory=$False,HelpMessage='Partition keys list used for Named partitioning.)')]
        [string[]]
        $partitionKeys,
        [parameter(mandatory=$False,HelpMessage='Description of the endpoint deployment.)')]
        [string]
        $description,
        [parameter(mandatory=$False,HelpMessage='Code configuration for the endpoint deployment.)')]
        [CodeConfiguration]
        $codeConfiguration,
        [parameter(mandatory=$False,HelpMessage='Configuration for compute binding.)')]
        [ComputeConfiguration]
        $compute,
        [parameter(mandatory=$False,HelpMessage='Property dictionary. Properties can be added, but not removed or altered.)')]
        [hashtable]
        $properties
    )

    process
    {
        return $([BatchDeployment]$PSBoundParameters)
    }
}
function New-AzureNativeMachinelearningservicesBatchDeployment
{
    [Alias('azure_native_machinelearningservices_batchdeployment')]
    param (
        [parameter(mandatory=$False,HelpMessage='Resource tags.)')]
        [hashtable]
        $tags,
        [parameter(mandatory=$False,HelpMessage='Metadata used by portal/tooling/etc to render different UX experiences for resources of the same type.)')]
        [string]
        $kind,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group. The name is case insensitive.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='[Required] Additional attributes of the entity.)')]
        [BatchDeployment]
        $properties,
        [parameter(mandatory=$False,HelpMessage='Service identity associated with a resource.)')]
        [ResourceIdentity]
        $identity,
        [parameter(mandatory=$False,HelpMessage='The identifier for the Batch inference deployment.)')]
        [string]
        $deploymentName,
        [parameter(mandatory=$False,HelpMessage='Inference endpoint name)')]
        [string]
        $endpointName,
        [parameter(mandatory=$False,HelpMessage='Name of Azure Machine Learning workspace.)')]
        [string]
        $workspaceName,
        [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(HelpMessage='Specifies a list of named output properties that should be treated as secrets, which means they will be encrypted. It augments the list of values that Pulumi detects, based on secret inputs to the resource.')]
        [string[]]
        $PulumiSecretOutputs,
        [parameter(HelpMessage='The aliases parameter provides a list of aliases for a resource or component resource. If youre changing the name, type, or parent path of a resource or component resource, you can add the old name to the list of aliases for a resource to ensure that existing resources will be migrated to the new name instead of being deleted and replaced with the new named resource.')]
        [string[]]
        $PulumiAliases,
        [parameter(HelpMessage='The customTimeouts parameter provides a set of custom timeouts for create, update, and delete operations on a resource. These timeouts are specified using a duration string such as 5m (5 minutes), 40s (40 seconds), or 1d (1 day). Supported duration units are ns, us (or µs), ms, s, m, and h (nanoseconds, microseconds, milliseconds, seconds, minutes, and hours, respectively).')]
        [pulumicustomtimeouts]
        $PulumiCustomTimeouts,
        [parameter(HelpMessage='Setting the PulumiDeleteBeforeReplace parameter to true means that Pulumi will delete the existing resource before creating its replacement. Be aware that this behavior has a cascading impact on dependencies so more resources may be replaced, which can lead to downtime. However, this option may be necessary for some resources that manage scarce resources behind the scenes, and/or resources that cannot exist side-by-side.')]
        [bool]
        $PulumiDeleteBeforeReplace,
        [parameter(HelpMessage='Creates a list of explicit dependencies between resources.The DependsOn parameter ensures that resource creation, update, and deletion operations are done in the correct order.')]
        [object[]]
        $PulumiDependsOn,
        [parameter(HelpMessage='Specifies a list of properties that Pulumi will ignore when it updates existing resources. Any properties specified in this list that are also specified in the resources arguments will only be used when creating the resource.')]
        [string[]]
        $PulumiIgnoreChanges,
        [parameter(HelpMessage='Imports an existing cloud resource so that Pulumi can manage it. To import a resource, first specify the PulumiImport parameter with the resources ID')]
        [string]
        $PulumiImport = [NullString]::Value,
        [parameter(HelpMessage='Specifies a parent for a resource. It is used to associate children with the parents that encapsulate or are responsible for them.')]
        [object]
        $PulumiParent = [NullString]::Value,
        [parameter(HelpMessage='Marks a resource as protected. A protected resource cannot be deleted directly, and it will be an error to do a Pulumi deployment which tries to delete a protected resource for any reason.')]
        [bool]
        $PulumiProtect,
        [parameter(HelpMessage='Sets a provider for the resource. The default is to inherit this value from the parent resource, and to use the ambient provider specified by Pulumi configuration for resources without a parent.')]
        [object]
        $PulumiProvider = [NullString]::Value,
        [parameter(HelpMessage='Sets a list of providers for the resource and its children. This list is combined with resource parents providers lists. If no value is provided, the providers list is identical to the parent. When determining which provider to use for a resource, the providers list is used if provider is not supplied.')]
        [object[]]
        $PulumiProviders,
        [parameter(HelpMessage='Used to indicate that changes to certain properties on a resource should force a replacement of the resource instead of an in-place update. Typically users rely on the resource provider to make this decision based on whether the input property is one that the provider knows how to update in place, or if not, requires a replacement to modify. However, there are cases where users want to replace a resource on a change to an input property even if the resource provider itself doesnt believe it has to replace the resource.')]
        [string[]]
        $PulumiReplaceOnChanges,
        [parameter(HelpMessage='Marks a resource to be retained. If this option is set then Pulumi will not call through to the resource providers Delete method when deleting or replacing the resource during pulumi up or pulumi destroy. As a result, the resource will not be deleted from the backing cloud provider, but will be removed from the Pulumi state.')]
        [bool]
        $PulumiRetainOnDelete,
        [parameter(HelpMessage='Specifies a provider version to use when operating on a resource. This version overrides the version information inferred from the current package. This option should be used rarely.')]
        [string]
        $PulumiProviderVersion = [NullString]::Value
    )

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

        $resource.options.additionalSecretOutputs = $PulumiSecretOutputs
        $resource.options.aliases = $PulumiAliases
        $resource.options.customTimeouts = $PulumiCustomTimeouts
        $resource.options.deleteBeforeReplace = $PulumiDeleteBeforeReplace
        $resource.options.ignoreChanges = $PulumiIgnoreChanges
        $resource.options.import = if([string]::IsNullOrEmpty($PulumiImport)) { [NullString]::Value } else { $PulumiImport }
        $resource.options.protect = $PulumiProtect
        $resource.options.replaceOnChanges = $PulumiReplaceOnChanges
        $resource.options.retainOnDelete = $PulumiRetainOnDelete
        $resource.options.version = if([string]::IsNullOrEmpty($PulumiProviderVersion)) { [NullString]::Value } else { $PulumiProviderVersion }

        foreach($Dependency in $DependsOn)
        {
            if($Dependency -is [pulumiresource])
            {
                $resource.options.dependson += $Dependency.Reference()
            } else
            {
                $resource.options.dependson += $Dependency
            }
        }
        if($PulumiParent -is [pulumiresource])
        {
            $resource.options.parent = $PulumiParent.Reference()
        } else
        {
            $resource.options.parent = $PulumiParent
        }
        foreach($provider in $PulumiProviders)
        {
            if($provider -is [pulumiprovider])
            {
                $resource.options.providers += $provider.Reference()
            } else
            {
                $resource.options.providers += $provider
            }
        }
        if($PulumiProvider -is [pulumiprovider])
        {
            $resource.options.provider = $PulumiProvider.Reference()
        } else
        {
            $resource.options.provider = $PulumiProvider
        }
        $resource.properties["endpointName"] = $endpointName
        $resource.properties["properties"] = $properties
        $resource.properties["resourceGroupName"] = $resourceGroupName
        $resource.properties["workspaceName"] = $workspaceName

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

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
class EnvironmentContainer
{
    [object] $properties
    [string] $description
    [object] $tags
}
function New-AzureNativeTypeMachinelearningservicesEnvironmentContainer
{
    param (
        [parameter(mandatory=$False,HelpMessage='The asset property dictionary.)')]
        [hashtable]
        $properties,
        [parameter(mandatory=$False,HelpMessage='The asset description text.)')]
        [string]
        $description,
        [parameter(mandatory=$False,HelpMessage='Tag dictionary. Tags can be added, removed, and updated.)')]
        [hashtable]
        $tags
    )

    process
    {
        return $([EnvironmentContainer]$PSBoundParameters)
    }
}
function New-AzureNativeMachinelearningservicesEnvironmentContainer
{
    [Alias('azure_native_machinelearningservices_environmentcontainer')]
    param (
        [parameter(mandatory=$False,HelpMessage='Container name.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group. The name is case insensitive.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Name of Azure Machine Learning workspace.)')]
        [string]
        $workspaceName,
        [parameter(mandatory=$False,HelpMessage='[Required] Additional attributes of the entity.)')]
        [EnvironmentContainer]
        $properties,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid,
        [parameter(HelpMessage='Specifies a list of named output properties that should be treated as secrets, which means they will be encrypted. It augments the list of values that Pulumi detects, based on secret inputs to the resource.')]
        [string[]]
        $PulumiSecretOutputs,
        [parameter(HelpMessage='The aliases parameter provides a list of aliases for a resource or component resource. If youre changing the name, type, or parent path of a resource or component resource, you can add the old name to the list of aliases for a resource to ensure that existing resources will be migrated to the new name instead of being deleted and replaced with the new named resource.')]
        [string[]]
        $PulumiAliases,
        [parameter(HelpMessage='The customTimeouts parameter provides a set of custom timeouts for create, update, and delete operations on a resource. These timeouts are specified using a duration string such as 5m (5 minutes), 40s (40 seconds), or 1d (1 day). Supported duration units are ns, us (or µs), ms, s, m, and h (nanoseconds, microseconds, milliseconds, seconds, minutes, and hours, respectively).')]
        [pulumicustomtimeouts]
        $PulumiCustomTimeouts,
        [parameter(HelpMessage='Setting the PulumiDeleteBeforeReplace parameter to true means that Pulumi will delete the existing resource before creating its replacement. Be aware that this behavior has a cascading impact on dependencies so more resources may be replaced, which can lead to downtime. However, this option may be necessary for some resources that manage scarce resources behind the scenes, and/or resources that cannot exist side-by-side.')]
        [bool]
        $PulumiDeleteBeforeReplace,
        [parameter(HelpMessage='Creates a list of explicit dependencies between resources.The DependsOn parameter ensures that resource creation, update, and deletion operations are done in the correct order.')]
        [object[]]
        $PulumiDependsOn,
        [parameter(HelpMessage='Specifies a list of properties that Pulumi will ignore when it updates existing resources. Any properties specified in this list that are also specified in the resources arguments will only be used when creating the resource.')]
        [string[]]
        $PulumiIgnoreChanges,
        [parameter(HelpMessage='Imports an existing cloud resource so that Pulumi can manage it. To import a resource, first specify the PulumiImport parameter with the resources ID')]
        [string]
        $PulumiImport = [NullString]::Value,
        [parameter(HelpMessage='Specifies a parent for a resource. It is used to associate children with the parents that encapsulate or are responsible for them.')]
        [object]
        $PulumiParent = [NullString]::Value,
        [parameter(HelpMessage='Marks a resource as protected. A protected resource cannot be deleted directly, and it will be an error to do a Pulumi deployment which tries to delete a protected resource for any reason.')]
        [bool]
        $PulumiProtect,
        [parameter(HelpMessage='Sets a provider for the resource. The default is to inherit this value from the parent resource, and to use the ambient provider specified by Pulumi configuration for resources without a parent.')]
        [object]
        $PulumiProvider = [NullString]::Value,
        [parameter(HelpMessage='Sets a list of providers for the resource and its children. This list is combined with resource parents providers lists. If no value is provided, the providers list is identical to the parent. When determining which provider to use for a resource, the providers list is used if provider is not supplied.')]
        [object[]]
        $PulumiProviders,
        [parameter(HelpMessage='Used to indicate that changes to certain properties on a resource should force a replacement of the resource instead of an in-place update. Typically users rely on the resource provider to make this decision based on whether the input property is one that the provider knows how to update in place, or if not, requires a replacement to modify. However, there are cases where users want to replace a resource on a change to an input property even if the resource provider itself doesnt believe it has to replace the resource.')]
        [string[]]
        $PulumiReplaceOnChanges,
        [parameter(HelpMessage='Marks a resource to be retained. If this option is set then Pulumi will not call through to the resource providers Delete method when deleting or replacing the resource during pulumi up or pulumi destroy. As a result, the resource will not be deleted from the backing cloud provider, but will be removed from the Pulumi state.')]
        [bool]
        $PulumiRetainOnDelete,
        [parameter(HelpMessage='Specifies a provider version to use when operating on a resource. This version overrides the version information inferred from the current package. This option should be used rarely.')]
        [string]
        $PulumiProviderVersion = [NullString]::Value
    )

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

        $resource.options.additionalSecretOutputs = $PulumiSecretOutputs
        $resource.options.aliases = $PulumiAliases
        $resource.options.customTimeouts = $PulumiCustomTimeouts
        $resource.options.deleteBeforeReplace = $PulumiDeleteBeforeReplace
        $resource.options.ignoreChanges = $PulumiIgnoreChanges
        $resource.options.import = if([string]::IsNullOrEmpty($PulumiImport)) { [NullString]::Value } else { $PulumiImport }
        $resource.options.protect = $PulumiProtect
        $resource.options.replaceOnChanges = $PulumiReplaceOnChanges
        $resource.options.retainOnDelete = $PulumiRetainOnDelete
        $resource.options.version = if([string]::IsNullOrEmpty($PulumiProviderVersion)) { [NullString]::Value } else { $PulumiProviderVersion }

        foreach($Dependency in $DependsOn)
        {
            if($Dependency -is [pulumiresource])
            {
                $resource.options.dependson += $Dependency.Reference()
            } else
            {
                $resource.options.dependson += $Dependency
            }
        }
        if($PulumiParent -is [pulumiresource])
        {
            $resource.options.parent = $PulumiParent.Reference()
        } else
        {
            $resource.options.parent = $PulumiParent
        }
        foreach($provider in $PulumiProviders)
        {
            if($provider -is [pulumiprovider])
            {
                $resource.options.providers += $provider.Reference()
            } else
            {
                $resource.options.providers += $provider
            }
        }
        if($PulumiProvider -is [pulumiprovider])
        {
            $resource.options.provider = $PulumiProvider.Reference()
        } else
        {
            $resource.options.provider = $PulumiProvider
        }
        $resource.properties["properties"] = $properties
        $resource.properties["resourceGroupName"] = $resourceGroupName
        $resource.properties["workspaceName"] = $workspaceName

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

        $global:pulumiresources += $resource
        return $resource
    }
}
function New-AzureNativeMachinelearningservicesEndpointVariant
{
    [Alias('azure_native_machinelearningservices_endpointvariant')]
    param (
        [parameter(mandatory=$False,HelpMessage='The service properties dictionary. Properties are immutable.)')]
        [hashtable]
        $properties,
        [parameter(mandatory=$False,HelpMessage='Name of the Azure Machine Learning service.)')]
        [string]
        $serviceName,
        [parameter(mandatory=$False,HelpMessage='The name of the Azure location/region.)')]
        [string]
        $location,
        [parameter(mandatory=$False,HelpMessage='The type of the variant.)')]
        [string]
        [ArgumentCompletions('Control', 'Treatment')]
        $type,
        [parameter(mandatory=$False,HelpMessage='Is this the default variant.)')]
        [bool]
        $isDefault,
        [parameter(mandatory=$False,HelpMessage='The compute environment type for the service.
Expected value is ''Custom''.)'
)]
        [string]
        $computeType,
        [parameter(mandatory=$False,HelpMessage='The amount of traffic variant receives.)')]
        [int]
        $trafficPercentile,
        [parameter(mandatory=$False,HelpMessage='The Environment, models and assets needed for inferencing.)')]
        [CreateServiceRequestEnvironmentImageRequest]
        $environmentImageRequest,
        [parameter(mandatory=$False,HelpMessage='Name of the resource group in which workspace is located.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The description of the service.)')]
        [string]
        $description,
        [parameter(mandatory=$False,HelpMessage='The authentication keys.)')]
        [CreateServiceRequestKeys]
        $keys,
        [parameter(mandatory=$False,HelpMessage='The service tag dictionary. Tags are mutable.)')]
        [hashtable]
        $kvTags,
        [parameter(mandatory=$False,HelpMessage='Name of Azure Machine Learning workspace.)')]
        [string]
        $workspaceName,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid,
        [parameter(HelpMessage='Specifies a list of named output properties that should be treated as secrets, which means they will be encrypted. It augments the list of values that Pulumi detects, based on secret inputs to the resource.')]
        [string[]]
        $PulumiSecretOutputs,
        [parameter(HelpMessage='The aliases parameter provides a list of aliases for a resource or component resource. If youre changing the name, type, or parent path of a resource or component resource, you can add the old name to the list of aliases for a resource to ensure that existing resources will be migrated to the new name instead of being deleted and replaced with the new named resource.')]
        [string[]]
        $PulumiAliases,
        [parameter(HelpMessage='The customTimeouts parameter provides a set of custom timeouts for create, update, and delete operations on a resource. These timeouts are specified using a duration string such as 5m (5 minutes), 40s (40 seconds), or 1d (1 day). Supported duration units are ns, us (or µs), ms, s, m, and h (nanoseconds, microseconds, milliseconds, seconds, minutes, and hours, respectively).')]
        [pulumicustomtimeouts]
        $PulumiCustomTimeouts,
        [parameter(HelpMessage='Setting the PulumiDeleteBeforeReplace parameter to true means that Pulumi will delete the existing resource before creating its replacement. Be aware that this behavior has a cascading impact on dependencies so more resources may be replaced, which can lead to downtime. However, this option may be necessary for some resources that manage scarce resources behind the scenes, and/or resources that cannot exist side-by-side.')]
        [bool]
        $PulumiDeleteBeforeReplace,
        [parameter(HelpMessage='Creates a list of explicit dependencies between resources.The DependsOn parameter ensures that resource creation, update, and deletion operations are done in the correct order.')]
        [object[]]
        $PulumiDependsOn,
        [parameter(HelpMessage='Specifies a list of properties that Pulumi will ignore when it updates existing resources. Any properties specified in this list that are also specified in the resources arguments will only be used when creating the resource.')]
        [string[]]
        $PulumiIgnoreChanges,
        [parameter(HelpMessage='Imports an existing cloud resource so that Pulumi can manage it. To import a resource, first specify the PulumiImport parameter with the resources ID')]
        [string]
        $PulumiImport = [NullString]::Value,
        [parameter(HelpMessage='Specifies a parent for a resource. It is used to associate children with the parents that encapsulate or are responsible for them.')]
        [object]
        $PulumiParent = [NullString]::Value,
        [parameter(HelpMessage='Marks a resource as protected. A protected resource cannot be deleted directly, and it will be an error to do a Pulumi deployment which tries to delete a protected resource for any reason.')]
        [bool]
        $PulumiProtect,
        [parameter(HelpMessage='Sets a provider for the resource. The default is to inherit this value from the parent resource, and to use the ambient provider specified by Pulumi configuration for resources without a parent.')]
        [object]
        $PulumiProvider = [NullString]::Value,
        [parameter(HelpMessage='Sets a list of providers for the resource and its children. This list is combined with resource parents providers lists. If no value is provided, the providers list is identical to the parent. When determining which provider to use for a resource, the providers list is used if provider is not supplied.')]
        [object[]]
        $PulumiProviders,
        [parameter(HelpMessage='Used to indicate that changes to certain properties on a resource should force a replacement of the resource instead of an in-place update. Typically users rely on the resource provider to make this decision based on whether the input property is one that the provider knows how to update in place, or if not, requires a replacement to modify. However, there are cases where users want to replace a resource on a change to an input property even if the resource provider itself doesnt believe it has to replace the resource.')]
        [string[]]
        $PulumiReplaceOnChanges,
        [parameter(HelpMessage='Marks a resource to be retained. If this option is set then Pulumi will not call through to the resource providers Delete method when deleting or replacing the resource during pulumi up or pulumi destroy. As a result, the resource will not be deleted from the backing cloud provider, but will be removed from the Pulumi state.')]
        [bool]
        $PulumiRetainOnDelete,
        [parameter(HelpMessage='Specifies a provider version to use when operating on a resource. This version overrides the version information inferred from the current package. This option should be used rarely.')]
        [string]
        $PulumiProviderVersion = [NullString]::Value
    )

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

        $resource.options.additionalSecretOutputs = $PulumiSecretOutputs
        $resource.options.aliases = $PulumiAliases
        $resource.options.customTimeouts = $PulumiCustomTimeouts
        $resource.options.deleteBeforeReplace = $PulumiDeleteBeforeReplace
        $resource.options.ignoreChanges = $PulumiIgnoreChanges
        $resource.options.import = if([string]::IsNullOrEmpty($PulumiImport)) { [NullString]::Value } else { $PulumiImport }
        $resource.options.protect = $PulumiProtect
        $resource.options.replaceOnChanges = $PulumiReplaceOnChanges
        $resource.options.retainOnDelete = $PulumiRetainOnDelete
        $resource.options.version = if([string]::IsNullOrEmpty($PulumiProviderVersion)) { [NullString]::Value } else { $PulumiProviderVersion }

        foreach($Dependency in $DependsOn)
        {
            if($Dependency -is [pulumiresource])
            {
                $resource.options.dependson += $Dependency.Reference()
            } else
            {
                $resource.options.dependson += $Dependency
            }
        }
        if($PulumiParent -is [pulumiresource])
        {
            $resource.options.parent = $PulumiParent.Reference()
        } else
        {
            $resource.options.parent = $PulumiParent
        }
        foreach($provider in $PulumiProviders)
        {
            if($provider -is [pulumiprovider])
            {
                $resource.options.providers += $provider.Reference()
            } else
            {
                $resource.options.providers += $provider
            }
        }
        if($PulumiProvider -is [pulumiprovider])
        {
            $resource.options.provider = $PulumiProvider.Reference()
        } else
        {
            $resource.options.provider = $PulumiProvider
        }
        $resource.properties["computeType"] = $computeType
        $resource.properties["resourceGroupName"] = $resourceGroupName
        $resource.properties["workspaceName"] = $workspaceName

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

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

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

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

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

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

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
class CodeVersion
{
    [string] $description
    [bool] $isAnonymous
    [object] $properties
    [object] $tags
    [string] $path
    [string] $datastoreId
}
function New-AzureNativeTypeMachinelearningservicesCodeVersion
{
    param (
        [parameter(mandatory=$False,HelpMessage='The asset description text.)')]
        [string]
        $description,
        [parameter(mandatory=$False,HelpMessage='If the name version are system generated (anonymous registration).)')]
        [bool]
        $isAnonymous,
        [parameter(mandatory=$False,HelpMessage='The asset property dictionary.)')]
        [hashtable]
        $properties,
        [parameter(mandatory=$False,HelpMessage='Tag dictionary. Tags can be added, removed, and updated.)')]
        [hashtable]
        $tags,
        [parameter(mandatory=$False,HelpMessage='[Required] The path of the file/directory in the datastore.)')]
        [string]
        $path,
        [parameter(mandatory=$False,HelpMessage='ARM resource ID of the datastore where the asset is located.)')]
        [string]
        $datastoreId
    )

    process
    {
        return $([CodeVersion]$PSBoundParameters)
    }
}
function New-AzureNativeMachinelearningservicesCodeVersion
{
    [Alias('azure_native_machinelearningservices_codeversion')]
    param (
        [parameter(mandatory=$False,HelpMessage='Version identifier.)')]
        [string]
        $version,
        [parameter(mandatory=$False,HelpMessage='Container name.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group. The name is case insensitive.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Name of Azure Machine Learning workspace.)')]
        [string]
        $workspaceName,
        [parameter(mandatory=$False,HelpMessage='[Required] Additional attributes of the entity.)')]
        [CodeVersion]
        $properties,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid,
        [parameter(HelpMessage='Specifies a list of named output properties that should be treated as secrets, which means they will be encrypted. It augments the list of values that Pulumi detects, based on secret inputs to the resource.')]
        [string[]]
        $PulumiSecretOutputs,
        [parameter(HelpMessage='The aliases parameter provides a list of aliases for a resource or component resource. If youre changing the name, type, or parent path of a resource or component resource, you can add the old name to the list of aliases for a resource to ensure that existing resources will be migrated to the new name instead of being deleted and replaced with the new named resource.')]
        [string[]]
        $PulumiAliases,
        [parameter(HelpMessage='The customTimeouts parameter provides a set of custom timeouts for create, update, and delete operations on a resource. These timeouts are specified using a duration string such as 5m (5 minutes), 40s (40 seconds), or 1d (1 day). Supported duration units are ns, us (or µs), ms, s, m, and h (nanoseconds, microseconds, milliseconds, seconds, minutes, and hours, respectively).')]
        [pulumicustomtimeouts]
        $PulumiCustomTimeouts,
        [parameter(HelpMessage='Setting the PulumiDeleteBeforeReplace parameter to true means that Pulumi will delete the existing resource before creating its replacement. Be aware that this behavior has a cascading impact on dependencies so more resources may be replaced, which can lead to downtime. However, this option may be necessary for some resources that manage scarce resources behind the scenes, and/or resources that cannot exist side-by-side.')]
        [bool]
        $PulumiDeleteBeforeReplace,
        [parameter(HelpMessage='Creates a list of explicit dependencies between resources.The DependsOn parameter ensures that resource creation, update, and deletion operations are done in the correct order.')]
        [object[]]
        $PulumiDependsOn,
        [parameter(HelpMessage='Specifies a list of properties that Pulumi will ignore when it updates existing resources. Any properties specified in this list that are also specified in the resources arguments will only be used when creating the resource.')]
        [string[]]
        $PulumiIgnoreChanges,
        [parameter(HelpMessage='Imports an existing cloud resource so that Pulumi can manage it. To import a resource, first specify the PulumiImport parameter with the resources ID')]
        [string]
        $PulumiImport = [NullString]::Value,
        [parameter(HelpMessage='Specifies a parent for a resource. It is used to associate children with the parents that encapsulate or are responsible for them.')]
        [object]
        $PulumiParent = [NullString]::Value,
        [parameter(HelpMessage='Marks a resource as protected. A protected resource cannot be deleted directly, and it will be an error to do a Pulumi deployment which tries to delete a protected resource for any reason.')]
        [bool]
        $PulumiProtect,
        [parameter(HelpMessage='Sets a provider for the resource. The default is to inherit this value from the parent resource, and to use the ambient provider specified by Pulumi configuration for resources without a parent.')]
        [object]
        $PulumiProvider = [NullString]::Value,
        [parameter(HelpMessage='Sets a list of providers for the resource and its children. This list is combined with resource parents providers lists. If no value is provided, the providers list is identical to the parent. When determining which provider to use for a resource, the providers list is used if provider is not supplied.')]
        [object[]]
        $PulumiProviders,
        [parameter(HelpMessage='Used to indicate that changes to certain properties on a resource should force a replacement of the resource instead of an in-place update. Typically users rely on the resource provider to make this decision based on whether the input property is one that the provider knows how to update in place, or if not, requires a replacement to modify. However, there are cases where users want to replace a resource on a change to an input property even if the resource provider itself doesnt believe it has to replace the resource.')]
        [string[]]
        $PulumiReplaceOnChanges,
        [parameter(HelpMessage='Marks a resource to be retained. If this option is set then Pulumi will not call through to the resource providers Delete method when deleting or replacing the resource during pulumi up or pulumi destroy. As a result, the resource will not be deleted from the backing cloud provider, but will be removed from the Pulumi state.')]
        [bool]
        $PulumiRetainOnDelete,
        [parameter(HelpMessage='Specifies a provider version to use when operating on a resource. This version overrides the version information inferred from the current package. This option should be used rarely.')]
        [string]
        $PulumiProviderVersion = [NullString]::Value
    )

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

        $resource.options.additionalSecretOutputs = $PulumiSecretOutputs
        $resource.options.aliases = $PulumiAliases
        $resource.options.customTimeouts = $PulumiCustomTimeouts
        $resource.options.deleteBeforeReplace = $PulumiDeleteBeforeReplace
        $resource.options.ignoreChanges = $PulumiIgnoreChanges
        $resource.options.import = if([string]::IsNullOrEmpty($PulumiImport)) { [NullString]::Value } else { $PulumiImport }
        $resource.options.protect = $PulumiProtect
        $resource.options.replaceOnChanges = $PulumiReplaceOnChanges
        $resource.options.retainOnDelete = $PulumiRetainOnDelete
        $resource.options.version = if([string]::IsNullOrEmpty($PulumiProviderVersion)) { [NullString]::Value } else { $PulumiProviderVersion }

        foreach($Dependency in $DependsOn)
        {
            if($Dependency -is [pulumiresource])
            {
                $resource.options.dependson += $Dependency.Reference()
            } else
            {
                $resource.options.dependson += $Dependency
            }
        }
        if($PulumiParent -is [pulumiresource])
        {
            $resource.options.parent = $PulumiParent.Reference()
        } else
        {
            $resource.options.parent = $PulumiParent
        }
        foreach($provider in $PulumiProviders)
        {
            if($provider -is [pulumiprovider])
            {
                $resource.options.providers += $provider.Reference()
            } else
            {
                $resource.options.providers += $provider
            }
        }
        if($PulumiProvider -is [pulumiprovider])
        {
            $resource.options.provider = $PulumiProvider.Reference()
        } else
        {
            $resource.options.provider = $PulumiProvider
        }
        $resource.properties["name"] = $name
        $resource.properties["properties"] = $properties
        $resource.properties["resourceGroupName"] = $resourceGroupName
        $resource.properties["workspaceName"] = $workspaceName

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

        $global:pulumiresources += $resource
        return $resource
    }
}
class AKSServiceCreateRequestAutoScaler
{
    [bool] $autoscaleEnabled
    [int] $maxReplicas
    [int] $refreshPeriodInSeconds
    [int] $targetUtilization
    [int] $minReplicas
}
function New-AzureNativeTypeMachinelearningservicesAKSServiceCreateRequestAutoScaler
{
    param (
        [parameter(mandatory=$False,HelpMessage='Option to enable/disable auto scaling.)')]
        [bool]
        $autoscaleEnabled,
        [parameter(mandatory=$False,HelpMessage='The maximum number of replicas in the cluster.)')]
        [int]
        $maxReplicas,
        [parameter(mandatory=$False,HelpMessage='The amount of seconds to wait between auto scale updates.)')]
        [int]
        $refreshPeriodInSeconds,
        [parameter(mandatory=$False,HelpMessage='The target utilization percentage to use for determining whether to scale the cluster.)')]
        [int]
        $targetUtilization,
        [parameter(mandatory=$False,HelpMessage='The minimum number of replicas to scale down to.)')]
        [int]
        $minReplicas
    )

    process
    {
        return $([AKSServiceCreateRequestAutoScaler]$PSBoundParameters)
    }
}
class AKSServiceCreateRequestLivenessProbeRequirements
{
    [int] $failureThreshold
    [int] $periodSeconds
    [int] $initialDelaySeconds
    [int] $successThreshold
    [int] $timeoutSeconds
}
function New-AzureNativeTypeMachinelearningservicesAKSServiceCreateRequestLivenessProbeRequirements
{
    param (
        [parameter(mandatory=$False,HelpMessage='The number of failures to allow before returning an unhealthy status.)')]
        [int]
        $failureThreshold,
        [parameter(mandatory=$False,HelpMessage='The length of time between probes in seconds.)')]
        [int]
        $periodSeconds,
        [parameter(mandatory=$False,HelpMessage='The delay before the first probe in seconds.)')]
        [int]
        $initialDelaySeconds,
        [parameter(mandatory=$False,HelpMessage='The number of successful probes before returning a healthy status.)')]
        [int]
        $successThreshold,
        [parameter(mandatory=$False,HelpMessage='The probe timeout in seconds.)')]
        [int]
        $timeoutSeconds
    )

    process
    {
        return $([AKSServiceCreateRequestLivenessProbeRequirements]$PSBoundParameters)
    }
}
class AKSServiceCreateRequestDataCollection
{
    [bool] $eventHubEnabled
    [bool] $storageEnabled
}
function New-AzureNativeTypeMachinelearningservicesAKSServiceCreateRequestDataCollection
{
    param (
        [parameter(mandatory=$False,HelpMessage='Option for enabling/disabling Event Hub.)')]
        [bool]
        $eventHubEnabled,
        [parameter(mandatory=$False,HelpMessage='Option for enabling/disabling storage.)')]
        [bool]
        $storageEnabled
    )

    process
    {
        return $([AKSServiceCreateRequestDataCollection]$PSBoundParameters)
    }
}
function New-AzureNativeMachinelearningservicesAKSService
{
    [Alias('azure_native_machinelearningservices_aksservice')]
    param (
        [parameter(mandatory=$False,HelpMessage='The auto scaler properties.)')]
        [AKSServiceCreateRequestAutoScaler]
        $autoScaler,
        [parameter(mandatory=$False,HelpMessage='The service properties dictionary. Properties are immutable.)')]
        [hashtable]
        $properties,
        [parameter(mandatory=$False,HelpMessage='The maximum number of concurrent requests per container.)')]
        [int]
        $maxConcurrentRequestsPerContainer,
        [parameter(mandatory=$False,HelpMessage='The amount of traffic variant receives.)')]
        [int]
        $trafficPercentile,
        [parameter(mandatory=$False,HelpMessage='The service tag dictionary. Tags are mutable.)')]
        [hashtable]
        $kvTags,
        [parameter(mandatory=$False,HelpMessage='The liveness probe requirements.)')]
        [AKSServiceCreateRequestLivenessProbeRequirements]
        $livenessProbeRequirements,
        [parameter(mandatory=$False,HelpMessage='The compute environment type for the service.
Expected value is ''AKS''.)'
)]
        [string]
        $computeType,
        [parameter(mandatory=$False,HelpMessage='Whether or not AAD authentication is enabled.)')]
        [bool]
        $aadAuthEnabled,
        [parameter(mandatory=$False,HelpMessage='Is this the default variant.)')]
        [bool]
        $isDefault,
        [parameter(mandatory=$False,HelpMessage='The authentication keys.)')]
        [CreateServiceRequestKeys]
        $keys,
        [parameter(mandatory=$False,HelpMessage='Maximum time a request will wait in the queue (in milliseconds). After this time, the service will return 503 (Service Unavailable))')]
        [int]
        $maxQueueWaitMs,
        [parameter(mandatory=$False,HelpMessage='The Environment, models and assets needed for inferencing.)')]
        [CreateServiceRequestEnvironmentImageRequest]
        $environmentImageRequest,
        [parameter(mandatory=$False,HelpMessage='Whether or not Application Insights is enabled.)')]
        [bool]
        $appInsightsEnabled,
        [parameter(mandatory=$False,HelpMessage='Name of the Azure Machine Learning service.)')]
        [string]
        $serviceName,
        [parameter(mandatory=$False,HelpMessage='The number of replicas on the cluster.)')]
        [int]
        $numReplicas,
        [parameter(mandatory=$False,HelpMessage='The type of the variant.)')]
        [string]
        [ArgumentCompletions('Control', 'Treatment')]
        $type,
        [parameter(mandatory=$False,HelpMessage='The container resource requirements.)')]
        [ContainerResourceRequirements]
        $containerResourceRequirements,
        [parameter(mandatory=$False,HelpMessage='Kubernetes namespace for the service.)')]
        [string]
        $namespace,
        [parameter(mandatory=$False,HelpMessage='The description of the service.)')]
        [string]
        $description,
        [parameter(mandatory=$False,HelpMessage='Whether or not authentication is enabled.)')]
        [bool]
        $authEnabled,
        [parameter(mandatory=$False,HelpMessage='The name of the Azure location/region.)')]
        [string]
        $location,
        [parameter(mandatory=$False,HelpMessage='Details of the data collection options specified.)')]
        [AKSServiceCreateRequestDataCollection]
        $dataCollection,
        [parameter(mandatory=$False,HelpMessage='Name of the resource group in which workspace is located.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The scoring timeout in milliseconds.)')]
        [int]
        $scoringTimeoutMs,
        [parameter(mandatory=$False,HelpMessage='The name of the compute resource.)')]
        [string]
        $computeName,
        [parameter(mandatory=$False,HelpMessage='Name of Azure Machine Learning workspace.)')]
        [string]
        $workspaceName,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid,
        [parameter(HelpMessage='Specifies a list of named output properties that should be treated as secrets, which means they will be encrypted. It augments the list of values that Pulumi detects, based on secret inputs to the resource.')]
        [string[]]
        $PulumiSecretOutputs,
        [parameter(HelpMessage='The aliases parameter provides a list of aliases for a resource or component resource. If youre changing the name, type, or parent path of a resource or component resource, you can add the old name to the list of aliases for a resource to ensure that existing resources will be migrated to the new name instead of being deleted and replaced with the new named resource.')]
        [string[]]
        $PulumiAliases,
        [parameter(HelpMessage='The customTimeouts parameter provides a set of custom timeouts for create, update, and delete operations on a resource. These timeouts are specified using a duration string such as 5m (5 minutes), 40s (40 seconds), or 1d (1 day). Supported duration units are ns, us (or µs), ms, s, m, and h (nanoseconds, microseconds, milliseconds, seconds, minutes, and hours, respectively).')]
        [pulumicustomtimeouts]
        $PulumiCustomTimeouts,
        [parameter(HelpMessage='Setting the PulumiDeleteBeforeReplace parameter to true means that Pulumi will delete the existing resource before creating its replacement. Be aware that this behavior has a cascading impact on dependencies so more resources may be replaced, which can lead to downtime. However, this option may be necessary for some resources that manage scarce resources behind the scenes, and/or resources that cannot exist side-by-side.')]
        [bool]
        $PulumiDeleteBeforeReplace,
        [parameter(HelpMessage='Creates a list of explicit dependencies between resources.The DependsOn parameter ensures that resource creation, update, and deletion operations are done in the correct order.')]
        [object[]]
        $PulumiDependsOn,
        [parameter(HelpMessage='Specifies a list of properties that Pulumi will ignore when it updates existing resources. Any properties specified in this list that are also specified in the resources arguments will only be used when creating the resource.')]
        [string[]]
        $PulumiIgnoreChanges,
        [parameter(HelpMessage='Imports an existing cloud resource so that Pulumi can manage it. To import a resource, first specify the PulumiImport parameter with the resources ID')]
        [string]
        $PulumiImport = [NullString]::Value,
        [parameter(HelpMessage='Specifies a parent for a resource. It is used to associate children with the parents that encapsulate or are responsible for them.')]
        [object]
        $PulumiParent = [NullString]::Value,
        [parameter(HelpMessage='Marks a resource as protected. A protected resource cannot be deleted directly, and it will be an error to do a Pulumi deployment which tries to delete a protected resource for any reason.')]
        [bool]
        $PulumiProtect,
        [parameter(HelpMessage='Sets a provider for the resource. The default is to inherit this value from the parent resource, and to use the ambient provider specified by Pulumi configuration for resources without a parent.')]
        [object]
        $PulumiProvider = [NullString]::Value,
        [parameter(HelpMessage='Sets a list of providers for the resource and its children. This list is combined with resource parents providers lists. If no value is provided, the providers list is identical to the parent. When determining which provider to use for a resource, the providers list is used if provider is not supplied.')]
        [object[]]
        $PulumiProviders,
        [parameter(HelpMessage='Used to indicate that changes to certain properties on a resource should force a replacement of the resource instead of an in-place update. Typically users rely on the resource provider to make this decision based on whether the input property is one that the provider knows how to update in place, or if not, requires a replacement to modify. However, there are cases where users want to replace a resource on a change to an input property even if the resource provider itself doesnt believe it has to replace the resource.')]
        [string[]]
        $PulumiReplaceOnChanges,
        [parameter(HelpMessage='Marks a resource to be retained. If this option is set then Pulumi will not call through to the resource providers Delete method when deleting or replacing the resource during pulumi up or pulumi destroy. As a result, the resource will not be deleted from the backing cloud provider, but will be removed from the Pulumi state.')]
        [bool]
        $PulumiRetainOnDelete,
        [parameter(HelpMessage='Specifies a provider version to use when operating on a resource. This version overrides the version information inferred from the current package. This option should be used rarely.')]
        [string]
        $PulumiProviderVersion = [NullString]::Value
    )

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

        $resource.options.additionalSecretOutputs = $PulumiSecretOutputs
        $resource.options.aliases = $PulumiAliases
        $resource.options.customTimeouts = $PulumiCustomTimeouts
        $resource.options.deleteBeforeReplace = $PulumiDeleteBeforeReplace
        $resource.options.ignoreChanges = $PulumiIgnoreChanges
        $resource.options.import = if([string]::IsNullOrEmpty($PulumiImport)) { [NullString]::Value } else { $PulumiImport }
        $resource.options.protect = $PulumiProtect
        $resource.options.replaceOnChanges = $PulumiReplaceOnChanges
        $resource.options.retainOnDelete = $PulumiRetainOnDelete
        $resource.options.version = if([string]::IsNullOrEmpty($PulumiProviderVersion)) { [NullString]::Value } else { $PulumiProviderVersion }

        foreach($Dependency in $DependsOn)
        {
            if($Dependency -is [pulumiresource])
            {
                $resource.options.dependson += $Dependency.Reference()
            } else
            {
                $resource.options.dependson += $Dependency
            }
        }
        if($PulumiParent -is [pulumiresource])
        {
            $resource.options.parent = $PulumiParent.Reference()
        } else
        {
            $resource.options.parent = $PulumiParent
        }
        foreach($provider in $PulumiProviders)
        {
            if($provider -is [pulumiprovider])
            {
                $resource.options.providers += $provider.Reference()
            } else
            {
                $resource.options.providers += $provider
            }
        }
        if($PulumiProvider -is [pulumiprovider])
        {
            $resource.options.provider = $PulumiProvider.Reference()
        } else
        {
            $resource.options.provider = $PulumiProvider
        }
        $resource.properties["computeType"] = $computeType
        $resource.properties["resourceGroupName"] = $resourceGroupName
        $resource.properties["workspaceName"] = $workspaceName

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
class ComputeBinding
{
    [int] $nodeCount
    [string] $computeId
}
function New-AzureNativeTypeMachinelearningservicesComputeBinding
{
    param (
        [parameter(mandatory=$False,HelpMessage='Number of nodes.)')]
        [int]
        $nodeCount,
        [parameter(mandatory=$False,HelpMessage='ID of the compute resource.)')]
        [string]
        $computeId
    )

    process
    {
        return $([ComputeBinding]$PSBoundParameters)
    }
}
class MLAssistConfiguration
{
    [bool] $mlAssistEnabled
    [ComputeBinding] $inferencingComputeBinding
    [ComputeBinding] $trainingComputeBinding
    [int] $prelabelAccuracyThreshold
    [string] $modelNamePrefix
}
function New-AzureNativeTypeMachinelearningservicesMLAssistConfiguration
{
    param (
        [parameter(mandatory=$False,HelpMessage='Indicates whether MLAssist feature is enabled.)')]
        [bool]
        $mlAssistEnabled,
        [parameter(mandatory=$False,HelpMessage='The compute designated for inferencing.)')]
        [ComputeBinding]
        $inferencingComputeBinding,
        [parameter(mandatory=$False,HelpMessage='The compute designated for training.)')]
        [ComputeBinding]
        $trainingComputeBinding,
        [parameter(mandatory=$False,HelpMessage='Prelabel accuracy threshold used in MLAssist feature.)')]
        [int]
        $prelabelAccuracyThreshold,
        [parameter(mandatory=$False,HelpMessage='Name prefix to use for machine learning model. For each iteration modelName will be appended with iteration e.g.{modelName}_{i}.)')]
        [string]
        $modelNamePrefix
    )

    process
    {
        return $([MLAssistConfiguration]$PSBoundParameters)
    }
}
class LabelingJobImageProperties
{
    [ArgumentCompletions('Classification', 'BoundingBox', 'InstanceSegmentation')]
    [string] $annotationType
    [ArgumentCompletions('Image', 'Text')]
    [string] $mediaType
}
function New-AzureNativeTypeMachinelearningservicesLabelingJobImageProperties
{
    param (
        [parameter(mandatory=$False,HelpMessage='Annotation type of image labeling tasks.)')]
        [string]
        [ArgumentCompletions('Classification', 'BoundingBox', 'InstanceSegmentation')]
        $annotationType,
        [parameter(mandatory=$False,HelpMessage='Media type of data asset.)')]
        [string]
        [ArgumentCompletions('Image', 'Text')]
        $mediaType
    )

    process
    {
        return $([LabelingJobImageProperties]$PSBoundParameters)
    }
}
class LabelingJobInstructions
{
    [string] $uri
}
function New-AzureNativeTypeMachinelearningservicesLabelingJobInstructions
{
    param (
        [parameter(mandatory=$False,HelpMessage='The link to a page with detailed labeling instructions for labelers.)')]
        [string]
        $uri
    )

    process
    {
        return $([LabelingJobInstructions]$PSBoundParameters)
    }
}
class LabelingDatasetConfiguration
{
    [bool] $enableIncrementalDatasetRefresh
    [string] $assetName
    [string] $datasetVersion
}
function New-AzureNativeTypeMachinelearningservicesLabelingDatasetConfiguration
{
    param (
        [parameter(mandatory=$False,HelpMessage='Indicates whether to enable incremental dataset refresh.)')]
        [bool]
        $enableIncrementalDatasetRefresh,
        [parameter(mandatory=$False,HelpMessage='Name of the data asset to perform labeling.)')]
        [string]
        $assetName,
        [parameter(mandatory=$False,HelpMessage='AML dataset version.)')]
        [string]
        $datasetVersion
    )

    process
    {
        return $([LabelingDatasetConfiguration]$PSBoundParameters)
    }
}
class LabelingJobProperties
{
    [object] $properties
    [MLAssistConfiguration] $mlAssistConfiguration
    [LabelingJobImageProperties] $labelingJobMediaProperties
    [LabelingJobInstructions] $jobInstructions
    [object] $labelCategories
    [LabelingDatasetConfiguration] $datasetConfiguration
    [object] $tags
}
class LabelCategory
{
    [object] $classes
    [string] $displayName
    [bool] $allowMultiSelect
}
class LabelClass
{
    [string] $displayName
    [object] $subclasses
}
function New-AzureNativeTypeMachinelearningservicesLabelClass
{
    param (
        [parameter(mandatory=$False,HelpMessage='Display name of the label class.)')]
        [string]
        $displayName,
        [parameter(mandatory=$False,HelpMessage='Dictionary of subclasses of the label class.)')]
        [LabelClass]
        $subclasses
    )

    process
    {
        return $([LabelClass]$PSBoundParameters)
    }
}
function New-AzureNativeTypeMachinelearningservicesLabelCategory
{
    param (
        [parameter(mandatory=$False,HelpMessage='Dictionary of label classes in this category.)')]
        [LabelClass]
        $classes,
        [parameter(mandatory=$False,HelpMessage='Display name of the label category.)')]
        [string]
        $displayName,
        [parameter(mandatory=$False,HelpMessage='Indicates whether it is allowed to select multiple classes in this category.)')]
        [bool]
        $allowMultiSelect
    )

    process
    {
        return $([LabelCategory]$PSBoundParameters)
    }
}
function New-AzureNativeTypeMachinelearningservicesLabelingJobProperties
{
    param (
        [parameter(mandatory=$False,HelpMessage='The job property dictionary. Properties can be added, but not removed or altered.)')]
        [hashtable]
        $properties,
        [parameter(mandatory=$False,HelpMessage='Machine learning assisted configuration for the job.)')]
        [MLAssistConfiguration]
        $mlAssistConfiguration,
        [parameter(mandatory=$False,HelpMessage='Media specific properties in a labeling job.)')]
        [LabelingJobImageProperties]
        $labelingJobMediaProperties,
        [parameter(mandatory=$False,HelpMessage='Instructions for the job.)')]
        [LabelingJobInstructions]
        $jobInstructions,
        [parameter(mandatory=$False,HelpMessage='Label categories of the job.)')]
        [LabelCategory]
        $labelCategories,
        [parameter(mandatory=$False,HelpMessage='Dataset configuration for the job.)')]
        [LabelingDatasetConfiguration]
        $datasetConfiguration,
        [parameter(mandatory=$False,HelpMessage='The job tag dictionary. Tags can be added, removed, and updated.)')]
        [hashtable]
        $tags
    )

    process
    {
        return $([LabelingJobProperties]$PSBoundParameters)
    }
}
function New-AzureNativeMachinelearningservicesLabelingJob
{
    [Alias('azure_native_machinelearningservices_labelingjob')]
    param (
        [parameter(mandatory=$False,HelpMessage='Definition of a labeling job.)')]
        [LabelingJobProperties]
        $properties,
        [parameter(mandatory=$False,HelpMessage='Name of the resource group in which workspace is located.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Name and identifier for LabelingJob.)')]
        [string]
        $labelingJobId,
        [parameter(mandatory=$False,HelpMessage='Name of Azure Machine Learning workspace.)')]
        [string]
        $workspaceName,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid,
        [parameter(HelpMessage='Specifies a list of named output properties that should be treated as secrets, which means they will be encrypted. It augments the list of values that Pulumi detects, based on secret inputs to the resource.')]
        [string[]]
        $PulumiSecretOutputs,
        [parameter(HelpMessage='The aliases parameter provides a list of aliases for a resource or component resource. If youre changing the name, type, or parent path of a resource or component resource, you can add the old name to the list of aliases for a resource to ensure that existing resources will be migrated to the new name instead of being deleted and replaced with the new named resource.')]
        [string[]]
        $PulumiAliases,
        [parameter(HelpMessage='The customTimeouts parameter provides a set of custom timeouts for create, update, and delete operations on a resource. These timeouts are specified using a duration string such as 5m (5 minutes), 40s (40 seconds), or 1d (1 day). Supported duration units are ns, us (or µs), ms, s, m, and h (nanoseconds, microseconds, milliseconds, seconds, minutes, and hours, respectively).')]
        [pulumicustomtimeouts]
        $PulumiCustomTimeouts,
        [parameter(HelpMessage='Setting the PulumiDeleteBeforeReplace parameter to true means that Pulumi will delete the existing resource before creating its replacement. Be aware that this behavior has a cascading impact on dependencies so more resources may be replaced, which can lead to downtime. However, this option may be necessary for some resources that manage scarce resources behind the scenes, and/or resources that cannot exist side-by-side.')]
        [bool]
        $PulumiDeleteBeforeReplace,
        [parameter(HelpMessage='Creates a list of explicit dependencies between resources.The DependsOn parameter ensures that resource creation, update, and deletion operations are done in the correct order.')]
        [object[]]
        $PulumiDependsOn,
        [parameter(HelpMessage='Specifies a list of properties that Pulumi will ignore when it updates existing resources. Any properties specified in this list that are also specified in the resources arguments will only be used when creating the resource.')]
        [string[]]
        $PulumiIgnoreChanges,
        [parameter(HelpMessage='Imports an existing cloud resource so that Pulumi can manage it. To import a resource, first specify the PulumiImport parameter with the resources ID')]
        [string]
        $PulumiImport = [NullString]::Value,
        [parameter(HelpMessage='Specifies a parent for a resource. It is used to associate children with the parents that encapsulate or are responsible for them.')]
        [object]
        $PulumiParent = [NullString]::Value,
        [parameter(HelpMessage='Marks a resource as protected. A protected resource cannot be deleted directly, and it will be an error to do a Pulumi deployment which tries to delete a protected resource for any reason.')]
        [bool]
        $PulumiProtect,
        [parameter(HelpMessage='Sets a provider for the resource. The default is to inherit this value from the parent resource, and to use the ambient provider specified by Pulumi configuration for resources without a parent.')]
        [object]
        $PulumiProvider = [NullString]::Value,
        [parameter(HelpMessage='Sets a list of providers for the resource and its children. This list is combined with resource parents providers lists. If no value is provided, the providers list is identical to the parent. When determining which provider to use for a resource, the providers list is used if provider is not supplied.')]
        [object[]]
        $PulumiProviders,
        [parameter(HelpMessage='Used to indicate that changes to certain properties on a resource should force a replacement of the resource instead of an in-place update. Typically users rely on the resource provider to make this decision based on whether the input property is one that the provider knows how to update in place, or if not, requires a replacement to modify. However, there are cases where users want to replace a resource on a change to an input property even if the resource provider itself doesnt believe it has to replace the resource.')]
        [string[]]
        $PulumiReplaceOnChanges,
        [parameter(HelpMessage='Marks a resource to be retained. If this option is set then Pulumi will not call through to the resource providers Delete method when deleting or replacing the resource during pulumi up or pulumi destroy. As a result, the resource will not be deleted from the backing cloud provider, but will be removed from the Pulumi state.')]
        [bool]
        $PulumiRetainOnDelete,
        [parameter(HelpMessage='Specifies a provider version to use when operating on a resource. This version overrides the version information inferred from the current package. This option should be used rarely.')]
        [string]
        $PulumiProviderVersion = [NullString]::Value
    )

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

        $resource.options.additionalSecretOutputs = $PulumiSecretOutputs
        $resource.options.aliases = $PulumiAliases
        $resource.options.customTimeouts = $PulumiCustomTimeouts
        $resource.options.deleteBeforeReplace = $PulumiDeleteBeforeReplace
        $resource.options.ignoreChanges = $PulumiIgnoreChanges
        $resource.options.import = if([string]::IsNullOrEmpty($PulumiImport)) { [NullString]::Value } else { $PulumiImport }
        $resource.options.protect = $PulumiProtect
        $resource.options.replaceOnChanges = $PulumiReplaceOnChanges
        $resource.options.retainOnDelete = $PulumiRetainOnDelete
        $resource.options.version = if([string]::IsNullOrEmpty($PulumiProviderVersion)) { [NullString]::Value } else { $PulumiProviderVersion }

        foreach($Dependency in $DependsOn)
        {
            if($Dependency -is [pulumiresource])
            {
                $resource.options.dependson += $Dependency.Reference()
            } else
            {
                $resource.options.dependson += $Dependency
            }
        }
        if($PulumiParent -is [pulumiresource])
        {
            $resource.options.parent = $PulumiParent.Reference()
        } else
        {
            $resource.options.parent = $PulumiParent
        }
        foreach($provider in $PulumiProviders)
        {
            if($provider -is [pulumiprovider])
            {
                $resource.options.providers += $provider.Reference()
            } else
            {
                $resource.options.providers += $provider
            }
        }
        if($PulumiProvider -is [pulumiprovider])
        {
            $resource.options.provider = $PulumiProvider.Reference()
        } else
        {
            $resource.options.provider = $PulumiProvider
        }
        $resource.properties["resourceGroupName"] = $resourceGroupName
        $resource.properties["workspaceName"] = $workspaceName

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
class CosmosDbSettings
{
    [int] $collectionsThroughput
}
function New-AzureNativeTypeMachinelearningservicesCosmosDbSettings
{
    param (
        [parameter(mandatory=$False,HelpMessage='The throughput of the collections in cosmosdb database)')]
        [int]
        $collectionsThroughput
    )

    process
    {
        return $([CosmosDbSettings]$PSBoundParameters)
    }
}
class ServiceManagedResourcesSettings
{
    [CosmosDbSettings] $cosmosDb
}
function New-AzureNativeTypeMachinelearningservicesServiceManagedResourcesSettings
{
    param (
        [parameter(mandatory=$False,HelpMessage='The settings for the service managed cosmosdb account.)')]
        [CosmosDbSettings]
        $cosmosDb
    )

    process
    {
        return $([ServiceManagedResourcesSettings]$PSBoundParameters)
    }
}
class Sku
{
    [string] $tier
    [string] $name
}
function New-AzureNativeTypeMachinelearningservicesSku
{
    param (
        [parameter(mandatory=$False,HelpMessage='Tier of the sku like Basic or Enterprise)')]
        [string]
        $tier,
        [parameter(mandatory=$False,HelpMessage='Name of the sku)')]
        [string]
        $name
    )

    process
    {
        return $([Sku]$PSBoundParameters)
    }
}
class Identity
{
    [ArgumentCompletions('SystemAssigned', 'SystemAssigned,UserAssigned', 'UserAssigned', 'None')]
    [object] $type
    [object] $userAssignedIdentities
}
function New-AzureNativeTypeMachinelearningservicesIdentity
{
    param (
        [parameter(mandatory=$False,HelpMessage='The identity type.)')]
        $type,
        [parameter(mandatory=$False,HelpMessage='The user assigned identities associated with the resource.)')]
        [object]
        $userAssignedIdentities
    )

    process
    {
        return $([Identity]$PSBoundParameters)
    }
}
class KeyVaultProperties
{
    [string] $keyIdentifier
    [string] $identityClientId
    [string] $keyVaultArmId
}
function New-AzureNativeTypeMachinelearningservicesKeyVaultProperties
{
    param (
        [parameter(mandatory=$False,HelpMessage='Key vault uri to access the encryption key.)')]
        [string]
        $keyIdentifier,
        [parameter(mandatory=$False,HelpMessage='For future use - The client id of the identity which will be used to access key vault.)')]
        [string]
        $identityClientId,
        [parameter(mandatory=$False,HelpMessage='The ArmId of the keyVault where the customer owned encryption key is present.)')]
        [string]
        $keyVaultArmId
    )

    process
    {
        return $([KeyVaultProperties]$PSBoundParameters)
    }
}
class IdentityForCmk
{
    [string] $userAssignedIdentity
}
function New-AzureNativeTypeMachinelearningservicesIdentityForCmk
{
    param (
        [parameter(mandatory=$False,HelpMessage='The ArmId of the user assigned identity that will be used to access the customer managed key vault)')]
        [string]
        $userAssignedIdentity
    )

    process
    {
        return $([IdentityForCmk]$PSBoundParameters)
    }
}
class EncryptionProperty
{
    [KeyVaultProperties] $keyVaultProperties
    [IdentityForCmk] $identity
    [ArgumentCompletions('Enabled', 'Disabled')]
    [string] $status
}
function New-AzureNativeTypeMachinelearningservicesEncryptionProperty
{
    param (
        [parameter(mandatory=$False,HelpMessage='Customer Key vault properties.)')]
        [KeyVaultProperties]
        $keyVaultProperties,
        [parameter(mandatory=$False,HelpMessage='The identity that will be used to access the key vault for encryption at rest.)')]
        [IdentityForCmk]
        $identity,
        [parameter(mandatory=$False,HelpMessage='Indicates whether or not the encryption is enabled for the workspace.)')]
        [string]
        [ArgumentCompletions('Enabled', 'Disabled')]
        $status
    )

    process
    {
        return $([EncryptionProperty]$PSBoundParameters)
    }
}
function New-AzureNativeMachinelearningservicesWorkspace
{
    [Alias('azure_native_machinelearningservices_workspace')]
    param (
        [parameter(mandatory=$False,HelpMessage='Specifies the location of the resource.)')]
        [string]
        $location,
        [parameter(mandatory=$False,HelpMessage='Name of Azure Machine Learning workspace.)')]
        [string]
        $workspaceName,
        [parameter(mandatory=$False,HelpMessage='The friendly name for this workspace. This name in mutable)')]
        [string]
        $friendlyName,
        [parameter(mandatory=$False,HelpMessage='ARM id of the storage account associated with this workspace. This cannot be changed once the workspace has been created)')]
        [string]
        $storageAccount,
        [parameter(mandatory=$False,HelpMessage='The description of this workspace.)')]
        [string]
        $description,
        [parameter(mandatory=$False,HelpMessage='The service managed resource settings.)')]
        [ServiceManagedResourcesSettings]
        $serviceManagedResourcesSettings,
        [parameter(mandatory=$False,HelpMessage='The flag to indicate whether to allow public access when behind VNet.)')]
        [bool]
        $allowPublicAccessWhenBehindVnet,
        [parameter(mandatory=$False,HelpMessage='The compute name for image build)')]
        [string]
        $imageBuildCompute,
        [parameter(mandatory=$False,HelpMessage='ARM id of the container registry associated with this workspace. This cannot be changed once the workspace has been created)')]
        [string]
        $containerRegistry,
        [parameter(mandatory=$False,HelpMessage='The sku of the workspace.)')]
        [Sku]
        $sku,
        [parameter(mandatory=$False,HelpMessage='ARM id of the application insights associated with this workspace. This cannot be changed once the workspace has been created)')]
        [string]
        $applicationInsights,
        [parameter(mandatory=$False,HelpMessage='Contains resource tags defined as key/value pairs.)')]
        [hashtable]
        $tags,
        [parameter(mandatory=$False,HelpMessage='The user assigned identity resource id that represents the workspace identity.)')]
        [string]
        $primaryUserAssignedIdentity,
        [parameter(mandatory=$False,HelpMessage='ARM id of the key vault associated with this workspace. This cannot be changed once the workspace has been created)')]
        [string]
        $keyVault,
        [parameter(mandatory=$False,HelpMessage='The identity of the resource.)')]
        [Identity]
        $identity,
        [parameter(mandatory=$False,HelpMessage='The list of shared private link resources in this workspace.)')]
        $sharedPrivateLinkResources,
        [parameter(mandatory=$False,HelpMessage='The encryption settings of Azure ML workspace.)')]
        [EncryptionProperty]
        $encryption,
        [parameter(mandatory=$False,HelpMessage='Url for the discovery service to identify regional endpoints for machine learning experimentation services)')]
        [string]
        $discoveryUrl,
        [parameter(mandatory=$False,HelpMessage='The flag to signal HBI data in the workspace and reduce diagnostic data collected by the service)')]
        [bool]
        $hbiWorkspace,
        [parameter(mandatory=$False,HelpMessage='Name of the resource group in which workspace is located.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid,
        [parameter(HelpMessage='Specifies a list of named output properties that should be treated as secrets, which means they will be encrypted. It augments the list of values that Pulumi detects, based on secret inputs to the resource.')]
        [string[]]
        $PulumiSecretOutputs,
        [parameter(HelpMessage='The aliases parameter provides a list of aliases for a resource or component resource. If youre changing the name, type, or parent path of a resource or component resource, you can add the old name to the list of aliases for a resource to ensure that existing resources will be migrated to the new name instead of being deleted and replaced with the new named resource.')]
        [string[]]
        $PulumiAliases,
        [parameter(HelpMessage='The customTimeouts parameter provides a set of custom timeouts for create, update, and delete operations on a resource. These timeouts are specified using a duration string such as 5m (5 minutes), 40s (40 seconds), or 1d (1 day). Supported duration units are ns, us (or µs), ms, s, m, and h (nanoseconds, microseconds, milliseconds, seconds, minutes, and hours, respectively).')]
        [pulumicustomtimeouts]
        $PulumiCustomTimeouts,
        [parameter(HelpMessage='Setting the PulumiDeleteBeforeReplace parameter to true means that Pulumi will delete the existing resource before creating its replacement. Be aware that this behavior has a cascading impact on dependencies so more resources may be replaced, which can lead to downtime. However, this option may be necessary for some resources that manage scarce resources behind the scenes, and/or resources that cannot exist side-by-side.')]
        [bool]
        $PulumiDeleteBeforeReplace,
        [parameter(HelpMessage='Creates a list of explicit dependencies between resources.The DependsOn parameter ensures that resource creation, update, and deletion operations are done in the correct order.')]
        [object[]]
        $PulumiDependsOn,
        [parameter(HelpMessage='Specifies a list of properties that Pulumi will ignore when it updates existing resources. Any properties specified in this list that are also specified in the resources arguments will only be used when creating the resource.')]
        [string[]]
        $PulumiIgnoreChanges,
        [parameter(HelpMessage='Imports an existing cloud resource so that Pulumi can manage it. To import a resource, first specify the PulumiImport parameter with the resources ID')]
        [string]
        $PulumiImport = [NullString]::Value,
        [parameter(HelpMessage='Specifies a parent for a resource. It is used to associate children with the parents that encapsulate or are responsible for them.')]
        [object]
        $PulumiParent = [NullString]::Value,
        [parameter(HelpMessage='Marks a resource as protected. A protected resource cannot be deleted directly, and it will be an error to do a Pulumi deployment which tries to delete a protected resource for any reason.')]
        [bool]
        $PulumiProtect,
        [parameter(HelpMessage='Sets a provider for the resource. The default is to inherit this value from the parent resource, and to use the ambient provider specified by Pulumi configuration for resources without a parent.')]
        [object]
        $PulumiProvider = [NullString]::Value,
        [parameter(HelpMessage='Sets a list of providers for the resource and its children. This list is combined with resource parents providers lists. If no value is provided, the providers list is identical to the parent. When determining which provider to use for a resource, the providers list is used if provider is not supplied.')]
        [object[]]
        $PulumiProviders,
        [parameter(HelpMessage='Used to indicate that changes to certain properties on a resource should force a replacement of the resource instead of an in-place update. Typically users rely on the resource provider to make this decision based on whether the input property is one that the provider knows how to update in place, or if not, requires a replacement to modify. However, there are cases where users want to replace a resource on a change to an input property even if the resource provider itself doesnt believe it has to replace the resource.')]
        [string[]]
        $PulumiReplaceOnChanges,
        [parameter(HelpMessage='Marks a resource to be retained. If this option is set then Pulumi will not call through to the resource providers Delete method when deleting or replacing the resource during pulumi up or pulumi destroy. As a result, the resource will not be deleted from the backing cloud provider, but will be removed from the Pulumi state.')]
        [bool]
        $PulumiRetainOnDelete,
        [parameter(HelpMessage='Specifies a provider version to use when operating on a resource. This version overrides the version information inferred from the current package. This option should be used rarely.')]
        [string]
        $PulumiProviderVersion = [NullString]::Value
    )

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

        $resource.options.additionalSecretOutputs = $PulumiSecretOutputs
        $resource.options.aliases = $PulumiAliases
        $resource.options.customTimeouts = $PulumiCustomTimeouts
        $resource.options.deleteBeforeReplace = $PulumiDeleteBeforeReplace
        $resource.options.ignoreChanges = $PulumiIgnoreChanges
        $resource.options.import = if([string]::IsNullOrEmpty($PulumiImport)) { [NullString]::Value } else { $PulumiImport }
        $resource.options.protect = $PulumiProtect
        $resource.options.replaceOnChanges = $PulumiReplaceOnChanges
        $resource.options.retainOnDelete = $PulumiRetainOnDelete
        $resource.options.version = if([string]::IsNullOrEmpty($PulumiProviderVersion)) { [NullString]::Value } else { $PulumiProviderVersion }

        foreach($Dependency in $DependsOn)
        {
            if($Dependency -is [pulumiresource])
            {
                $resource.options.dependson += $Dependency.Reference()
            } else
            {
                $resource.options.dependson += $Dependency
            }
        }
        if($PulumiParent -is [pulumiresource])
        {
            $resource.options.parent = $PulumiParent.Reference()
        } else
        {
            $resource.options.parent = $PulumiParent
        }
        foreach($provider in $PulumiProviders)
        {
            if($provider -is [pulumiprovider])
            {
                $resource.options.providers += $provider.Reference()
            } else
            {
                $resource.options.providers += $provider
            }
        }
        if($PulumiProvider -is [pulumiprovider])
        {
            $resource.options.provider = $PulumiProvider.Reference()
        } else
        {
            $resource.options.provider = $PulumiProvider
        }
        $resource.properties["resourceGroupName"] = $resourceGroupName

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
class Objective
{
    [string] $primaryMetric
    [ArgumentCompletions('Minimize', 'Maximize')]
    [string] $goal
}
function New-AzureNativeTypeMachinelearningservicesObjective
{
    param (
        [parameter(mandatory=$False,HelpMessage='[Required] Name of the metric to optimize.)')]
        [string]
        $primaryMetric,
        [parameter(mandatory=$False,HelpMessage='[Required] Defines supported metric goals for hyperparameter tuning)')]
        [string]
        [ArgumentCompletions('Minimize', 'Maximize')]
        $goal
    )

    process
    {
        return $([Objective]$PSBoundParameters)
    }
}
class TrialComponent
{
    [string] $timeout
    [object] $outputDataBindings
    [object] $inputDataBindings
    [object] $distribution #todo add class here
    [object] $environmentVariables
    [string] $command
    [string] $environmentId
    [string] $codeId
}
class OutputDataBinding
{
    [string] $pathOnDatastore
    [ArgumentCompletions('Mount', 'Download', 'Upload', 'ReadOnlyMount', 'ReadWriteMount', 'Direct', 'EvalMount', 'EvalDownload')]
    [string] $mode
    [string] $pathOnCompute
    [string] $datastoreId
}
function New-AzureNativeTypeMachinelearningservicesOutputDataBinding
{
    param (
        [parameter(mandatory=$False,HelpMessage='Path within the datastore to the data.)')]
        [string]
        $pathOnDatastore,
        [parameter(mandatory=$False,HelpMessage='Mechanism for data movement to datastore.)')]
        [string]
        [ArgumentCompletions('Mount', 'Download', 'Upload', 'ReadOnlyMount', 'ReadWriteMount', 'Direct', 'EvalMount', 'EvalDownload')]
        $mode,
        [parameter(mandatory=$False,HelpMessage='Location of data inside the container process.)')]
        [string]
        $pathOnCompute,
        [parameter(mandatory=$False,HelpMessage='ARM resource ID of the datastore where the data output will be stored.)')]
        [string]
        $datastoreId
    )

    process
    {
        return $([OutputDataBinding]$PSBoundParameters)
    }
}
class InputDataBinding
{
    [ArgumentCompletions('Mount', 'Download', 'Upload', 'ReadOnlyMount', 'ReadWriteMount', 'Direct', 'EvalMount', 'EvalDownload')]
    [string] $mode
    [string] $pathOnCompute
    [string] $dataId
}
function New-AzureNativeTypeMachinelearningservicesInputDataBinding
{
    param (
        [parameter(mandatory=$False,HelpMessage='Mechanism for accessing the data artifact.)')]
        [string]
        [ArgumentCompletions('Mount', 'Download', 'Upload', 'ReadOnlyMount', 'ReadWriteMount', 'Direct', 'EvalMount', 'EvalDownload')]
        $mode,
        [parameter(mandatory=$False,HelpMessage='Location of data inside the container process.)')]
        [string]
        $pathOnCompute,
        [parameter(mandatory=$False,HelpMessage='ARM resource ID of the registered dataVersion.)')]
        [string]
        $dataId
    )

    process
    {
        return $([InputDataBinding]$PSBoundParameters)
    }
}
class TensorFlow
{
    [string] $distributionType
    [int] $workerCount
    [int] $parameterServerCount
}
function New-AzureNativeTypeMachinelearningservicesTensorFlow
{
    param (
        [parameter(mandatory=$False,HelpMessage='Enum to determine the job distribution type.
Expected value is ''TensorFlow''.)'
)]
        [string]
        $distributionType,
        [parameter(mandatory=$False,HelpMessage='Number of workers. Overwrites the node count in compute binding.)')]
        [int]
        $workerCount,
        [parameter(mandatory=$False,HelpMessage='Number of parameter server tasks.)')]
        [int]
        $parameterServerCount
    )

    process
    {
        return $([TensorFlow]$PSBoundParameters)
    }
}
function New-AzureNativeTypeMachinelearningservicesTrialComponent
{
    param (
        [parameter(mandatory=$False,HelpMessage='The max run duration in ISO 8601 format, after which the trial component will be cancelled.
Only supports duration with precision as low as Seconds.)'
)]
        [string]
        $timeout,
        [parameter(mandatory=$False,HelpMessage='Mapping of output data bindings used in the job.)')]
        [OutputDataBinding]
        $outputDataBindings,
        [parameter(mandatory=$False,HelpMessage='Mapping of input data bindings used in the job.)')]
        [InputDataBinding]
        $inputDataBindings,
        [parameter(mandatory=$False,HelpMessage='Distribution configuration of the job. If set, this should be one of Mpi, Tensorflow, PyTorch, or null.)')]
        [TensorFlow]
        $distribution,
        [parameter(mandatory=$False,HelpMessage='Environment variables included in the job.)')]
        [hashtable]
        $environmentVariables,
        [parameter(mandatory=$False,HelpMessage='[Required] The command to execute on startup of the job. eg. "python train.py")')]
        [string]
        $command,
        [parameter(mandatory=$False,HelpMessage='The ARM resource ID of the Environment specification for the job.)')]
        [string]
        $environmentId,
        [parameter(mandatory=$False,HelpMessage='ARM resource ID of the code asset.)')]
        [string]
        $codeId
    )

    process
    {
        return $([TrialComponent]$PSBoundParameters)
    }
}
class SweepJob
{
    [int] $maxConcurrentTrials
    [string] $timeout
    [int] $priority
    [object] $properties
    [int] $maxTotalTrials
    [object] $searchSpace
    [ArgumentCompletions('Grid', 'Random', 'Bayesian')]
    [string] $algorithm
    [string] $jobType
    [object] $earlyTermination #todo add class here
    [string] $description
    [object] $identity #todo add class here
    [Objective] $objective
    [string] $experimentName
    [TrialComponent] $trial
    [ComputeConfiguration] $compute
    [object] $tags
}
class TruncationSelectionPolicy
{
    [int] $evaluationInterval
    [string] $policyType
    [int] $truncationPercentage
    [int] $delayEvaluation
}
function New-AzureNativeTypeMachinelearningservicesTruncationSelectionPolicy
{
    param (
        [parameter(mandatory=$False,HelpMessage='Interval (number of runs) between policy evaluations.)')]
        [int]
        $evaluationInterval,
        [parameter(mandatory=$False,HelpMessage='
Expected value is ''TruncationSelection''.)'
)]
        [string]
        $policyType,
        [parameter(mandatory=$False,HelpMessage='The percentage of runs to cancel at each evaluation interval.)')]
        [int]
        $truncationPercentage,
        [parameter(mandatory=$False,HelpMessage='Number of intervals by which to delay the first evaluation.)')]
        [int]
        $delayEvaluation
    )

    process
    {
        return $([TruncationSelectionPolicy]$PSBoundParameters)
    }
}
class ManagedIdentity
{
    [string] $objectId
    [string] $clientId
    [string] $identityType
    [string] $resourceId
}
function New-AzureNativeTypeMachinelearningservicesManagedIdentity
{
    param (
        [parameter(mandatory=$False,HelpMessage='Specifies a user-assigned identity by object ID. For system-assigned, do not set this field.)')]
        [string]
        $objectId,
        [parameter(mandatory=$False,HelpMessage='Specifies a user-assigned identity by client ID. For system-assigned, do not set this field.)')]
        [string]
        $clientId,
        [parameter(mandatory=$False,HelpMessage='Enum to determine identity framework.
Expected value is ''Managed''.)'
)]
        [string]
        $identityType,
        [parameter(mandatory=$False,HelpMessage='Specifies a user-assigned identity by ARM resource ID. For system-assigned, do not set this field.)')]
        [string]
        $resourceId
    )

    process
    {
        return $([ManagedIdentity]$PSBoundParameters)
    }
}
function New-AzureNativeTypeMachinelearningservicesSweepJob
{
    param (
        [parameter(mandatory=$False,HelpMessage='An upper bound on the number of trials performed in parallel.)')]
        [int]
        $maxConcurrentTrials,
        [parameter(mandatory=$False,HelpMessage='The total timeout in ISO 8601 format. Only supports duration with precision as low as Minutes.)')]
        [string]
        $timeout,
        [parameter(mandatory=$False,HelpMessage='Job priority for scheduling policy. Only applies to AMLCompute.
Private preview feature and only available to users on the allow list.)'
)]
        [int]
        $priority,
        [parameter(mandatory=$False,HelpMessage='The asset property dictionary.)')]
        [hashtable]
        $properties,
        [parameter(mandatory=$False,HelpMessage='An upper bound on the number of trials to perform.)')]
        [int]
        $maxTotalTrials,
        [parameter(mandatory=$False,HelpMessage='[Required] A dictionary containing each parameter and its distribution. The dictionary key is the name of the parameter)')]
        [object]
        $searchSpace,
        [parameter(mandatory=$False,HelpMessage='[Required] Type of the hyperparameter sampling algorithms)')]
        [string]
        [ArgumentCompletions('Grid', 'Random', 'Bayesian')]
        $algorithm,
        [parameter(mandatory=$False,HelpMessage='Enum to determine the type of job.
Expected value is ''Sweep''.)'
)]
        [string]
        $jobType,
        [parameter(mandatory=$False,HelpMessage='Early termination policies enable canceling poor-performing runs before they complete.)')]
        [TruncationSelectionPolicy]
        $earlyTermination,
        [parameter(mandatory=$False,HelpMessage='The asset description text.)')]
        [string]
        $description,
        [parameter(mandatory=$False,HelpMessage='Identity configuration. If set, this should be one of AmlToken, ManagedIdentity or null.
Defaults to AmlToken if null.)'
)]
        [ManagedIdentity]
        $identity,
        [parameter(mandatory=$False,HelpMessage='[Required] Optimization objective.)')]
        [Objective]
        $objective,
        [parameter(mandatory=$False,HelpMessage='The name of the experiment the job belongs to. If not set, the job is placed in the "Default" experiment.)')]
        [string]
        $experimentName,
        [parameter(mandatory=$False,HelpMessage='Trial component definition.)')]
        [TrialComponent]
        $trial,
        [parameter(mandatory=$False,HelpMessage='[Required] Compute binding for the job.)')]
        [ComputeConfiguration]
        $compute,
        [parameter(mandatory=$False,HelpMessage='Tag dictionary. Tags can be added, removed, and updated.)')]
        [hashtable]
        $tags
    )

    process
    {
        return $([SweepJob]$PSBoundParameters)
    }
}
function New-AzureNativeMachinelearningservicesJob
{
    [Alias('azure_native_machinelearningservices_job')]
    param (
        [parameter(mandatory=$False,HelpMessage='[Required] Additional attributes of the entity.)')]
        [SweepJob]
        $properties,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group. The name is case insensitive.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Name of Azure Machine Learning workspace.)')]
        [string]
        $workspaceName,
        [parameter(mandatory=$False,HelpMessage='The name and identifier for the Job.)')]
        [string]
        $id,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid,
        [parameter(HelpMessage='Specifies a list of named output properties that should be treated as secrets, which means they will be encrypted. It augments the list of values that Pulumi detects, based on secret inputs to the resource.')]
        [string[]]
        $PulumiSecretOutputs,
        [parameter(HelpMessage='The aliases parameter provides a list of aliases for a resource or component resource. If youre changing the name, type, or parent path of a resource or component resource, you can add the old name to the list of aliases for a resource to ensure that existing resources will be migrated to the new name instead of being deleted and replaced with the new named resource.')]
        [string[]]
        $PulumiAliases,
        [parameter(HelpMessage='The customTimeouts parameter provides a set of custom timeouts for create, update, and delete operations on a resource. These timeouts are specified using a duration string such as 5m (5 minutes), 40s (40 seconds), or 1d (1 day). Supported duration units are ns, us (or µs), ms, s, m, and h (nanoseconds, microseconds, milliseconds, seconds, minutes, and hours, respectively).')]
        [pulumicustomtimeouts]
        $PulumiCustomTimeouts,
        [parameter(HelpMessage='Setting the PulumiDeleteBeforeReplace parameter to true means that Pulumi will delete the existing resource before creating its replacement. Be aware that this behavior has a cascading impact on dependencies so more resources may be replaced, which can lead to downtime. However, this option may be necessary for some resources that manage scarce resources behind the scenes, and/or resources that cannot exist side-by-side.')]
        [bool]
        $PulumiDeleteBeforeReplace,
        [parameter(HelpMessage='Creates a list of explicit dependencies between resources.The DependsOn parameter ensures that resource creation, update, and deletion operations are done in the correct order.')]
        [object[]]
        $PulumiDependsOn,
        [parameter(HelpMessage='Specifies a list of properties that Pulumi will ignore when it updates existing resources. Any properties specified in this list that are also specified in the resources arguments will only be used when creating the resource.')]
        [string[]]
        $PulumiIgnoreChanges,
        [parameter(HelpMessage='Imports an existing cloud resource so that Pulumi can manage it. To import a resource, first specify the PulumiImport parameter with the resources ID')]
        [string]
        $PulumiImport = [NullString]::Value,
        [parameter(HelpMessage='Specifies a parent for a resource. It is used to associate children with the parents that encapsulate or are responsible for them.')]
        [object]
        $PulumiParent = [NullString]::Value,
        [parameter(HelpMessage='Marks a resource as protected. A protected resource cannot be deleted directly, and it will be an error to do a Pulumi deployment which tries to delete a protected resource for any reason.')]
        [bool]
        $PulumiProtect,
        [parameter(HelpMessage='Sets a provider for the resource. The default is to inherit this value from the parent resource, and to use the ambient provider specified by Pulumi configuration for resources without a parent.')]
        [object]
        $PulumiProvider = [NullString]::Value,
        [parameter(HelpMessage='Sets a list of providers for the resource and its children. This list is combined with resource parents providers lists. If no value is provided, the providers list is identical to the parent. When determining which provider to use for a resource, the providers list is used if provider is not supplied.')]
        [object[]]
        $PulumiProviders,
        [parameter(HelpMessage='Used to indicate that changes to certain properties on a resource should force a replacement of the resource instead of an in-place update. Typically users rely on the resource provider to make this decision based on whether the input property is one that the provider knows how to update in place, or if not, requires a replacement to modify. However, there are cases where users want to replace a resource on a change to an input property even if the resource provider itself doesnt believe it has to replace the resource.')]
        [string[]]
        $PulumiReplaceOnChanges,
        [parameter(HelpMessage='Marks a resource to be retained. If this option is set then Pulumi will not call through to the resource providers Delete method when deleting or replacing the resource during pulumi up or pulumi destroy. As a result, the resource will not be deleted from the backing cloud provider, but will be removed from the Pulumi state.')]
        [bool]
        $PulumiRetainOnDelete,
        [parameter(HelpMessage='Specifies a provider version to use when operating on a resource. This version overrides the version information inferred from the current package. This option should be used rarely.')]
        [string]
        $PulumiProviderVersion = [NullString]::Value
    )

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

        $resource.options.additionalSecretOutputs = $PulumiSecretOutputs
        $resource.options.aliases = $PulumiAliases
        $resource.options.customTimeouts = $PulumiCustomTimeouts
        $resource.options.deleteBeforeReplace = $PulumiDeleteBeforeReplace
        $resource.options.ignoreChanges = $PulumiIgnoreChanges
        $resource.options.import = if([string]::IsNullOrEmpty($PulumiImport)) { [NullString]::Value } else { $PulumiImport }
        $resource.options.protect = $PulumiProtect
        $resource.options.replaceOnChanges = $PulumiReplaceOnChanges
        $resource.options.retainOnDelete = $PulumiRetainOnDelete
        $resource.options.version = if([string]::IsNullOrEmpty($PulumiProviderVersion)) { [NullString]::Value } else { $PulumiProviderVersion }

        foreach($Dependency in $DependsOn)
        {
            if($Dependency -is [pulumiresource])
            {
                $resource.options.dependson += $Dependency.Reference()
            } else
            {
                $resource.options.dependson += $Dependency
            }
        }
        if($PulumiParent -is [pulumiresource])
        {
            $resource.options.parent = $PulumiParent.Reference()
        } else
        {
            $resource.options.parent = $PulumiParent
        }
        foreach($provider in $PulumiProviders)
        {
            if($provider -is [pulumiprovider])
            {
                $resource.options.providers += $provider.Reference()
            } else
            {
                $resource.options.providers += $provider
            }
        }
        if($PulumiProvider -is [pulumiprovider])
        {
            $resource.options.provider = $PulumiProvider.Reference()
        } else
        {
            $resource.options.provider = $PulumiProvider
        }
        $resource.properties["properties"] = $properties
        $resource.properties["resourceGroupName"] = $resourceGroupName
        $resource.properties["workspaceName"] = $workspaceName

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

        $global:pulumiresources += $resource
        return $resource
    }
}
class Route
{
    [string] $path
    [int] $port
}
function New-AzureNativeTypeMachinelearningservicesRoute
{
    param (
        [parameter(mandatory=$False,HelpMessage='[Required] The path for the route.)')]
        [string]
        $path,
        [parameter(mandatory=$False,HelpMessage='[Required] The port for the route.)')]
        [int]
        $port
    )

    process
    {
        return $([Route]$PSBoundParameters)
    }
}
class InferenceContainerProperties
{
    [Route] $scoringRoute
    [Route] $livenessRoute
    [Route] $readinessRoute
}
function New-AzureNativeTypeMachinelearningservicesInferenceContainerProperties
{
    param (
        [parameter(mandatory=$False,HelpMessage='The port to send the scoring requests to, within the inference server container.)')]
        [Route]
        $scoringRoute,
        [parameter(mandatory=$False,HelpMessage='The route to check the liveness of the inference server container.)')]
        [Route]
        $livenessRoute,
        [parameter(mandatory=$False,HelpMessage='The route to check the readiness of the inference server container.)')]
        [Route]
        $readinessRoute
    )

    process
    {
        return $([InferenceContainerProperties]$PSBoundParameters)
    }
}
class EnvironmentSpecificationVersion
{
    [string] $description
    [bool] $isAnonymous
    [object] $docker #todo add class here
    [InferenceContainerProperties] $inferenceContainerProperties
    [object] $properties
    [object] $tags
    [string] $condaFile
}
class DockerImagePlatform
{
    [ArgumentCompletions('Linux', 'Windows')]
    [string] $operatingSystemType
}
function New-AzureNativeTypeMachinelearningservicesDockerImagePlatform
{
    param (
        [parameter(mandatory=$False,HelpMessage='The OS type the Environment.)')]
        [string]
        [ArgumentCompletions('Linux', 'Windows')]
        $operatingSystemType
    )

    process
    {
        return $([DockerImagePlatform]$PSBoundParameters)
    }
}
class DockerImage
{
    [DockerImagePlatform] $platform
    [string] $dockerImageUri
    [string] $dockerSpecificationType
}
function New-AzureNativeTypeMachinelearningservicesDockerImage
{
    param (
        [parameter(mandatory=$False,HelpMessage='The platform information of the docker image.)')]
        [DockerImagePlatform]
        $platform,
        [parameter(mandatory=$False,HelpMessage='[Required] Image name of a custom base image.
<seealso href="https://docs.microsoft.com/en-us/azure/machine-learning/how-to-deploy-custom-docker-image#use-a-custom-base-image" />)'
)]
        [string]
        $dockerImageUri,
        [parameter(mandatory=$False,HelpMessage='Enum to determine docker specification type. Must be either Build or Image.
Expected value is ''Image''.)'
)]
        [string]
        $dockerSpecificationType
    )

    process
    {
        return $([DockerImage]$PSBoundParameters)
    }
}
function New-AzureNativeTypeMachinelearningservicesEnvironmentSpecificationVersion
{
    param (
        [parameter(mandatory=$False,HelpMessage='The asset description text.)')]
        [string]
        $description,
        [parameter(mandatory=$False,HelpMessage='If the name version are system generated (anonymous registration).)')]
        [bool]
        $isAnonymous,
        [parameter(mandatory=$False,HelpMessage='Configuration settings for Docker.)')]
        [DockerImage]
        $docker,
        [parameter(mandatory=$False,HelpMessage='Defines configuration specific to inference.)')]
        [InferenceContainerProperties]
        $inferenceContainerProperties,
        [parameter(mandatory=$False,HelpMessage='The asset property dictionary.)')]
        [hashtable]
        $properties,
        [parameter(mandatory=$False,HelpMessage='Tag dictionary. Tags can be added, removed, and updated.)')]
        [hashtable]
        $tags,
        [parameter(mandatory=$False,HelpMessage='Standard configuration file used by Conda that lets you install any kind of package, including Python, R, and C/C++ packages.
<see href="https://repo2docker.readthedocs.io/en/latest/config_files.html#environment-yml-install-a-conda-environment" />)'
)]
        [string]
        $condaFile
    )

    process
    {
        return $([EnvironmentSpecificationVersion]$PSBoundParameters)
    }
}
function New-AzureNativeMachinelearningservicesEnvironmentSpecificationVersion
{
    [Alias('azure_native_machinelearningservices_environmentspecificationversion')]
    param (
        [parameter(mandatory=$False,HelpMessage='Version of EnvironmentSpecificationVersion.)')]
        [string]
        $version,
        [parameter(mandatory=$False,HelpMessage='Name of EnvironmentSpecificationVersion.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group. The name is case insensitive.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Name of Azure Machine Learning workspace.)')]
        [string]
        $workspaceName,
        [parameter(mandatory=$False,HelpMessage='[Required] Additional attributes of the entity.)')]
        [EnvironmentSpecificationVersion]
        $properties,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid,
        [parameter(HelpMessage='Specifies a list of named output properties that should be treated as secrets, which means they will be encrypted. It augments the list of values that Pulumi detects, based on secret inputs to the resource.')]
        [string[]]
        $PulumiSecretOutputs,
        [parameter(HelpMessage='The aliases parameter provides a list of aliases for a resource or component resource. If youre changing the name, type, or parent path of a resource or component resource, you can add the old name to the list of aliases for a resource to ensure that existing resources will be migrated to the new name instead of being deleted and replaced with the new named resource.')]
        [string[]]
        $PulumiAliases,
        [parameter(HelpMessage='The customTimeouts parameter provides a set of custom timeouts for create, update, and delete operations on a resource. These timeouts are specified using a duration string such as 5m (5 minutes), 40s (40 seconds), or 1d (1 day). Supported duration units are ns, us (or µs), ms, s, m, and h (nanoseconds, microseconds, milliseconds, seconds, minutes, and hours, respectively).')]
        [pulumicustomtimeouts]
        $PulumiCustomTimeouts,
        [parameter(HelpMessage='Setting the PulumiDeleteBeforeReplace parameter to true means that Pulumi will delete the existing resource before creating its replacement. Be aware that this behavior has a cascading impact on dependencies so more resources may be replaced, which can lead to downtime. However, this option may be necessary for some resources that manage scarce resources behind the scenes, and/or resources that cannot exist side-by-side.')]
        [bool]
        $PulumiDeleteBeforeReplace,
        [parameter(HelpMessage='Creates a list of explicit dependencies between resources.The DependsOn parameter ensures that resource creation, update, and deletion operations are done in the correct order.')]
        [object[]]
        $PulumiDependsOn,
        [parameter(HelpMessage='Specifies a list of properties that Pulumi will ignore when it updates existing resources. Any properties specified in this list that are also specified in the resources arguments will only be used when creating the resource.')]
        [string[]]
        $PulumiIgnoreChanges,
        [parameter(HelpMessage='Imports an existing cloud resource so that Pulumi can manage it. To import a resource, first specify the PulumiImport parameter with the resources ID')]
        [string]
        $PulumiImport = [NullString]::Value,
        [parameter(HelpMessage='Specifies a parent for a resource. It is used to associate children with the parents that encapsulate or are responsible for them.')]
        [object]
        $PulumiParent = [NullString]::Value,
        [parameter(HelpMessage='Marks a resource as protected. A protected resource cannot be deleted directly, and it will be an error to do a Pulumi deployment which tries to delete a protected resource for any reason.')]
        [bool]
        $PulumiProtect,
        [parameter(HelpMessage='Sets a provider for the resource. The default is to inherit this value from the parent resource, and to use the ambient provider specified by Pulumi configuration for resources without a parent.')]
        [object]
        $PulumiProvider = [NullString]::Value,
        [parameter(HelpMessage='Sets a list of providers for the resource and its children. This list is combined with resource parents providers lists. If no value is provided, the providers list is identical to the parent. When determining which provider to use for a resource, the providers list is used if provider is not supplied.')]
        [object[]]
        $PulumiProviders,
        [parameter(HelpMessage='Used to indicate that changes to certain properties on a resource should force a replacement of the resource instead of an in-place update. Typically users rely on the resource provider to make this decision based on whether the input property is one that the provider knows how to update in place, or if not, requires a replacement to modify. However, there are cases where users want to replace a resource on a change to an input property even if the resource provider itself doesnt believe it has to replace the resource.')]
        [string[]]
        $PulumiReplaceOnChanges,
        [parameter(HelpMessage='Marks a resource to be retained. If this option is set then Pulumi will not call through to the resource providers Delete method when deleting or replacing the resource during pulumi up or pulumi destroy. As a result, the resource will not be deleted from the backing cloud provider, but will be removed from the Pulumi state.')]
        [bool]
        $PulumiRetainOnDelete,
        [parameter(HelpMessage='Specifies a provider version to use when operating on a resource. This version overrides the version information inferred from the current package. This option should be used rarely.')]
        [string]
        $PulumiProviderVersion = [NullString]::Value
    )

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

        $resource.options.additionalSecretOutputs = $PulumiSecretOutputs
        $resource.options.aliases = $PulumiAliases
        $resource.options.customTimeouts = $PulumiCustomTimeouts
        $resource.options.deleteBeforeReplace = $PulumiDeleteBeforeReplace
        $resource.options.ignoreChanges = $PulumiIgnoreChanges
        $resource.options.import = if([string]::IsNullOrEmpty($PulumiImport)) { [NullString]::Value } else { $PulumiImport }
        $resource.options.protect = $PulumiProtect
        $resource.options.replaceOnChanges = $PulumiReplaceOnChanges
        $resource.options.retainOnDelete = $PulumiRetainOnDelete
        $resource.options.version = if([string]::IsNullOrEmpty($PulumiProviderVersion)) { [NullString]::Value } else { $PulumiProviderVersion }

        foreach($Dependency in $DependsOn)
        {
            if($Dependency -is [pulumiresource])
            {
                $resource.options.dependson += $Dependency.Reference()
            } else
            {
                $resource.options.dependson += $Dependency
            }
        }
        if($PulumiParent -is [pulumiresource])
        {
            $resource.options.parent = $PulumiParent.Reference()
        } else
        {
            $resource.options.parent = $PulumiParent
        }
        foreach($provider in $PulumiProviders)
        {
            if($provider -is [pulumiprovider])
            {
                $resource.options.providers += $provider.Reference()
            } else
            {
                $resource.options.providers += $provider
            }
        }
        if($PulumiProvider -is [pulumiprovider])
        {
            $resource.options.provider = $PulumiProvider.Reference()
        } else
        {
            $resource.options.provider = $PulumiProvider
        }
        $resource.properties["name"] = $name
        $resource.properties["properties"] = $properties
        $resource.properties["resourceGroupName"] = $resourceGroupName
        $resource.properties["workspaceName"] = $workspaceName

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

        $global:pulumiresources += $resource
        return $resource
    }
}
class ModelContainer
{
    [object] $properties
    [string] $description
    [object] $tags
}
function New-AzureNativeTypeMachinelearningservicesModelContainer
{
    param (
        [parameter(mandatory=$False,HelpMessage='The asset property dictionary.)')]
        [hashtable]
        $properties,
        [parameter(mandatory=$False,HelpMessage='The asset description text.)')]
        [string]
        $description,
        [parameter(mandatory=$False,HelpMessage='Tag dictionary. Tags can be added, removed, and updated.)')]
        [hashtable]
        $tags
    )

    process
    {
        return $([ModelContainer]$PSBoundParameters)
    }
}
function New-AzureNativeMachinelearningservicesModelContainer
{
    [Alias('azure_native_machinelearningservices_modelcontainer')]
    param (
        [parameter(mandatory=$False,HelpMessage='Container name.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group. The name is case insensitive.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Name of Azure Machine Learning workspace.)')]
        [string]
        $workspaceName,
        [parameter(mandatory=$False,HelpMessage='[Required] Additional attributes of the entity.)')]
        [ModelContainer]
        $properties,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid,
        [parameter(HelpMessage='Specifies a list of named output properties that should be treated as secrets, which means they will be encrypted. It augments the list of values that Pulumi detects, based on secret inputs to the resource.')]
        [string[]]
        $PulumiSecretOutputs,
        [parameter(HelpMessage='The aliases parameter provides a list of aliases for a resource or component resource. If youre changing the name, type, or parent path of a resource or component resource, you can add the old name to the list of aliases for a resource to ensure that existing resources will be migrated to the new name instead of being deleted and replaced with the new named resource.')]
        [string[]]
        $PulumiAliases,
        [parameter(HelpMessage='The customTimeouts parameter provides a set of custom timeouts for create, update, and delete operations on a resource. These timeouts are specified using a duration string such as 5m (5 minutes), 40s (40 seconds), or 1d (1 day). Supported duration units are ns, us (or µs), ms, s, m, and h (nanoseconds, microseconds, milliseconds, seconds, minutes, and hours, respectively).')]
        [pulumicustomtimeouts]
        $PulumiCustomTimeouts,
        [parameter(HelpMessage='Setting the PulumiDeleteBeforeReplace parameter to true means that Pulumi will delete the existing resource before creating its replacement. Be aware that this behavior has a cascading impact on dependencies so more resources may be replaced, which can lead to downtime. However, this option may be necessary for some resources that manage scarce resources behind the scenes, and/or resources that cannot exist side-by-side.')]
        [bool]
        $PulumiDeleteBeforeReplace,
        [parameter(HelpMessage='Creates a list of explicit dependencies between resources.The DependsOn parameter ensures that resource creation, update, and deletion operations are done in the correct order.')]
        [object[]]
        $PulumiDependsOn,
        [parameter(HelpMessage='Specifies a list of properties that Pulumi will ignore when it updates existing resources. Any properties specified in this list that are also specified in the resources arguments will only be used when creating the resource.')]
        [string[]]
        $PulumiIgnoreChanges,
        [parameter(HelpMessage='Imports an existing cloud resource so that Pulumi can manage it. To import a resource, first specify the PulumiImport parameter with the resources ID')]
        [string]
        $PulumiImport = [NullString]::Value,
        [parameter(HelpMessage='Specifies a parent for a resource. It is used to associate children with the parents that encapsulate or are responsible for them.')]
        [object]
        $PulumiParent = [NullString]::Value,
        [parameter(HelpMessage='Marks a resource as protected. A protected resource cannot be deleted directly, and it will be an error to do a Pulumi deployment which tries to delete a protected resource for any reason.')]
        [bool]
        $PulumiProtect,
        [parameter(HelpMessage='Sets a provider for the resource. The default is to inherit this value from the parent resource, and to use the ambient provider specified by Pulumi configuration for resources without a parent.')]
        [object]
        $PulumiProvider = [NullString]::Value,
        [parameter(HelpMessage='Sets a list of providers for the resource and its children. This list is combined with resource parents providers lists. If no value is provided, the providers list is identical to the parent. When determining which provider to use for a resource, the providers list is used if provider is not supplied.')]
        [object[]]
        $PulumiProviders,
        [parameter(HelpMessage='Used to indicate that changes to certain properties on a resource should force a replacement of the resource instead of an in-place update. Typically users rely on the resource provider to make this decision based on whether the input property is one that the provider knows how to update in place, or if not, requires a replacement to modify. However, there are cases where users want to replace a resource on a change to an input property even if the resource provider itself doesnt believe it has to replace the resource.')]
        [string[]]
        $PulumiReplaceOnChanges,
        [parameter(HelpMessage='Marks a resource to be retained. If this option is set then Pulumi will not call through to the resource providers Delete method when deleting or replacing the resource during pulumi up or pulumi destroy. As a result, the resource will not be deleted from the backing cloud provider, but will be removed from the Pulumi state.')]
        [bool]
        $PulumiRetainOnDelete,
        [parameter(HelpMessage='Specifies a provider version to use when operating on a resource. This version overrides the version information inferred from the current package. This option should be used rarely.')]
        [string]
        $PulumiProviderVersion = [NullString]::Value
    )

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

        $resource.options.additionalSecretOutputs = $PulumiSecretOutputs
        $resource.options.aliases = $PulumiAliases
        $resource.options.customTimeouts = $PulumiCustomTimeouts
        $resource.options.deleteBeforeReplace = $PulumiDeleteBeforeReplace
        $resource.options.ignoreChanges = $PulumiIgnoreChanges
        $resource.options.import = if([string]::IsNullOrEmpty($PulumiImport)) { [NullString]::Value } else { $PulumiImport }
        $resource.options.protect = $PulumiProtect
        $resource.options.replaceOnChanges = $PulumiReplaceOnChanges
        $resource.options.retainOnDelete = $PulumiRetainOnDelete
        $resource.options.version = if([string]::IsNullOrEmpty($PulumiProviderVersion)) { [NullString]::Value } else { $PulumiProviderVersion }

        foreach($Dependency in $DependsOn)
        {
            if($Dependency -is [pulumiresource])
            {
                $resource.options.dependson += $Dependency.Reference()
            } else
            {
                $resource.options.dependson += $Dependency
            }
        }
        if($PulumiParent -is [pulumiresource])
        {
            $resource.options.parent = $PulumiParent.Reference()
        } else
        {
            $resource.options.parent = $PulumiParent
        }
        foreach($provider in $PulumiProviders)
        {
            if($provider -is [pulumiprovider])
            {
                $resource.options.providers += $provider.Reference()
            } else
            {
                $resource.options.providers += $provider
            }
        }
        if($PulumiProvider -is [pulumiprovider])
        {
            $resource.options.provider = $PulumiProvider.Reference()
        } else
        {
            $resource.options.provider = $PulumiProvider
        }
        $resource.properties["properties"] = $properties
        $resource.properties["resourceGroupName"] = $resourceGroupName
        $resource.properties["workspaceName"] = $workspaceName

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

        $global:pulumiresources += $resource
        return $resource
    }
}
class LinkedWorkspaceProps
{
    [string] $linkedWorkspaceResourceId
    [string] $userAssignedIdentityResourceId
}
function New-AzureNativeTypeMachinelearningservicesLinkedWorkspaceProps
{
    param (
        [parameter(mandatory=$False,HelpMessage='ResourceId of the link target of the linked workspace.)')]
        [string]
        $linkedWorkspaceResourceId,
        [parameter(mandatory=$False,HelpMessage='ResourceId of the user assigned identity for the linked workspace.)')]
        [string]
        $userAssignedIdentityResourceId
    )

    process
    {
        return $([LinkedWorkspaceProps]$PSBoundParameters)
    }
}
function New-AzureNativeMachinelearningservicesLinkedWorkspace
{
    [Alias('azure_native_machinelearningservices_linkedworkspace')]
    param (
        [parameter(mandatory=$False,HelpMessage='Friendly name of the linked workspace)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='Name of the resource group in which workspace is located.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Name of Azure Machine Learning workspace.)')]
        [string]
        $workspaceName,
        [parameter(mandatory=$False,HelpMessage='Friendly name of the linked workspace)')]
        [string]
        $linkName,
        [parameter(mandatory=$False,HelpMessage='LinkedWorkspace specific properties.)')]
        [LinkedWorkspaceProps]
        $properties,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid,
        [parameter(HelpMessage='Specifies a list of named output properties that should be treated as secrets, which means they will be encrypted. It augments the list of values that Pulumi detects, based on secret inputs to the resource.')]
        [string[]]
        $PulumiSecretOutputs,
        [parameter(HelpMessage='The aliases parameter provides a list of aliases for a resource or component resource. If youre changing the name, type, or parent path of a resource or component resource, you can add the old name to the list of aliases for a resource to ensure that existing resources will be migrated to the new name instead of being deleted and replaced with the new named resource.')]
        [string[]]
        $PulumiAliases,
        [parameter(HelpMessage='The customTimeouts parameter provides a set of custom timeouts for create, update, and delete operations on a resource. These timeouts are specified using a duration string such as 5m (5 minutes), 40s (40 seconds), or 1d (1 day). Supported duration units are ns, us (or µs), ms, s, m, and h (nanoseconds, microseconds, milliseconds, seconds, minutes, and hours, respectively).')]
        [pulumicustomtimeouts]
        $PulumiCustomTimeouts,
        [parameter(HelpMessage='Setting the PulumiDeleteBeforeReplace parameter to true means that Pulumi will delete the existing resource before creating its replacement. Be aware that this behavior has a cascading impact on dependencies so more resources may be replaced, which can lead to downtime. However, this option may be necessary for some resources that manage scarce resources behind the scenes, and/or resources that cannot exist side-by-side.')]
        [bool]
        $PulumiDeleteBeforeReplace,
        [parameter(HelpMessage='Creates a list of explicit dependencies between resources.The DependsOn parameter ensures that resource creation, update, and deletion operations are done in the correct order.')]
        [object[]]
        $PulumiDependsOn,
        [parameter(HelpMessage='Specifies a list of properties that Pulumi will ignore when it updates existing resources. Any properties specified in this list that are also specified in the resources arguments will only be used when creating the resource.')]
        [string[]]
        $PulumiIgnoreChanges,
        [parameter(HelpMessage='Imports an existing cloud resource so that Pulumi can manage it. To import a resource, first specify the PulumiImport parameter with the resources ID')]
        [string]
        $PulumiImport = [NullString]::Value,
        [parameter(HelpMessage='Specifies a parent for a resource. It is used to associate children with the parents that encapsulate or are responsible for them.')]
        [object]
        $PulumiParent = [NullString]::Value,
        [parameter(HelpMessage='Marks a resource as protected. A protected resource cannot be deleted directly, and it will be an error to do a Pulumi deployment which tries to delete a protected resource for any reason.')]
        [bool]
        $PulumiProtect,
        [parameter(HelpMessage='Sets a provider for the resource. The default is to inherit this value from the parent resource, and to use the ambient provider specified by Pulumi configuration for resources without a parent.')]
        [object]
        $PulumiProvider = [NullString]::Value,
        [parameter(HelpMessage='Sets a list of providers for the resource and its children. This list is combined with resource parents providers lists. If no value is provided, the providers list is identical to the parent. When determining which provider to use for a resource, the providers list is used if provider is not supplied.')]
        [object[]]
        $PulumiProviders,
        [parameter(HelpMessage='Used to indicate that changes to certain properties on a resource should force a replacement of the resource instead of an in-place update. Typically users rely on the resource provider to make this decision based on whether the input property is one that the provider knows how to update in place, or if not, requires a replacement to modify. However, there are cases where users want to replace a resource on a change to an input property even if the resource provider itself doesnt believe it has to replace the resource.')]
        [string[]]
        $PulumiReplaceOnChanges,
        [parameter(HelpMessage='Marks a resource to be retained. If this option is set then Pulumi will not call through to the resource providers Delete method when deleting or replacing the resource during pulumi up or pulumi destroy. As a result, the resource will not be deleted from the backing cloud provider, but will be removed from the Pulumi state.')]
        [bool]
        $PulumiRetainOnDelete,
        [parameter(HelpMessage='Specifies a provider version to use when operating on a resource. This version overrides the version information inferred from the current package. This option should be used rarely.')]
        [string]
        $PulumiProviderVersion = [NullString]::Value
    )

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

        $resource.options.additionalSecretOutputs = $PulumiSecretOutputs
        $resource.options.aliases = $PulumiAliases
        $resource.options.customTimeouts = $PulumiCustomTimeouts
        $resource.options.deleteBeforeReplace = $PulumiDeleteBeforeReplace
        $resource.options.ignoreChanges = $PulumiIgnoreChanges
        $resource.options.import = if([string]::IsNullOrEmpty($PulumiImport)) { [NullString]::Value } else { $PulumiImport }
        $resource.options.protect = $PulumiProtect
        $resource.options.replaceOnChanges = $PulumiReplaceOnChanges
        $resource.options.retainOnDelete = $PulumiRetainOnDelete
        $resource.options.version = if([string]::IsNullOrEmpty($PulumiProviderVersion)) { [NullString]::Value } else { $PulumiProviderVersion }

        foreach($Dependency in $DependsOn)
        {
            if($Dependency -is [pulumiresource])
            {
                $resource.options.dependson += $Dependency.Reference()
            } else
            {
                $resource.options.dependson += $Dependency
            }
        }
        if($PulumiParent -is [pulumiresource])
        {
            $resource.options.parent = $PulumiParent.Reference()
        } else
        {
            $resource.options.parent = $PulumiParent
        }
        foreach($provider in $PulumiProviders)
        {
            if($provider -is [pulumiprovider])
            {
                $resource.options.providers += $provider.Reference()
            } else
            {
                $resource.options.providers += $provider
            }
        }
        if($PulumiProvider -is [pulumiprovider])
        {
            $resource.options.provider = $PulumiProvider.Reference()
        } else
        {
            $resource.options.provider = $PulumiProvider
        }
        $resource.properties["resourceGroupName"] = $resourceGroupName
        $resource.properties["workspaceName"] = $workspaceName

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
function New-AzureNativeMachinelearningservicesMachineLearningService
{
    [Alias('azure_native_machinelearningservices_machinelearningservice')]
    param (
        [parameter(mandatory=$False,HelpMessage='The Environment, models and assets needed for inferencing.)')]
        [CreateServiceRequestEnvironmentImageRequest]
        $environmentImageRequest,
        [parameter(mandatory=$False,HelpMessage='The service tag dictionary. Tags are mutable.)')]
        [hashtable]
        $kvTags,
        [parameter(mandatory=$False,HelpMessage='The service properties dictionary. Properties are immutable.)')]
        [hashtable]
        $properties,
        [parameter(mandatory=$False,HelpMessage='The description of the service.)')]
        [string]
        $description,
        [parameter(mandatory=$False,HelpMessage='The authentication keys.)')]
        [CreateServiceRequestKeys]
        $keys,
        [parameter(mandatory=$False,HelpMessage='Name of the resource group in which workspace is located.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Name of the Azure Machine Learning service.)')]
        [string]
        $serviceName,
        [parameter(mandatory=$False,HelpMessage='The name of the Azure location/region.)')]
        [string]
        $location,
        [parameter(mandatory=$False,HelpMessage='Name of Azure Machine Learning workspace.)')]
        [string]
        $workspaceName,
        [parameter(mandatory=$False,HelpMessage='The compute environment type for the service.)')]
        [string]
        [ArgumentCompletions('ACI', 'AKS')]
        $computeType,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid,
        [parameter(HelpMessage='Specifies a list of named output properties that should be treated as secrets, which means they will be encrypted. It augments the list of values that Pulumi detects, based on secret inputs to the resource.')]
        [string[]]
        $PulumiSecretOutputs,
        [parameter(HelpMessage='The aliases parameter provides a list of aliases for a resource or component resource. If youre changing the name, type, or parent path of a resource or component resource, you can add the old name to the list of aliases for a resource to ensure that existing resources will be migrated to the new name instead of being deleted and replaced with the new named resource.')]
        [string[]]
        $PulumiAliases,
        [parameter(HelpMessage='The customTimeouts parameter provides a set of custom timeouts for create, update, and delete operations on a resource. These timeouts are specified using a duration string such as 5m (5 minutes), 40s (40 seconds), or 1d (1 day). Supported duration units are ns, us (or µs), ms, s, m, and h (nanoseconds, microseconds, milliseconds, seconds, minutes, and hours, respectively).')]
        [pulumicustomtimeouts]
        $PulumiCustomTimeouts,
        [parameter(HelpMessage='Setting the PulumiDeleteBeforeReplace parameter to true means that Pulumi will delete the existing resource before creating its replacement. Be aware that this behavior has a cascading impact on dependencies so more resources may be replaced, which can lead to downtime. However, this option may be necessary for some resources that manage scarce resources behind the scenes, and/or resources that cannot exist side-by-side.')]
        [bool]
        $PulumiDeleteBeforeReplace,
        [parameter(HelpMessage='Creates a list of explicit dependencies between resources.The DependsOn parameter ensures that resource creation, update, and deletion operations are done in the correct order.')]
        [object[]]
        $PulumiDependsOn,
        [parameter(HelpMessage='Specifies a list of properties that Pulumi will ignore when it updates existing resources. Any properties specified in this list that are also specified in the resources arguments will only be used when creating the resource.')]
        [string[]]
        $PulumiIgnoreChanges,
        [parameter(HelpMessage='Imports an existing cloud resource so that Pulumi can manage it. To import a resource, first specify the PulumiImport parameter with the resources ID')]
        [string]
        $PulumiImport = [NullString]::Value,
        [parameter(HelpMessage='Specifies a parent for a resource. It is used to associate children with the parents that encapsulate or are responsible for them.')]
        [object]
        $PulumiParent = [NullString]::Value,
        [parameter(HelpMessage='Marks a resource as protected. A protected resource cannot be deleted directly, and it will be an error to do a Pulumi deployment which tries to delete a protected resource for any reason.')]
        [bool]
        $PulumiProtect,
        [parameter(HelpMessage='Sets a provider for the resource. The default is to inherit this value from the parent resource, and to use the ambient provider specified by Pulumi configuration for resources without a parent.')]
        [object]
        $PulumiProvider = [NullString]::Value,
        [parameter(HelpMessage='Sets a list of providers for the resource and its children. This list is combined with resource parents providers lists. If no value is provided, the providers list is identical to the parent. When determining which provider to use for a resource, the providers list is used if provider is not supplied.')]
        [object[]]
        $PulumiProviders,
        [parameter(HelpMessage='Used to indicate that changes to certain properties on a resource should force a replacement of the resource instead of an in-place update. Typically users rely on the resource provider to make this decision based on whether the input property is one that the provider knows how to update in place, or if not, requires a replacement to modify. However, there are cases where users want to replace a resource on a change to an input property even if the resource provider itself doesnt believe it has to replace the resource.')]
        [string[]]
        $PulumiReplaceOnChanges,
        [parameter(HelpMessage='Marks a resource to be retained. If this option is set then Pulumi will not call through to the resource providers Delete method when deleting or replacing the resource during pulumi up or pulumi destroy. As a result, the resource will not be deleted from the backing cloud provider, but will be removed from the Pulumi state.')]
        [bool]
        $PulumiRetainOnDelete,
        [parameter(HelpMessage='Specifies a provider version to use when operating on a resource. This version overrides the version information inferred from the current package. This option should be used rarely.')]
        [string]
        $PulumiProviderVersion = [NullString]::Value
    )

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

        $resource.options.additionalSecretOutputs = $PulumiSecretOutputs
        $resource.options.aliases = $PulumiAliases
        $resource.options.customTimeouts = $PulumiCustomTimeouts
        $resource.options.deleteBeforeReplace = $PulumiDeleteBeforeReplace
        $resource.options.ignoreChanges = $PulumiIgnoreChanges
        $resource.options.import = if([string]::IsNullOrEmpty($PulumiImport)) { [NullString]::Value } else { $PulumiImport }
        $resource.options.protect = $PulumiProtect
        $resource.options.replaceOnChanges = $PulumiReplaceOnChanges
        $resource.options.retainOnDelete = $PulumiRetainOnDelete
        $resource.options.version = if([string]::IsNullOrEmpty($PulumiProviderVersion)) { [NullString]::Value } else { $PulumiProviderVersion }

        foreach($Dependency in $DependsOn)
        {
            if($Dependency -is [pulumiresource])
            {
                $resource.options.dependson += $Dependency.Reference()
            } else
            {
                $resource.options.dependson += $Dependency
            }
        }
        if($PulumiParent -is [pulumiresource])
        {
            $resource.options.parent = $PulumiParent.Reference()
        } else
        {
            $resource.options.parent = $PulumiParent
        }
        foreach($provider in $PulumiProviders)
        {
            if($provider -is [pulumiprovider])
            {
                $resource.options.providers += $provider.Reference()
            } else
            {
                $resource.options.providers += $provider
            }
        }
        if($PulumiProvider -is [pulumiprovider])
        {
            $resource.options.provider = $PulumiProvider.Reference()
        } else
        {
            $resource.options.provider = $PulumiProvider
        }
        $resource.properties["computeType"] = $computeType
        $resource.properties["resourceGroupName"] = $resourceGroupName
        $resource.properties["workspaceName"] = $workspaceName

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

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

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

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
class DatasetCreateRequestQuery
{
    [string] $query
    [string] $datastoreName
}
function New-AzureNativeTypeMachinelearningservicesDatasetCreateRequestQuery
{
    param (
        [parameter(mandatory=$False,HelpMessage='SQL Quey.)')]
        [string]
        $query,
        [parameter(mandatory=$False,HelpMessage='The SQL/PostgreSQL/MySQL datastore name.)')]
        [string]
        $datastoreName
    )

    process
    {
        return $([DatasetCreateRequestQuery]$PSBoundParameters)
    }
}
class DatasetCreateRequestDataPath
{
    [string] $relativePath
    [string] $datastoreName
}
function New-AzureNativeTypeMachinelearningservicesDatasetCreateRequestDataPath
{
    param (
        [parameter(mandatory=$False,HelpMessage='Path within the datastore.)')]
        [string]
        $relativePath,
        [parameter(mandatory=$False,HelpMessage='The datastore name.)')]
        [string]
        $datastoreName
    )

    process
    {
        return $([DatasetCreateRequestDataPath]$PSBoundParameters)
    }
}
class DatasetCreateRequestPath
{
    [DatasetCreateRequestDataPath] $dataPath
    [string] $httpUrl
}
function New-AzureNativeTypeMachinelearningservicesDatasetCreateRequestPath
{
    param (
        [parameter(mandatory=$False,HelpMessage=')')]
        [DatasetCreateRequestDataPath]
        $dataPath,
        [parameter(mandatory=$False,HelpMessage='The Http URL.)')]
        [string]
        $httpUrl
    )

    process
    {
        return $([DatasetCreateRequestPath]$PSBoundParameters)
    }
}
class DatasetCreateRequestParameters
{
    [ArgumentCompletions('delimited_files', 'json_lines_files', 'parquet_files')]
    [string] $sourceType
    [string] $partitionFormat
    [ArgumentCompletions('all_files_have_same_headers', 'only_first_file_has_headers', 'no_headers', 'combine_all_files_headers')]
    [string] $header
    [string] $separator
    [DatasetCreateRequestQuery] $query
    [DatasetCreateRequestPath] $path
    [bool] $includePath
}
function New-AzureNativeTypeMachinelearningservicesDatasetCreateRequestParameters
{
    param (
        [parameter(mandatory=$False,HelpMessage='Data source type.)')]
        [string]
        [ArgumentCompletions('delimited_files', 'json_lines_files', 'parquet_files')]
        $sourceType,
        [parameter(mandatory=$False,HelpMessage='The partition information of each path will be extracted into columns based on the specified format. Format part ''{column_name}'' creates string column, and ''{column_name:yyyy/MM/dd/HH/mm/ss}'' creates datetime column, where ''yyyy'', ''MM'', ''dd'', ''HH'', ''mm'' and ''ss'' are used to extract year, month, day, hour, minute and second for the datetime type. The format should start from the position of first partition key until the end of file path. For example, given the path ''../USA/2019/01/01/data.parquet'' where the partition is by country/region and time, partition_format=''/{CountryOrRegion}/{PartitionDate:yyyy/MM/dd}/data.csv'' creates a string column ''CountryOrRegion'' with the value ''USA'' and a datetime column ''PartitionDate'' with the value ''2019-01-01)')]
        [string]
        $partitionFormat,
        [parameter(mandatory=$False,HelpMessage='Header type.)')]
        [string]
        [ArgumentCompletions('all_files_have_same_headers', 'only_first_file_has_headers', 'no_headers', 'combine_all_files_headers')]
        $header,
        [parameter(mandatory=$False,HelpMessage='The separator used to split columns for ''delimited_files'' sourceType.)')]
        [string]
        $separator,
        [parameter(mandatory=$False,HelpMessage=')')]
        [DatasetCreateRequestQuery]
        $query,
        [parameter(mandatory=$False,HelpMessage=')')]
        [DatasetCreateRequestPath]
        $path,
        [parameter(mandatory=$False,HelpMessage='Boolean to keep path information as column in the dataset. Defaults to False. This is useful when reading multiple files, and want to know which file a particular record originated from, or to keep useful information in file path.)')]
        [bool]
        $includePath
    )

    process
    {
        return $([DatasetCreateRequestParameters]$PSBoundParameters)
    }
}
class DatasetCreateRequestTimeSeries
{
    [string] $fineGrainTimestamp
    [string] $coarseGrainTimestamp
}
function New-AzureNativeTypeMachinelearningservicesDatasetCreateRequestTimeSeries
{
    param (
        [parameter(mandatory=$False,HelpMessage=' Column name to be used as FineGrainTimestamp)')]
        [string]
        $fineGrainTimestamp,
        [parameter(mandatory=$False,HelpMessage='Column name to be used as CoarseGrainTimestamp. Can only be used if ''fineGrainTimestamp'' is specified and cannot be same as ''fineGrainTimestamp''.)')]
        [string]
        $coarseGrainTimestamp
    )

    process
    {
        return $([DatasetCreateRequestTimeSeries]$PSBoundParameters)
    }
}
class DatasetCreateRequestRegistration
{
    [string] $name
    [string] $description
    [object] $tags
}
function New-AzureNativeTypeMachinelearningservicesDatasetCreateRequestRegistration
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the dataset.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='The description for the dataset.)')]
        [string]
        $description,
        [parameter(mandatory=$False,HelpMessage='Tags associated with the dataset.)')]
        [hashtable]
        $tags
    )

    process
    {
        return $([DatasetCreateRequestRegistration]$PSBoundParameters)
    }
}
function New-AzureNativeMachinelearningservicesMachineLearningDataset
{
    [Alias('azure_native_machinelearningservices_machinelearningdataset')]
    param (
        [parameter(mandatory=$False,HelpMessage='Skip validation that ensures data can be loaded from the dataset before registration.)')]
        [bool]
        $skipValidation,
        [parameter(mandatory=$False,HelpMessage=')')]
        [DatasetCreateRequestParameters]
        $parameters,
        [parameter(mandatory=$False,HelpMessage=')')]
        [DatasetCreateRequestTimeSeries]
        $timeSeries,
        [parameter(mandatory=$False,HelpMessage=')')]
        [DatasetCreateRequestRegistration]
        $registration,
        [parameter(mandatory=$False,HelpMessage='Name of the resource group in which workspace is located.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The Dataset name.)')]
        [string]
        $datasetName,
        [parameter(mandatory=$False,HelpMessage='Specifies dataset type.)')]
        [string]
        [ArgumentCompletions('tabular', 'file')]
        $datasetType,
        [parameter(mandatory=$False,HelpMessage='Name of Azure Machine Learning workspace.)')]
        [string]
        $workspaceName,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid,
        [parameter(HelpMessage='Specifies a list of named output properties that should be treated as secrets, which means they will be encrypted. It augments the list of values that Pulumi detects, based on secret inputs to the resource.')]
        [string[]]
        $PulumiSecretOutputs,
        [parameter(HelpMessage='The aliases parameter provides a list of aliases for a resource or component resource. If youre changing the name, type, or parent path of a resource or component resource, you can add the old name to the list of aliases for a resource to ensure that existing resources will be migrated to the new name instead of being deleted and replaced with the new named resource.')]
        [string[]]
        $PulumiAliases,
        [parameter(HelpMessage='The customTimeouts parameter provides a set of custom timeouts for create, update, and delete operations on a resource. These timeouts are specified using a duration string such as 5m (5 minutes), 40s (40 seconds), or 1d (1 day). Supported duration units are ns, us (or µs), ms, s, m, and h (nanoseconds, microseconds, milliseconds, seconds, minutes, and hours, respectively).')]
        [pulumicustomtimeouts]
        $PulumiCustomTimeouts,
        [parameter(HelpMessage='Setting the PulumiDeleteBeforeReplace parameter to true means that Pulumi will delete the existing resource before creating its replacement. Be aware that this behavior has a cascading impact on dependencies so more resources may be replaced, which can lead to downtime. However, this option may be necessary for some resources that manage scarce resources behind the scenes, and/or resources that cannot exist side-by-side.')]
        [bool]
        $PulumiDeleteBeforeReplace,
        [parameter(HelpMessage='Creates a list of explicit dependencies between resources.The DependsOn parameter ensures that resource creation, update, and deletion operations are done in the correct order.')]
        [object[]]
        $PulumiDependsOn,
        [parameter(HelpMessage='Specifies a list of properties that Pulumi will ignore when it updates existing resources. Any properties specified in this list that are also specified in the resources arguments will only be used when creating the resource.')]
        [string[]]
        $PulumiIgnoreChanges,
        [parameter(HelpMessage='Imports an existing cloud resource so that Pulumi can manage it. To import a resource, first specify the PulumiImport parameter with the resources ID')]
        [string]
        $PulumiImport = [NullString]::Value,
        [parameter(HelpMessage='Specifies a parent for a resource. It is used to associate children with the parents that encapsulate or are responsible for them.')]
        [object]
        $PulumiParent = [NullString]::Value,
        [parameter(HelpMessage='Marks a resource as protected. A protected resource cannot be deleted directly, and it will be an error to do a Pulumi deployment which tries to delete a protected resource for any reason.')]
        [bool]
        $PulumiProtect,
        [parameter(HelpMessage='Sets a provider for the resource. The default is to inherit this value from the parent resource, and to use the ambient provider specified by Pulumi configuration for resources without a parent.')]
        [object]
        $PulumiProvider = [NullString]::Value,
        [parameter(HelpMessage='Sets a list of providers for the resource and its children. This list is combined with resource parents providers lists. If no value is provided, the providers list is identical to the parent. When determining which provider to use for a resource, the providers list is used if provider is not supplied.')]
        [object[]]
        $PulumiProviders,
        [parameter(HelpMessage='Used to indicate that changes to certain properties on a resource should force a replacement of the resource instead of an in-place update. Typically users rely on the resource provider to make this decision based on whether the input property is one that the provider knows how to update in place, or if not, requires a replacement to modify. However, there are cases where users want to replace a resource on a change to an input property even if the resource provider itself doesnt believe it has to replace the resource.')]
        [string[]]
        $PulumiReplaceOnChanges,
        [parameter(HelpMessage='Marks a resource to be retained. If this option is set then Pulumi will not call through to the resource providers Delete method when deleting or replacing the resource during pulumi up or pulumi destroy. As a result, the resource will not be deleted from the backing cloud provider, but will be removed from the Pulumi state.')]
        [bool]
        $PulumiRetainOnDelete,
        [parameter(HelpMessage='Specifies a provider version to use when operating on a resource. This version overrides the version information inferred from the current package. This option should be used rarely.')]
        [string]
        $PulumiProviderVersion = [NullString]::Value
    )

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

        $resource.options.additionalSecretOutputs = $PulumiSecretOutputs
        $resource.options.aliases = $PulumiAliases
        $resource.options.customTimeouts = $PulumiCustomTimeouts
        $resource.options.deleteBeforeReplace = $PulumiDeleteBeforeReplace
        $resource.options.ignoreChanges = $PulumiIgnoreChanges
        $resource.options.import = if([string]::IsNullOrEmpty($PulumiImport)) { [NullString]::Value } else { $PulumiImport }
        $resource.options.protect = $PulumiProtect
        $resource.options.replaceOnChanges = $PulumiReplaceOnChanges
        $resource.options.retainOnDelete = $PulumiRetainOnDelete
        $resource.options.version = if([string]::IsNullOrEmpty($PulumiProviderVersion)) { [NullString]::Value } else { $PulumiProviderVersion }

        foreach($Dependency in $DependsOn)
        {
            if($Dependency -is [pulumiresource])
            {
                $resource.options.dependson += $Dependency.Reference()
            } else
            {
                $resource.options.dependson += $Dependency
            }
        }
        if($PulumiParent -is [pulumiresource])
        {
            $resource.options.parent = $PulumiParent.Reference()
        } else
        {
            $resource.options.parent = $PulumiParent
        }
        foreach($provider in $PulumiProviders)
        {
            if($provider -is [pulumiprovider])
            {
                $resource.options.providers += $provider.Reference()
            } else
            {
                $resource.options.providers += $provider
            }
        }
        if($PulumiProvider -is [pulumiprovider])
        {
            $resource.options.provider = $PulumiProvider.Reference()
        } else
        {
            $resource.options.provider = $PulumiProvider
        }
        $resource.properties["datasetType"] = $datasetType
        $resource.properties["parameters"] = $parameters
        $resource.properties["registration"] = $registration
        $resource.properties["resourceGroupName"] = $resourceGroupName
        $resource.properties["workspaceName"] = $workspaceName

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
function New-AzureNativeMachinelearningservicesWorkspaceConnection
{
    [Alias('azure_native_machinelearningservices_workspaceconnection')]
    param (
        [parameter(mandatory=$False,HelpMessage='format for the workspace connection value)')]
        [string]
        [ArgumentCompletions('JSON')]
        $valueFormat,
        [parameter(mandatory=$False,HelpMessage='Category of the workspace connection.)')]
        [string]
        $category,
        [parameter(mandatory=$False,HelpMessage='Friendly name of the workspace connection)')]
        [string]
        $connectionName,
        [parameter(mandatory=$False,HelpMessage='Name of the resource group in which workspace is located.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Friendly name of the workspace connection)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='Target of the workspace connection.)')]
        [string]
        $target,
        [parameter(mandatory=$False,HelpMessage='Value details of the workspace connection.)')]
        [string]
        $value,
        [parameter(mandatory=$False,HelpMessage='Name of Azure Machine Learning workspace.)')]
        [string]
        $workspaceName,
        [parameter(mandatory=$False,HelpMessage='Authorization type of the workspace connection.)')]
        [string]
        $authType,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid,
        [parameter(HelpMessage='Specifies a list of named output properties that should be treated as secrets, which means they will be encrypted. It augments the list of values that Pulumi detects, based on secret inputs to the resource.')]
        [string[]]
        $PulumiSecretOutputs,
        [parameter(HelpMessage='The aliases parameter provides a list of aliases for a resource or component resource. If youre changing the name, type, or parent path of a resource or component resource, you can add the old name to the list of aliases for a resource to ensure that existing resources will be migrated to the new name instead of being deleted and replaced with the new named resource.')]
        [string[]]
        $PulumiAliases,
        [parameter(HelpMessage='The customTimeouts parameter provides a set of custom timeouts for create, update, and delete operations on a resource. These timeouts are specified using a duration string such as 5m (5 minutes), 40s (40 seconds), or 1d (1 day). Supported duration units are ns, us (or µs), ms, s, m, and h (nanoseconds, microseconds, milliseconds, seconds, minutes, and hours, respectively).')]
        [pulumicustomtimeouts]
        $PulumiCustomTimeouts,
        [parameter(HelpMessage='Setting the PulumiDeleteBeforeReplace parameter to true means that Pulumi will delete the existing resource before creating its replacement. Be aware that this behavior has a cascading impact on dependencies so more resources may be replaced, which can lead to downtime. However, this option may be necessary for some resources that manage scarce resources behind the scenes, and/or resources that cannot exist side-by-side.')]
        [bool]
        $PulumiDeleteBeforeReplace,
        [parameter(HelpMessage='Creates a list of explicit dependencies between resources.The DependsOn parameter ensures that resource creation, update, and deletion operations are done in the correct order.')]
        [object[]]
        $PulumiDependsOn,
        [parameter(HelpMessage='Specifies a list of properties that Pulumi will ignore when it updates existing resources. Any properties specified in this list that are also specified in the resources arguments will only be used when creating the resource.')]
        [string[]]
        $PulumiIgnoreChanges,
        [parameter(HelpMessage='Imports an existing cloud resource so that Pulumi can manage it. To import a resource, first specify the PulumiImport parameter with the resources ID')]
        [string]
        $PulumiImport = [NullString]::Value,
        [parameter(HelpMessage='Specifies a parent for a resource. It is used to associate children with the parents that encapsulate or are responsible for them.')]
        [object]
        $PulumiParent = [NullString]::Value,
        [parameter(HelpMessage='Marks a resource as protected. A protected resource cannot be deleted directly, and it will be an error to do a Pulumi deployment which tries to delete a protected resource for any reason.')]
        [bool]
        $PulumiProtect,
        [parameter(HelpMessage='Sets a provider for the resource. The default is to inherit this value from the parent resource, and to use the ambient provider specified by Pulumi configuration for resources without a parent.')]
        [object]
        $PulumiProvider = [NullString]::Value,
        [parameter(HelpMessage='Sets a list of providers for the resource and its children. This list is combined with resource parents providers lists. If no value is provided, the providers list is identical to the parent. When determining which provider to use for a resource, the providers list is used if provider is not supplied.')]
        [object[]]
        $PulumiProviders,
        [parameter(HelpMessage='Used to indicate that changes to certain properties on a resource should force a replacement of the resource instead of an in-place update. Typically users rely on the resource provider to make this decision based on whether the input property is one that the provider knows how to update in place, or if not, requires a replacement to modify. However, there are cases where users want to replace a resource on a change to an input property even if the resource provider itself doesnt believe it has to replace the resource.')]
        [string[]]
        $PulumiReplaceOnChanges,
        [parameter(HelpMessage='Marks a resource to be retained. If this option is set then Pulumi will not call through to the resource providers Delete method when deleting or replacing the resource during pulumi up or pulumi destroy. As a result, the resource will not be deleted from the backing cloud provider, but will be removed from the Pulumi state.')]
        [bool]
        $PulumiRetainOnDelete,
        [parameter(HelpMessage='Specifies a provider version to use when operating on a resource. This version overrides the version information inferred from the current package. This option should be used rarely.')]
        [string]
        $PulumiProviderVersion = [NullString]::Value
    )

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

        $resource.options.additionalSecretOutputs = $PulumiSecretOutputs
        $resource.options.aliases = $PulumiAliases
        $resource.options.customTimeouts = $PulumiCustomTimeouts
        $resource.options.deleteBeforeReplace = $PulumiDeleteBeforeReplace
        $resource.options.ignoreChanges = $PulumiIgnoreChanges
        $resource.options.import = if([string]::IsNullOrEmpty($PulumiImport)) { [NullString]::Value } else { $PulumiImport }
        $resource.options.protect = $PulumiProtect
        $resource.options.replaceOnChanges = $PulumiReplaceOnChanges
        $resource.options.retainOnDelete = $PulumiRetainOnDelete
        $resource.options.version = if([string]::IsNullOrEmpty($PulumiProviderVersion)) { [NullString]::Value } else { $PulumiProviderVersion }

        foreach($Dependency in $DependsOn)
        {
            if($Dependency -is [pulumiresource])
            {
                $resource.options.dependson += $Dependency.Reference()
            } else
            {
                $resource.options.dependson += $Dependency
            }
        }
        if($PulumiParent -is [pulumiresource])
        {
            $resource.options.parent = $PulumiParent.Reference()
        } else
        {
            $resource.options.parent = $PulumiParent
        }
        foreach($provider in $PulumiProviders)
        {
            if($provider -is [pulumiprovider])
            {
                $resource.options.providers += $provider.Reference()
            } else
            {
                $resource.options.providers += $provider
            }
        }
        if($PulumiProvider -is [pulumiprovider])
        {
            $resource.options.provider = $PulumiProvider.Reference()
        } else
        {
            $resource.options.provider = $PulumiProvider
        }
        $resource.properties["resourceGroupName"] = $resourceGroupName
        $resource.properties["workspaceName"] = $workspaceName

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

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

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

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
class PrivateLinkServiceConnectionState
{
    [string] $description
    [ArgumentCompletions('Pending', 'Approved', 'Rejected', 'Disconnected', 'Timeout')]
    [string] $status
    [string] $actionsRequired
}
function New-AzureNativeTypeMachinelearningservicesPrivateLinkServiceConnectionState
{
    param (
        [parameter(mandatory=$False,HelpMessage='The reason for approval/rejection of the connection.)')]
        [string]
        $description,
        [parameter(mandatory=$False,HelpMessage='Indicates whether the connection has been Approved/Rejected/Removed by the owner of the service.)')]
        [string]
        [ArgumentCompletions('Pending', 'Approved', 'Rejected', 'Disconnected', 'Timeout')]
        $status,
        [parameter(mandatory=$False,HelpMessage='A message indicating if changes on the service provider require any updates on the consumer.)')]
        [string]
        $actionsRequired
    )

    process
    {
        return $([PrivateLinkServiceConnectionState]$PSBoundParameters)
    }
}
function New-AzureNativeMachinelearningservicesPrivateEndpointConnection
{
    [Alias('azure_native_machinelearningservices_privateendpointconnection')]
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the private endpoint connection associated with the workspace)')]
        [string]
        $privateEndpointConnectionName,
        [parameter(mandatory=$False,HelpMessage='The sku of the workspace.)')]
        [Sku]
        $sku,
        [parameter(mandatory=$False,HelpMessage='Contains resource tags defined as key/value pairs.)')]
        [hashtable]
        $tags,
        [parameter(mandatory=$False,HelpMessage='A collection of information about the state of the connection between service consumer and provider.)')]
        [PrivateLinkServiceConnectionState]
        $privateLinkServiceConnectionState,
        [parameter(mandatory=$False,HelpMessage='Specifies the location of the resource.)')]
        [string]
        $location,
        [parameter(mandatory=$False,HelpMessage='Name of the resource group in which workspace is located.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The identity of the resource.)')]
        [Identity]
        $identity,
        [parameter(mandatory=$False,HelpMessage='Name of Azure Machine Learning workspace.)')]
        [string]
        $workspaceName,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid,
        [parameter(HelpMessage='Specifies a list of named output properties that should be treated as secrets, which means they will be encrypted. It augments the list of values that Pulumi detects, based on secret inputs to the resource.')]
        [string[]]
        $PulumiSecretOutputs,
        [parameter(HelpMessage='The aliases parameter provides a list of aliases for a resource or component resource. If youre changing the name, type, or parent path of a resource or component resource, you can add the old name to the list of aliases for a resource to ensure that existing resources will be migrated to the new name instead of being deleted and replaced with the new named resource.')]
        [string[]]
        $PulumiAliases,
        [parameter(HelpMessage='The customTimeouts parameter provides a set of custom timeouts for create, update, and delete operations on a resource. These timeouts are specified using a duration string such as 5m (5 minutes), 40s (40 seconds), or 1d (1 day). Supported duration units are ns, us (or µs), ms, s, m, and h (nanoseconds, microseconds, milliseconds, seconds, minutes, and hours, respectively).')]
        [pulumicustomtimeouts]
        $PulumiCustomTimeouts,
        [parameter(HelpMessage='Setting the PulumiDeleteBeforeReplace parameter to true means that Pulumi will delete the existing resource before creating its replacement. Be aware that this behavior has a cascading impact on dependencies so more resources may be replaced, which can lead to downtime. However, this option may be necessary for some resources that manage scarce resources behind the scenes, and/or resources that cannot exist side-by-side.')]
        [bool]
        $PulumiDeleteBeforeReplace,
        [parameter(HelpMessage='Creates a list of explicit dependencies between resources.The DependsOn parameter ensures that resource creation, update, and deletion operations are done in the correct order.')]
        [object[]]
        $PulumiDependsOn,
        [parameter(HelpMessage='Specifies a list of properties that Pulumi will ignore when it updates existing resources. Any properties specified in this list that are also specified in the resources arguments will only be used when creating the resource.')]
        [string[]]
        $PulumiIgnoreChanges,
        [parameter(HelpMessage='Imports an existing cloud resource so that Pulumi can manage it. To import a resource, first specify the PulumiImport parameter with the resources ID')]
        [string]
        $PulumiImport = [NullString]::Value,
        [parameter(HelpMessage='Specifies a parent for a resource. It is used to associate children with the parents that encapsulate or are responsible for them.')]
        [object]
        $PulumiParent = [NullString]::Value,
        [parameter(HelpMessage='Marks a resource as protected. A protected resource cannot be deleted directly, and it will be an error to do a Pulumi deployment which tries to delete a protected resource for any reason.')]
        [bool]
        $PulumiProtect,
        [parameter(HelpMessage='Sets a provider for the resource. The default is to inherit this value from the parent resource, and to use the ambient provider specified by Pulumi configuration for resources without a parent.')]
        [object]
        $PulumiProvider = [NullString]::Value,
        [parameter(HelpMessage='Sets a list of providers for the resource and its children. This list is combined with resource parents providers lists. If no value is provided, the providers list is identical to the parent. When determining which provider to use for a resource, the providers list is used if provider is not supplied.')]
        [object[]]
        $PulumiProviders,
        [parameter(HelpMessage='Used to indicate that changes to certain properties on a resource should force a replacement of the resource instead of an in-place update. Typically users rely on the resource provider to make this decision based on whether the input property is one that the provider knows how to update in place, or if not, requires a replacement to modify. However, there are cases where users want to replace a resource on a change to an input property even if the resource provider itself doesnt believe it has to replace the resource.')]
        [string[]]
        $PulumiReplaceOnChanges,
        [parameter(HelpMessage='Marks a resource to be retained. If this option is set then Pulumi will not call through to the resource providers Delete method when deleting or replacing the resource during pulumi up or pulumi destroy. As a result, the resource will not be deleted from the backing cloud provider, but will be removed from the Pulumi state.')]
        [bool]
        $PulumiRetainOnDelete,
        [parameter(HelpMessage='Specifies a provider version to use when operating on a resource. This version overrides the version information inferred from the current package. This option should be used rarely.')]
        [string]
        $PulumiProviderVersion = [NullString]::Value
    )

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

        $resource.options.additionalSecretOutputs = $PulumiSecretOutputs
        $resource.options.aliases = $PulumiAliases
        $resource.options.customTimeouts = $PulumiCustomTimeouts
        $resource.options.deleteBeforeReplace = $PulumiDeleteBeforeReplace
        $resource.options.ignoreChanges = $PulumiIgnoreChanges
        $resource.options.import = if([string]::IsNullOrEmpty($PulumiImport)) { [NullString]::Value } else { $PulumiImport }
        $resource.options.protect = $PulumiProtect
        $resource.options.replaceOnChanges = $PulumiReplaceOnChanges
        $resource.options.retainOnDelete = $PulumiRetainOnDelete
        $resource.options.version = if([string]::IsNullOrEmpty($PulumiProviderVersion)) { [NullString]::Value } else { $PulumiProviderVersion }

        foreach($Dependency in $DependsOn)
        {
            if($Dependency -is [pulumiresource])
            {
                $resource.options.dependson += $Dependency.Reference()
            } else
            {
                $resource.options.dependson += $Dependency
            }
        }
        if($PulumiParent -is [pulumiresource])
        {
            $resource.options.parent = $PulumiParent.Reference()
        } else
        {
            $resource.options.parent = $PulumiParent
        }
        foreach($provider in $PulumiProviders)
        {
            if($provider -is [pulumiprovider])
            {
                $resource.options.providers += $provider.Reference()
            } else
            {
                $resource.options.providers += $provider
            }
        }
        if($PulumiProvider -is [pulumiprovider])
        {
            $resource.options.provider = $PulumiProvider.Reference()
        } else
        {
            $resource.options.provider = $PulumiProvider
        }
        $resource.properties["privateLinkServiceConnectionState"] = $privateLinkServiceConnectionState
        $resource.properties["resourceGroupName"] = $resourceGroupName
        $resource.properties["workspaceName"] = $workspaceName

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

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
class ComponentVersion
{
    [string] $description
    [bool] $isAnonymous
    [object] $tags
    [object] $componentSpec
    [object] $properties
    [bool] $isArchived
}
function New-AzureNativeTypeMachinelearningservicesComponentVersion
{
    param (
        [parameter(mandatory=$False,HelpMessage='The asset description text.)')]
        [string]
        $description,
        [parameter(mandatory=$False,HelpMessage='If the name version are system generated (anonymous registration).)')]
        [bool]
        $isAnonymous,
        [parameter(mandatory=$False,HelpMessage='Tag dictionary. Tags can be added, removed, and updated.)')]
        [hashtable]
        $tags,
        [parameter(mandatory=$False,HelpMessage='Defines Component definition details.
<see href="https://docs.microsoft.com/en-us/azure/machine-learning/reference-yaml-component-command" />)'
)]
        $componentSpec,
        [parameter(mandatory=$False,HelpMessage='The asset property dictionary.)')]
        [hashtable]
        $properties,
        [parameter(mandatory=$False,HelpMessage='Is the asset archived?)')]
        [bool]
        $isArchived
    )

    process
    {
        return $([ComponentVersion]$PSBoundParameters)
    }
}
function New-AzureNativeMachinelearningservicesComponentVersion
{
    [Alias('azure_native_machinelearningservices_componentversion')]
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the resource group. The name is case insensitive.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Container name.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='[Required] Additional attributes of the entity.)')]
        [ComponentVersion]
        $componentVersionDetails,
        [parameter(mandatory=$False,HelpMessage='Version identifier.)')]
        [string]
        $version,
        [parameter(mandatory=$False,HelpMessage='Name of Azure Machine Learning workspace.)')]
        [string]
        $workspaceName,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid,
        [parameter(HelpMessage='Specifies a list of named output properties that should be treated as secrets, which means they will be encrypted. It augments the list of values that Pulumi detects, based on secret inputs to the resource.')]
        [string[]]
        $PulumiSecretOutputs,
        [parameter(HelpMessage='The aliases parameter provides a list of aliases for a resource or component resource. If youre changing the name, type, or parent path of a resource or component resource, you can add the old name to the list of aliases for a resource to ensure that existing resources will be migrated to the new name instead of being deleted and replaced with the new named resource.')]
        [string[]]
        $PulumiAliases,
        [parameter(HelpMessage='The customTimeouts parameter provides a set of custom timeouts for create, update, and delete operations on a resource. These timeouts are specified using a duration string such as 5m (5 minutes), 40s (40 seconds), or 1d (1 day). Supported duration units are ns, us (or µs), ms, s, m, and h (nanoseconds, microseconds, milliseconds, seconds, minutes, and hours, respectively).')]
        [pulumicustomtimeouts]
        $PulumiCustomTimeouts,
        [parameter(HelpMessage='Setting the PulumiDeleteBeforeReplace parameter to true means that Pulumi will delete the existing resource before creating its replacement. Be aware that this behavior has a cascading impact on dependencies so more resources may be replaced, which can lead to downtime. However, this option may be necessary for some resources that manage scarce resources behind the scenes, and/or resources that cannot exist side-by-side.')]
        [bool]
        $PulumiDeleteBeforeReplace,
        [parameter(HelpMessage='Creates a list of explicit dependencies between resources.The DependsOn parameter ensures that resource creation, update, and deletion operations are done in the correct order.')]
        [object[]]
        $PulumiDependsOn,
        [parameter(HelpMessage='Specifies a list of properties that Pulumi will ignore when it updates existing resources. Any properties specified in this list that are also specified in the resources arguments will only be used when creating the resource.')]
        [string[]]
        $PulumiIgnoreChanges,
        [parameter(HelpMessage='Imports an existing cloud resource so that Pulumi can manage it. To import a resource, first specify the PulumiImport parameter with the resources ID')]
        [string]
        $PulumiImport = [NullString]::Value,
        [parameter(HelpMessage='Specifies a parent for a resource. It is used to associate children with the parents that encapsulate or are responsible for them.')]
        [object]
        $PulumiParent = [NullString]::Value,
        [parameter(HelpMessage='Marks a resource as protected. A protected resource cannot be deleted directly, and it will be an error to do a Pulumi deployment which tries to delete a protected resource for any reason.')]
        [bool]
        $PulumiProtect,
        [parameter(HelpMessage='Sets a provider for the resource. The default is to inherit this value from the parent resource, and to use the ambient provider specified by Pulumi configuration for resources without a parent.')]
        [object]
        $PulumiProvider = [NullString]::Value,
        [parameter(HelpMessage='Sets a list of providers for the resource and its children. This list is combined with resource parents providers lists. If no value is provided, the providers list is identical to the parent. When determining which provider to use for a resource, the providers list is used if provider is not supplied.')]
        [object[]]
        $PulumiProviders,
        [parameter(HelpMessage='Used to indicate that changes to certain properties on a resource should force a replacement of the resource instead of an in-place update. Typically users rely on the resource provider to make this decision based on whether the input property is one that the provider knows how to update in place, or if not, requires a replacement to modify. However, there are cases where users want to replace a resource on a change to an input property even if the resource provider itself doesnt believe it has to replace the resource.')]
        [string[]]
        $PulumiReplaceOnChanges,
        [parameter(HelpMessage='Marks a resource to be retained. If this option is set then Pulumi will not call through to the resource providers Delete method when deleting or replacing the resource during pulumi up or pulumi destroy. As a result, the resource will not be deleted from the backing cloud provider, but will be removed from the Pulumi state.')]
        [bool]
        $PulumiRetainOnDelete,
        [parameter(HelpMessage='Specifies a provider version to use when operating on a resource. This version overrides the version information inferred from the current package. This option should be used rarely.')]
        [string]
        $PulumiProviderVersion = [NullString]::Value
    )

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

        $resource.options.additionalSecretOutputs = $PulumiSecretOutputs
        $resource.options.aliases = $PulumiAliases
        $resource.options.customTimeouts = $PulumiCustomTimeouts
        $resource.options.deleteBeforeReplace = $PulumiDeleteBeforeReplace
        $resource.options.ignoreChanges = $PulumiIgnoreChanges
        $resource.options.import = if([string]::IsNullOrEmpty($PulumiImport)) { [NullString]::Value } else { $PulumiImport }
        $resource.options.protect = $PulumiProtect
        $resource.options.replaceOnChanges = $PulumiReplaceOnChanges
        $resource.options.retainOnDelete = $PulumiRetainOnDelete
        $resource.options.version = if([string]::IsNullOrEmpty($PulumiProviderVersion)) { [NullString]::Value } else { $PulumiProviderVersion }

        foreach($Dependency in $DependsOn)
        {
            if($Dependency -is [pulumiresource])
            {
                $resource.options.dependson += $Dependency.Reference()
            } else
            {
                $resource.options.dependson += $Dependency
            }
        }
        if($PulumiParent -is [pulumiresource])
        {
            $resource.options.parent = $PulumiParent.Reference()
        } else
        {
            $resource.options.parent = $PulumiParent
        }
        foreach($provider in $PulumiProviders)
        {
            if($provider -is [pulumiprovider])
            {
                $resource.options.providers += $provider.Reference()
            } else
            {
                $resource.options.providers += $provider
            }
        }
        if($PulumiProvider -is [pulumiprovider])
        {
            $resource.options.provider = $PulumiProvider.Reference()
        } else
        {
            $resource.options.provider = $PulumiProvider
        }
        $resource.properties["componentVersionDetails"] = $componentVersionDetails
        $resource.properties["name"] = $name
        $resource.properties["resourceGroupName"] = $resourceGroupName
        $resource.properties["workspaceName"] = $workspaceName

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

        $global:pulumiresources += $resource
        return $resource
    }
}
class LinkedServiceProps
{
    [ArgumentCompletions('Synapse')]
    [object] $linkType
    [string] $modifiedTime
    [string] $createdTime
    [string] $linkedServiceResourceId
}
function New-AzureNativeTypeMachinelearningservicesLinkedServiceProps
{
    param (
        [parameter(mandatory=$False,HelpMessage='Type of the link target.)')]
        $linkType,
        [parameter(mandatory=$False,HelpMessage='The last modified time of the linked service.)')]
        [string]
        $modifiedTime,
        [parameter(mandatory=$False,HelpMessage='The creation time of the linked service.)')]
        [string]
        $createdTime,
        [parameter(mandatory=$False,HelpMessage='ResourceId of the link target of the linked service.)')]
        [string]
        $linkedServiceResourceId
    )

    process
    {
        return $([LinkedServiceProps]$PSBoundParameters)
    }
}
function New-AzureNativeMachinelearningservicesLinkedService
{
    [Alias('azure_native_machinelearningservices_linkedservice')]
    param (
        [parameter(mandatory=$False,HelpMessage='LinkedService specific properties.)')]
        [LinkedServiceProps]
        $properties,
        [parameter(mandatory=$False,HelpMessage='Name of the resource group in which workspace is located.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Identity for the resource.)')]
        [Identity]
        $identity,
        [parameter(mandatory=$False,HelpMessage='location of the linked service.)')]
        [string]
        $location,
        [parameter(mandatory=$False,HelpMessage='Friendly name of the linked service)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='Friendly name of the linked workspace)')]
        [string]
        $linkName,
        [parameter(mandatory=$False,HelpMessage='Name of Azure Machine Learning workspace.)')]
        [string]
        $workspaceName,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid,
        [parameter(HelpMessage='Specifies a list of named output properties that should be treated as secrets, which means they will be encrypted. It augments the list of values that Pulumi detects, based on secret inputs to the resource.')]
        [string[]]
        $PulumiSecretOutputs,
        [parameter(HelpMessage='The aliases parameter provides a list of aliases for a resource or component resource. If youre changing the name, type, or parent path of a resource or component resource, you can add the old name to the list of aliases for a resource to ensure that existing resources will be migrated to the new name instead of being deleted and replaced with the new named resource.')]
        [string[]]
        $PulumiAliases,
        [parameter(HelpMessage='The customTimeouts parameter provides a set of custom timeouts for create, update, and delete operations on a resource. These timeouts are specified using a duration string such as 5m (5 minutes), 40s (40 seconds), or 1d (1 day). Supported duration units are ns, us (or µs), ms, s, m, and h (nanoseconds, microseconds, milliseconds, seconds, minutes, and hours, respectively).')]
        [pulumicustomtimeouts]
        $PulumiCustomTimeouts,
        [parameter(HelpMessage='Setting the PulumiDeleteBeforeReplace parameter to true means that Pulumi will delete the existing resource before creating its replacement. Be aware that this behavior has a cascading impact on dependencies so more resources may be replaced, which can lead to downtime. However, this option may be necessary for some resources that manage scarce resources behind the scenes, and/or resources that cannot exist side-by-side.')]
        [bool]
        $PulumiDeleteBeforeReplace,
        [parameter(HelpMessage='Creates a list of explicit dependencies between resources.The DependsOn parameter ensures that resource creation, update, and deletion operations are done in the correct order.')]
        [object[]]
        $PulumiDependsOn,
        [parameter(HelpMessage='Specifies a list of properties that Pulumi will ignore when it updates existing resources. Any properties specified in this list that are also specified in the resources arguments will only be used when creating the resource.')]
        [string[]]
        $PulumiIgnoreChanges,
        [parameter(HelpMessage='Imports an existing cloud resource so that Pulumi can manage it. To import a resource, first specify the PulumiImport parameter with the resources ID')]
        [string]
        $PulumiImport = [NullString]::Value,
        [parameter(HelpMessage='Specifies a parent for a resource. It is used to associate children with the parents that encapsulate or are responsible for them.')]
        [object]
        $PulumiParent = [NullString]::Value,
        [parameter(HelpMessage='Marks a resource as protected. A protected resource cannot be deleted directly, and it will be an error to do a Pulumi deployment which tries to delete a protected resource for any reason.')]
        [bool]
        $PulumiProtect,
        [parameter(HelpMessage='Sets a provider for the resource. The default is to inherit this value from the parent resource, and to use the ambient provider specified by Pulumi configuration for resources without a parent.')]
        [object]
        $PulumiProvider = [NullString]::Value,
        [parameter(HelpMessage='Sets a list of providers for the resource and its children. This list is combined with resource parents providers lists. If no value is provided, the providers list is identical to the parent. When determining which provider to use for a resource, the providers list is used if provider is not supplied.')]
        [object[]]
        $PulumiProviders,
        [parameter(HelpMessage='Used to indicate that changes to certain properties on a resource should force a replacement of the resource instead of an in-place update. Typically users rely on the resource provider to make this decision based on whether the input property is one that the provider knows how to update in place, or if not, requires a replacement to modify. However, there are cases where users want to replace a resource on a change to an input property even if the resource provider itself doesnt believe it has to replace the resource.')]
        [string[]]
        $PulumiReplaceOnChanges,
        [parameter(HelpMessage='Marks a resource to be retained. If this option is set then Pulumi will not call through to the resource providers Delete method when deleting or replacing the resource during pulumi up or pulumi destroy. As a result, the resource will not be deleted from the backing cloud provider, but will be removed from the Pulumi state.')]
        [bool]
        $PulumiRetainOnDelete,
        [parameter(HelpMessage='Specifies a provider version to use when operating on a resource. This version overrides the version information inferred from the current package. This option should be used rarely.')]
        [string]
        $PulumiProviderVersion = [NullString]::Value
    )

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

        $resource.options.additionalSecretOutputs = $PulumiSecretOutputs
        $resource.options.aliases = $PulumiAliases
        $resource.options.customTimeouts = $PulumiCustomTimeouts
        $resource.options.deleteBeforeReplace = $PulumiDeleteBeforeReplace
        $resource.options.ignoreChanges = $PulumiIgnoreChanges
        $resource.options.import = if([string]::IsNullOrEmpty($PulumiImport)) { [NullString]::Value } else { $PulumiImport }
        $resource.options.protect = $PulumiProtect
        $resource.options.replaceOnChanges = $PulumiReplaceOnChanges
        $resource.options.retainOnDelete = $PulumiRetainOnDelete
        $resource.options.version = if([string]::IsNullOrEmpty($PulumiProviderVersion)) { [NullString]::Value } else { $PulumiProviderVersion }

        foreach($Dependency in $DependsOn)
        {
            if($Dependency -is [pulumiresource])
            {
                $resource.options.dependson += $Dependency.Reference()
            } else
            {
                $resource.options.dependson += $Dependency
            }
        }
        if($PulumiParent -is [pulumiresource])
        {
            $resource.options.parent = $PulumiParent.Reference()
        } else
        {
            $resource.options.parent = $PulumiParent
        }
        foreach($provider in $PulumiProviders)
        {
            if($provider -is [pulumiprovider])
            {
                $resource.options.providers += $provider.Reference()
            } else
            {
                $resource.options.providers += $provider
            }
        }
        if($PulumiProvider -is [pulumiprovider])
        {
            $resource.options.provider = $PulumiProvider.Reference()
        } else
        {
            $resource.options.provider = $PulumiProvider
        }
        $resource.properties["resourceGroupName"] = $resourceGroupName
        $resource.properties["workspaceName"] = $workspaceName

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

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
class VirtualMachineSshCredentials
{
    [string] $privateKeyData
    [string] $username
    [string] $password
    [string] $publicKeyData
}
function New-AzureNativeTypeMachinelearningservicesVirtualMachineSshCredentials
{
    param (
        [parameter(mandatory=$False,HelpMessage='Private key data)')]
        [string]
        $privateKeyData,
        [parameter(mandatory=$False,HelpMessage='Username of admin account)')]
        [string]
        $username,
        [parameter(mandatory=$False,HelpMessage='Password of admin account)')]
        [string]
        $password,
        [parameter(mandatory=$False,HelpMessage='Public key data)')]
        [string]
        $publicKeyData
    )

    process
    {
        return $([VirtualMachineSshCredentials]$PSBoundParameters)
    }
}
class VirtualMachineProperties
{
    [string] $address
    [string] $virtualMachineSize
    [VirtualMachineSshCredentials] $administratorAccount
    [int] $sshPort
}
function New-AzureNativeTypeMachinelearningservicesVirtualMachineProperties
{
    param (
        [parameter(mandatory=$False,HelpMessage='Public IP address of the virtual machine.)')]
        [string]
        $address,
        [parameter(mandatory=$False,HelpMessage='Virtual Machine size)')]
        [string]
        $virtualMachineSize,
        [parameter(mandatory=$False,HelpMessage='Admin credentials for virtual machine)')]
        [VirtualMachineSshCredentials]
        $administratorAccount,
        [parameter(mandatory=$False,HelpMessage='Port open for ssh connections.)')]
        [int]
        $sshPort
    )

    process
    {
        return $([VirtualMachineProperties]$PSBoundParameters)
    }
}
class VirtualMachine
{
    [string] $computeType
    [string] $resourceId
    [string] $computeLocation
    [string] $description
    [VirtualMachineProperties] $properties
}
function New-AzureNativeTypeMachinelearningservicesVirtualMachine
{
    param (
        [parameter(mandatory=$False,HelpMessage='The type of compute
Expected value is ''VirtualMachine''.)'
)]
        [string]
        $computeType,
        [parameter(mandatory=$False,HelpMessage='ARM resource id of the underlying compute)')]
        [string]
        $resourceId,
        [parameter(mandatory=$False,HelpMessage='Location for the underlying compute)')]
        [string]
        $computeLocation,
        [parameter(mandatory=$False,HelpMessage='The description of the Machine Learning compute.)')]
        [string]
        $description,
        [parameter(mandatory=$False,HelpMessage=')')]
        [VirtualMachineProperties]
        $properties
    )

    process
    {
        return $([VirtualMachine]$PSBoundParameters)
    }
}
function New-AzureNativeMachinelearningservicesMachineLearningCompute
{
    [Alias('azure_native_machinelearningservices_machinelearningcompute')]
    param (
        [parameter(mandatory=$False,HelpMessage='Name of the Azure Machine Learning compute.)')]
        [string]
        $computeName,
        [parameter(mandatory=$False,HelpMessage='Compute properties)')]
        [VirtualMachine]
        $properties,
        [parameter(mandatory=$False,HelpMessage='The sku of the workspace.)')]
        [Sku]
        $sku,
        [parameter(mandatory=$False,HelpMessage='Contains resource tags defined as key/value pairs.)')]
        [hashtable]
        $tags,
        [parameter(mandatory=$False,HelpMessage='Specifies the location of the resource.)')]
        [string]
        $location,
        [parameter(mandatory=$False,HelpMessage='Name of the resource group in which workspace is located.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The identity of the resource.)')]
        [Identity]
        $identity,
        [parameter(mandatory=$False,HelpMessage='Name of Azure Machine Learning workspace.)')]
        [string]
        $workspaceName,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid,
        [parameter(HelpMessage='Specifies a list of named output properties that should be treated as secrets, which means they will be encrypted. It augments the list of values that Pulumi detects, based on secret inputs to the resource.')]
        [string[]]
        $PulumiSecretOutputs,
        [parameter(HelpMessage='The aliases parameter provides a list of aliases for a resource or component resource. If youre changing the name, type, or parent path of a resource or component resource, you can add the old name to the list of aliases for a resource to ensure that existing resources will be migrated to the new name instead of being deleted and replaced with the new named resource.')]
        [string[]]
        $PulumiAliases,
        [parameter(HelpMessage='The customTimeouts parameter provides a set of custom timeouts for create, update, and delete operations on a resource. These timeouts are specified using a duration string such as 5m (5 minutes), 40s (40 seconds), or 1d (1 day). Supported duration units are ns, us (or µs), ms, s, m, and h (nanoseconds, microseconds, milliseconds, seconds, minutes, and hours, respectively).')]
        [pulumicustomtimeouts]
        $PulumiCustomTimeouts,
        [parameter(HelpMessage='Setting the PulumiDeleteBeforeReplace parameter to true means that Pulumi will delete the existing resource before creating its replacement. Be aware that this behavior has a cascading impact on dependencies so more resources may be replaced, which can lead to downtime. However, this option may be necessary for some resources that manage scarce resources behind the scenes, and/or resources that cannot exist side-by-side.')]
        [bool]
        $PulumiDeleteBeforeReplace,
        [parameter(HelpMessage='Creates a list of explicit dependencies between resources.The DependsOn parameter ensures that resource creation, update, and deletion operations are done in the correct order.')]
        [object[]]
        $PulumiDependsOn,
        [parameter(HelpMessage='Specifies a list of properties that Pulumi will ignore when it updates existing resources. Any properties specified in this list that are also specified in the resources arguments will only be used when creating the resource.')]
        [string[]]
        $PulumiIgnoreChanges,
        [parameter(HelpMessage='Imports an existing cloud resource so that Pulumi can manage it. To import a resource, first specify the PulumiImport parameter with the resources ID')]
        [string]
        $PulumiImport = [NullString]::Value,
        [parameter(HelpMessage='Specifies a parent for a resource. It is used to associate children with the parents that encapsulate or are responsible for them.')]
        [object]
        $PulumiParent = [NullString]::Value,
        [parameter(HelpMessage='Marks a resource as protected. A protected resource cannot be deleted directly, and it will be an error to do a Pulumi deployment which tries to delete a protected resource for any reason.')]
        [bool]
        $PulumiProtect,
        [parameter(HelpMessage='Sets a provider for the resource. The default is to inherit this value from the parent resource, and to use the ambient provider specified by Pulumi configuration for resources without a parent.')]
        [object]
        $PulumiProvider = [NullString]::Value,
        [parameter(HelpMessage='Sets a list of providers for the resource and its children. This list is combined with resource parents providers lists. If no value is provided, the providers list is identical to the parent. When determining which provider to use for a resource, the providers list is used if provider is not supplied.')]
        [object[]]
        $PulumiProviders,
        [parameter(HelpMessage='Used to indicate that changes to certain properties on a resource should force a replacement of the resource instead of an in-place update. Typically users rely on the resource provider to make this decision based on whether the input property is one that the provider knows how to update in place, or if not, requires a replacement to modify. However, there are cases where users want to replace a resource on a change to an input property even if the resource provider itself doesnt believe it has to replace the resource.')]
        [string[]]
        $PulumiReplaceOnChanges,
        [parameter(HelpMessage='Marks a resource to be retained. If this option is set then Pulumi will not call through to the resource providers Delete method when deleting or replacing the resource during pulumi up or pulumi destroy. As a result, the resource will not be deleted from the backing cloud provider, but will be removed from the Pulumi state.')]
        [bool]
        $PulumiRetainOnDelete,
        [parameter(HelpMessage='Specifies a provider version to use when operating on a resource. This version overrides the version information inferred from the current package. This option should be used rarely.')]
        [string]
        $PulumiProviderVersion = [NullString]::Value
    )

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

        $resource.options.additionalSecretOutputs = $PulumiSecretOutputs
        $resource.options.aliases = $PulumiAliases
        $resource.options.customTimeouts = $PulumiCustomTimeouts
        $resource.options.deleteBeforeReplace = $PulumiDeleteBeforeReplace
        $resource.options.ignoreChanges = $PulumiIgnoreChanges
        $resource.options.import = if([string]::IsNullOrEmpty($PulumiImport)) { [NullString]::Value } else { $PulumiImport }
        $resource.options.protect = $PulumiProtect
        $resource.options.replaceOnChanges = $PulumiReplaceOnChanges
        $resource.options.retainOnDelete = $PulumiRetainOnDelete
        $resource.options.version = if([string]::IsNullOrEmpty($PulumiProviderVersion)) { [NullString]::Value } else { $PulumiProviderVersion }

        foreach($Dependency in $DependsOn)
        {
            if($Dependency -is [pulumiresource])
            {
                $resource.options.dependson += $Dependency.Reference()
            } else
            {
                $resource.options.dependson += $Dependency
            }
        }
        if($PulumiParent -is [pulumiresource])
        {
            $resource.options.parent = $PulumiParent.Reference()
        } else
        {
            $resource.options.parent = $PulumiParent
        }
        foreach($provider in $PulumiProviders)
        {
            if($provider -is [pulumiprovider])
            {
                $resource.options.providers += $provider.Reference()
            } else
            {
                $resource.options.providers += $provider
            }
        }
        if($PulumiProvider -is [pulumiprovider])
        {
            $resource.options.provider = $PulumiProvider.Reference()
        } else
        {
            $resource.options.provider = $PulumiProvider
        }
        $resource.properties["resourceGroupName"] = $resourceGroupName
        $resource.properties["workspaceName"] = $workspaceName

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

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

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

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

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

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

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