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

com.pulumi.gcp.container.kotlin.inputs.ClusterClusterAutoscalingAutoProvisioningDefaultsArgs.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.10.0.0
Show newest version
@file:Suppress("NAME_SHADOWING", "DEPRECATION")

package com.pulumi.gcp.container.kotlin.inputs

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

/**
 *
 * @property bootDiskKmsKey The Customer Managed Encryption Key used to encrypt the boot disk attached to each node in the node pool. This should be of the form projects/[KEY_PROJECT_ID]/locations/[LOCATION]/keyRings/[RING_NAME]/cryptoKeys/[KEY_NAME]. For more information about protecting resources with Cloud KMS Keys please see: https://cloud.google.com/compute/docs/disks/customer-managed-encryption
 * @property diskSize Size of the disk attached to each node, specified in GB. The smallest allowed disk size is 10GB. Defaults to `100`
 * @property diskType Type of the disk attached to each node (e.g. 'pd-standard', 'pd-ssd' or 'pd-balanced'). Defaults to `pd-standard`
 * @property imageType The default image type used by NAP once a new node pool is being created. Please note that according to the [official documentation](https://cloud.google.com/kubernetes-engine/docs/how-to/node-auto-provisioning#default-image-type) the value must be one of the [COS_CONTAINERD, COS, UBUNTU_CONTAINERD, UBUNTU]. __NOTE__ : COS AND UBUNTU are deprecated as of `GKE 1.24`
 * @property management NodeManagement configuration for this NodePool. Structure is documented below.
 * @property minCpuPlatform Minimum CPU platform to be used for NAP created node pools. The instance may be scheduled on the
 * specified or newer CPU platform. Applicable values are the friendly names of CPU platforms, such
 * as "Intel Haswell" or "Intel Sandy Bridge".
 * @property oauthScopes Scopes that are used by NAP and GKE Autopilot when creating node pools. Use the "https://www.googleapis.com/auth/cloud-platform" scope to grant access to all APIs. It is recommended that you set `service_account` to a non-default service account and grant IAM roles to that service account for only the resources that it needs.
 * > `monitoring.write` is always enabled regardless of user input.  `monitoring` and `logging.write` may also be enabled depending on the values for `monitoring_service` and `logging_service`.
 * @property serviceAccount The Google Cloud Platform Service Account to be used by the node VMs created by GKE Autopilot or NAP.
 * @property shieldedInstanceConfig Shielded Instance options. Structure is documented below.
 * @property upgradeSettings Specifies the upgrade settings for NAP created node pools
 */
public data class ClusterClusterAutoscalingAutoProvisioningDefaultsArgs(
    public val bootDiskKmsKey: Output? = null,
    public val diskSize: Output? = null,
    public val diskType: Output? = null,
    public val imageType: Output? = null,
    public val management: Output? =
        null,
    public val minCpuPlatform: Output? = null,
    public val oauthScopes: Output>? = null,
    public val serviceAccount: Output? = null,
    public val shieldedInstanceConfig: Output? = null,
    public val upgradeSettings: Output? = null,
) :
    ConvertibleToJava {
    override fun toJava(): com.pulumi.gcp.container.inputs.ClusterClusterAutoscalingAutoProvisioningDefaultsArgs =
        com.pulumi.gcp.container.inputs.ClusterClusterAutoscalingAutoProvisioningDefaultsArgs.builder()
            .bootDiskKmsKey(bootDiskKmsKey?.applyValue({ args0 -> args0 }))
            .diskSize(diskSize?.applyValue({ args0 -> args0 }))
            .diskType(diskType?.applyValue({ args0 -> args0 }))
            .imageType(imageType?.applyValue({ args0 -> args0 }))
            .management(management?.applyValue({ args0 -> args0.let({ args0 -> args0.toJava() }) }))
            .minCpuPlatform(minCpuPlatform?.applyValue({ args0 -> args0 }))
            .oauthScopes(oauthScopes?.applyValue({ args0 -> args0.map({ args0 -> args0 }) }))
            .serviceAccount(serviceAccount?.applyValue({ args0 -> args0 }))
            .shieldedInstanceConfig(
                shieldedInstanceConfig?.applyValue({ args0 ->
                    args0.let({ args0 ->
                        args0.toJava()
                    })
                }),
            )
            .upgradeSettings(
                upgradeSettings?.applyValue({ args0 ->
                    args0.let({ args0 ->
                        args0.toJava()
                    })
                }),
            ).build()
}

/**
 * Builder for [ClusterClusterAutoscalingAutoProvisioningDefaultsArgs].
 */
@PulumiTagMarker
public class ClusterClusterAutoscalingAutoProvisioningDefaultsArgsBuilder internal constructor() {
    private var bootDiskKmsKey: Output? = null

    private var diskSize: Output? = null

    private var diskType: Output? = null

    private var imageType: Output? = null

    private var management: Output? =
        null

    private var minCpuPlatform: Output? = null

    private var oauthScopes: Output>? = null

    private var serviceAccount: Output? = null

    private var shieldedInstanceConfig:
        Output? = null

    private var upgradeSettings:
        Output? = null

    /**
     * @param value The Customer Managed Encryption Key used to encrypt the boot disk attached to each node in the node pool. This should be of the form projects/[KEY_PROJECT_ID]/locations/[LOCATION]/keyRings/[RING_NAME]/cryptoKeys/[KEY_NAME]. For more information about protecting resources with Cloud KMS Keys please see: https://cloud.google.com/compute/docs/disks/customer-managed-encryption
     */
    @JvmName("foubtqjnpoxanrhx")
    public suspend fun bootDiskKmsKey(`value`: Output) {
        this.bootDiskKmsKey = value
    }

    /**
     * @param value Size of the disk attached to each node, specified in GB. The smallest allowed disk size is 10GB. Defaults to `100`
     */
    @JvmName("lxaruocjjdscjruv")
    public suspend fun diskSize(`value`: Output) {
        this.diskSize = value
    }

    /**
     * @param value Type of the disk attached to each node (e.g. 'pd-standard', 'pd-ssd' or 'pd-balanced'). Defaults to `pd-standard`
     */
    @JvmName("mdoacjseikkpitvp")
    public suspend fun diskType(`value`: Output) {
        this.diskType = value
    }

    /**
     * @param value The default image type used by NAP once a new node pool is being created. Please note that according to the [official documentation](https://cloud.google.com/kubernetes-engine/docs/how-to/node-auto-provisioning#default-image-type) the value must be one of the [COS_CONTAINERD, COS, UBUNTU_CONTAINERD, UBUNTU]. __NOTE__ : COS AND UBUNTU are deprecated as of `GKE 1.24`
     */
    @JvmName("yyfsuymomlbhetri")
    public suspend fun imageType(`value`: Output) {
        this.imageType = value
    }

    /**
     * @param value NodeManagement configuration for this NodePool. Structure is documented below.
     */
    @JvmName("whwltdtmivdqbmfq")
    public suspend fun management(`value`: Output) {
        this.management = value
    }

    /**
     * @param value Minimum CPU platform to be used for NAP created node pools. The instance may be scheduled on the
     * specified or newer CPU platform. Applicable values are the friendly names of CPU platforms, such
     * as "Intel Haswell" or "Intel Sandy Bridge".
     */
    @JvmName("jurgdokxvbaxnuwx")
    public suspend fun minCpuPlatform(`value`: Output) {
        this.minCpuPlatform = value
    }

    /**
     * @param value Scopes that are used by NAP and GKE Autopilot when creating node pools. Use the "https://www.googleapis.com/auth/cloud-platform" scope to grant access to all APIs. It is recommended that you set `service_account` to a non-default service account and grant IAM roles to that service account for only the resources that it needs.
     * > `monitoring.write` is always enabled regardless of user input.  `monitoring` and `logging.write` may also be enabled depending on the values for `monitoring_service` and `logging_service`.
     */
    @JvmName("eelmfngfbxqjcdqa")
    public suspend fun oauthScopes(`value`: Output>) {
        this.oauthScopes = value
    }

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

    /**
     * @param values Scopes that are used by NAP and GKE Autopilot when creating node pools. Use the "https://www.googleapis.com/auth/cloud-platform" scope to grant access to all APIs. It is recommended that you set `service_account` to a non-default service account and grant IAM roles to that service account for only the resources that it needs.
     * > `monitoring.write` is always enabled regardless of user input.  `monitoring` and `logging.write` may also be enabled depending on the values for `monitoring_service` and `logging_service`.
     */
    @JvmName("qjiuxrpwwxkgnvmt")
    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 created by GKE Autopilot or NAP.
     */
    @JvmName("ldeashmneylfyvwc")
    public suspend fun serviceAccount(`value`: Output) {
        this.serviceAccount = value
    }

    /**
     * @param value Shielded Instance options. Structure is documented below.
     */
    @JvmName("cnkaovvpoyxfifyp")
    public suspend fun shieldedInstanceConfig(`value`: Output) {
        this.shieldedInstanceConfig = value
    }

    /**
     * @param value Specifies the upgrade settings for NAP created node pools
     */
    @JvmName("idrikbrjwjgdgmvi")
    public suspend fun upgradeSettings(`value`: Output) {
        this.upgradeSettings = value
    }

    /**
     * @param value The Customer Managed Encryption Key used to encrypt the boot disk attached to each node in the node pool. This should be of the form projects/[KEY_PROJECT_ID]/locations/[LOCATION]/keyRings/[RING_NAME]/cryptoKeys/[KEY_NAME]. For more information about protecting resources with Cloud KMS Keys please see: https://cloud.google.com/compute/docs/disks/customer-managed-encryption
     */
    @JvmName("ygfhgwjaovmyjbeq")
    public suspend fun bootDiskKmsKey(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.bootDiskKmsKey = mapped
    }

    /**
     * @param value Size of the disk attached to each node, specified in GB. The smallest allowed disk size is 10GB. Defaults to `100`
     */
    @JvmName("laikblwlgfakgcwd")
    public suspend fun diskSize(`value`: Int?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.diskSize = mapped
    }

    /**
     * @param value Type of the disk attached to each node (e.g. 'pd-standard', 'pd-ssd' or 'pd-balanced'). Defaults to `pd-standard`
     */
    @JvmName("uvairxlbffgpdmiy")
    public suspend fun diskType(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.diskType = mapped
    }

    /**
     * @param value The default image type used by NAP once a new node pool is being created. Please note that according to the [official documentation](https://cloud.google.com/kubernetes-engine/docs/how-to/node-auto-provisioning#default-image-type) the value must be one of the [COS_CONTAINERD, COS, UBUNTU_CONTAINERD, UBUNTU]. __NOTE__ : COS AND UBUNTU are deprecated as of `GKE 1.24`
     */
    @JvmName("wajghwmavajictul")
    public suspend fun imageType(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.imageType = mapped
    }

    /**
     * @param value NodeManagement configuration for this NodePool. Structure is documented below.
     */
    @JvmName("srnllvktfdedjvyl")
    public suspend fun management(`value`: ClusterClusterAutoscalingAutoProvisioningDefaultsManagementArgs?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.management = mapped
    }

    /**
     * @param argument NodeManagement configuration for this NodePool. Structure is documented below.
     */
    @JvmName("uaiqsnylorkhkawd")
    public suspend fun management(argument: suspend ClusterClusterAutoscalingAutoProvisioningDefaultsManagementArgsBuilder.() -> Unit) {
        val toBeMapped =
            ClusterClusterAutoscalingAutoProvisioningDefaultsManagementArgsBuilder().applySuspend {
                argument()
            }.build()
        val mapped = of(toBeMapped)
        this.management = mapped
    }

    /**
     * @param value Minimum CPU platform to be used for NAP created node pools. The instance may be scheduled on the
     * specified or newer CPU platform. Applicable values are the friendly names of CPU platforms, such
     * as "Intel Haswell" or "Intel Sandy Bridge".
     */
    @JvmName("iseeymhmecoxdecj")
    public suspend fun minCpuPlatform(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.minCpuPlatform = mapped
    }

    /**
     * @param value Scopes that are used by NAP and GKE Autopilot when creating node pools. Use the "https://www.googleapis.com/auth/cloud-platform" scope to grant access to all APIs. It is recommended that you set `service_account` to a non-default service account and grant IAM roles to that service account for only the resources that it needs.
     * > `monitoring.write` is always enabled regardless of user input.  `monitoring` and `logging.write` may also be enabled depending on the values for `monitoring_service` and `logging_service`.
     */
    @JvmName("sdknxvpsfhbkcprl")
    public suspend fun oauthScopes(`value`: List?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.oauthScopes = mapped
    }

    /**
     * @param values Scopes that are used by NAP and GKE Autopilot when creating node pools. Use the "https://www.googleapis.com/auth/cloud-platform" scope to grant access to all APIs. It is recommended that you set `service_account` to a non-default service account and grant IAM roles to that service account for only the resources that it needs.
     * > `monitoring.write` is always enabled regardless of user input.  `monitoring` and `logging.write` may also be enabled depending on the values for `monitoring_service` and `logging_service`.
     */
    @JvmName("sugserepignnnfwn")
    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 created by GKE Autopilot or NAP.
     */
    @JvmName("wgfhwtinwsxwttyp")
    public suspend fun serviceAccount(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.serviceAccount = mapped
    }

    /**
     * @param value Shielded Instance options. Structure is documented below.
     */
    @JvmName("eghhfmxvdlrtdyln")
    public suspend fun shieldedInstanceConfig(`value`: ClusterClusterAutoscalingAutoProvisioningDefaultsShieldedInstanceConfigArgs?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.shieldedInstanceConfig = mapped
    }

    /**
     * @param argument Shielded Instance options. Structure is documented below.
     */
    @JvmName("ruuaxipadvjkjnrc")
    public suspend fun shieldedInstanceConfig(argument: suspend ClusterClusterAutoscalingAutoProvisioningDefaultsShieldedInstanceConfigArgsBuilder.() -> Unit) {
        val toBeMapped =
            ClusterClusterAutoscalingAutoProvisioningDefaultsShieldedInstanceConfigArgsBuilder().applySuspend {
                argument()
            }.build()
        val mapped = of(toBeMapped)
        this.shieldedInstanceConfig = mapped
    }

    /**
     * @param value Specifies the upgrade settings for NAP created node pools
     */
    @JvmName("scppkkqnkcrefuaf")
    public suspend fun upgradeSettings(`value`: ClusterClusterAutoscalingAutoProvisioningDefaultsUpgradeSettingsArgs?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.upgradeSettings = mapped
    }

    /**
     * @param argument Specifies the upgrade settings for NAP created node pools
     */
    @JvmName("gchtxpjuqkqsqgdm")
    public suspend fun upgradeSettings(argument: suspend ClusterClusterAutoscalingAutoProvisioningDefaultsUpgradeSettingsArgsBuilder.() -> Unit) {
        val toBeMapped =
            ClusterClusterAutoscalingAutoProvisioningDefaultsUpgradeSettingsArgsBuilder().applySuspend {
                argument()
            }.build()
        val mapped = of(toBeMapped)
        this.upgradeSettings = mapped
    }

    internal fun build(): ClusterClusterAutoscalingAutoProvisioningDefaultsArgs =
        ClusterClusterAutoscalingAutoProvisioningDefaultsArgs(
            bootDiskKmsKey = bootDiskKmsKey,
            diskSize = diskSize,
            diskType = diskType,
            imageType = imageType,
            management = management,
            minCpuPlatform = minCpuPlatform,
            oauthScopes = oauthScopes,
            serviceAccount = serviceAccount,
            shieldedInstanceConfig = shieldedInstanceConfig,
            upgradeSettings = upgradeSettings,
        )
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy