pspulumiyaml.azurenative.workloads.psm1

using module @{ ModuleName = "PSPulumiYaml"; ModuleVersion = "0.0.3"; GUID = "909344e0-a08f-45f6-8177-80e36bb2ba58" }
function Invoke-AzureNativeFunctionWorkloadsGetProviderInstance
{
    param (
        [parameter(mandatory=$False,HelpMessage='Name of the SAP monitor resource.)')]
        [string]
        $monitorName,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group. The name is case insensitive.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Name of the provider instance.)')]
        [string]
        $providerInstanceName
    )

    process
    {
        $arguments = @{}
        $arguments["monitorName"] = $monitorName
        $arguments["providerInstanceName"] = $providerInstanceName
        $arguments["resourceGroupName"] = $resourceGroupName

        $functionObject = Invoke-PulumiFunction -Name azure-native:workloads:getProviderInstance -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionWorkloadsGetSAPVirtualInstance
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the resource group. The name is case insensitive.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of the Virtual Instances for SAP.)')]
        [string]
        $sapVirtualInstanceName
    )

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

        $functionObject = Invoke-PulumiFunction -Name azure-native:workloads:getSAPVirtualInstance -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionWorkloadsGetSAPSizingRecommendations
{
    param (
        [parameter(mandatory=$False,HelpMessage='Defines the environment type - Production/Non Production.)')]
        [string]
        [ArgumentCompletions('NonProd', 'Prod')]
        $environment,
        [parameter(mandatory=$False,HelpMessage='The deployment type. Eg: SingleServer/ThreeTier)')]
        [string]
        [ArgumentCompletions('SingleServer', 'ThreeTier')]
        $deploymentType,
        [parameter(mandatory=$False,HelpMessage='The DB scale method.)')]
        [string]
        [ArgumentCompletions('ScaleUp')]
        $dbScaleMethod,
        [parameter(mandatory=$False,HelpMessage='The high availability type.)')]
        [string]
        [ArgumentCompletions('AvailabilitySet', 'AvailabilityZone')]
        $highAvailabilityType,
        [parameter(mandatory=$False,HelpMessage='The database type.)')]
        [string]
        [ArgumentCompletions('HANA', 'DB2')]
        $databaseType,
        [parameter(mandatory=$False,HelpMessage='The geo-location where the resource is to be created.)')]
        [string]
        $appLocation,
        [parameter(mandatory=$False,HelpMessage='Defines the SAP Product type.)')]
        [string]
        [ArgumentCompletions('ECC', 'S4HANA', 'Other')]
        $sapProduct,
        [parameter(mandatory=$False,HelpMessage='The SAP Application Performance Standard measurement.)')]
        [int]
        $saps,
        [parameter(mandatory=$False,HelpMessage='The database memory configuration.)')]
        [int]
        $dbMemory,
        [parameter(mandatory=$False,HelpMessage='The name of Azure region.)')]
        [string]
        $location
    )

    process
    {
        $arguments = @{}
        $arguments["appLocation"] = $appLocation
        $arguments["databaseType"] = $databaseType
        $arguments["dbMemory"] = $dbMemory
        $arguments["deploymentType"] = $deploymentType
        $arguments["environment"] = $environment
        $arguments["location"] = $location
        $arguments["sapProduct"] = $sapProduct
        $arguments["saps"] = $saps

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

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

        $functionObject = Invoke-PulumiFunction -Name azure-native:workloads:getSAPSizingRecommendations -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionWorkloadsGetSAPAvailabilityZoneDetails
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of Azure region.)')]
        [string]
        $location,
        [parameter(mandatory=$False,HelpMessage='The geo-location where the SAP resources will be created.)')]
        [string]
        $appLocation,
        [parameter(mandatory=$False,HelpMessage='The database type. Eg: HANA, DB2, etc)')]
        [string]
        [ArgumentCompletions('HANA', 'DB2')]
        $databaseType,
        [parameter(mandatory=$False,HelpMessage='Defines the SAP Product type.)')]
        [string]
        [ArgumentCompletions('ECC', 'S4HANA', 'Other')]
        $sapProduct
    )

    process
    {
        $arguments = @{}
        $arguments["appLocation"] = $appLocation
        $arguments["databaseType"] = $databaseType
        $arguments["location"] = $location
        $arguments["sapProduct"] = $sapProduct

        $functionObject = Invoke-PulumiFunction -Name azure-native:workloads:getSAPAvailabilityZoneDetails -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionWorkloadsGetSAPDiskConfigurations
{
    param (
        [parameter(mandatory=$False,HelpMessage='The geo-location where the SAP resources will be created.)')]
        [string]
        $appLocation,
        [parameter(mandatory=$False,HelpMessage='The deployment type. Eg: SingleServer/ThreeTier)')]
        [string]
        [ArgumentCompletions('SingleServer', 'ThreeTier')]
        $deploymentType,
        [parameter(mandatory=$False,HelpMessage='The name of Azure region.)')]
        [string]
        $location,
        [parameter(mandatory=$False,HelpMessage='Defines the environment type - Production/Non Production.)')]
        [string]
        [ArgumentCompletions('NonProd', 'Prod')]
        $environment,
        [parameter(mandatory=$False,HelpMessage='The VM SKU for database instance.)')]
        [string]
        $dbVmSku,
        [parameter(mandatory=$False,HelpMessage='Defines the SAP Product type.)')]
        [string]
        [ArgumentCompletions('ECC', 'S4HANA', 'Other')]
        $sapProduct,
        [parameter(mandatory=$False,HelpMessage='The database type. Eg: HANA, DB2, etc)')]
        [string]
        [ArgumentCompletions('HANA', 'DB2')]
        $databaseType
    )

    process
    {
        $arguments = @{}
        $arguments["appLocation"] = $appLocation
        $arguments["databaseType"] = $databaseType
        $arguments["dbVmSku"] = $dbVmSku
        $arguments["deploymentType"] = $deploymentType
        $arguments["environment"] = $environment
        $arguments["location"] = $location
        $arguments["sapProduct"] = $sapProduct

        $functionObject = Invoke-PulumiFunction -Name azure-native:workloads:getSAPDiskConfigurations -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionWorkloadsGetSAPDatabaseInstance
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the resource group. The name is case insensitive.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Database Instance string modeled as parameter for auto generation to work correctly.)')]
        [string]
        $databaseInstanceName,
        [parameter(mandatory=$False,HelpMessage='The name of the Virtual Instances for SAP.)')]
        [string]
        $sapVirtualInstanceName
    )

    process
    {
        $arguments = @{}
        $arguments["databaseInstanceName"] = $databaseInstanceName
        $arguments["resourceGroupName"] = $resourceGroupName
        $arguments["sapVirtualInstanceName"] = $sapVirtualInstanceName

        $functionObject = Invoke-PulumiFunction -Name azure-native:workloads:getSAPDatabaseInstance -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionWorkloadsGetWordpressInstance
{
    param (
        [parameter(mandatory=$False,HelpMessage='Php workload name)')]
        [string]
        $phpWorkloadName,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group. The name is case insensitive.)')]
        [string]
        $resourceGroupName
    )

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

        $functionObject = Invoke-PulumiFunction -Name azure-native:workloads:getWordpressInstance -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionWorkloadsGetPhpWorkload
{
    param (
        [parameter(mandatory=$False,HelpMessage='Php workload name)')]
        [string]
        $phpWorkloadName,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group. The name is case insensitive.)')]
        [string]
        $resourceGroupName
    )

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

        $functionObject = Invoke-PulumiFunction -Name azure-native:workloads:getPhpWorkload -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionWorkloadsGetSAPSupportedSku
{
    param (
        [parameter(mandatory=$False,HelpMessage='The geo-location where the resource is to be created.)')]
        [string]
        $appLocation,
        [parameter(mandatory=$False,HelpMessage='The name of Azure region.)')]
        [string]
        $location,
        [parameter(mandatory=$False,HelpMessage='Defines the environment type - Production/Non Production.)')]
        [string]
        [ArgumentCompletions('NonProd', 'Prod')]
        $environment,
        [parameter(mandatory=$False,HelpMessage='The deployment type. Eg: SingleServer/ThreeTier)')]
        [string]
        [ArgumentCompletions('SingleServer', 'ThreeTier')]
        $deploymentType,
        [parameter(mandatory=$False,HelpMessage='Defines the SAP Product type.)')]
        [string]
        [ArgumentCompletions('ECC', 'S4HANA', 'Other')]
        $sapProduct,
        [parameter(mandatory=$False,HelpMessage='The high availability type.)')]
        [string]
        [ArgumentCompletions('AvailabilitySet', 'AvailabilityZone')]
        $highAvailabilityType,
        [parameter(mandatory=$False,HelpMessage='The database type. Eg: HANA, DB2, etc)')]
        [string]
        [ArgumentCompletions('HANA', 'DB2')]
        $databaseType
    )

    process
    {
        $arguments = @{}
        $arguments["appLocation"] = $appLocation
        $arguments["databaseType"] = $databaseType
        $arguments["deploymentType"] = $deploymentType
        $arguments["environment"] = $environment
        $arguments["location"] = $location
        $arguments["sapProduct"] = $sapProduct

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

        $functionObject = Invoke-PulumiFunction -Name azure-native:workloads:getSAPSupportedSku -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionWorkloadsGetSAPApplicationServerInstance
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the resource group. The name is case insensitive.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of SAP Application Server instance.)')]
        [string]
        $applicationInstanceName,
        [parameter(mandatory=$False,HelpMessage='The name of the Virtual Instances for SAP.)')]
        [string]
        $sapVirtualInstanceName
    )

    process
    {
        $arguments = @{}
        $arguments["applicationInstanceName"] = $applicationInstanceName
        $arguments["resourceGroupName"] = $resourceGroupName
        $arguments["sapVirtualInstanceName"] = $sapVirtualInstanceName

        $functionObject = Invoke-PulumiFunction -Name azure-native:workloads:getSAPApplicationServerInstance -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionWorkloadsGetmonitor
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the resource group. The name is case insensitive.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Name of the SAP monitor resource.)')]
        [string]
        $monitorName
    )

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

        $functionObject = Invoke-PulumiFunction -Name azure-native:workloads:getmonitor -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionWorkloadsGetSAPCentralInstance
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the resource group. The name is case insensitive.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Central Instance name string modeled as parameter for auto generation to work correctly.)')]
        [string]
        $centralInstanceName,
        [parameter(mandatory=$False,HelpMessage='The name of the Virtual Instances for SAP.)')]
        [string]
        $sapVirtualInstanceName
    )

    process
    {
        $arguments = @{}
        $arguments["centralInstanceName"] = $centralInstanceName
        $arguments["resourceGroupName"] = $resourceGroupName
        $arguments["sapVirtualInstanceName"] = $sapVirtualInstanceName

        $functionObject = Invoke-PulumiFunction -Name azure-native:workloads:getSAPCentralInstance -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function New-AzureNativeWorkloadsSAPCentralInstance
{
    [Alias('azure_native_workloads_sapcentralinstance')]
    param (
        [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='Central Instance name string modeled as parameter for auto generation to work correctly.)')]
        [string]
        $centralInstanceName,
        [parameter(mandatory=$False,HelpMessage='The name of the Virtual Instances for SAP.)')]
        [string]
        $sapVirtualInstanceName,
        [parameter(mandatory=$False,HelpMessage='Resource tags.)')]
        [hashtable]
        $tags,
        [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:workloads:SAPCentralInstance")

        $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["sapVirtualInstanceName"] = $sapVirtualInstanceName

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
class DiscoveryConfiguration
{
    [string] $configurationType
    [string] $centralServerVmId
}
function New-AzureNativeTypeWorkloadsDiscoveryConfiguration
{
    param (
        [parameter(mandatory=$False,HelpMessage='The configuration Type.
Expected value is ''Discovery''.)'
)]
        [string]
        $configurationType,
        [parameter(mandatory=$False,HelpMessage='The virtual machine ID of the Central Server.)')]
        [string]
        $centralServerVmId
    )

    process
    {
        return $([DiscoveryConfiguration]$PSBoundParameters)
    }
}
class ManagedRGConfiguration
{
    [string] $name
}
function New-AzureNativeTypeWorkloadsManagedRGConfiguration
{
    param (
        [parameter(mandatory=$False,HelpMessage='Managed resource group name)')]
        [string]
        $name
    )

    process
    {
        return $([ManagedRGConfiguration]$PSBoundParameters)
    }
}
class UserAssignedServiceIdentity
{
    [ArgumentCompletions('None', 'UserAssigned')]
    [string] $type
    [object] $userAssignedIdentities
}
function New-AzureNativeTypeWorkloadsUserAssignedServiceIdentity
{
    param (
        [parameter(mandatory=$False,HelpMessage='Type of manage identity)')]
        [string]
        [ArgumentCompletions('None', 'UserAssigned')]
        $type,
        [parameter(mandatory=$False,HelpMessage='User assigned identities dictionary)')]
        [object]
        $userAssignedIdentities
    )

    process
    {
        return $([UserAssignedServiceIdentity]$PSBoundParameters)
    }
}
function New-AzureNativeWorkloadsSAPVirtualInstance
{
    [Alias('azure_native_workloads_sapvirtualinstance')]
    param (
        [parameter(mandatory=$False,HelpMessage='Defines the environment type - Production/Non Production.)')]
        [string]
        [ArgumentCompletions('NonProd', 'Prod')]
        $environment,
        [parameter(mandatory=$False,HelpMessage='Resource tags.)')]
        [hashtable]
        $tags,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group. The name is case insensitive.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Defines if an existing SAP system is being registered or a new SAP system is being created)')]
        [DiscoveryConfiguration]
        $configuration,
        [parameter(mandatory=$False,HelpMessage='Managed resource group configuration)')]
        [ManagedRGConfiguration]
        $managedResourceGroupConfiguration,
        [parameter(mandatory=$False,HelpMessage='Defines the SAP Product type.)')]
        [string]
        [ArgumentCompletions('ECC', 'S4HANA', 'Other')]
        $sapProduct,
        [parameter(mandatory=$False,HelpMessage='Managed service identity (user assigned identities))')]
        [UserAssignedServiceIdentity]
        $identity,
        [parameter(mandatory=$False,HelpMessage='The name of the Virtual Instances for SAP.)')]
        [string]
        $sapVirtualInstanceName,
        [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:workloads:SAPVirtualInstance")

        $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["configuration"] = $configuration
        $resource.properties["environment"] = $environment
        $resource.properties["resourceGroupName"] = $resourceGroupName
        $resource.properties["sapProduct"] = $sapProduct

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

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
function New-AzureNativeWorkloadsSAPDatabaseInstance
{
    [Alias('azure_native_workloads_sapdatabaseinstance')]
    param (
        [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='Database Instance string modeled as parameter for auto generation to work correctly.)')]
        [string]
        $databaseInstanceName,
        [parameter(mandatory=$False,HelpMessage='The name of the Virtual Instances for SAP.)')]
        [string]
        $sapVirtualInstanceName,
        [parameter(mandatory=$False,HelpMessage='Resource tags.)')]
        [hashtable]
        $tags,
        [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:workloads:SAPDatabaseInstance")

        $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["sapVirtualInstanceName"] = $sapVirtualInstanceName

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
function New-AzureNativeWorkloadsSAPApplicationServerInstance
{
    [Alias('azure_native_workloads_sapapplicationserverinstance')]
    param (
        [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='The name of SAP Application Server instance.)')]
        [string]
        $applicationInstanceName,
        [parameter(mandatory=$False,HelpMessage='The name of the Virtual Instances for SAP.)')]
        [string]
        $sapVirtualInstanceName,
        [parameter(mandatory=$False,HelpMessage='Resource tags.)')]
        [hashtable]
        $tags,
        [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:workloads:SAPApplicationServerInstance")

        $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["sapVirtualInstanceName"] = $sapVirtualInstanceName

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
function New-AzureNativeWorkloadsMonitor
{
    [Alias('azure_native_workloads_monitor')]
    param (
        [parameter(mandatory=$False,HelpMessage='Sets the routing preference of the SAP monitor. By default only RFC1918 traffic is routed to the customer VNET.)')]
        [string]
        [ArgumentCompletions('Default', 'RouteAll')]
        $routingPreference,
        [parameter(mandatory=$False,HelpMessage='Resource tags.)')]
        [hashtable]
        $tags,
        [parameter(mandatory=$False,HelpMessage='The subnet which the SAP monitor will be deployed in)')]
        [string]
        $monitorSubnet,
        [parameter(mandatory=$False,HelpMessage='Managed resource group configuration)')]
        [ManagedRGConfiguration]
        $managedResourceGroupConfiguration,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group. The name is case insensitive.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The SAP monitor resources will be deployed in the SAP monitoring region. The subnet region should be same as the SAP monitoring region.)')]
        [string]
        $appLocation,
        [parameter(mandatory=$False,HelpMessage='Managed service identity (user assigned identities))')]
        [UserAssignedServiceIdentity]
        $identity,
        [parameter(mandatory=$False,HelpMessage='Name of the SAP monitor resource.)')]
        [string]
        $monitorName,
        [parameter(mandatory=$False,HelpMessage='The ARM ID of the Log Analytics Workspace that is used for SAP monitoring.)')]
        [string]
        $logAnalyticsWorkspaceArmId,
        [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:workloads:monitor")

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

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

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

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

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

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
class SiteProfile
{
    [string] $domainName
}
function New-AzureNativeTypeWorkloadsSiteProfile
{
    param (
        [parameter(mandatory=$False,HelpMessage='Domain name for the application site URL)')]
        [string]
        $domainName
    )

    process
    {
        return $([SiteProfile]$PSBoundParameters)
    }
}
class CacheProfile
{
    [string] $name
    [int] $capacity
    [ArgumentCompletions('C', 'P')]
    [string] $family
    [string] $skuName
}
function New-AzureNativeTypeWorkloadsCacheProfile
{
    param (
        [parameter(mandatory=$False,HelpMessage='Cache name)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='Cache capacity)')]
        [int]
        $capacity,
        [parameter(mandatory=$False,HelpMessage='Cache family)')]
        [string]
        [ArgumentCompletions('C', 'P')]
        $family,
        [parameter(mandatory=$False,HelpMessage='Cache SKU name)')]
        [string]
        $skuName
    )

    process
    {
        return $([CacheProfile]$PSBoundParameters)
    }
}
class DiskInfo
{
    [int] $sizeInGB
    [ArgumentCompletions('Premium_LRS', 'Standard_LRS', 'StandardSSD_LRS')]
    [object] $storageType
}
function New-AzureNativeTypeWorkloadsDiskInfo
{
    param (
        [parameter(mandatory=$False,HelpMessage='Disk size in GB)')]
        [int]
        $sizeInGB,
        [parameter(mandatory=$False,HelpMessage='Storage type)')]
        $storageType
    )

    process
    {
        return $([DiskInfo]$PSBoundParameters)
    }
}
class OsImageProfile
{
    [ArgumentCompletions('UbuntuServer')]
    [string] $offer
    [ArgumentCompletions('latest')]
    [string] $version
    [ArgumentCompletions('Canonical')]
    [string] $publisher
    [ArgumentCompletions('18.04-LTS', '16.04-LTS')]
    [string] $sku
}
function New-AzureNativeTypeWorkloadsOsImageProfile
{
    param (
        [parameter(mandatory=$False,HelpMessage='OS image offer)')]
        [string]
        [ArgumentCompletions('UbuntuServer')]
        $offer,
        [parameter(mandatory=$False,HelpMessage='OS image version)')]
        [string]
        [ArgumentCompletions('latest')]
        $version,
        [parameter(mandatory=$False,HelpMessage='OS image publisher)')]
        [string]
        [ArgumentCompletions('Canonical')]
        $publisher,
        [parameter(mandatory=$False,HelpMessage='OS image sku)')]
        [string]
        [ArgumentCompletions('18.04-LTS', '16.04-LTS')]
        $sku
    )

    process
    {
        return $([OsImageProfile]$PSBoundParameters)
    }
}
class NodeProfile
{
    [string] $name
    [DiskInfo[]] $dataDisks
    [OsImageProfile] $osImage
    [DiskInfo] $osDisk
    [string] $nodeSku
}
function New-AzureNativeTypeWorkloadsNodeProfile
{
    param (
        [parameter(mandatory=$False,HelpMessage='VM or VMSS name)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='Data disks details. This property is not in use right now)')]
        $dataDisks,
        [parameter(mandatory=$False,HelpMessage='OS image used for creating the nodes)')]
        [OsImageProfile]
        $osImage,
        [parameter(mandatory=$False,HelpMessage='OS disk details)')]
        [DiskInfo]
        $osDisk,
        [parameter(mandatory=$False,HelpMessage='VM SKU for node(s))')]
        [string]
        $nodeSku
    )

    process
    {
        return $([NodeProfile]$PSBoundParameters)
    }
}
class FileshareProfile
{
    [ArgumentCompletions('Standard_LRS', 'Standard_GRS', 'Standard_ZRS', 'Premium_LRS')]
    [string] $storageType
    [int] $shareSizeInGB
    [ArgumentCompletions('NfsOnController', 'AzureFiles')]
    [string] $shareType
}
function New-AzureNativeTypeWorkloadsFileshareProfile
{
    param (
        [parameter(mandatory=$False,HelpMessage='File share backing storage type)')]
        [string]
        [ArgumentCompletions('Standard_LRS', 'Standard_GRS', 'Standard_ZRS', 'Premium_LRS')]
        $storageType,
        [parameter(mandatory=$False,HelpMessage='File share size in GB)')]
        [int]
        $shareSizeInGB,
        [parameter(mandatory=$False,HelpMessage='Share type)')]
        [string]
        [ArgumentCompletions('NfsOnController', 'AzureFiles')]
        $shareType
    )

    process
    {
        return $([FileshareProfile]$PSBoundParameters)
    }
}
class PhpProfile
{
    [ArgumentCompletions('7.2', '7.3', '7.4')]
    [string] $version
}
function New-AzureNativeTypeWorkloadsPhpProfile
{
    param (
        [parameter(mandatory=$False,HelpMessage='PHP version)')]
        [string]
        [ArgumentCompletions('7.2', '7.3', '7.4')]
        $version
    )

    process
    {
        return $([PhpProfile]$PSBoundParameters)
    }
}
class DatabaseProfile
{
    [ArgumentCompletions('Burstable', 'GeneralPurpose', 'MemoryOptimized')]
    [object] $tier
    [string] $sku
    [int] $storageIops
    [string] $serverName
    [string] $version
    [ArgumentCompletions('Enabled', 'Disabled')]
    [string] $haEnabled
    [int] $storageInGB
    [ArgumentCompletions('MySql')]
    [string] $type
    [int] $backupRetentionDays
    [string] $storageSku
    [ArgumentCompletions('Enabled', 'Disabled')]
    [string] $sslEnforcementEnabled
}
function New-AzureNativeTypeWorkloadsDatabaseProfile
{
    param (
        [parameter(mandatory=$False,HelpMessage='Tier of the server SKU)')]
        $tier,
        [parameter(mandatory=$False,HelpMessage='The name of the server SKU, e.g. Standard_D32s_v4)')]
        [string]
        $sku,
        [parameter(mandatory=$False,HelpMessage='Storage IOPS for the server)')]
        [int]
        $storageIops,
        [parameter(mandatory=$False,HelpMessage='Database server name)')]
        [string]
        $serverName,
        [parameter(mandatory=$False,HelpMessage='Database version)')]
        [string]
        $version,
        [parameter(mandatory=$False,HelpMessage='Whether to enable HA for the server)')]
        [string]
        [ArgumentCompletions('Enabled', 'Disabled')]
        $haEnabled,
        [parameter(mandatory=$False,HelpMessage='Database storage size in GB)')]
        [int]
        $storageInGB,
        [parameter(mandatory=$False,HelpMessage='Database type)')]
        [string]
        [ArgumentCompletions('MySql')]
        $type,
        [parameter(mandatory=$False,HelpMessage='Backup retention days for the server)')]
        [int]
        $backupRetentionDays,
        [parameter(mandatory=$False,HelpMessage='SKU name for database storage)')]
        [string]
        $storageSku,
        [parameter(mandatory=$False,HelpMessage='Whether to enable SSL enforcement on the database)')]
        [string]
        [ArgumentCompletions('Enabled', 'Disabled')]
        $sslEnforcementEnabled
    )

    process
    {
        return $([DatabaseProfile]$PSBoundParameters)
    }
}
class UserProfile
{
    [string] $sshPublicKey
    [string] $userName
}
function New-AzureNativeTypeWorkloadsUserProfile
{
    param (
        [parameter(mandatory=$False,HelpMessage='SSH public key data)')]
        [string]
        $sshPublicKey,
        [parameter(mandatory=$False,HelpMessage='User name)')]
        [string]
        $userName
    )

    process
    {
        return $([UserProfile]$PSBoundParameters)
    }
}
class Sku
{
    [ArgumentCompletions('Free', 'Basic', 'Standard', 'Premium')]
    [object] $tier
    [string] $name
    [string] $size
    [int] $capacity
    [string] $family
}
function New-AzureNativeTypeWorkloadsSku
{
    param (
        [parameter(mandatory=$False,HelpMessage='This field is required to be implemented by the Resource Provider if the service has more than one tier, but is not required on a PUT.)')]
        $tier,
        [parameter(mandatory=$False,HelpMessage='The name of the SKU. Ex - P3. It is typically a letter+number code)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='The SKU size. When the name field is the combination of tier and some other value, this would be the standalone code. )')]
        [string]
        $size,
        [parameter(mandatory=$False,HelpMessage='If the SKU supports scale out/in then the capacity integer should be included. If scale out/in is not possible for the resource this may be omitted.)')]
        [int]
        $capacity,
        [parameter(mandatory=$False,HelpMessage='If the service has different generations of hardware, for the same SKU, then that can be captured here.)')]
        [string]
        $family
    )

    process
    {
        return $([Sku]$PSBoundParameters)
    }
}
class BackupProfile
{
    [ArgumentCompletions('Enabled', 'Disabled')]
    [string] $backupEnabled
}
function New-AzureNativeTypeWorkloadsBackupProfile
{
    param (
        [parameter(mandatory=$False,HelpMessage='Whether to enable Azure backup for the workload)')]
        [string]
        [ArgumentCompletions('Enabled', 'Disabled')]
        $backupEnabled
    )

    process
    {
        return $([BackupProfile]$PSBoundParameters)
    }
}
class SearchProfile
{
    [DiskInfo[]] $dataDisks
    [DiskInfo] $osDisk
    [ArgumentCompletions('Elastic')]
    [string] $searchType
    [string] $nodeSku
    [string] $name
    [OsImageProfile] $osImage
}
function New-AzureNativeTypeWorkloadsSearchProfile
{
    param (
        [parameter(mandatory=$False,HelpMessage='Data disks details. This property is not in use right now)')]
        $dataDisks,
        [parameter(mandatory=$False,HelpMessage='OS disk details)')]
        [DiskInfo]
        $osDisk,
        [parameter(mandatory=$False,HelpMessage='Search type)')]
        [string]
        [ArgumentCompletions('Elastic')]
        $searchType,
        [parameter(mandatory=$False,HelpMessage='VM SKU for node(s))')]
        [string]
        $nodeSku,
        [parameter(mandatory=$False,HelpMessage='VM or VMSS name)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='OS image used for creating the nodes)')]
        [OsImageProfile]
        $osImage
    )

    process
    {
        return $([SearchProfile]$PSBoundParameters)
    }
}
class PhpWorkloadResourceIdentity
{
    [ArgumentCompletions('None', 'UserAssigned')]
    [string] $type
    [object] $userAssignedIdentities
}
function New-AzureNativeTypeWorkloadsPhpWorkloadResourceIdentity
{
    param (
        [parameter(mandatory=$False,HelpMessage='Type of manage identity)')]
        [string]
        [ArgumentCompletions('None', 'UserAssigned')]
        $type,
        [parameter(mandatory=$False,HelpMessage='User assigned identities dictionary)')]
        [object]
        $userAssignedIdentities
    )

    process
    {
        return $([PhpWorkloadResourceIdentity]$PSBoundParameters)
    }
}
class NetworkProfile
{
    [ArgumentCompletions('ApplicationGateway', 'LoadBalancer')]
    [string] $loadBalancerType
    [ArgumentCompletions('Enabled', 'Disabled')]
    [string] $azureFrontDoorEnabled
    [string] $loadBalancerSku
    [string] $loadBalancerTier
    [int] $capacity
}
function New-AzureNativeTypeWorkloadsNetworkProfile
{
    param (
        [parameter(mandatory=$False,HelpMessage='Load balancer type)')]
        [string]
        [ArgumentCompletions('ApplicationGateway', 'LoadBalancer')]
        $loadBalancerType,
        [parameter(mandatory=$False,HelpMessage='Whether to enable Azure front door)')]
        [string]
        [ArgumentCompletions('Enabled', 'Disabled')]
        $azureFrontDoorEnabled,
        [parameter(mandatory=$False,HelpMessage='Load balancer SKU)')]
        [string]
        $loadBalancerSku,
        [parameter(mandatory=$False,HelpMessage='Load balancer tier)')]
        [string]
        $loadBalancerTier,
        [parameter(mandatory=$False,HelpMessage='Capacity, applicable only for Application Gateway)')]
        [int]
        $capacity
    )

    process
    {
        return $([NetworkProfile]$PSBoundParameters)
    }
}
class VmssNodesProfile
{
    [int] $autoScaleMaxCount
    [DiskInfo] $osDisk
    [string] $nodeSku
    [string] $name
    [int] $autoScaleMinCount
    [DiskInfo[]] $dataDisks
    [OsImageProfile] $osImage
}
function New-AzureNativeTypeWorkloadsVmssNodesProfile
{
    param (
        [parameter(mandatory=$False,HelpMessage='Maximum number of nodes for autoscale)')]
        [int]
        $autoScaleMaxCount,
        [parameter(mandatory=$False,HelpMessage='OS disk details)')]
        [DiskInfo]
        $osDisk,
        [parameter(mandatory=$False,HelpMessage='VM SKU for node(s))')]
        [string]
        $nodeSku,
        [parameter(mandatory=$False,HelpMessage='VM or VMSS name)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='Minimum number of nodes for autoscale)')]
        [int]
        $autoScaleMinCount,
        [parameter(mandatory=$False,HelpMessage='Data disks details. This property is not in use right now)')]
        $dataDisks,
        [parameter(mandatory=$False,HelpMessage='OS image used for creating the nodes)')]
        [OsImageProfile]
        $osImage
    )

    process
    {
        return $([VmssNodesProfile]$PSBoundParameters)
    }
}
function New-AzureNativeWorkloadsPhpWorkload
{
    [Alias('azure_native_workloads_phpworkload')]
    param (
        [parameter(mandatory=$False,HelpMessage='Site profile)')]
        [SiteProfile]
        $siteProfile,
        [parameter(mandatory=$False,HelpMessage='Cache profile)')]
        [CacheProfile]
        $cacheProfile,
        [parameter(mandatory=$False,HelpMessage='Managed resource group configuration of the workload)')]
        [ManagedRGConfiguration]
        $managedResourceGroupConfiguration,
        [parameter(mandatory=$False,HelpMessage='Controller VM profile)')]
        [NodeProfile]
        $controllerProfile,
        [parameter(mandatory=$False,HelpMessage='File share profile)')]
        [FileshareProfile]
        $fileshareProfile,
        [parameter(mandatory=$False,HelpMessage='PHP profile)')]
        [PhpProfile]
        $phpProfile,
        [parameter(mandatory=$False,HelpMessage='Database profile)')]
        [DatabaseProfile]
        $databaseProfile,
        [parameter(mandatory=$False,HelpMessage='The geo-location where the resource lives)')]
        [string]
        $location,
        [parameter(mandatory=$False,HelpMessage='Admin user profile used for VM and VMSS)')]
        [UserProfile]
        $adminUserProfile,
        [parameter(mandatory=$False,HelpMessage='Php workloads SKU)')]
        [Sku]
        $sku,
        [parameter(mandatory=$False,HelpMessage='Backup profile)')]
        [BackupProfile]
        $backupProfile,
        [parameter(mandatory=$False,HelpMessage='Search profile)')]
        [SearchProfile]
        $searchProfile,
        [parameter(mandatory=$False,HelpMessage='Indicates which kind of php workload this resource represent e.g WordPress)')]
        [string]
        [ArgumentCompletions('WordPress')]
        $kind,
        [parameter(mandatory=$False,HelpMessage='The infra resources for PHP workload will be created in this location)')]
        [string]
        $appLocation,
        [parameter(mandatory=$False,HelpMessage='Identity for the resource. Currently not supported)')]
        [PhpWorkloadResourceIdentity]
        $identity,
        [parameter(mandatory=$False,HelpMessage='Network profile)')]
        [NetworkProfile]
        $networkProfile,
        [parameter(mandatory=$False,HelpMessage='VMSS web nodes profile)')]
        [VmssNodesProfile]
        $webNodesProfile,
        [parameter(mandatory=$False,HelpMessage='Php workload name)')]
        [string]
        $phpWorkloadName,
        [parameter(mandatory=$False,HelpMessage='Resource tags.)')]
        [hashtable]
        $tags,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group. The name is case insensitive.)')]
        [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:workloads:PhpWorkload")

        $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["adminUserProfile"] = $adminUserProfile
        $resource.properties["appLocation"] = $appLocation
        $resource.properties["controllerProfile"] = $controllerProfile
        $resource.properties["databaseProfile"] = $databaseProfile
        $resource.properties["kind"] = $kind
        $resource.properties["resourceGroupName"] = $resourceGroupName
        $resource.properties["webNodesProfile"] = $webNodesProfile

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

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

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

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

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

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

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

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

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

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
function New-AzureNativeWorkloadsWordpressInstance
{
    [Alias('azure_native_workloads_wordpressinstance')]
    param (
        [parameter(mandatory=$False,HelpMessage='Php workload name)')]
        [string]
        $phpWorkloadName,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group. The name is case insensitive.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Application version)')]
        [string]
        [ArgumentCompletions('5.4.3', '5.4.2', '5.4.1', '5.4')]
        $version,
        [parameter(mandatory=$False,HelpMessage='Database name used by the application)')]
        [string]
        $databaseName,
        [parameter(mandatory=$False,HelpMessage='User name used by the application to connect to database)')]
        [string]
        $databaseUser,
        [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:workloads:WordpressInstance")

        $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["phpWorkloadName"] = $phpWorkloadName
        $resource.properties["resourceGroupName"] = $resourceGroupName
        $resource.properties["version"] = $version

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
class SapNetWeaverProviderInstanceProperties
{
    [string] $sapPasswordUri
    [string] $sapSslCertificateUri
    [string] $providerType
    [string] $sapPassword
    [string] $sapHostname
    [string] $sapSid
    [string] $sapClientId
    [string] $sapInstanceNr
    [string] $sapPortNumber
    [string] $sapUsername
    [string[]] $sapHostFileEntries
}
function New-AzureNativeTypeWorkloadsSapNetWeaverProviderInstanceProperties
{
    param (
        [parameter(mandatory=$False,HelpMessage='Gets or sets the key vault URI to secret with the SAP password.)')]
        [string]
        $sapPasswordUri,
        [parameter(mandatory=$False,HelpMessage='Gets or sets the blob URI to SSL certificate for the SAP system.)')]
        [string]
        $sapSslCertificateUri,
        [parameter(mandatory=$False,HelpMessage='The provider type. For example, the value can be SapHana.
Expected value is ''SapNetWeaver''.)'
)]
        [string]
        $providerType,
        [parameter(mandatory=$False,HelpMessage='Sets the SAP password.)')]
        [string]
        $sapPassword,
        [parameter(mandatory=$False,HelpMessage='Gets or sets the target virtual machine IP Address/FQDN.)')]
        [string]
        $sapHostname,
        [parameter(mandatory=$False,HelpMessage='Gets or sets the SAP System Identifier)')]
        [string]
        $sapSid,
        [parameter(mandatory=$False,HelpMessage='Gets or sets the SAP Client ID.)')]
        [string]
        $sapClientId,
        [parameter(mandatory=$False,HelpMessage='Gets or sets the instance number of SAP NetWeaver.)')]
        [string]
        $sapInstanceNr,
        [parameter(mandatory=$False,HelpMessage='Gets or sets the SAP HTTP port number.)')]
        [string]
        $sapPortNumber,
        [parameter(mandatory=$False,HelpMessage='Gets or sets the SAP user name.)')]
        [string]
        $sapUsername,
        [parameter(mandatory=$False,HelpMessage='Gets or sets the list of HostFile Entries)')]
        [string[]]
        $sapHostFileEntries
    )

    process
    {
        return $([SapNetWeaverProviderInstanceProperties]$PSBoundParameters)
    }
}
function New-AzureNativeWorkloadsProviderInstance
{
    [Alias('azure_native_workloads_providerinstance')]
    param (
        [parameter(mandatory=$False,HelpMessage='Name of the SAP monitor resource.)')]
        [string]
        $monitorName,
        [parameter(mandatory=$False,HelpMessage='Defines the provider instance errors.)')]
        [SapNetWeaverProviderInstanceProperties]
        $providerSettings,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group. The name is case insensitive.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Managed service identity (user assigned identities))')]
        [UserAssignedServiceIdentity]
        $identity,
        [parameter(mandatory=$False,HelpMessage='Name of the provider instance.)')]
        [string]
        $providerInstanceName,
        [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:workloads:ProviderInstance")

        $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["monitorName"] = $monitorName
        $resource.properties["resourceGroupName"] = $resourceGroupName

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

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

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

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