pspulumiyaml.azurenative.azurearcdata.psm1

using module @{ ModuleName = "PSPulumiYaml"; ModuleVersion = "0.0.3"; GUID = "909344e0-a08f-45f6-8177-80e36bb2ba58" }
function Invoke-AzureNativeFunctionAzurearcdataGetActiveDirectoryConnector
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the Azure resource group)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of the data controller)')]
        [string]
        $dataControllerName,
        [parameter(mandatory=$False,HelpMessage='The name of the Active Directory connector instance)')]
        [string]
        $activeDirectoryConnectorName
    )

    process
    {
        $arguments = @{}
        $arguments["activeDirectoryConnectorName"] = $activeDirectoryConnectorName
        $arguments["dataControllerName"] = $dataControllerName
        $arguments["resourceGroupName"] = $resourceGroupName

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

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

        $functionObject = Invoke-PulumiFunction -Name azure-native:azurearcdata:getDataController -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionAzurearcdataGetSqlManagedInstance
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the Azure resource group)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Name of SQL Managed Instance)')]
        [string]
        $sqlManagedInstanceName
    )

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

        $functionObject = Invoke-PulumiFunction -Name azure-native:azurearcdata:getSqlManagedInstance -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionAzurearcdataGetSqlServerInstance
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the Azure resource group)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Name of SQL Server Instance)')]
        [string]
        $sqlServerInstanceName
    )

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

        $functionObject = Invoke-PulumiFunction -Name azure-native:azurearcdata:getSqlServerInstance -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionAzurearcdataGetPostgresInstance
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the Azure resource group)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Name of Postgres Instance)')]
        [string]
        $postgresInstanceName
    )

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

        $functionObject = Invoke-PulumiFunction -Name azure-native:azurearcdata:getPostgresInstance -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
class LogAnalyticsWorkspaceConfig
{
    [string] $primaryKey
    [string] $workspaceId
}
function New-AzureNativeTypeAzurearcdataLogAnalyticsWorkspaceConfig
{
    param (
        [parameter(mandatory=$False,HelpMessage='Primary key of the workspace)')]
        [string]
        $primaryKey,
        [parameter(mandatory=$False,HelpMessage='Azure Log Analytics workspace ID)')]
        [string]
        $workspaceId
    )

    process
    {
        return $([LogAnalyticsWorkspaceConfig]$PSBoundParameters)
    }
}
class BasicLoginInformation
{
    [string] $username
    [string] $password
}
function New-AzureNativeTypeAzurearcdataBasicLoginInformation
{
    param (
        [parameter(mandatory=$False,HelpMessage='Login username.)')]
        [string]
        $username,
        [parameter(mandatory=$False,HelpMessage='Login password.)')]
        [string]
        $password
    )

    process
    {
        return $([BasicLoginInformation]$PSBoundParameters)
    }
}
class UploadServicePrincipal
{
    [string] $clientSecret
    [string] $authority
    [string] $clientId
    [string] $tenantId
}
function New-AzureNativeTypeAzurearcdataUploadServicePrincipal
{
    param (
        [parameter(mandatory=$False,HelpMessage='Secret of the service principal)')]
        [string]
        $clientSecret,
        [parameter(mandatory=$False,HelpMessage='Authority for the service principal. Example: https://login.microsoftonline.com/)')]
        [string]
        $authority,
        [parameter(mandatory=$False,HelpMessage='Client ID of the service principal for uploading data.)')]
        [string]
        $clientId,
        [parameter(mandatory=$False,HelpMessage='Tenant ID of the service principal.)')]
        [string]
        $tenantId
    )

    process
    {
        return $([UploadServicePrincipal]$PSBoundParameters)
    }
}
class OnPremiseProperty
{
    [string] $signingCertificateThumbprint
    [string] $publicSigningKey
    [string] $id
}
function New-AzureNativeTypeAzurearcdataOnPremiseProperty
{
    param (
        [parameter(mandatory=$False,HelpMessage='Unique thumbprint returned to customer to verify the certificate being uploaded)')]
        [string]
        $signingCertificateThumbprint,
        [parameter(mandatory=$False,HelpMessage='Certificate that contains the Kubernetes cluster public key used to verify signing)')]
        [string]
        $publicSigningKey,
        [parameter(mandatory=$False,HelpMessage='A globally unique ID identifying the associated Kubernetes cluster)')]
        [string]
        $id
    )

    process
    {
        return $([OnPremiseProperty]$PSBoundParameters)
    }
}
class UploadWatermark
{
    [string] $logs
    [string] $metrics
    [string] $usages
}
function New-AzureNativeTypeAzurearcdataUploadWatermark
{
    param (
        [parameter(mandatory=$False,HelpMessage='Last uploaded date for logs from kubernetes cluster. Defaults to current date time)')]
        [string]
        $logs,
        [parameter(mandatory=$False,HelpMessage='Last uploaded date for metrics from kubernetes cluster. Defaults to current date time)')]
        [string]
        $metrics,
        [parameter(mandatory=$False,HelpMessage='Last uploaded date for usages from kubernetes cluster. Defaults to current date time)')]
        [string]
        $usages
    )

    process
    {
        return $([UploadWatermark]$PSBoundParameters)
    }
}
class DataControllerProperties
{
    [LogAnalyticsWorkspaceConfig] $logAnalyticsWorkspaceConfig
    [object] $k8sRaw
    [BasicLoginInformation] $basicLoginInformation
    [UploadServicePrincipal] $uploadServicePrincipal
    [OnPremiseProperty] $onPremiseProperty
    [UploadWatermark] $uploadWatermark
    [string] $lastUploadedDate
}
function New-AzureNativeTypeAzurearcdataDataControllerProperties
{
    param (
        [parameter(mandatory=$False,HelpMessage='Log analytics workspace id and primary key)')]
        [LogAnalyticsWorkspaceConfig]
        $logAnalyticsWorkspaceConfig,
        [parameter(mandatory=$False,HelpMessage='The raw kubernetes information)')]
        $k8sRaw,
        [parameter(mandatory=$False,HelpMessage='Username and password for basic login authentication.)')]
        [BasicLoginInformation]
        $basicLoginInformation,
        [parameter(mandatory=$False,HelpMessage='Service principal for uploading billing, metrics and logs.)')]
        [UploadServicePrincipal]
        $uploadServicePrincipal,
        [parameter(mandatory=$False,HelpMessage='Properties from the Kubernetes data controller)')]
        [OnPremiseProperty]
        $onPremiseProperty,
        [parameter(mandatory=$False,HelpMessage='Properties on upload watermark. Mostly timestamp for each upload data type)')]
        [UploadWatermark]
        $uploadWatermark,
        [parameter(mandatory=$False,HelpMessage='Last uploaded date from Kubernetes cluster. Defaults to current date time)')]
        [string]
        $lastUploadedDate
    )

    process
    {
        return $([DataControllerProperties]$PSBoundParameters)
    }
}
class ExtendedLocation
{
    [ArgumentCompletions('CustomLocation')]
    [string] $type
    [string] $name
}
function New-AzureNativeTypeAzurearcdataExtendedLocation
{
    param (
        [parameter(mandatory=$False,HelpMessage='The type of the extended location.)')]
        [string]
        [ArgumentCompletions('CustomLocation')]
        $type,
        [parameter(mandatory=$False,HelpMessage='The name of the extended location.)')]
        [string]
        $name
    )

    process
    {
        return $([ExtendedLocation]$PSBoundParameters)
    }
}
function New-AzureNativeAzurearcdataDataController
{
    [Alias('azure_native_azurearcdata_datacontroller')]
    param (
        [parameter(mandatory=$False,HelpMessage='The data controller''s properties)')]
        [DataControllerProperties]
        $properties,
        [parameter(mandatory=$False,HelpMessage='The name of the Azure resource group)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The geo-location where the resource lives)')]
        [string]
        $location,
        [parameter(mandatory=$False,HelpMessage=')')]
        [string]
        $dataControllerName,
        [parameter(mandatory=$False,HelpMessage='The extendedLocation of the resource.)')]
        [ExtendedLocation]
        $extendedLocation,
        [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:azurearcdata:DataController")

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

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

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
class PostgresInstanceProperties
{
    [string] $admin
    [string] $dataControllerId
    [object] $k8sRaw
    [BasicLoginInformation] $basicLoginInformation
    [string] $lastUploadedDate
}
function New-AzureNativeTypeAzurearcdataPostgresInstanceProperties
{
    param (
        [parameter(mandatory=$False,HelpMessage='The instance admin)')]
        [string]
        $admin,
        [parameter(mandatory=$False,HelpMessage='The data controller id)')]
        [string]
        $dataControllerId,
        [parameter(mandatory=$False,HelpMessage='The raw kubernetes information)')]
        $k8sRaw,
        [parameter(mandatory=$False,HelpMessage='Username and password for basic authentication.)')]
        [BasicLoginInformation]
        $basicLoginInformation,
        [parameter(mandatory=$False,HelpMessage='Last uploaded date from Kubernetes cluster. Defaults to current date time)')]
        [string]
        $lastUploadedDate
    )

    process
    {
        return $([PostgresInstanceProperties]$PSBoundParameters)
    }
}
class PostgresInstanceSku
{
    [string] $family
    [bool] $dev
    [int] $capacity
    [string] $name
    [string] $size
    [ArgumentCompletions('Hyperscale')]
    [object] $tier
}
function New-AzureNativeTypeAzurearcdataPostgresInstanceSku
{
    param (
        [parameter(mandatory=$False,HelpMessage='If the service has different generations of hardware, for the same SKU, then that can be captured here.)')]
        [string]
        $family,
        [parameter(mandatory=$False,HelpMessage='Whether dev/test is enabled. When the dev field is set to true, the resource is used for dev/test purpose. )')]
        [bool]
        $dev,
        [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='The name of the SKU. 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='This field is required to be implemented by the Resource Provider if the service has more than one tier.)')]
        $tier
    )

    process
    {
        return $([PostgresInstanceSku]$PSBoundParameters)
    }
}
function New-AzureNativeAzurearcdataPostgresInstance
{
    [Alias('azure_native_azurearcdata_postgresinstance')]
    param (
        [parameter(mandatory=$False,HelpMessage='null)')]
        [PostgresInstanceProperties]
        $properties,
        [parameter(mandatory=$False,HelpMessage='Name of PostgresInstance)')]
        [string]
        $postgresInstanceName,
        [parameter(mandatory=$False,HelpMessage='The geo-location where the resource lives)')]
        [string]
        $location,
        [parameter(mandatory=$False,HelpMessage='The extendedLocation of the resource.)')]
        [ExtendedLocation]
        $extendedLocation,
        [parameter(mandatory=$False,HelpMessage='Resource tags.)')]
        [hashtable]
        $tags,
        [parameter(mandatory=$False,HelpMessage='Resource sku.)')]
        [PostgresInstanceSku]
        $sku,
        [parameter(mandatory=$False,HelpMessage='The name of the Azure resource group)')]
        [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:azurearcdata:PostgresInstance")

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

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

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

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
class SqlManagedInstanceProperties
{
    [string] $startTime
    [object] $k8sRaw
    [BasicLoginInformation] $basicLoginInformation
    [string] $lastUploadedDate
    [string] $dataControllerId
    [string] $endTime
    [string] $admin
}
function New-AzureNativeTypeAzurearcdataSqlManagedInstanceProperties
{
    param (
        [parameter(mandatory=$False,HelpMessage='The instance start time)')]
        [string]
        $startTime,
        [parameter(mandatory=$False,HelpMessage='The raw kubernetes information)')]
        $k8sRaw,
        [parameter(mandatory=$False,HelpMessage='Username and password for basic authentication.)')]
        [BasicLoginInformation]
        $basicLoginInformation,
        [parameter(mandatory=$False,HelpMessage='Last uploaded date from Kubernetes cluster. Defaults to current date time)')]
        [string]
        $lastUploadedDate,
        [parameter(mandatory=$False,HelpMessage='null)')]
        [string]
        $dataControllerId,
        [parameter(mandatory=$False,HelpMessage='The instance end time)')]
        [string]
        $endTime,
        [parameter(mandatory=$False,HelpMessage='The instance admin user)')]
        [string]
        $admin
    )

    process
    {
        return $([SqlManagedInstanceProperties]$PSBoundParameters)
    }
}
class SqlManagedInstanceSku
{
    [string] $family
    [bool] $dev
    [int] $capacity
    [string] $name
    [string] $size
    [ArgumentCompletions('GeneralPurpose', 'BusinessCritical')]
    [object] $tier
}
function New-AzureNativeTypeAzurearcdataSqlManagedInstanceSku
{
    param (
        [parameter(mandatory=$False,HelpMessage='If the service has different generations of hardware, for the same SKU, then that can be captured here.)')]
        [string]
        $family,
        [parameter(mandatory=$False,HelpMessage='Whether dev/test is enabled. When the dev field is set to true, the resource is used for dev/test purpose. )')]
        [bool]
        $dev,
        [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='The name of the SKU. 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='This field is required to be implemented by the Resource Provider if the service has more than one tier.)')]
        $tier
    )

    process
    {
        return $([SqlManagedInstanceSku]$PSBoundParameters)
    }
}
function New-AzureNativeAzurearcdataSqlManagedInstance
{
    [Alias('azure_native_azurearcdata_sqlmanagedinstance')]
    param (
        [parameter(mandatory=$False,HelpMessage='null)')]
        [SqlManagedInstanceProperties]
        $properties,
        [parameter(mandatory=$False,HelpMessage='The name of the Azure resource group)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The geo-location where the resource lives)')]
        [string]
        $location,
        [parameter(mandatory=$False,HelpMessage='The name of SQL Managed Instances)')]
        [string]
        $sqlManagedInstanceName,
        [parameter(mandatory=$False,HelpMessage='The extendedLocation of the resource.)')]
        [ExtendedLocation]
        $extendedLocation,
        [parameter(mandatory=$False,HelpMessage='Resource tags.)')]
        [hashtable]
        $tags,
        [parameter(mandatory=$False,HelpMessage='Resource sku.)')]
        [SqlManagedInstanceSku]
        $sku,
        [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:azurearcdata:SqlManagedInstance")

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

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

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

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
class SqlServerInstanceProperties
{
    [string] $containerResourceId
    [string] $currentVersion
    [string] $version
    [string] $status
    [string] $tcpDynamicPorts
    [string] $instanceName
    [string] $tcpStaticPorts
    [string] $productId
    [string] $licenseType
    [string] $collation
    [string] $edition
    [string] $patchLevel
    [string] $vCore
}
function New-AzureNativeTypeAzurearcdataSqlServerInstanceProperties
{
    param (
        [parameter(mandatory=$False,HelpMessage='ARM Resource id of the container resource (Azure Arc for Servers).)')]
        [string]
        $containerResourceId,
        [parameter(mandatory=$False,HelpMessage='SQL Server current version.)')]
        [string]
        $currentVersion,
        [parameter(mandatory=$False,HelpMessage='SQL Server version.)')]
        [string]
        $version,
        [parameter(mandatory=$False,HelpMessage='The cloud connectivity status.)')]
        [string]
        $status,
        [parameter(mandatory=$False,HelpMessage='Dynamic TCP ports used by SQL Server.)')]
        [string]
        $tcpDynamicPorts,
        [parameter(mandatory=$False,HelpMessage='SQL Server instance name.)')]
        [string]
        $instanceName,
        [parameter(mandatory=$False,HelpMessage='Static TCP ports used by SQL Server.)')]
        [string]
        $tcpStaticPorts,
        [parameter(mandatory=$False,HelpMessage='SQL Server product ID.)')]
        [string]
        $productId,
        [parameter(mandatory=$False,HelpMessage='SQL Server license type.)')]
        [string]
        $licenseType,
        [parameter(mandatory=$False,HelpMessage='SQL Server collation.)')]
        [string]
        $collation,
        [parameter(mandatory=$False,HelpMessage='SQL Server edition.)')]
        [string]
        $edition,
        [parameter(mandatory=$False,HelpMessage='SQL Server update level.)')]
        [string]
        $patchLevel,
        [parameter(mandatory=$False,HelpMessage='The number of logical processors used by the SQL Server instance.)')]
        [string]
        $vCore
    )

    process
    {
        return $([SqlServerInstanceProperties]$PSBoundParameters)
    }
}
function New-AzureNativeAzurearcdataSqlServerInstance
{
    [Alias('azure_native_azurearcdata_sqlserverinstance')]
    param (
        [parameter(mandatory=$False,HelpMessage='The geo-location where the resource lives)')]
        [string]
        $location,
        [parameter(mandatory=$False,HelpMessage='null)')]
        [SqlServerInstanceProperties]
        $properties,
        [parameter(mandatory=$False,HelpMessage='The name of the Azure resource group)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of SQL Server Instance)')]
        [string]
        $sqlServerInstanceName,
        [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:azurearcdata:SqlServerInstance")

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

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

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
class ActiveDirectoryDomainController
{
    [string] $hostname
}
function New-AzureNativeTypeAzurearcdataActiveDirectoryDomainController
{
    param (
        [parameter(mandatory=$False,HelpMessage='Fully-qualified domain name of a domain controller in the AD domain.)')]
        [string]
        $hostname
    )

    process
    {
        return $([ActiveDirectoryDomainController]$PSBoundParameters)
    }
}
class ActiveDirectoryDomainControllers
{
    [ActiveDirectoryDomainController[]] $secondaryDomainControllers
    [ActiveDirectoryDomainController] $primaryDomainController
}
function New-AzureNativeTypeAzurearcdataActiveDirectoryDomainControllers
{
    param (
        [parameter(mandatory=$False,HelpMessage='null)')]
        $secondaryDomainControllers,
        [parameter(mandatory=$False,HelpMessage='Information about the Primary Domain Controller (PDC) in the AD domain.)')]
        [ActiveDirectoryDomainController]
        $primaryDomainController
    )

    process
    {
        return $([ActiveDirectoryDomainControllers]$PSBoundParameters)
    }
}
class ActiveDirectoryConnectorDomainDetails
{
    [ActiveDirectoryDomainControllers] $domainControllers
    [string] $realm
    [string] $netbiosDomainName
    [string] $ouDistinguishedName
    [ArgumentCompletions('automatic', 'manual')]
    [string] $serviceAccountProvisioning
}
function New-AzureNativeTypeAzurearcdataActiveDirectoryConnectorDomainDetails
{
    param (
        [parameter(mandatory=$False,HelpMessage='null)')]
        [ActiveDirectoryDomainControllers]
        $domainControllers,
        [parameter(mandatory=$False,HelpMessage='Name (uppercase) of the Active Directory domain that this AD connector will be associated with.)')]
        [string]
        $realm,
        [parameter(mandatory=$False,HelpMessage='NETBIOS name of the Active Directory domain.)')]
        [string]
        $netbiosDomainName,
        [parameter(mandatory=$False,HelpMessage='The distinguished name of the Active Directory Organizational Unit.)')]
        [string]
        $ouDistinguishedName,
        [parameter(mandatory=$False,HelpMessage='The service account provisioning mode for this Active Directory connector.)')]
        [string]
        [ArgumentCompletions('automatic', 'manual')]
        $serviceAccountProvisioning
    )

    process
    {
        return $([ActiveDirectoryConnectorDomainDetails]$PSBoundParameters)
    }
}
class ActiveDirectoryConnectorDNSDetails
{
    [string[]] $nameserverIPAddresses
    [int] $replicas
    [bool] $preferK8sDnsForPtrLookups
    [string] $domainName
}
function New-AzureNativeTypeAzurearcdataActiveDirectoryConnectorDNSDetails
{
    param (
        [parameter(mandatory=$False,HelpMessage='List of Active Directory DNS server IP addresses.)')]
        [string[]]
        $nameserverIPAddresses,
        [parameter(mandatory=$False,HelpMessage='Replica count for DNS proxy service. Default value is 1.)')]
        [int]
        $replicas,
        [parameter(mandatory=$False,HelpMessage='Flag indicating whether to prefer Kubernetes DNS server response over AD DNS server response for IP address lookups.)')]
        [bool]
        $preferK8sDnsForPtrLookups,
        [parameter(mandatory=$False,HelpMessage='DNS domain name for which DNS lookups should be forwarded to the Active Directory DNS servers.)')]
        [string]
        $domainName
    )

    process
    {
        return $([ActiveDirectoryConnectorDNSDetails]$PSBoundParameters)
    }
}
class ActiveDirectoryConnectorSpec
{
    [ActiveDirectoryConnectorDomainDetails] $activeDirectory
    [ActiveDirectoryConnectorDNSDetails] $dns
}
function New-AzureNativeTypeAzurearcdataActiveDirectoryConnectorSpec
{
    param (
        [parameter(mandatory=$False,HelpMessage='null)')]
        [ActiveDirectoryConnectorDomainDetails]
        $activeDirectory,
        [parameter(mandatory=$False,HelpMessage='null)')]
        [ActiveDirectoryConnectorDNSDetails]
        $dns
    )

    process
    {
        return $([ActiveDirectoryConnectorSpec]$PSBoundParameters)
    }
}
class ActiveDirectoryConnectorStatus
{
    [int] $observedGeneration
    [string] $lastUpdateTime
    [string] $state
}
function New-AzureNativeTypeAzurearcdataActiveDirectoryConnectorStatus
{
    param (
        [parameter(mandatory=$False,HelpMessage='The version of the replicaSet associated with the AD connector custom resource.)')]
        [int]
        $observedGeneration,
        [parameter(mandatory=$False,HelpMessage='The time that the custom resource was last updated.)')]
        [string]
        $lastUpdateTime,
        [parameter(mandatory=$False,HelpMessage='The state of the AD connector custom resource.)')]
        [string]
        $state
    )

    process
    {
        return $([ActiveDirectoryConnectorStatus]$PSBoundParameters)
    }
}
class ActiveDirectoryConnectorProperties
{
    [ActiveDirectoryConnectorSpec] $spec
    [BasicLoginInformation] $domainServiceAccountLoginInformation
    [ActiveDirectoryConnectorStatus] $status
}
function New-AzureNativeTypeAzurearcdataActiveDirectoryConnectorProperties
{
    param (
        [parameter(mandatory=$False,HelpMessage='null)')]
        [ActiveDirectoryConnectorSpec]
        $spec,
        [parameter(mandatory=$False,HelpMessage='Username and password for domain service account authentication.)')]
        [BasicLoginInformation]
        $domainServiceAccountLoginInformation,
        [parameter(mandatory=$False,HelpMessage='null)')]
        [ActiveDirectoryConnectorStatus]
        $status
    )

    process
    {
        return $([ActiveDirectoryConnectorProperties]$PSBoundParameters)
    }
}
function New-AzureNativeAzurearcdataActiveDirectoryConnector
{
    [Alias('azure_native_azurearcdata_activedirectoryconnector')]
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the Azure resource group)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='null)')]
        [ActiveDirectoryConnectorProperties]
        $properties,
        [parameter(mandatory=$False,HelpMessage='The name of the data controller)')]
        [string]
        $dataControllerName,
        [parameter(mandatory=$False,HelpMessage='The name of the Active Directory connector instance)')]
        [string]
        $activeDirectoryConnectorName,
        [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:azurearcdata:ActiveDirectoryConnector")

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

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

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