All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.pulumi.azurenative.datafactory.kotlin.inputs.GoogleBigQueryLinkedServiceArgs.kt Maven / Gradle / Ivy

@file:Suppress("NAME_SHADOWING", "DEPRECATION")

package com.pulumi.azurenative.datafactory.kotlin.inputs

import com.pulumi.azurenative.datafactory.inputs.GoogleBigQueryLinkedServiceArgs.builder
import com.pulumi.azurenative.datafactory.kotlin.enums.GoogleBigQueryAuthenticationType
import com.pulumi.core.Either
import com.pulumi.core.Output
import com.pulumi.core.Output.of
import com.pulumi.kotlin.ConvertibleToJava
import com.pulumi.kotlin.PulumiNullFieldException
import com.pulumi.kotlin.PulumiTagMarker
import com.pulumi.kotlin.applySuspend
import kotlin.Any
import kotlin.Pair
import kotlin.String
import kotlin.Suppress
import kotlin.Unit
import kotlin.collections.List
import kotlin.collections.Map
import kotlin.jvm.JvmName

/**
 * Google BigQuery service linked service.
 * @property additionalProjects A comma-separated list of public BigQuery projects to access. Type: string (or Expression with resultType string).
 * @property annotations List of tags that can be used for describing the linked service.
 * @property authenticationType The OAuth 2.0 authentication mechanism used for authentication. ServiceAuthentication can only be used on self-hosted IR.
 * @property clientId The client id of the google application used to acquire the refresh token. Type: string (or Expression with resultType string).
 * @property clientSecret The client secret of the google application used to acquire the refresh token.
 * @property connectVia The integration runtime reference.
 * @property description Linked service description.
 * @property email The service account email ID that is used for ServiceAuthentication and can only be used on self-hosted IR. Type: string (or Expression with resultType string).
 * @property encryptedCredential The encrypted credential used for authentication. Credentials are encrypted using the integration runtime credential manager. Type: string.
 * @property keyFilePath The full path to the .p12 key file that is used to authenticate the service account email address and can only be used on self-hosted IR. Type: string (or Expression with resultType string).
 * @property parameters Parameters for linked service.
 * @property project The default BigQuery project to query against. Type: string (or Expression with resultType string).
 * @property refreshToken The refresh token obtained from Google for authorizing access to BigQuery for UserAuthentication.
 * @property requestGoogleDriveScope Whether to request access to Google Drive. Allowing Google Drive access enables support for federated tables that combine BigQuery data with data from Google Drive. The default value is false. Type: string (or Expression with resultType string).
 * @property trustedCertPath The full path of the .pem file containing trusted CA certificates for verifying the server when connecting over SSL. This property can only be set when using SSL on self-hosted IR. The default value is the cacerts.pem file installed with the IR. Type: string (or Expression with resultType string).
 * @property type Type of linked service.
 * Expected value is 'GoogleBigQuery'.
 * @property useSystemTrustStore Specifies whether to use a CA certificate from the system trust store or from a specified PEM file. The default value is false.Type: boolean (or Expression with resultType boolean).
 * @property version Version of the linked service.
 */
public data class GoogleBigQueryLinkedServiceArgs(
    public val additionalProjects: Output? = null,
    public val annotations: Output>? = null,
    public val authenticationType: Output>,
    public val clientId: Output? = null,
    public val clientSecret: Output>? =
        null,
    public val connectVia: Output? = null,
    public val description: Output? = null,
    public val email: Output? = null,
    public val encryptedCredential: Output? = null,
    public val keyFilePath: Output? = null,
    public val parameters: Output>? = null,
    public val project: Output,
    public val refreshToken: Output>? =
        null,
    public val requestGoogleDriveScope: Output? = null,
    public val trustedCertPath: Output? = null,
    public val type: Output,
    public val useSystemTrustStore: Output? = null,
    public val version: Output? = null,
) : ConvertibleToJava {
    override fun toJava(): com.pulumi.azurenative.datafactory.inputs.GoogleBigQueryLinkedServiceArgs =
        com.pulumi.azurenative.datafactory.inputs.GoogleBigQueryLinkedServiceArgs.builder()
            .additionalProjects(additionalProjects?.applyValue({ args0 -> args0 }))
            .annotations(annotations?.applyValue({ args0 -> args0.map({ args0 -> args0 }) }))
            .authenticationType(
                authenticationType.applyValue({ args0 ->
                    args0.transform(
                        { args0 -> args0 },
                        { args0 -> args0.let({ args0 -> args0.toJava() }) },
                    )
                }),
            )
            .clientId(clientId?.applyValue({ args0 -> args0 }))
            .clientSecret(
                clientSecret?.applyValue({ args0 ->
                    args0.transform({ args0 ->
                        args0.let({ args0 ->
                            args0.toJava()
                        })
                    }, { args0 -> args0.let({ args0 -> args0.toJava() }) })
                }),
            )
            .connectVia(connectVia?.applyValue({ args0 -> args0.let({ args0 -> args0.toJava() }) }))
            .description(description?.applyValue({ args0 -> args0 }))
            .email(email?.applyValue({ args0 -> args0 }))
            .encryptedCredential(encryptedCredential?.applyValue({ args0 -> args0 }))
            .keyFilePath(keyFilePath?.applyValue({ args0 -> args0 }))
            .parameters(
                parameters?.applyValue({ args0 ->
                    args0.map({ args0 ->
                        args0.key.to(args0.value.let({ args0 -> args0.toJava() }))
                    }).toMap()
                }),
            )
            .project(project.applyValue({ args0 -> args0 }))
            .refreshToken(
                refreshToken?.applyValue({ args0 ->
                    args0.transform({ args0 ->
                        args0.let({ args0 ->
                            args0.toJava()
                        })
                    }, { args0 -> args0.let({ args0 -> args0.toJava() }) })
                }),
            )
            .requestGoogleDriveScope(requestGoogleDriveScope?.applyValue({ args0 -> args0 }))
            .trustedCertPath(trustedCertPath?.applyValue({ args0 -> args0 }))
            .type(type.applyValue({ args0 -> args0 }))
            .useSystemTrustStore(useSystemTrustStore?.applyValue({ args0 -> args0 }))
            .version(version?.applyValue({ args0 -> args0 })).build()
}

/**
 * Builder for [GoogleBigQueryLinkedServiceArgs].
 */
@PulumiTagMarker
public class GoogleBigQueryLinkedServiceArgsBuilder internal constructor() {
    private var additionalProjects: Output? = null

    private var annotations: Output>? = null

    private var authenticationType: Output>? = null

    private var clientId: Output? = null

    private var clientSecret: Output>? =
        null

    private var connectVia: Output? = null

    private var description: Output? = null

    private var email: Output? = null

    private var encryptedCredential: Output? = null

    private var keyFilePath: Output? = null

    private var parameters: Output>? = null

    private var project: Output? = null

    private var refreshToken: Output>? =
        null

    private var requestGoogleDriveScope: Output? = null

    private var trustedCertPath: Output? = null

    private var type: Output? = null

    private var useSystemTrustStore: Output? = null

    private var version: Output? = null

    /**
     * @param value A comma-separated list of public BigQuery projects to access. Type: string (or Expression with resultType string).
     */
    @JvmName("uhsdqbctremkxqey")
    public suspend fun additionalProjects(`value`: Output) {
        this.additionalProjects = value
    }

    /**
     * @param value List of tags that can be used for describing the linked service.
     */
    @JvmName("xahekmrsrlmrkprt")
    public suspend fun annotations(`value`: Output>) {
        this.annotations = value
    }

    @JvmName("qmnfyivmahyknnwe")
    public suspend fun annotations(vararg values: Output) {
        this.annotations = Output.all(values.asList())
    }

    /**
     * @param values List of tags that can be used for describing the linked service.
     */
    @JvmName("bvmwciufutmwpajf")
    public suspend fun annotations(values: List>) {
        this.annotations = Output.all(values)
    }

    /**
     * @param value The OAuth 2.0 authentication mechanism used for authentication. ServiceAuthentication can only be used on self-hosted IR.
     */
    @JvmName("alkbokkohmqpxujj")
    public suspend fun authenticationType(`value`: Output>) {
        this.authenticationType = value
    }

    /**
     * @param value The client id of the google application used to acquire the refresh token. Type: string (or Expression with resultType string).
     */
    @JvmName("xdfhhpowqftavejq")
    public suspend fun clientId(`value`: Output) {
        this.clientId = value
    }

    /**
     * @param value The client secret of the google application used to acquire the refresh token.
     */
    @JvmName("kxqmplngfocclidr")
    public suspend fun clientSecret(`value`: Output>) {
        this.clientSecret = value
    }

    /**
     * @param value The integration runtime reference.
     */
    @JvmName("cxumssetdqemruat")
    public suspend fun connectVia(`value`: Output) {
        this.connectVia = value
    }

    /**
     * @param value Linked service description.
     */
    @JvmName("bvmetkeuesqloxeb")
    public suspend fun description(`value`: Output) {
        this.description = value
    }

    /**
     * @param value The service account email ID that is used for ServiceAuthentication and can only be used on self-hosted IR. Type: string (or Expression with resultType string).
     */
    @JvmName("cestqnvthrisnpps")
    public suspend fun email(`value`: Output) {
        this.email = value
    }

    /**
     * @param value The encrypted credential used for authentication. Credentials are encrypted using the integration runtime credential manager. Type: string.
     */
    @JvmName("jcmusylwcmgaheqp")
    public suspend fun encryptedCredential(`value`: Output) {
        this.encryptedCredential = value
    }

    /**
     * @param value The full path to the .p12 key file that is used to authenticate the service account email address and can only be used on self-hosted IR. Type: string (or Expression with resultType string).
     */
    @JvmName("eixcvtnnbbjcmiua")
    public suspend fun keyFilePath(`value`: Output) {
        this.keyFilePath = value
    }

    /**
     * @param value Parameters for linked service.
     */
    @JvmName("xjjspcxrueeuoeps")
    public suspend fun parameters(`value`: Output>) {
        this.parameters = value
    }

    /**
     * @param value The default BigQuery project to query against. Type: string (or Expression with resultType string).
     */
    @JvmName("qbopehhvkgswbhtk")
    public suspend fun project(`value`: Output) {
        this.project = value
    }

    /**
     * @param value The refresh token obtained from Google for authorizing access to BigQuery for UserAuthentication.
     */
    @JvmName("xwosnefevghubrsk")
    public suspend fun refreshToken(`value`: Output>) {
        this.refreshToken = value
    }

    /**
     * @param value Whether to request access to Google Drive. Allowing Google Drive access enables support for federated tables that combine BigQuery data with data from Google Drive. The default value is false. Type: string (or Expression with resultType string).
     */
    @JvmName("ywbvvrwtykcxtwqe")
    public suspend fun requestGoogleDriveScope(`value`: Output) {
        this.requestGoogleDriveScope = value
    }

    /**
     * @param value The full path of the .pem file containing trusted CA certificates for verifying the server when connecting over SSL. This property can only be set when using SSL on self-hosted IR. The default value is the cacerts.pem file installed with the IR. Type: string (or Expression with resultType string).
     */
    @JvmName("rwejcvcqdepxgsht")
    public suspend fun trustedCertPath(`value`: Output) {
        this.trustedCertPath = value
    }

    /**
     * @param value Type of linked service.
     * Expected value is 'GoogleBigQuery'.
     */
    @JvmName("lwxoasovwtjcupdl")
    public suspend fun type(`value`: Output) {
        this.type = value
    }

    /**
     * @param value Specifies whether to use a CA certificate from the system trust store or from a specified PEM file. The default value is false.Type: boolean (or Expression with resultType boolean).
     */
    @JvmName("vdhnqhwiibxeylxw")
    public suspend fun useSystemTrustStore(`value`: Output) {
        this.useSystemTrustStore = value
    }

    /**
     * @param value Version of the linked service.
     */
    @JvmName("dhhfivwoywugycys")
    public suspend fun version(`value`: Output) {
        this.version = value
    }

    /**
     * @param value A comma-separated list of public BigQuery projects to access. Type: string (or Expression with resultType string).
     */
    @JvmName("prsdrixdywtyfqpl")
    public suspend fun additionalProjects(`value`: Any?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.additionalProjects = mapped
    }

    /**
     * @param value List of tags that can be used for describing the linked service.
     */
    @JvmName("jpmlvynoxmtcbckk")
    public suspend fun annotations(`value`: List?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.annotations = mapped
    }

    /**
     * @param values List of tags that can be used for describing the linked service.
     */
    @JvmName("mgbpyqipbrfdyfqf")
    public suspend fun annotations(vararg values: Any) {
        val toBeMapped = values.toList()
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.annotations = mapped
    }

    /**
     * @param value The OAuth 2.0 authentication mechanism used for authentication. ServiceAuthentication can only be used on self-hosted IR.
     */
    @JvmName("uljvdxrgkjtovtag")
    public suspend fun authenticationType(`value`: Either) {
        val toBeMapped = value
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.authenticationType = mapped
    }

    /**
     * @param value The OAuth 2.0 authentication mechanism used for authentication. ServiceAuthentication can only be used on self-hosted IR.
     */
    @JvmName("dyxwclmnliccrwcv")
    public fun authenticationType(`value`: String) {
        val toBeMapped = Either.ofLeft(value)
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.authenticationType = mapped
    }

    /**
     * @param value The OAuth 2.0 authentication mechanism used for authentication. ServiceAuthentication can only be used on self-hosted IR.
     */
    @JvmName("vvnysisuesniwbtn")
    public fun authenticationType(`value`: GoogleBigQueryAuthenticationType) {
        val toBeMapped = Either.ofRight(value)
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.authenticationType = mapped
    }

    /**
     * @param value The client id of the google application used to acquire the refresh token. Type: string (or Expression with resultType string).
     */
    @JvmName("ukmlbuevisvssnlc")
    public suspend fun clientId(`value`: Any?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.clientId = mapped
    }

    /**
     * @param value The client secret of the google application used to acquire the refresh token.
     */
    @JvmName("ulffqwirfdqyfqgh")
    public suspend fun clientSecret(`value`: Either?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.clientSecret = mapped
    }

    /**
     * @param value The client secret of the google application used to acquire the refresh token.
     */
    @JvmName("cipuftxgbbtipuki")
    public fun clientSecret(`value`: AzureKeyVaultSecretReferenceArgs) {
        val toBeMapped = Either.ofLeft(value)
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.clientSecret = mapped
    }

    /**
     * @param value The client secret of the google application used to acquire the refresh token.
     */
    @JvmName("iyyemlplttmdwspm")
    public fun clientSecret(`value`: SecureStringArgs) {
        val toBeMapped = Either.ofRight(value)
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.clientSecret = mapped
    }

    /**
     * @param value The integration runtime reference.
     */
    @JvmName("kayuocytytvwmlfv")
    public suspend fun connectVia(`value`: IntegrationRuntimeReferenceArgs?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.connectVia = mapped
    }

    /**
     * @param argument The integration runtime reference.
     */
    @JvmName("txxjtutkutocmujk")
    public suspend fun connectVia(argument: suspend IntegrationRuntimeReferenceArgsBuilder.() -> Unit) {
        val toBeMapped = IntegrationRuntimeReferenceArgsBuilder().applySuspend { argument() }.build()
        val mapped = of(toBeMapped)
        this.connectVia = mapped
    }

    /**
     * @param value Linked service description.
     */
    @JvmName("pekidfyhxkqlotdc")
    public suspend fun description(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.description = mapped
    }

    /**
     * @param value The service account email ID that is used for ServiceAuthentication and can only be used on self-hosted IR. Type: string (or Expression with resultType string).
     */
    @JvmName("mcxcjcpxeyygcmnw")
    public suspend fun email(`value`: Any?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.email = mapped
    }

    /**
     * @param value The encrypted credential used for authentication. Credentials are encrypted using the integration runtime credential manager. Type: string.
     */
    @JvmName("iodrqhiqdelojhme")
    public suspend fun encryptedCredential(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.encryptedCredential = mapped
    }

    /**
     * @param value The full path to the .p12 key file that is used to authenticate the service account email address and can only be used on self-hosted IR. Type: string (or Expression with resultType string).
     */
    @JvmName("ypfchocgabhwwrkg")
    public suspend fun keyFilePath(`value`: Any?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.keyFilePath = mapped
    }

    /**
     * @param value Parameters for linked service.
     */
    @JvmName("oepnbabsonuubquj")
    public suspend fun parameters(`value`: Map?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.parameters = mapped
    }

    /**
     * @param argument Parameters for linked service.
     */
    @JvmName("iehilsoicvanpqpv")
    public suspend fun parameters(vararg argument: Pair Unit>) {
        val toBeMapped = argument.toList().map { (left, right) ->
            left to
                ParameterSpecificationArgsBuilder().applySuspend { right() }.build()
        }.toMap()
        val mapped = of(toBeMapped)
        this.parameters = mapped
    }

    /**
     * @param values Parameters for linked service.
     */
    @JvmName("jjubbdoklqmxsbft")
    public fun parameters(vararg values: Pair) {
        val toBeMapped = values.toMap()
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.parameters = mapped
    }

    /**
     * @param value The default BigQuery project to query against. Type: string (or Expression with resultType string).
     */
    @JvmName("rnkhjyrhnbbgowyy")
    public suspend fun project(`value`: Any) {
        val toBeMapped = value
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.project = mapped
    }

    /**
     * @param value The refresh token obtained from Google for authorizing access to BigQuery for UserAuthentication.
     */
    @JvmName("kstmfmsndstogiim")
    public suspend fun refreshToken(`value`: Either?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.refreshToken = mapped
    }

    /**
     * @param value The refresh token obtained from Google for authorizing access to BigQuery for UserAuthentication.
     */
    @JvmName("dpculutbosrwmywv")
    public fun refreshToken(`value`: AzureKeyVaultSecretReferenceArgs) {
        val toBeMapped = Either.ofLeft(value)
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.refreshToken = mapped
    }

    /**
     * @param value The refresh token obtained from Google for authorizing access to BigQuery for UserAuthentication.
     */
    @JvmName("gmbgkjmjleiahfmq")
    public fun refreshToken(`value`: SecureStringArgs) {
        val toBeMapped = Either.ofRight(value)
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.refreshToken = mapped
    }

    /**
     * @param value Whether to request access to Google Drive. Allowing Google Drive access enables support for federated tables that combine BigQuery data with data from Google Drive. The default value is false. Type: string (or Expression with resultType string).
     */
    @JvmName("steqdiviwsypgjxu")
    public suspend fun requestGoogleDriveScope(`value`: Any?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.requestGoogleDriveScope = mapped
    }

    /**
     * @param value The full path of the .pem file containing trusted CA certificates for verifying the server when connecting over SSL. This property can only be set when using SSL on self-hosted IR. The default value is the cacerts.pem file installed with the IR. Type: string (or Expression with resultType string).
     */
    @JvmName("fbhjutxmjuxhqudg")
    public suspend fun trustedCertPath(`value`: Any?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.trustedCertPath = mapped
    }

    /**
     * @param value Type of linked service.
     * Expected value is 'GoogleBigQuery'.
     */
    @JvmName("lmjcuppebqpxxffd")
    public suspend fun type(`value`: String) {
        val toBeMapped = value
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.type = mapped
    }

    /**
     * @param value Specifies whether to use a CA certificate from the system trust store or from a specified PEM file. The default value is false.Type: boolean (or Expression with resultType boolean).
     */
    @JvmName("gpqavgbfohfpxemg")
    public suspend fun useSystemTrustStore(`value`: Any?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.useSystemTrustStore = mapped
    }

    /**
     * @param value Version of the linked service.
     */
    @JvmName("pyykqghvcalvvofh")
    public suspend fun version(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.version = mapped
    }

    internal fun build(): GoogleBigQueryLinkedServiceArgs = GoogleBigQueryLinkedServiceArgs(
        additionalProjects = additionalProjects,
        annotations = annotations,
        authenticationType = authenticationType ?: throw PulumiNullFieldException("authenticationType"),
        clientId = clientId,
        clientSecret = clientSecret,
        connectVia = connectVia,
        description = description,
        email = email,
        encryptedCredential = encryptedCredential,
        keyFilePath = keyFilePath,
        parameters = parameters,
        project = project ?: throw PulumiNullFieldException("project"),
        refreshToken = refreshToken,
        requestGoogleDriveScope = requestGoogleDriveScope,
        trustedCertPath = trustedCertPath,
        type = type ?: throw PulumiNullFieldException("type"),
        useSystemTrustStore = useSystemTrustStore,
        version = version,
    )
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy