pspulumiyaml.azurenative.hdinsight.psm1

using module pspulumiyaml
function Invoke-AzureNativeFunctionHdinsightGetCluster
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of the cluster.)')]
        [string]
        $clusterName
    )

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

        $functionObject = Invoke-PulumiFunction -Name azure-native:hdinsight:getCluster -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionHdinsightGetPrivateEndpointConnection
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the cluster.)')]
        [string]
        $clusterName,
        [parameter(mandatory=$False,HelpMessage='The name of the private endpoint connection.)')]
        [string]
        $privateEndpointConnectionName,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName
    )

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

        $functionObject = Invoke-PulumiFunction -Name azure-native:hdinsight:getPrivateEndpointConnection -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionHdinsightGetClusterGatewaySettings
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of the cluster.)')]
        [string]
        $clusterName
    )

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

        $functionObject = Invoke-PulumiFunction -Name azure-native:hdinsight:getClusterGatewaySettings -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionHdinsightGetApplication
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the cluster.)')]
        [string]
        $clusterName,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The constant value for the application name.)')]
        [string]
        $applicationName
    )

    process
    {
        $arguments = @{}
        $arguments["applicationName"] = $applicationName
        $arguments["clusterName"] = $clusterName
        $arguments["resourceGroupName"] = $resourceGroupName

        $functionObject = Invoke-PulumiFunction -Name azure-native:hdinsight:getApplication -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
class Errors
{
    [string] $code
    [string] $message
}
function New-AzureNativeTypeHdinsightErrors
{
    param (
        [parameter(mandatory=$False,HelpMessage='The error code.)')]
        [string]
        $code,
        [parameter(mandatory=$False,HelpMessage='The error message.)')]
        [string]
        $message
    )

    process
    {
        return $([Errors]$PSBoundParameters)
    }
}
class ScriptAction
{
    [string] $uri
    [string] $name
    [string] $parameters
}
function New-AzureNativeTypeHdinsightScriptAction
{
    param (
        [parameter(mandatory=$False,HelpMessage='The URI to the script.)')]
        [string]
        $uri,
        [parameter(mandatory=$False,HelpMessage='The name of the script action.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='The parameters for the script provided.)')]
        [string]
        $parameters
    )

    process
    {
        return $([ScriptAction]$PSBoundParameters)
    }
}
class SshPublicKey
{
    [string] $certificateData
}
function New-AzureNativeTypeHdinsightSshPublicKey
{
    param (
        [parameter(mandatory=$False,HelpMessage='The certificate for SSH.)')]
        [string]
        $certificateData
    )

    process
    {
        return $([SshPublicKey]$PSBoundParameters)
    }
}
class SshProfile
{
    [SshPublicKey[]] $publicKeys
}
function New-AzureNativeTypeHdinsightSshProfile
{
    param (
        [parameter(mandatory=$False,HelpMessage='The list of SSH public keys.)')]
        $publicKeys
    )

    process
    {
        return $([SshProfile]$PSBoundParameters)
    }
}
class LinuxOperatingSystemProfile
{
    [string] $username
    [SshProfile] $sshProfile
    [string] $password
}
function New-AzureNativeTypeHdinsightLinuxOperatingSystemProfile
{
    param (
        [parameter(mandatory=$False,HelpMessage='The username.)')]
        [string]
        $username,
        [parameter(mandatory=$False,HelpMessage='The SSH profile.)')]
        [SshProfile]
        $sshProfile,
        [parameter(mandatory=$False,HelpMessage='The password.)')]
        [string]
        $password
    )

    process
    {
        return $([LinuxOperatingSystemProfile]$PSBoundParameters)
    }
}
class OsProfile
{
    [LinuxOperatingSystemProfile] $linuxOperatingSystemProfile
}
function New-AzureNativeTypeHdinsightOsProfile
{
    param (
        [parameter(mandatory=$False,HelpMessage='The Linux OS profile.)')]
        [LinuxOperatingSystemProfile]
        $linuxOperatingSystemProfile
    )

    process
    {
        return $([OsProfile]$PSBoundParameters)
    }
}
class HardwareProfile
{
    [string] $vmSize
}
function New-AzureNativeTypeHdinsightHardwareProfile
{
    param (
        [parameter(mandatory=$False,HelpMessage='The size of the VM)')]
        [string]
        $vmSize
    )

    process
    {
        return $([HardwareProfile]$PSBoundParameters)
    }
}
class AutoscaleTimeAndCapacity
{
    [string] $time
    [int] $minInstanceCount
    [int] $maxInstanceCount
}
function New-AzureNativeTypeHdinsightAutoscaleTimeAndCapacity
{
    param (
        [parameter(mandatory=$False,HelpMessage='24-hour time in the form xx:xx)')]
        [string]
        $time,
        [parameter(mandatory=$False,HelpMessage='The minimum instance count of the cluster)')]
        [int]
        $minInstanceCount,
        [parameter(mandatory=$False,HelpMessage='The maximum instance count of the cluster)')]
        [int]
        $maxInstanceCount
    )

    process
    {
        return $([AutoscaleTimeAndCapacity]$PSBoundParameters)
    }
}
class AutoscaleSchedule
{
    [AutoscaleTimeAndCapacity] $timeAndCapacity
    [ValidateSet('Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday')]
    [string] $days
}
function New-AzureNativeTypeHdinsightAutoscaleSchedule
{
    param (
        [parameter(mandatory=$False,HelpMessage='Time and capacity for a schedule-based autoscale rule)')]
        [AutoscaleTimeAndCapacity]
        $timeAndCapacity,
        [parameter(mandatory=$False,HelpMessage='Days of the week for a schedule-based autoscale rule)')]
        $days
    )

    process
    {
        return $([AutoscaleSchedule]$PSBoundParameters)
    }
}
class AutoscaleRecurrence
{
    [AutoscaleSchedule[]] $schedule
    [string] $timeZone
}
function New-AzureNativeTypeHdinsightAutoscaleRecurrence
{
    param (
        [parameter(mandatory=$False,HelpMessage='Array of schedule-based autoscale rules)')]
        $schedule,
        [parameter(mandatory=$False,HelpMessage='The time zone for the autoscale schedule times)')]
        [string]
        $timeZone
    )

    process
    {
        return $([AutoscaleRecurrence]$PSBoundParameters)
    }
}
class AutoscaleCapacity
{
    [int] $minInstanceCount
    [int] $maxInstanceCount
}
function New-AzureNativeTypeHdinsightAutoscaleCapacity
{
    param (
        [parameter(mandatory=$False,HelpMessage='The minimum instance count of the cluster)')]
        [int]
        $minInstanceCount,
        [parameter(mandatory=$False,HelpMessage='The maximum instance count of the cluster)')]
        [int]
        $maxInstanceCount
    )

    process
    {
        return $([AutoscaleCapacity]$PSBoundParameters)
    }
}
class Autoscale
{
    [AutoscaleRecurrence] $recurrence
    [AutoscaleCapacity] $capacity
}
function New-AzureNativeTypeHdinsightAutoscale
{
    param (
        [parameter(mandatory=$False,HelpMessage='Parameters for schedule-based autoscale)')]
        [AutoscaleRecurrence]
        $recurrence,
        [parameter(mandatory=$False,HelpMessage='Parameters for load-based autoscale)')]
        [AutoscaleCapacity]
        $capacity
    )

    process
    {
        return $([Autoscale]$PSBoundParameters)
    }
}
class DataDisksGroups
{
    [int] $disksPerNode
}
function New-AzureNativeTypeHdinsightDataDisksGroups
{
    param (
        [parameter(mandatory=$False,HelpMessage='The number of disks per node.)')]
        [int]
        $disksPerNode
    )

    process
    {
        return $([DataDisksGroups]$PSBoundParameters)
    }
}
class VirtualNetworkProfile
{
    [string] $id
    [string] $subnet
}
function New-AzureNativeTypeHdinsightVirtualNetworkProfile
{
    param (
        [parameter(mandatory=$False,HelpMessage='The ID of the virtual network.)')]
        [string]
        $id,
        [parameter(mandatory=$False,HelpMessage='The name of the subnet.)')]
        [string]
        $subnet
    )

    process
    {
        return $([VirtualNetworkProfile]$PSBoundParameters)
    }
}
class Role
{
    [bool] $encryptDataDisks
    [string] $name
    [ScriptAction[]] $scriptActions
    [string] $vMGroupName
    [OsProfile] $osProfile
    [int] $targetInstanceCount
    [HardwareProfile] $hardwareProfile
    [Autoscale] $autoscaleConfiguration
    [int] $minInstanceCount
    [DataDisksGroups[]] $dataDisksGroups
    [VirtualNetworkProfile] $virtualNetworkProfile
}
function New-AzureNativeTypeHdinsightRole
{
    param (
        [parameter(mandatory=$False,HelpMessage='Indicates whether encrypt the data disks.)')]
        [bool]
        $encryptDataDisks,
        [parameter(mandatory=$False,HelpMessage='The name of the role.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='The list of script actions on the role.)')]
        $scriptActions,
        [parameter(mandatory=$False,HelpMessage='The name of the virtual machine group.)')]
        [string]
        $vMGroupName,
        [parameter(mandatory=$False,HelpMessage='The operating system profile.)')]
        [OsProfile]
        $osProfile,
        [parameter(mandatory=$False,HelpMessage='The instance count of the cluster.)')]
        [int]
        $targetInstanceCount,
        [parameter(mandatory=$False,HelpMessage='The hardware profile.)')]
        [HardwareProfile]
        $hardwareProfile,
        [parameter(mandatory=$False,HelpMessage='The autoscale configurations.)')]
        [Autoscale]
        $autoscaleConfiguration,
        [parameter(mandatory=$False,HelpMessage='The minimum instance count of the cluster.)')]
        [int]
        $minInstanceCount,
        [parameter(mandatory=$False,HelpMessage='The data disks groups for the role.)')]
        $dataDisksGroups,
        [parameter(mandatory=$False,HelpMessage='The virtual network profile.)')]
        [VirtualNetworkProfile]
        $virtualNetworkProfile
    )

    process
    {
        return $([Role]$PSBoundParameters)
    }
}
class ComputeProfile
{
    [Role[]] $roles
}
function New-AzureNativeTypeHdinsightComputeProfile
{
    param (
        [parameter(mandatory=$False,HelpMessage='The list of roles in the cluster.)')]
        $roles
    )

    process
    {
        return $([ComputeProfile]$PSBoundParameters)
    }
}
class ApplicationGetHttpsEndpoint
{
    [int] $destinationPort
    [string] $privateIPAddress
    [bool] $disableGatewayAuth
    [string] $subDomainSuffix
    [string[]] $accessModes
}
function New-AzureNativeTypeHdinsightApplicationGetHttpsEndpoint
{
    param (
        [parameter(mandatory=$False,HelpMessage='The destination port to connect to.)')]
        [int]
        $destinationPort,
        [parameter(mandatory=$False,HelpMessage='The private ip address of the endpoint.)')]
        [string]
        $privateIPAddress,
        [parameter(mandatory=$False,HelpMessage='The value indicates whether to disable GatewayAuth.)')]
        [bool]
        $disableGatewayAuth,
        [parameter(mandatory=$False,HelpMessage='The subdomain suffix of the application.)')]
        [string]
        $subDomainSuffix,
        [parameter(mandatory=$False,HelpMessage='The list of access modes for the application.)')]
        [string[]]
        $accessModes
    )

    process
    {
        return $([ApplicationGetHttpsEndpoint]$PSBoundParameters)
    }
}
class RuntimeScriptAction
{
    [string] $uri
    [string] $name
    [string[]] $roles
    [string] $parameters
}
function New-AzureNativeTypeHdinsightRuntimeScriptAction
{
    param (
        [parameter(mandatory=$False,HelpMessage='The URI to the script.)')]
        [string]
        $uri,
        [parameter(mandatory=$False,HelpMessage='The name of the script action.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='The list of roles where script will be executed.)')]
        [string[]]
        $roles,
        [parameter(mandatory=$False,HelpMessage='The parameters for the script)')]
        [string]
        $parameters
    )

    process
    {
        return $([RuntimeScriptAction]$PSBoundParameters)
    }
}
class ApplicationGetEndpoint
{
    [int] $destinationPort
    [string] $privateIPAddress
    [int] $publicPort
    [string] $location
}
function New-AzureNativeTypeHdinsightApplicationGetEndpoint
{
    param (
        [parameter(mandatory=$False,HelpMessage='The destination port to connect to.)')]
        [int]
        $destinationPort,
        [parameter(mandatory=$False,HelpMessage='The private ip address of the endpoint.)')]
        [string]
        $privateIPAddress,
        [parameter(mandatory=$False,HelpMessage='The public port to connect to.)')]
        [int]
        $publicPort,
        [parameter(mandatory=$False,HelpMessage='The location of the endpoint.)')]
        [string]
        $location
    )

    process
    {
        return $([ApplicationGetEndpoint]$PSBoundParameters)
    }
}
class ApplicationProperties
{
    [string] $applicationType
    [Errors[]] $errors
    [ComputeProfile] $computeProfile
    [ApplicationGetHttpsEndpoint[]] $httpsEndpoints
    [RuntimeScriptAction[]] $installScriptActions
    [ApplicationGetEndpoint[]] $sshEndpoints
    [RuntimeScriptAction[]] $uninstallScriptActions
}
function New-AzureNativeTypeHdinsightApplicationProperties
{
    param (
        [parameter(mandatory=$False,HelpMessage='The application type.)')]
        [string]
        $applicationType,
        [parameter(mandatory=$False,HelpMessage='The list of errors.)')]
        $errors,
        [parameter(mandatory=$False,HelpMessage='The list of roles in the cluster.)')]
        [ComputeProfile]
        $computeProfile,
        [parameter(mandatory=$False,HelpMessage='The list of application HTTPS endpoints.)')]
        $httpsEndpoints,
        [parameter(mandatory=$False,HelpMessage='The list of install script actions.)')]
        $installScriptActions,
        [parameter(mandatory=$False,HelpMessage='The list of application SSH endpoints.)')]
        $sshEndpoints,
        [parameter(mandatory=$False,HelpMessage='The list of uninstall script actions.)')]
        $uninstallScriptActions
    )

    process
    {
        return $([ApplicationProperties]$PSBoundParameters)
    }
}
function New-AzureNativeHdinsightApplication
{
    [Alias('azure_native_hdinsight_application')]
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the cluster.)')]
        [string]
        $clusterName,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The properties of the application.)')]
        [ApplicationProperties]
        $properties,
        [parameter(mandatory=$False,HelpMessage='The tags for the application.)')]
        [hashtable]
        $tags,
        [parameter(mandatory=$False,HelpMessage='The constant value for the application name.)')]
        [string]
        $applicationName,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid
    )

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

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
class PrivateLinkServiceConnectionState
{
    [string] $description
    [string] $actionsRequired
    [ValidateSet('Approved', 'Rejected', 'Pending', 'Removed')]
    [string] $status
}
function New-AzureNativeTypeHdinsightPrivateLinkServiceConnectionState
{
    param (
        [parameter(mandatory=$False,HelpMessage='The optional description of the status.)')]
        [string]
        $description,
        [parameter(mandatory=$False,HelpMessage='Whether there is further actions.)')]
        [string]
        $actionsRequired,
        [parameter(mandatory=$False,HelpMessage='The concrete private link service connection.)')]
        [string]
        [ValidateSet('Approved', 'Rejected', 'Pending', 'Removed')]
        $status
    )

    process
    {
        return $([PrivateLinkServiceConnectionState]$PSBoundParameters)
    }
}
function New-AzureNativeHdinsightPrivateEndpointConnection
{
    [Alias('azure_native_hdinsight_privateendpointconnection')]
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the cluster.)')]
        [string]
        $clusterName,
        [parameter(mandatory=$False,HelpMessage='The name of the private endpoint connection.)')]
        [string]
        $privateEndpointConnectionName,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The private link service connection state.)')]
        [PrivateLinkServiceConnectionState]
        $privateLinkServiceConnectionState,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid
    )

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
class EncryptionInTransitProperties
{
    [bool] $isEncryptionInTransitEnabled
}
function New-AzureNativeTypeHdinsightEncryptionInTransitProperties
{
    param (
        [parameter(mandatory=$False,HelpMessage='Indicates whether or not inter cluster node communication is encrypted in transit.)')]
        [bool]
        $isEncryptionInTransitEnabled
    )

    process
    {
        return $([EncryptionInTransitProperties]$PSBoundParameters)
    }
}
class NetworkProperties
{
    [ValidateSet('Disabled', 'Enabled')]
    [string] $privateLink
    [ValidateSet('Inbound', 'Outbound')]
    [string] $resourceProviderConnection
}
function New-AzureNativeTypeHdinsightNetworkProperties
{
    param (
        [parameter(mandatory=$False,HelpMessage='Indicates whether or not private link is enabled.)')]
        [string]
        [ValidateSet('Disabled', 'Enabled')]
        $privateLink,
        [parameter(mandatory=$False,HelpMessage='The direction for the resource provider connection.)')]
        [string]
        [ValidateSet('Inbound', 'Outbound')]
        $resourceProviderConnection
    )

    process
    {
        return $([NetworkProperties]$PSBoundParameters)
    }
}
class DiskEncryptionProperties
{
    [string] $keyName
    [string] $vaultUri
    [ValidateSet('RSA-OAEP', 'RSA-OAEP-256', 'RSA1_5')]
    [string] $encryptionAlgorithm
    [ValidateSet('RSA-OAEP', 'RSA-OAEP-256', 'RSA1_5')]
    [bool] $encryptionAtHost
    [ValidateSet('RSA-OAEP', 'RSA-OAEP-256', 'RSA1_5')]
    [string] $keyVersion
    [ValidateSet('RSA-OAEP', 'RSA-OAEP-256', 'RSA1_5')]
    [string] $msiResourceId
}
function New-AzureNativeTypeHdinsightDiskEncryptionProperties
{
    param (
        [parameter(mandatory=$False,HelpMessage='Key name that is used for enabling disk encryption.)')]
        [string]
        $keyName,
        [parameter(mandatory=$False,HelpMessage='Base key vault URI where the customers key is located eg. https://myvault.vault.azure.net)')]
        [string]
        $vaultUri,
        [parameter(mandatory=$False,HelpMessage='Algorithm identifier for encryption, default RSA-OAEP.)')]
        [string]
        [ValidateSet('RSA-OAEP', 'RSA-OAEP-256', 'RSA1_5')]
        $encryptionAlgorithm,
        [parameter(mandatory=$False,HelpMessage='Indicates whether or not resource disk encryption is enabled.)')]
        [bool]
        $encryptionAtHost,
        [parameter(mandatory=$False,HelpMessage='Specific key version that is used for enabling disk encryption.)')]
        [string]
        $keyVersion,
        [parameter(mandatory=$False,HelpMessage='Resource ID of Managed Identity that is used to access the key vault.)')]
        [string]
        $msiResourceId
    )

    process
    {
        return $([DiskEncryptionProperties]$PSBoundParameters)
    }
}
class ComputeIsolationProperties
{
    [bool] $enableComputeIsolation
    [string] $hostSku
}
function New-AzureNativeTypeHdinsightComputeIsolationProperties
{
    param (
        [parameter(mandatory=$False,HelpMessage='The flag indicates whether enable compute isolation or not.)')]
        [bool]
        $enableComputeIsolation,
        [parameter(mandatory=$False,HelpMessage='The host sku.)')]
        [string]
        $hostSku
    )

    process
    {
        return $([ComputeIsolationProperties]$PSBoundParameters)
    }
}
class ClusterDefinition
{
    [object] $configurations
    [string] $blueprint
    [string] $kind
    [object] $componentVersion
}
function New-AzureNativeTypeHdinsightClusterDefinition
{
    param (
        [parameter(mandatory=$False,HelpMessage='The cluster configurations.)')]
        $configurations,
        [parameter(mandatory=$False,HelpMessage='The link to the blueprint.)')]
        [string]
        $blueprint,
        [parameter(mandatory=$False,HelpMessage='The type of cluster.)')]
        [string]
        $kind,
        [parameter(mandatory=$False,HelpMessage='The versions of different services in the cluster.)')]
        [hashtable]
        $componentVersion
    )

    process
    {
        return $([ClusterDefinition]$PSBoundParameters)
    }
}
class SecurityProfile
{
    [string] $organizationalUnitDN
    [string] $aaddsResourceId
    [string] $domainUserPassword
    [string] $msiResourceId
    [string] $domain
    [string[]] $ldapsUrls
    [string] $domainUsername
    [string[]] $clusterUsersGroupDNs
    [ValidateSet('ActiveDirectory')]
    [object] $directoryType
}
function New-AzureNativeTypeHdinsightSecurityProfile
{
    param (
        [parameter(mandatory=$False,HelpMessage='The organizational unit within the Active Directory to place the cluster and service accounts.)')]
        [string]
        $organizationalUnitDN,
        [parameter(mandatory=$False,HelpMessage='The resource ID of the user''s Azure Active Directory Domain Service.)')]
        [string]
        $aaddsResourceId,
        [parameter(mandatory=$False,HelpMessage='The domain admin password.)')]
        [string]
        $domainUserPassword,
        [parameter(mandatory=$False,HelpMessage='User assigned identity that has permissions to read and create cluster-related artifacts in the user''s AADDS.)')]
        [string]
        $msiResourceId,
        [parameter(mandatory=$False,HelpMessage='The organization''s active directory domain.)')]
        [string]
        $domain,
        [parameter(mandatory=$False,HelpMessage='The LDAPS protocol URLs to communicate with the Active Directory.)')]
        [string[]]
        $ldapsUrls,
        [parameter(mandatory=$False,HelpMessage='The domain user account that will have admin privileges on the cluster.)')]
        [string]
        $domainUsername,
        [parameter(mandatory=$False,HelpMessage='Optional. The Distinguished Names for cluster user groups)')]
        [string[]]
        $clusterUsersGroupDNs,
        [parameter(mandatory=$False,HelpMessage='The directory type.)')]
        $directoryType
    )

    process
    {
        return $([SecurityProfile]$PSBoundParameters)
    }
}
class StorageAccount
{
    [string] $name
    [string] $resourceId
    [bool] $isDefault
    [string] $container
    [string] $saskey
    [string] $fileSystem
    [string] $key
    [string] $fileshare
    [string] $msiResourceId
}
function New-AzureNativeTypeHdinsightStorageAccount
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the storage account.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='The resource ID of storage account, only to be specified for Azure Data Lake Storage Gen 2.)')]
        [string]
        $resourceId,
        [parameter(mandatory=$False,HelpMessage='Whether or not the storage account is the default storage account.)')]
        [bool]
        $isDefault,
        [parameter(mandatory=$False,HelpMessage='The container in the storage account, only to be specified for WASB storage accounts.)')]
        [string]
        $container,
        [parameter(mandatory=$False,HelpMessage='The shared access signature key.)')]
        [string]
        $saskey,
        [parameter(mandatory=$False,HelpMessage='The filesystem, only to be specified for Azure Data Lake Storage Gen 2.)')]
        [string]
        $fileSystem,
        [parameter(mandatory=$False,HelpMessage='The storage account access key.)')]
        [string]
        $key,
        [parameter(mandatory=$False,HelpMessage='The file share name.)')]
        [string]
        $fileshare,
        [parameter(mandatory=$False,HelpMessage='The managed identity (MSI) that is allowed to access the storage account, only to be specified for Azure Data Lake Storage Gen 2.)')]
        [string]
        $msiResourceId
    )

    process
    {
        return $([StorageAccount]$PSBoundParameters)
    }
}
class StorageProfile
{
    [StorageAccount[]] $storageaccounts
}
function New-AzureNativeTypeHdinsightStorageProfile
{
    param (
        [parameter(mandatory=$False,HelpMessage='The list of storage accounts in the cluster.)')]
        $storageaccounts
    )

    process
    {
        return $([StorageProfile]$PSBoundParameters)
    }
}
class ClientGroupInfo
{
    [string] $groupName
    [string] $groupId
}
function New-AzureNativeTypeHdinsightClientGroupInfo
{
    param (
        [parameter(mandatory=$False,HelpMessage='The AAD security group name.)')]
        [string]
        $groupName,
        [parameter(mandatory=$False,HelpMessage='The AAD security group id.)')]
        [string]
        $groupId
    )

    process
    {
        return $([ClientGroupInfo]$PSBoundParameters)
    }
}
class KafkaRestProperties
{
    [object] $configurationOverride
    [ClientGroupInfo] $clientGroupInfo
}
function New-AzureNativeTypeHdinsightKafkaRestProperties
{
    param (
        [parameter(mandatory=$False,HelpMessage='The configurations that need to be overriden.)')]
        [hashtable]
        $configurationOverride,
        [parameter(mandatory=$False,HelpMessage='The information of AAD security group.)')]
        [ClientGroupInfo]
        $clientGroupInfo
    )

    process
    {
        return $([KafkaRestProperties]$PSBoundParameters)
    }
}
class ClusterCreateProperties
{
    [EncryptionInTransitProperties] $encryptionInTransitProperties
    [NetworkProperties] $networkProperties
    [string] $clusterVersion
    [DiskEncryptionProperties] $diskEncryptionProperties
    [ComputeIsolationProperties] $computeIsolationProperties
    [ClusterDefinition] $clusterDefinition
    [SecurityProfile] $securityProfile
    [StorageProfile] $storageProfile
    [KafkaRestProperties] $kafkaRestProperties
    [ComputeProfile] $computeProfile
    [ValidateSet('Windows', 'Linux')]
    [object] $osType
    [ValidateSet('Standard', 'Premium')]
    [object] $tier
    [ValidateSet('Standard', 'Premium')]
    [string] $minSupportedTlsVersion
}
function New-AzureNativeTypeHdinsightClusterCreateProperties
{
    param (
        [parameter(mandatory=$False,HelpMessage='The encryption-in-transit properties.)')]
        [EncryptionInTransitProperties]
        $encryptionInTransitProperties,
        [parameter(mandatory=$False,HelpMessage='The network properties.)')]
        [NetworkProperties]
        $networkProperties,
        [parameter(mandatory=$False,HelpMessage='The version of the cluster.)')]
        [string]
        $clusterVersion,
        [parameter(mandatory=$False,HelpMessage='The disk encryption properties.)')]
        [DiskEncryptionProperties]
        $diskEncryptionProperties,
        [parameter(mandatory=$False,HelpMessage='The compute isolation properties.)')]
        [ComputeIsolationProperties]
        $computeIsolationProperties,
        [parameter(mandatory=$False,HelpMessage='The cluster definition.)')]
        [ClusterDefinition]
        $clusterDefinition,
        [parameter(mandatory=$False,HelpMessage='The security profile.)')]
        [SecurityProfile]
        $securityProfile,
        [parameter(mandatory=$False,HelpMessage='The storage profile.)')]
        [StorageProfile]
        $storageProfile,
        [parameter(mandatory=$False,HelpMessage='The cluster kafka rest proxy configuration.)')]
        [KafkaRestProperties]
        $kafkaRestProperties,
        [parameter(mandatory=$False,HelpMessage='The compute profile.)')]
        [ComputeProfile]
        $computeProfile,
        [parameter(mandatory=$False,HelpMessage='The type of operating system.)')]
        $osType,
        [parameter(mandatory=$False,HelpMessage='The cluster tier.)')]
        $tier,
        [parameter(mandatory=$False,HelpMessage='The minimal supported tls version.)')]
        [string]
        $minSupportedTlsVersion
    )

    process
    {
        return $([ClusterCreateProperties]$PSBoundParameters)
    }
}
class ClusterIdentity
{
    [ValidateSet('SystemAssigned', 'UserAssigned', 'SystemAssigned, UserAssigned', 'None')]
    [object] $type
    [ValidateSet('SystemAssigned', 'UserAssigned', 'SystemAssigned, UserAssigned', 'None')]
    [object] $userAssignedIdentities
}
class ClusterIdentityUserAssignedIdentities
{
    [string] $tenantId
}
function New-AzureNativeTypeHdinsightClusterIdentityUserAssignedIdentities
{
    param (
        [parameter(mandatory=$False,HelpMessage='The tenant id of user assigned identity.)')]
        [string]
        $tenantId
    )

    process
    {
        return $([ClusterIdentityUserAssignedIdentities]$PSBoundParameters)
    }
}
function New-AzureNativeTypeHdinsightClusterIdentity
{
    param (
        [parameter(mandatory=$False,HelpMessage='The type of identity used for the cluster. The type ''SystemAssigned, UserAssigned'' includes both an implicitly created identity and a set of user assigned identities.)')]
        $type,
        [parameter(mandatory=$False,HelpMessage='The list of user identities associated with the cluster. The user identity dictionary key references will be ARM resource ids in the form: ''/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{identityName}''.)')]
        [ClusterIdentityUserAssignedIdentities]
        $userAssignedIdentities
    )

    process
    {
        return $([ClusterIdentity]$PSBoundParameters)
    }
}
function New-AzureNativeHdinsightCluster
{
    [Alias('azure_native_hdinsight_cluster')]
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of the cluster.)')]
        [string]
        $clusterName,
        [parameter(mandatory=$False,HelpMessage='The cluster create parameters.)')]
        [ClusterCreateProperties]
        $properties,
        [parameter(mandatory=$False,HelpMessage='The resource tags.)')]
        [hashtable]
        $tags,
        [parameter(mandatory=$False,HelpMessage='The identity of the cluster, if configured.)')]
        [ClusterIdentity]
        $identity,
        [parameter(mandatory=$False,HelpMessage='The location of the cluster.)')]
        [string]
        $location,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid
    )

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

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

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

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

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

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

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

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