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

com.pulumi.gcp.dataproc.kotlin.inputs.WorkflowTemplatePlacementManagedClusterConfigGceClusterConfigArgs.kt Maven / Gradle / Ivy

Go to download

Build cloud applications and infrastructure by combining the safety and reliability of infrastructure as code with the power of the Kotlin programming language.

There is a newer version: 8.12.0.0
Show newest version
@file:Suppress("NAME_SHADOWING", "DEPRECATION")

package com.pulumi.gcp.dataproc.kotlin.inputs

import com.pulumi.core.Output
import com.pulumi.core.Output.of
import com.pulumi.gcp.dataproc.inputs.WorkflowTemplatePlacementManagedClusterConfigGceClusterConfigArgs.builder
import com.pulumi.kotlin.ConvertibleToJava
import com.pulumi.kotlin.PulumiTagMarker
import com.pulumi.kotlin.applySuspend
import kotlin.Boolean
import kotlin.Pair
import kotlin.String
import kotlin.Suppress
import kotlin.Unit
import kotlin.collections.List
import kotlin.collections.Map
import kotlin.jvm.JvmName

/**
 *
 * @property internalIpOnly If true, all instances in the cluster will only have internal IP addresses. By default, clusters are not restricted to internal IP addresses, and will have ephemeral external IP addresses assigned to each instance. This `internal_ip_only` restriction can only be enabled for subnetwork enabled networks, and all off-cluster dependencies must be configured to be accessible without external IP addresses.
 * @property metadata The Compute Engine metadata entries to add to all instances (see (https://cloud.google.com/compute/docs/storing-retrieving-metadata#project_and_instance_metadata)).
 * @property network The Compute Engine network to be used for machine communications. Cannot be specified with subnetwork_uri. If neither `network_uri` nor `subnetwork_uri` is specified, the "default" network of the project is used, if it exists. Cannot be a "Custom Subnet Network" (see /regions/global/default` * `default`
 * @property nodeGroupAffinity Node Group Affinity for sole-tenant clusters.
 * @property privateIpv6GoogleAccess The type of IPv6 access for a cluster. Possible values: PRIVATE_IPV6_GOOGLE_ACCESS_UNSPECIFIED, INHERIT_FROM_SUBNETWORK, OUTBOUND, BIDIRECTIONAL
 * @property reservationAffinity Reservation Affinity for consuming Zonal reservation.
 * @property serviceAccount The (https://cloud.google.com/compute/docs/access/service-accounts#default_service_account) is used.
 * @property serviceAccountScopes The URIs of service account scopes to be included in Compute Engine instances. The following base set of scopes is always included: * https://www.googleapis.com/auth/cloud.useraccounts.readonly * https://www.googleapis.com/auth/devstorage.read_write * https://www.googleapis.com/auth/logging.write If no scopes are specified, the following defaults are also provided: * https://www.googleapis.com/auth/bigquery * https://www.googleapis.com/auth/bigtable.admin.table * https://www.googleapis.com/auth/bigtable.data * https://www.googleapis.com/auth/devstorage.full_control
 * @property shieldedInstanceConfig Shielded Instance Config for clusters using [Compute Engine Shielded VMs](https://cloud.google.com/security/shielded-cloud/shielded-vm). Structure defined below.
 * @property subnetwork The Compute Engine subnetwork to be used for machine communications. Cannot be specified with network_uri. A full URL, partial URI, or short name are valid. Examples: * `https://www.googleapis.com/compute/v1/projects//regions/us-east1/subnetworks/sub0` * `sub0`
 * @property tags The Compute Engine tags to add to all instances (see (https://cloud.google.com/compute/docs/label-or-tag-resources#tags)).
 * @property zone The zone where the Compute Engine cluster will be located. On a create request, it is required in the "global" region. If omitted in a non-global Dataproc region, the service will pick a zone in the corresponding Compute Engine region. On a get request, zone will always be present. A full URL, partial URI, or short name are valid. Examples: * `https://www.googleapis.com/compute/v1/projects/` * `us-central1-f`
 */
public data class WorkflowTemplatePlacementManagedClusterConfigGceClusterConfigArgs(
    public val internalIpOnly: Output? = null,
    public val metadata: Output>? = null,
    public val network: Output? = null,
    public val nodeGroupAffinity: Output? =
        null,
    public val privateIpv6GoogleAccess: Output? = null,
    public val reservationAffinity: Output? =
        null,
    public val serviceAccount: Output? = null,
    public val serviceAccountScopes: Output>? = null,
    public val shieldedInstanceConfig: Output? =
        null,
    public val subnetwork: Output? = null,
    public val tags: Output>? = null,
    public val zone: Output? = null,
) :
    ConvertibleToJava {
    override fun toJava(): com.pulumi.gcp.dataproc.inputs.WorkflowTemplatePlacementManagedClusterConfigGceClusterConfigArgs =
        com.pulumi.gcp.dataproc.inputs.WorkflowTemplatePlacementManagedClusterConfigGceClusterConfigArgs.builder()
            .internalIpOnly(internalIpOnly?.applyValue({ args0 -> args0 }))
            .metadata(
                metadata?.applyValue({ args0 ->
                    args0.map({ args0 ->
                        args0.key.to(args0.value)
                    }).toMap()
                }),
            )
            .network(network?.applyValue({ args0 -> args0 }))
            .nodeGroupAffinity(nodeGroupAffinity?.applyValue({ args0 -> args0.let({ args0 -> args0.toJava() }) }))
            .privateIpv6GoogleAccess(privateIpv6GoogleAccess?.applyValue({ args0 -> args0 }))
            .reservationAffinity(
                reservationAffinity?.applyValue({ args0 ->
                    args0.let({ args0 ->
                        args0.toJava()
                    })
                }),
            )
            .serviceAccount(serviceAccount?.applyValue({ args0 -> args0 }))
            .serviceAccountScopes(serviceAccountScopes?.applyValue({ args0 -> args0.map({ args0 -> args0 }) }))
            .shieldedInstanceConfig(
                shieldedInstanceConfig?.applyValue({ args0 ->
                    args0.let({ args0 ->
                        args0.toJava()
                    })
                }),
            )
            .subnetwork(subnetwork?.applyValue({ args0 -> args0 }))
            .tags(tags?.applyValue({ args0 -> args0.map({ args0 -> args0 }) }))
            .zone(zone?.applyValue({ args0 -> args0 })).build()
}

/**
 * Builder for [WorkflowTemplatePlacementManagedClusterConfigGceClusterConfigArgs].
 */
@PulumiTagMarker
public class WorkflowTemplatePlacementManagedClusterConfigGceClusterConfigArgsBuilder internal constructor() {
    private var internalIpOnly: Output? = null

    private var metadata: Output>? = null

    private var network: Output? = null

    private var nodeGroupAffinity:
        Output? =
        null

    private var privateIpv6GoogleAccess: Output? = null

    private var reservationAffinity:
        Output? =
        null

    private var serviceAccount: Output? = null

    private var serviceAccountScopes: Output>? = null

    private var shieldedInstanceConfig:
        Output? =
        null

    private var subnetwork: Output? = null

    private var tags: Output>? = null

    private var zone: Output? = null

    /**
     * @param value If true, all instances in the cluster will only have internal IP addresses. By default, clusters are not restricted to internal IP addresses, and will have ephemeral external IP addresses assigned to each instance. This `internal_ip_only` restriction can only be enabled for subnetwork enabled networks, and all off-cluster dependencies must be configured to be accessible without external IP addresses.
     */
    @JvmName("tptbmaijivqujpvc")
    public suspend fun internalIpOnly(`value`: Output) {
        this.internalIpOnly = value
    }

    /**
     * @param value The Compute Engine metadata entries to add to all instances (see (https://cloud.google.com/compute/docs/storing-retrieving-metadata#project_and_instance_metadata)).
     */
    @JvmName("rkmugxcwqdwlofmt")
    public suspend fun metadata(`value`: Output>) {
        this.metadata = value
    }

    /**
     * @param value The Compute Engine network to be used for machine communications. Cannot be specified with subnetwork_uri. If neither `network_uri` nor `subnetwork_uri` is specified, the "default" network of the project is used, if it exists. Cannot be a "Custom Subnet Network" (see /regions/global/default` * `default`
     */
    @JvmName("mhuqpqdcexuwdruh")
    public suspend fun network(`value`: Output) {
        this.network = value
    }

    /**
     * @param value Node Group Affinity for sole-tenant clusters.
     */
    @JvmName("yapsqichlsjfegtg")
    public suspend fun nodeGroupAffinity(`value`: Output) {
        this.nodeGroupAffinity = value
    }

    /**
     * @param value The type of IPv6 access for a cluster. Possible values: PRIVATE_IPV6_GOOGLE_ACCESS_UNSPECIFIED, INHERIT_FROM_SUBNETWORK, OUTBOUND, BIDIRECTIONAL
     */
    @JvmName("hvhqmhmpfianunjt")
    public suspend fun privateIpv6GoogleAccess(`value`: Output) {
        this.privateIpv6GoogleAccess = value
    }

    /**
     * @param value Reservation Affinity for consuming Zonal reservation.
     */
    @JvmName("ntdeemusvtjcoiql")
    public suspend fun reservationAffinity(`value`: Output) {
        this.reservationAffinity = value
    }

    /**
     * @param value The (https://cloud.google.com/compute/docs/access/service-accounts#default_service_account) is used.
     */
    @JvmName("ciartvphbuysdlap")
    public suspend fun serviceAccount(`value`: Output) {
        this.serviceAccount = value
    }

    /**
     * @param value The URIs of service account scopes to be included in Compute Engine instances. The following base set of scopes is always included: * https://www.googleapis.com/auth/cloud.useraccounts.readonly * https://www.googleapis.com/auth/devstorage.read_write * https://www.googleapis.com/auth/logging.write If no scopes are specified, the following defaults are also provided: * https://www.googleapis.com/auth/bigquery * https://www.googleapis.com/auth/bigtable.admin.table * https://www.googleapis.com/auth/bigtable.data * https://www.googleapis.com/auth/devstorage.full_control
     */
    @JvmName("qebgtkouehbeowjf")
    public suspend fun serviceAccountScopes(`value`: Output>) {
        this.serviceAccountScopes = value
    }

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

    /**
     * @param values The URIs of service account scopes to be included in Compute Engine instances. The following base set of scopes is always included: * https://www.googleapis.com/auth/cloud.useraccounts.readonly * https://www.googleapis.com/auth/devstorage.read_write * https://www.googleapis.com/auth/logging.write If no scopes are specified, the following defaults are also provided: * https://www.googleapis.com/auth/bigquery * https://www.googleapis.com/auth/bigtable.admin.table * https://www.googleapis.com/auth/bigtable.data * https://www.googleapis.com/auth/devstorage.full_control
     */
    @JvmName("nqpyorvoukeihkqs")
    public suspend fun serviceAccountScopes(values: List>) {
        this.serviceAccountScopes = Output.all(values)
    }

    /**
     * @param value Shielded Instance Config for clusters using [Compute Engine Shielded VMs](https://cloud.google.com/security/shielded-cloud/shielded-vm). Structure defined below.
     */
    @JvmName("xltbskkplvgtqeck")
    public suspend fun shieldedInstanceConfig(`value`: Output) {
        this.shieldedInstanceConfig = value
    }

    /**
     * @param value The Compute Engine subnetwork to be used for machine communications. Cannot be specified with network_uri. A full URL, partial URI, or short name are valid. Examples: * `https://www.googleapis.com/compute/v1/projects//regions/us-east1/subnetworks/sub0` * `sub0`
     */
    @JvmName("jyfcbxygptikrcuw")
    public suspend fun subnetwork(`value`: Output) {
        this.subnetwork = value
    }

    /**
     * @param value The Compute Engine tags to add to all instances (see (https://cloud.google.com/compute/docs/label-or-tag-resources#tags)).
     */
    @JvmName("gqfntuvgxmrumtwm")
    public suspend fun tags(`value`: Output>) {
        this.tags = value
    }

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

    /**
     * @param values The Compute Engine tags to add to all instances (see (https://cloud.google.com/compute/docs/label-or-tag-resources#tags)).
     */
    @JvmName("rmlkdtnxrafefikl")
    public suspend fun tags(values: List>) {
        this.tags = Output.all(values)
    }

    /**
     * @param value The zone where the Compute Engine cluster will be located. On a create request, it is required in the "global" region. If omitted in a non-global Dataproc region, the service will pick a zone in the corresponding Compute Engine region. On a get request, zone will always be present. A full URL, partial URI, or short name are valid. Examples: * `https://www.googleapis.com/compute/v1/projects/` * `us-central1-f`
     */
    @JvmName("byorpxoeiewqymdx")
    public suspend fun zone(`value`: Output) {
        this.zone = value
    }

    /**
     * @param value If true, all instances in the cluster will only have internal IP addresses. By default, clusters are not restricted to internal IP addresses, and will have ephemeral external IP addresses assigned to each instance. This `internal_ip_only` restriction can only be enabled for subnetwork enabled networks, and all off-cluster dependencies must be configured to be accessible without external IP addresses.
     */
    @JvmName("gppdusqgydcdwerk")
    public suspend fun internalIpOnly(`value`: Boolean?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.internalIpOnly = mapped
    }

    /**
     * @param value The Compute Engine metadata entries to add to all instances (see (https://cloud.google.com/compute/docs/storing-retrieving-metadata#project_and_instance_metadata)).
     */
    @JvmName("hotkvwhrhxavrjtw")
    public suspend fun metadata(`value`: Map?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.metadata = mapped
    }

    /**
     * @param values The Compute Engine metadata entries to add to all instances (see (https://cloud.google.com/compute/docs/storing-retrieving-metadata#project_and_instance_metadata)).
     */
    @JvmName("pvpqbfymbunwpabw")
    public fun metadata(vararg values: Pair) {
        val toBeMapped = values.toMap()
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.metadata = mapped
    }

    /**
     * @param value The Compute Engine network to be used for machine communications. Cannot be specified with subnetwork_uri. If neither `network_uri` nor `subnetwork_uri` is specified, the "default" network of the project is used, if it exists. Cannot be a "Custom Subnet Network" (see /regions/global/default` * `default`
     */
    @JvmName("osqwirkkpikmdqlr")
    public suspend fun network(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.network = mapped
    }

    /**
     * @param value Node Group Affinity for sole-tenant clusters.
     */
    @JvmName("mxelyjettuxdrxuw")
    public suspend fun nodeGroupAffinity(`value`: WorkflowTemplatePlacementManagedClusterConfigGceClusterConfigNodeGroupAffinityArgs?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.nodeGroupAffinity = mapped
    }

    /**
     * @param argument Node Group Affinity for sole-tenant clusters.
     */
    @JvmName("brbewkgidsydscub")
    public suspend fun nodeGroupAffinity(argument: suspend WorkflowTemplatePlacementManagedClusterConfigGceClusterConfigNodeGroupAffinityArgsBuilder.() -> Unit) {
        val toBeMapped =
            WorkflowTemplatePlacementManagedClusterConfigGceClusterConfigNodeGroupAffinityArgsBuilder().applySuspend {
                argument()
            }.build()
        val mapped = of(toBeMapped)
        this.nodeGroupAffinity = mapped
    }

    /**
     * @param value The type of IPv6 access for a cluster. Possible values: PRIVATE_IPV6_GOOGLE_ACCESS_UNSPECIFIED, INHERIT_FROM_SUBNETWORK, OUTBOUND, BIDIRECTIONAL
     */
    @JvmName("mridsratnxkxsdyl")
    public suspend fun privateIpv6GoogleAccess(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.privateIpv6GoogleAccess = mapped
    }

    /**
     * @param value Reservation Affinity for consuming Zonal reservation.
     */
    @JvmName("lebdgwdrdgokpass")
    public suspend fun reservationAffinity(`value`: WorkflowTemplatePlacementManagedClusterConfigGceClusterConfigReservationAffinityArgs?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.reservationAffinity = mapped
    }

    /**
     * @param argument Reservation Affinity for consuming Zonal reservation.
     */
    @JvmName("kmmkohrrstbqvhvr")
    public suspend fun reservationAffinity(argument: suspend WorkflowTemplatePlacementManagedClusterConfigGceClusterConfigReservationAffinityArgsBuilder.() -> Unit) {
        val toBeMapped =
            WorkflowTemplatePlacementManagedClusterConfigGceClusterConfigReservationAffinityArgsBuilder().applySuspend {
                argument()
            }.build()
        val mapped = of(toBeMapped)
        this.reservationAffinity = mapped
    }

    /**
     * @param value The (https://cloud.google.com/compute/docs/access/service-accounts#default_service_account) is used.
     */
    @JvmName("xpcryxbhoiqjlmfo")
    public suspend fun serviceAccount(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.serviceAccount = mapped
    }

    /**
     * @param value The URIs of service account scopes to be included in Compute Engine instances. The following base set of scopes is always included: * https://www.googleapis.com/auth/cloud.useraccounts.readonly * https://www.googleapis.com/auth/devstorage.read_write * https://www.googleapis.com/auth/logging.write If no scopes are specified, the following defaults are also provided: * https://www.googleapis.com/auth/bigquery * https://www.googleapis.com/auth/bigtable.admin.table * https://www.googleapis.com/auth/bigtable.data * https://www.googleapis.com/auth/devstorage.full_control
     */
    @JvmName("piintnjoiwsogbwx")
    public suspend fun serviceAccountScopes(`value`: List?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.serviceAccountScopes = mapped
    }

    /**
     * @param values The URIs of service account scopes to be included in Compute Engine instances. The following base set of scopes is always included: * https://www.googleapis.com/auth/cloud.useraccounts.readonly * https://www.googleapis.com/auth/devstorage.read_write * https://www.googleapis.com/auth/logging.write If no scopes are specified, the following defaults are also provided: * https://www.googleapis.com/auth/bigquery * https://www.googleapis.com/auth/bigtable.admin.table * https://www.googleapis.com/auth/bigtable.data * https://www.googleapis.com/auth/devstorage.full_control
     */
    @JvmName("xbqfyxybueukntxn")
    public suspend fun serviceAccountScopes(vararg values: String) {
        val toBeMapped = values.toList()
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.serviceAccountScopes = mapped
    }

    /**
     * @param value Shielded Instance Config for clusters using [Compute Engine Shielded VMs](https://cloud.google.com/security/shielded-cloud/shielded-vm). Structure defined below.
     */
    @JvmName("bnafbspxuobgsfje")
    public suspend fun shieldedInstanceConfig(`value`: WorkflowTemplatePlacementManagedClusterConfigGceClusterConfigShieldedInstanceConfigArgs?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.shieldedInstanceConfig = mapped
    }

    /**
     * @param argument Shielded Instance Config for clusters using [Compute Engine Shielded VMs](https://cloud.google.com/security/shielded-cloud/shielded-vm). Structure defined below.
     */
    @JvmName("uspkdygmepkwelej")
    public suspend fun shieldedInstanceConfig(argument: suspend WorkflowTemplatePlacementManagedClusterConfigGceClusterConfigShieldedInstanceConfigArgsBuilder.() -> Unit) {
        val toBeMapped =
            WorkflowTemplatePlacementManagedClusterConfigGceClusterConfigShieldedInstanceConfigArgsBuilder().applySuspend {
                argument()
            }.build()
        val mapped = of(toBeMapped)
        this.shieldedInstanceConfig = mapped
    }

    /**
     * @param value The Compute Engine subnetwork to be used for machine communications. Cannot be specified with network_uri. A full URL, partial URI, or short name are valid. Examples: * `https://www.googleapis.com/compute/v1/projects//regions/us-east1/subnetworks/sub0` * `sub0`
     */
    @JvmName("cnpolrtvlhjcbixs")
    public suspend fun subnetwork(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.subnetwork = mapped
    }

    /**
     * @param value The Compute Engine tags to add to all instances (see (https://cloud.google.com/compute/docs/label-or-tag-resources#tags)).
     */
    @JvmName("sqvgnjdkxveoxaug")
    public suspend fun tags(`value`: List?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.tags = mapped
    }

    /**
     * @param values The Compute Engine tags to add to all instances (see (https://cloud.google.com/compute/docs/label-or-tag-resources#tags)).
     */
    @JvmName("qcdicycxrgcimupv")
    public suspend fun tags(vararg values: String) {
        val toBeMapped = values.toList()
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.tags = mapped
    }

    /**
     * @param value The zone where the Compute Engine cluster will be located. On a create request, it is required in the "global" region. If omitted in a non-global Dataproc region, the service will pick a zone in the corresponding Compute Engine region. On a get request, zone will always be present. A full URL, partial URI, or short name are valid. Examples: * `https://www.googleapis.com/compute/v1/projects/` * `us-central1-f`
     */
    @JvmName("sovylsvbrlhtsumo")
    public suspend fun zone(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.zone = mapped
    }

    internal fun build(): WorkflowTemplatePlacementManagedClusterConfigGceClusterConfigArgs =
        WorkflowTemplatePlacementManagedClusterConfigGceClusterConfigArgs(
            internalIpOnly = internalIpOnly,
            metadata = metadata,
            network = network,
            nodeGroupAffinity = nodeGroupAffinity,
            privateIpv6GoogleAccess = privateIpv6GoogleAccess,
            reservationAffinity = reservationAffinity,
            serviceAccount = serviceAccount,
            serviceAccountScopes = serviceAccountScopes,
            shieldedInstanceConfig = shieldedInstanceConfig,
            subnetwork = subnetwork,
            tags = tags,
            zone = zone,
        )
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy