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

com.pulumi.gcp.composer.kotlin.inputs.EnvironmentConfigNodeConfigArgs.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.composer.kotlin.inputs

import com.pulumi.core.Output
import com.pulumi.core.Output.of
import com.pulumi.gcp.composer.inputs.EnvironmentConfigNodeConfigArgs.builder
import com.pulumi.kotlin.ConvertibleToJava
import com.pulumi.kotlin.PulumiTagMarker
import com.pulumi.kotlin.applySuspend
import kotlin.Boolean
import kotlin.Int
import kotlin.String
import kotlin.Suppress
import kotlin.Unit
import kotlin.collections.List
import kotlin.jvm.JvmName

/**
 *
 * @property composerInternalIpv4CidrBlock IPv4 cidr range that will be used by Composer internal components.
 * @property composerNetworkAttachment PSC (Private Service Connect) Network entry point. Customers can pre-create the Network Attachment and point Cloud Composer environment to use. It is possible to share network attachment among many environments, provided enough IP addresses are available.
 * @property diskSizeGb The disk size in GB used for node VMs. Minimum size is 20GB. If unspecified, defaults to 100GB. Cannot be updated. This field is supported for Cloud Composer environments in versions composer-1.*.*-airflow-*.*.*.
 * @property enableIpMasqAgent Deploys 'ip-masq-agent' daemon set in the GKE cluster and defines nonMasqueradeCIDRs equals to pod IP range so IP masquerading is used for all destination addresses, except between pods traffic. See: https://cloud.google.com/kubernetes-engine/docs/how-to/ip-masquerade-agent
 * @property ipAllocationPolicy Configuration for controlling how IPs are allocated in the GKE cluster. Cannot be updated.
 * @property machineType The Compute Engine machine type used for cluster instances, specified as a name or relative resource name. For example: "projects/{project}/zones/{zone}/machineTypes/{machineType}". Must belong to the enclosing environment's project and region/zone. This field is supported for Cloud Composer environments in versions composer-1.*.*-airflow-*.*.*.
 * @property maxPodsPerNode The maximum pods per node in the GKE cluster allocated during environment creation. Lowering this value reduces IP address consumption by the Cloud Composer Kubernetes cluster. This value can only be set during environment creation, and only if the environment is VPC-Native. The range of possible values is 8-110, and the default is 32. Cannot be updated. This field is supported for Cloud Composer environments in versions composer-1.*.*-airflow-*.*.*.
 * @property network The Compute Engine machine type used for cluster instances, specified as a name or relative resource name. For example: "projects/{project}/zones/{zone}/machineTypes/{machineType}". Must belong to the enclosing environment's project and region/zone. The network must belong to the environment's project. If unspecified, the "default" network ID in the environment's project is used. If a Custom Subnet Network is provided, subnetwork must also be provided.
 * @property oauthScopes The set of Google API scopes to be made available on all node VMs. Cannot be updated. If empty, defaults to ["https://www.googleapis.com/auth/cloud-platform"]. This field is supported for Cloud Composer environments in versions composer-1.*.*-airflow-*.*.*.
 * @property serviceAccount The Google Cloud Platform Service Account to be used by the node VMs. If a service account is not specified, the "default" Compute Engine service account is used. Cannot be updated. If given, note that the service account must have roles/composer.worker for any GCP resources created under the Cloud Composer Environment.
 * @property subnetwork The Compute Engine subnetwork to be used for machine communications, specified as a self-link, relative resource name (e.g. "projects/{project}/regions/{region}/subnetworks/{subnetwork}"), or by name. If subnetwork is provided, network must also be provided and the subnetwork must belong to the enclosing environment's project and region.
 * @property tags The list of instance tags applied to all node VMs. Tags are used to identify valid sources or targets for network firewalls. Each tag within the list must comply with RFC1035. Cannot be updated.
 * @property zone The Compute Engine zone in which to deploy the VMs running the Apache Airflow software, specified as the zone name or relative resource name (e.g. "projects/{project}/zones/{zone}"). Must belong to the enclosing environment's project and region. This field is supported for Cloud Composer environments in versions composer-1.*.*-airflow-*.*.*.
 */
public data class EnvironmentConfigNodeConfigArgs(
    public val composerInternalIpv4CidrBlock: Output? = null,
    public val composerNetworkAttachment: Output? = null,
    public val diskSizeGb: Output? = null,
    public val enableIpMasqAgent: Output? = null,
    public val ipAllocationPolicy: Output? = null,
    public val machineType: Output? = null,
    public val maxPodsPerNode: Output? = null,
    public val network: Output? = null,
    public val oauthScopes: Output>? = null,
    public val serviceAccount: Output? = null,
    public val subnetwork: Output? = null,
    public val tags: Output>? = null,
    public val zone: Output? = null,
) : ConvertibleToJava {
    override fun toJava(): com.pulumi.gcp.composer.inputs.EnvironmentConfigNodeConfigArgs =
        com.pulumi.gcp.composer.inputs.EnvironmentConfigNodeConfigArgs.builder()
            .composerInternalIpv4CidrBlock(composerInternalIpv4CidrBlock?.applyValue({ args0 -> args0 }))
            .composerNetworkAttachment(composerNetworkAttachment?.applyValue({ args0 -> args0 }))
            .diskSizeGb(diskSizeGb?.applyValue({ args0 -> args0 }))
            .enableIpMasqAgent(enableIpMasqAgent?.applyValue({ args0 -> args0 }))
            .ipAllocationPolicy(
                ipAllocationPolicy?.applyValue({ args0 ->
                    args0.let({ args0 ->
                        args0.toJava()
                    })
                }),
            )
            .machineType(machineType?.applyValue({ args0 -> args0 }))
            .maxPodsPerNode(maxPodsPerNode?.applyValue({ args0 -> args0 }))
            .network(network?.applyValue({ args0 -> args0 }))
            .oauthScopes(oauthScopes?.applyValue({ args0 -> args0.map({ args0 -> args0 }) }))
            .serviceAccount(serviceAccount?.applyValue({ args0 -> args0 }))
            .subnetwork(subnetwork?.applyValue({ args0 -> args0 }))
            .tags(tags?.applyValue({ args0 -> args0.map({ args0 -> args0 }) }))
            .zone(zone?.applyValue({ args0 -> args0 })).build()
}

/**
 * Builder for [EnvironmentConfigNodeConfigArgs].
 */
@PulumiTagMarker
public class EnvironmentConfigNodeConfigArgsBuilder internal constructor() {
    private var composerInternalIpv4CidrBlock: Output? = null

    private var composerNetworkAttachment: Output? = null

    private var diskSizeGb: Output? = null

    private var enableIpMasqAgent: Output? = null

    private var ipAllocationPolicy: Output? = null

    private var machineType: Output? = null

    private var maxPodsPerNode: Output? = null

    private var network: Output? = null

    private var oauthScopes: Output>? = null

    private var serviceAccount: Output? = null

    private var subnetwork: Output? = null

    private var tags: Output>? = null

    private var zone: Output? = null

    /**
     * @param value IPv4 cidr range that will be used by Composer internal components.
     */
    @JvmName("bvudmuihruvxsrhx")
    public suspend fun composerInternalIpv4CidrBlock(`value`: Output) {
        this.composerInternalIpv4CidrBlock = value
    }

    /**
     * @param value PSC (Private Service Connect) Network entry point. Customers can pre-create the Network Attachment and point Cloud Composer environment to use. It is possible to share network attachment among many environments, provided enough IP addresses are available.
     */
    @JvmName("vvpbhehoencwkjjb")
    public suspend fun composerNetworkAttachment(`value`: Output) {
        this.composerNetworkAttachment = value
    }

    /**
     * @param value The disk size in GB used for node VMs. Minimum size is 20GB. If unspecified, defaults to 100GB. Cannot be updated. This field is supported for Cloud Composer environments in versions composer-1.*.*-airflow-*.*.*.
     */
    @JvmName("ryrfnfnxhyektiiu")
    public suspend fun diskSizeGb(`value`: Output) {
        this.diskSizeGb = value
    }

    /**
     * @param value Deploys 'ip-masq-agent' daemon set in the GKE cluster and defines nonMasqueradeCIDRs equals to pod IP range so IP masquerading is used for all destination addresses, except between pods traffic. See: https://cloud.google.com/kubernetes-engine/docs/how-to/ip-masquerade-agent
     */
    @JvmName("kouvndktlfdppcro")
    public suspend fun enableIpMasqAgent(`value`: Output) {
        this.enableIpMasqAgent = value
    }

    /**
     * @param value Configuration for controlling how IPs are allocated in the GKE cluster. Cannot be updated.
     */
    @JvmName("oycuweigcmbtenps")
    public suspend fun ipAllocationPolicy(`value`: Output) {
        this.ipAllocationPolicy = value
    }

    /**
     * @param value The Compute Engine machine type used for cluster instances, specified as a name or relative resource name. For example: "projects/{project}/zones/{zone}/machineTypes/{machineType}". Must belong to the enclosing environment's project and region/zone. This field is supported for Cloud Composer environments in versions composer-1.*.*-airflow-*.*.*.
     */
    @JvmName("idycqpfjyjsnklpx")
    public suspend fun machineType(`value`: Output) {
        this.machineType = value
    }

    /**
     * @param value The maximum pods per node in the GKE cluster allocated during environment creation. Lowering this value reduces IP address consumption by the Cloud Composer Kubernetes cluster. This value can only be set during environment creation, and only if the environment is VPC-Native. The range of possible values is 8-110, and the default is 32. Cannot be updated. This field is supported for Cloud Composer environments in versions composer-1.*.*-airflow-*.*.*.
     */
    @JvmName("mdtrgkedahpmeajn")
    public suspend fun maxPodsPerNode(`value`: Output) {
        this.maxPodsPerNode = value
    }

    /**
     * @param value The Compute Engine machine type used for cluster instances, specified as a name or relative resource name. For example: "projects/{project}/zones/{zone}/machineTypes/{machineType}". Must belong to the enclosing environment's project and region/zone. The network must belong to the environment's project. If unspecified, the "default" network ID in the environment's project is used. If a Custom Subnet Network is provided, subnetwork must also be provided.
     */
    @JvmName("adtbwphjntmthnbx")
    public suspend fun network(`value`: Output) {
        this.network = value
    }

    /**
     * @param value The set of Google API scopes to be made available on all node VMs. Cannot be updated. If empty, defaults to ["https://www.googleapis.com/auth/cloud-platform"]. This field is supported for Cloud Composer environments in versions composer-1.*.*-airflow-*.*.*.
     */
    @JvmName("pllltoqjsrjodfsg")
    public suspend fun oauthScopes(`value`: Output>) {
        this.oauthScopes = value
    }

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

    /**
     * @param values The set of Google API scopes to be made available on all node VMs. Cannot be updated. If empty, defaults to ["https://www.googleapis.com/auth/cloud-platform"]. This field is supported for Cloud Composer environments in versions composer-1.*.*-airflow-*.*.*.
     */
    @JvmName("kysckgvguuinbjcl")
    public suspend fun oauthScopes(values: List>) {
        this.oauthScopes = Output.all(values)
    }

    /**
     * @param value The Google Cloud Platform Service Account to be used by the node VMs. If a service account is not specified, the "default" Compute Engine service account is used. Cannot be updated. If given, note that the service account must have roles/composer.worker for any GCP resources created under the Cloud Composer Environment.
     */
    @JvmName("kjdulmvwwwepcaee")
    public suspend fun serviceAccount(`value`: Output) {
        this.serviceAccount = value
    }

    /**
     * @param value The Compute Engine subnetwork to be used for machine communications, specified as a self-link, relative resource name (e.g. "projects/{project}/regions/{region}/subnetworks/{subnetwork}"), or by name. If subnetwork is provided, network must also be provided and the subnetwork must belong to the enclosing environment's project and region.
     */
    @JvmName("qdinatejfcdrrenc")
    public suspend fun subnetwork(`value`: Output) {
        this.subnetwork = value
    }

    /**
     * @param value The list of instance tags applied to all node VMs. Tags are used to identify valid sources or targets for network firewalls. Each tag within the list must comply with RFC1035. Cannot be updated.
     */
    @JvmName("ptxoxyfhlfiybhwv")
    public suspend fun tags(`value`: Output>) {
        this.tags = value
    }

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

    /**
     * @param values The list of instance tags applied to all node VMs. Tags are used to identify valid sources or targets for network firewalls. Each tag within the list must comply with RFC1035. Cannot be updated.
     */
    @JvmName("fuxxuhljdlkfhtxt")
    public suspend fun tags(values: List>) {
        this.tags = Output.all(values)
    }

    /**
     * @param value The Compute Engine zone in which to deploy the VMs running the Apache Airflow software, specified as the zone name or relative resource name (e.g. "projects/{project}/zones/{zone}"). Must belong to the enclosing environment's project and region. This field is supported for Cloud Composer environments in versions composer-1.*.*-airflow-*.*.*.
     */
    @JvmName("vigoycagsvqxmrfu")
    public suspend fun zone(`value`: Output) {
        this.zone = value
    }

    /**
     * @param value IPv4 cidr range that will be used by Composer internal components.
     */
    @JvmName("ywqktlsulaxyjtpr")
    public suspend fun composerInternalIpv4CidrBlock(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.composerInternalIpv4CidrBlock = mapped
    }

    /**
     * @param value PSC (Private Service Connect) Network entry point. Customers can pre-create the Network Attachment and point Cloud Composer environment to use. It is possible to share network attachment among many environments, provided enough IP addresses are available.
     */
    @JvmName("gcdefjififhvboaj")
    public suspend fun composerNetworkAttachment(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.composerNetworkAttachment = mapped
    }

    /**
     * @param value The disk size in GB used for node VMs. Minimum size is 20GB. If unspecified, defaults to 100GB. Cannot be updated. This field is supported for Cloud Composer environments in versions composer-1.*.*-airflow-*.*.*.
     */
    @JvmName("pkdifkirvobcirev")
    public suspend fun diskSizeGb(`value`: Int?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.diskSizeGb = mapped
    }

    /**
     * @param value Deploys 'ip-masq-agent' daemon set in the GKE cluster and defines nonMasqueradeCIDRs equals to pod IP range so IP masquerading is used for all destination addresses, except between pods traffic. See: https://cloud.google.com/kubernetes-engine/docs/how-to/ip-masquerade-agent
     */
    @JvmName("siwpefenvxvuyxnq")
    public suspend fun enableIpMasqAgent(`value`: Boolean?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.enableIpMasqAgent = mapped
    }

    /**
     * @param value Configuration for controlling how IPs are allocated in the GKE cluster. Cannot be updated.
     */
    @JvmName("qspphbontuvpkvhq")
    public suspend fun ipAllocationPolicy(`value`: EnvironmentConfigNodeConfigIpAllocationPolicyArgs?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.ipAllocationPolicy = mapped
    }

    /**
     * @param argument Configuration for controlling how IPs are allocated in the GKE cluster. Cannot be updated.
     */
    @JvmName("qnwieerrxkghuwtl")
    public suspend fun ipAllocationPolicy(argument: suspend EnvironmentConfigNodeConfigIpAllocationPolicyArgsBuilder.() -> Unit) {
        val toBeMapped = EnvironmentConfigNodeConfigIpAllocationPolicyArgsBuilder().applySuspend {
            argument()
        }.build()
        val mapped = of(toBeMapped)
        this.ipAllocationPolicy = mapped
    }

    /**
     * @param value The Compute Engine machine type used for cluster instances, specified as a name or relative resource name. For example: "projects/{project}/zones/{zone}/machineTypes/{machineType}". Must belong to the enclosing environment's project and region/zone. This field is supported for Cloud Composer environments in versions composer-1.*.*-airflow-*.*.*.
     */
    @JvmName("cffowjdfdjlitbxd")
    public suspend fun machineType(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.machineType = mapped
    }

    /**
     * @param value The maximum pods per node in the GKE cluster allocated during environment creation. Lowering this value reduces IP address consumption by the Cloud Composer Kubernetes cluster. This value can only be set during environment creation, and only if the environment is VPC-Native. The range of possible values is 8-110, and the default is 32. Cannot be updated. This field is supported for Cloud Composer environments in versions composer-1.*.*-airflow-*.*.*.
     */
    @JvmName("eiwaayoosgvwdvuy")
    public suspend fun maxPodsPerNode(`value`: Int?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.maxPodsPerNode = mapped
    }

    /**
     * @param value The Compute Engine machine type used for cluster instances, specified as a name or relative resource name. For example: "projects/{project}/zones/{zone}/machineTypes/{machineType}". Must belong to the enclosing environment's project and region/zone. The network must belong to the environment's project. If unspecified, the "default" network ID in the environment's project is used. If a Custom Subnet Network is provided, subnetwork must also be provided.
     */
    @JvmName("cjwoeixeqnebrrml")
    public suspend fun network(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.network = mapped
    }

    /**
     * @param value The set of Google API scopes to be made available on all node VMs. Cannot be updated. If empty, defaults to ["https://www.googleapis.com/auth/cloud-platform"]. This field is supported for Cloud Composer environments in versions composer-1.*.*-airflow-*.*.*.
     */
    @JvmName("yrnlxnlygbsodbrc")
    public suspend fun oauthScopes(`value`: List?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.oauthScopes = mapped
    }

    /**
     * @param values The set of Google API scopes to be made available on all node VMs. Cannot be updated. If empty, defaults to ["https://www.googleapis.com/auth/cloud-platform"]. This field is supported for Cloud Composer environments in versions composer-1.*.*-airflow-*.*.*.
     */
    @JvmName("efrilqmvncfohxvv")
    public suspend fun oauthScopes(vararg values: String) {
        val toBeMapped = values.toList()
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.oauthScopes = mapped
    }

    /**
     * @param value The Google Cloud Platform Service Account to be used by the node VMs. If a service account is not specified, the "default" Compute Engine service account is used. Cannot be updated. If given, note that the service account must have roles/composer.worker for any GCP resources created under the Cloud Composer Environment.
     */
    @JvmName("muojehcqkxcgvuca")
    public suspend fun serviceAccount(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.serviceAccount = mapped
    }

    /**
     * @param value The Compute Engine subnetwork to be used for machine communications, specified as a self-link, relative resource name (e.g. "projects/{project}/regions/{region}/subnetworks/{subnetwork}"), or by name. If subnetwork is provided, network must also be provided and the subnetwork must belong to the enclosing environment's project and region.
     */
    @JvmName("ssanodoqpkdcdmcw")
    public suspend fun subnetwork(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.subnetwork = mapped
    }

    /**
     * @param value The list of instance tags applied to all node VMs. Tags are used to identify valid sources or targets for network firewalls. Each tag within the list must comply with RFC1035. Cannot be updated.
     */
    @JvmName("qebmmhebwrewgppv")
    public suspend fun tags(`value`: List?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.tags = mapped
    }

    /**
     * @param values The list of instance tags applied to all node VMs. Tags are used to identify valid sources or targets for network firewalls. Each tag within the list must comply with RFC1035. Cannot be updated.
     */
    @JvmName("guvfeuhlejnnvgre")
    public suspend fun tags(vararg values: String) {
        val toBeMapped = values.toList()
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.tags = mapped
    }

    /**
     * @param value The Compute Engine zone in which to deploy the VMs running the Apache Airflow software, specified as the zone name or relative resource name (e.g. "projects/{project}/zones/{zone}"). Must belong to the enclosing environment's project and region. This field is supported for Cloud Composer environments in versions composer-1.*.*-airflow-*.*.*.
     */
    @JvmName("jflekfmukolqnpol")
    public suspend fun zone(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.zone = mapped
    }

    internal fun build(): EnvironmentConfigNodeConfigArgs = EnvironmentConfigNodeConfigArgs(
        composerInternalIpv4CidrBlock = composerInternalIpv4CidrBlock,
        composerNetworkAttachment = composerNetworkAttachment,
        diskSizeGb = diskSizeGb,
        enableIpMasqAgent = enableIpMasqAgent,
        ipAllocationPolicy = ipAllocationPolicy,
        machineType = machineType,
        maxPodsPerNode = maxPodsPerNode,
        network = network,
        oauthScopes = oauthScopes,
        serviceAccount = serviceAccount,
        subnetwork = subnetwork,
        tags = tags,
        zone = zone,
    )
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy