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

com.pulumi.gcp.container.kotlin.inputs.AwsClusterControlPlaneArgs.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.AwsClusterControlPlaneArgs.builder
import com.pulumi.kotlin.ConvertibleToJava
import com.pulumi.kotlin.PulumiNullFieldException
import com.pulumi.kotlin.PulumiTagMarker
import com.pulumi.kotlin.applySuspend
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 awsServicesAuthentication Authentication configuration for management of AWS resources.
 * @property configEncryption The ARN of the AWS KMS key used to encrypt cluster configuration.
 * @property databaseEncryption The ARN of the AWS KMS key used to encrypt cluster secrets.
 * @property iamInstanceProfile The name of the AWS IAM instance pofile to assign to each control plane replica.
 * @property instancePlacement Details of placement information for an instance.
 * @property instanceType Optional. The AWS instance type. When unspecified, it defaults to `m5.large`.
 * @property mainVolume Optional. Configuration related to the main volume provisioned for each control plane replica. The main volume is in charge of storing all of the cluster's etcd state. Volumes will be provisioned in the availability zone associated with the corresponding subnet. When unspecified, it defaults to 8 GiB with the GP2 volume type.
 * @property proxyConfig Proxy configuration for outbound HTTP(S) traffic.
 * @property rootVolume Optional. Configuration related to the root volume provisioned for each control plane replica. Volumes will be provisioned in the availability zone associated with the corresponding subnet. When unspecified, it defaults to 32 GiB with the GP2 volume type.
 * @property securityGroupIds Optional. The IDs of additional security groups to add to control plane replicas. The Anthos Multi-Cloud API will automatically create and manage security groups with the minimum rules needed for a functioning cluster.
 * @property sshConfig Optional. SSH configuration for how to access the underlying control plane machines.
 * @property subnetIds The list of subnets where control plane replicas will run. A replica will be provisioned on each subnet and up to three values can be provided. Each subnet must be in a different AWS Availability Zone (AZ).
 * @property tags Optional. A set of AWS resource tags to propagate to all underlying managed AWS resources. Specify at most 50 pairs containing alphanumerics, spaces, and symbols (.+-=_:@/). Keys can be up to 127 Unicode characters. Values can be up to 255 Unicode characters.
 * @property version The Kubernetes version to run on control plane replicas (e.g. `1.19.10-gke.1000`). You can list all supported versions on a given Google Cloud region by calling .
 */
public data class AwsClusterControlPlaneArgs(
    public val awsServicesAuthentication: Output,
    public val configEncryption: Output,
    public val databaseEncryption: Output,
    public val iamInstanceProfile: Output,
    public val instancePlacement: Output? = null,
    public val instanceType: Output? = null,
    public val mainVolume: Output? = null,
    public val proxyConfig: Output? = null,
    public val rootVolume: Output? = null,
    public val securityGroupIds: Output>? = null,
    public val sshConfig: Output? = null,
    public val subnetIds: Output>,
    public val tags: Output>? = null,
    public val version: Output,
) : ConvertibleToJava {
    override fun toJava(): com.pulumi.gcp.container.inputs.AwsClusterControlPlaneArgs =
        com.pulumi.gcp.container.inputs.AwsClusterControlPlaneArgs.builder()
            .awsServicesAuthentication(
                awsServicesAuthentication.applyValue({ args0 ->
                    args0.let({ args0 ->
                        args0.toJava()
                    })
                }),
            )
            .configEncryption(configEncryption.applyValue({ args0 -> args0.let({ args0 -> args0.toJava() }) }))
            .databaseEncryption(
                databaseEncryption.applyValue({ args0 ->
                    args0.let({ args0 ->
                        args0.toJava()
                    })
                }),
            )
            .iamInstanceProfile(iamInstanceProfile.applyValue({ args0 -> args0 }))
            .instancePlacement(instancePlacement?.applyValue({ args0 -> args0.let({ args0 -> args0.toJava() }) }))
            .instanceType(instanceType?.applyValue({ args0 -> args0 }))
            .mainVolume(mainVolume?.applyValue({ args0 -> args0.let({ args0 -> args0.toJava() }) }))
            .proxyConfig(proxyConfig?.applyValue({ args0 -> args0.let({ args0 -> args0.toJava() }) }))
            .rootVolume(rootVolume?.applyValue({ args0 -> args0.let({ args0 -> args0.toJava() }) }))
            .securityGroupIds(securityGroupIds?.applyValue({ args0 -> args0.map({ args0 -> args0 }) }))
            .sshConfig(sshConfig?.applyValue({ args0 -> args0.let({ args0 -> args0.toJava() }) }))
            .subnetIds(subnetIds.applyValue({ args0 -> args0.map({ args0 -> args0 }) }))
            .tags(tags?.applyValue({ args0 -> args0.map({ args0 -> args0.key.to(args0.value) }).toMap() }))
            .version(version.applyValue({ args0 -> args0 })).build()
}

/**
 * Builder for [AwsClusterControlPlaneArgs].
 */
@PulumiTagMarker
public class AwsClusterControlPlaneArgsBuilder internal constructor() {
    private var awsServicesAuthentication:
        Output? = null

    private var configEncryption: Output? = null

    private var databaseEncryption: Output? = null

    private var iamInstanceProfile: Output? = null

    private var instancePlacement: Output? = null

    private var instanceType: Output? = null

    private var mainVolume: Output? = null

    private var proxyConfig: Output? = null

    private var rootVolume: Output? = null

    private var securityGroupIds: Output>? = null

    private var sshConfig: Output? = null

    private var subnetIds: Output>? = null

    private var tags: Output>? = null

    private var version: Output? = null

    /**
     * @param value Authentication configuration for management of AWS resources.
     */
    @JvmName("jsfkvditecldxgqu")
    public suspend fun awsServicesAuthentication(`value`: Output) {
        this.awsServicesAuthentication = value
    }

    /**
     * @param value The ARN of the AWS KMS key used to encrypt cluster configuration.
     */
    @JvmName("gymrxaxekxaedrne")
    public suspend fun configEncryption(`value`: Output) {
        this.configEncryption = value
    }

    /**
     * @param value The ARN of the AWS KMS key used to encrypt cluster secrets.
     */
    @JvmName("siulfulwgfwukknb")
    public suspend fun databaseEncryption(`value`: Output) {
        this.databaseEncryption = value
    }

    /**
     * @param value The name of the AWS IAM instance pofile to assign to each control plane replica.
     */
    @JvmName("vspqagrwslcpceoi")
    public suspend fun iamInstanceProfile(`value`: Output) {
        this.iamInstanceProfile = value
    }

    /**
     * @param value Details of placement information for an instance.
     */
    @JvmName("sifgywyapttclyqy")
    public suspend fun instancePlacement(`value`: Output) {
        this.instancePlacement = value
    }

    /**
     * @param value Optional. The AWS instance type. When unspecified, it defaults to `m5.large`.
     */
    @JvmName("mcyqtljtoxvyebwa")
    public suspend fun instanceType(`value`: Output) {
        this.instanceType = value
    }

    /**
     * @param value Optional. Configuration related to the main volume provisioned for each control plane replica. The main volume is in charge of storing all of the cluster's etcd state. Volumes will be provisioned in the availability zone associated with the corresponding subnet. When unspecified, it defaults to 8 GiB with the GP2 volume type.
     */
    @JvmName("dkfyruckuewhhrbx")
    public suspend fun mainVolume(`value`: Output) {
        this.mainVolume = value
    }

    /**
     * @param value Proxy configuration for outbound HTTP(S) traffic.
     */
    @JvmName("mkqyvdbxqccctsde")
    public suspend fun proxyConfig(`value`: Output) {
        this.proxyConfig = value
    }

    /**
     * @param value Optional. Configuration related to the root volume provisioned for each control plane replica. Volumes will be provisioned in the availability zone associated with the corresponding subnet. When unspecified, it defaults to 32 GiB with the GP2 volume type.
     */
    @JvmName("ncitrsmieyordccv")
    public suspend fun rootVolume(`value`: Output) {
        this.rootVolume = value
    }

    /**
     * @param value Optional. The IDs of additional security groups to add to control plane replicas. The Anthos Multi-Cloud API will automatically create and manage security groups with the minimum rules needed for a functioning cluster.
     */
    @JvmName("etqvabigpckptyuc")
    public suspend fun securityGroupIds(`value`: Output>) {
        this.securityGroupIds = value
    }

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

    /**
     * @param values Optional. The IDs of additional security groups to add to control plane replicas. The Anthos Multi-Cloud API will automatically create and manage security groups with the minimum rules needed for a functioning cluster.
     */
    @JvmName("fhjgwrylbtfaphmi")
    public suspend fun securityGroupIds(values: List>) {
        this.securityGroupIds = Output.all(values)
    }

    /**
     * @param value Optional. SSH configuration for how to access the underlying control plane machines.
     */
    @JvmName("bjyiamjhjcrgpvoc")
    public suspend fun sshConfig(`value`: Output) {
        this.sshConfig = value
    }

    /**
     * @param value The list of subnets where control plane replicas will run. A replica will be provisioned on each subnet and up to three values can be provided. Each subnet must be in a different AWS Availability Zone (AZ).
     */
    @JvmName("nvaqjuopdwkrqxpf")
    public suspend fun subnetIds(`value`: Output>) {
        this.subnetIds = value
    }

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

    /**
     * @param values The list of subnets where control plane replicas will run. A replica will be provisioned on each subnet and up to three values can be provided. Each subnet must be in a different AWS Availability Zone (AZ).
     */
    @JvmName("wedjwwdluivyntxe")
    public suspend fun subnetIds(values: List>) {
        this.subnetIds = Output.all(values)
    }

    /**
     * @param value Optional. A set of AWS resource tags to propagate to all underlying managed AWS resources. Specify at most 50 pairs containing alphanumerics, spaces, and symbols (.+-=_:@/). Keys can be up to 127 Unicode characters. Values can be up to 255 Unicode characters.
     */
    @JvmName("ibktlwlpfdlvhilm")
    public suspend fun tags(`value`: Output>) {
        this.tags = value
    }

    /**
     * @param value The Kubernetes version to run on control plane replicas (e.g. `1.19.10-gke.1000`). You can list all supported versions on a given Google Cloud region by calling .
     */
    @JvmName("qwjtcglresvxgdch")
    public suspend fun version(`value`: Output) {
        this.version = value
    }

    /**
     * @param value Authentication configuration for management of AWS resources.
     */
    @JvmName("fhvwhywemkibmgvk")
    public suspend fun awsServicesAuthentication(`value`: AwsClusterControlPlaneAwsServicesAuthenticationArgs) {
        val toBeMapped = value
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.awsServicesAuthentication = mapped
    }

    /**
     * @param argument Authentication configuration for management of AWS resources.
     */
    @JvmName("fmnwsiotdbdylfce")
    public suspend fun awsServicesAuthentication(argument: suspend AwsClusterControlPlaneAwsServicesAuthenticationArgsBuilder.() -> Unit) {
        val toBeMapped = AwsClusterControlPlaneAwsServicesAuthenticationArgsBuilder().applySuspend {
            argument()
        }.build()
        val mapped = of(toBeMapped)
        this.awsServicesAuthentication = mapped
    }

    /**
     * @param value The ARN of the AWS KMS key used to encrypt cluster configuration.
     */
    @JvmName("ogafhnklqpqtvfdc")
    public suspend fun configEncryption(`value`: AwsClusterControlPlaneConfigEncryptionArgs) {
        val toBeMapped = value
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.configEncryption = mapped
    }

    /**
     * @param argument The ARN of the AWS KMS key used to encrypt cluster configuration.
     */
    @JvmName("twufkapdjaxjiqnn")
    public suspend fun configEncryption(argument: suspend AwsClusterControlPlaneConfigEncryptionArgsBuilder.() -> Unit) {
        val toBeMapped = AwsClusterControlPlaneConfigEncryptionArgsBuilder().applySuspend {
            argument()
        }.build()
        val mapped = of(toBeMapped)
        this.configEncryption = mapped
    }

    /**
     * @param value The ARN of the AWS KMS key used to encrypt cluster secrets.
     */
    @JvmName("giavxgygcikckkxs")
    public suspend fun databaseEncryption(`value`: AwsClusterControlPlaneDatabaseEncryptionArgs) {
        val toBeMapped = value
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.databaseEncryption = mapped
    }

    /**
     * @param argument The ARN of the AWS KMS key used to encrypt cluster secrets.
     */
    @JvmName("ccgucbgqbdmbefjt")
    public suspend fun databaseEncryption(argument: suspend AwsClusterControlPlaneDatabaseEncryptionArgsBuilder.() -> Unit) {
        val toBeMapped = AwsClusterControlPlaneDatabaseEncryptionArgsBuilder().applySuspend {
            argument()
        }.build()
        val mapped = of(toBeMapped)
        this.databaseEncryption = mapped
    }

    /**
     * @param value The name of the AWS IAM instance pofile to assign to each control plane replica.
     */
    @JvmName("tfhqodqgydoghwuy")
    public suspend fun iamInstanceProfile(`value`: String) {
        val toBeMapped = value
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.iamInstanceProfile = mapped
    }

    /**
     * @param value Details of placement information for an instance.
     */
    @JvmName("pgetuwitqjroyckm")
    public suspend fun instancePlacement(`value`: AwsClusterControlPlaneInstancePlacementArgs?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.instancePlacement = mapped
    }

    /**
     * @param argument Details of placement information for an instance.
     */
    @JvmName("rqtrbvvfcwbhfdjm")
    public suspend fun instancePlacement(argument: suspend AwsClusterControlPlaneInstancePlacementArgsBuilder.() -> Unit) {
        val toBeMapped = AwsClusterControlPlaneInstancePlacementArgsBuilder().applySuspend {
            argument()
        }.build()
        val mapped = of(toBeMapped)
        this.instancePlacement = mapped
    }

    /**
     * @param value Optional. The AWS instance type. When unspecified, it defaults to `m5.large`.
     */
    @JvmName("nqjxbwsvrqomsnac")
    public suspend fun instanceType(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.instanceType = mapped
    }

    /**
     * @param value Optional. Configuration related to the main volume provisioned for each control plane replica. The main volume is in charge of storing all of the cluster's etcd state. Volumes will be provisioned in the availability zone associated with the corresponding subnet. When unspecified, it defaults to 8 GiB with the GP2 volume type.
     */
    @JvmName("qwgkqmpawwboasgo")
    public suspend fun mainVolume(`value`: AwsClusterControlPlaneMainVolumeArgs?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.mainVolume = mapped
    }

    /**
     * @param argument Optional. Configuration related to the main volume provisioned for each control plane replica. The main volume is in charge of storing all of the cluster's etcd state. Volumes will be provisioned in the availability zone associated with the corresponding subnet. When unspecified, it defaults to 8 GiB with the GP2 volume type.
     */
    @JvmName("inweruwrcjclndla")
    public suspend fun mainVolume(argument: suspend AwsClusterControlPlaneMainVolumeArgsBuilder.() -> Unit) {
        val toBeMapped = AwsClusterControlPlaneMainVolumeArgsBuilder().applySuspend {
            argument()
        }.build()
        val mapped = of(toBeMapped)
        this.mainVolume = mapped
    }

    /**
     * @param value Proxy configuration for outbound HTTP(S) traffic.
     */
    @JvmName("spgghiacutalbgls")
    public suspend fun proxyConfig(`value`: AwsClusterControlPlaneProxyConfigArgs?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.proxyConfig = mapped
    }

    /**
     * @param argument Proxy configuration for outbound HTTP(S) traffic.
     */
    @JvmName("ufgjmanvjijpmeca")
    public suspend fun proxyConfig(argument: suspend AwsClusterControlPlaneProxyConfigArgsBuilder.() -> Unit) {
        val toBeMapped = AwsClusterControlPlaneProxyConfigArgsBuilder().applySuspend {
            argument()
        }.build()
        val mapped = of(toBeMapped)
        this.proxyConfig = mapped
    }

    /**
     * @param value Optional. Configuration related to the root volume provisioned for each control plane replica. Volumes will be provisioned in the availability zone associated with the corresponding subnet. When unspecified, it defaults to 32 GiB with the GP2 volume type.
     */
    @JvmName("wgjxriifrgdqxpxd")
    public suspend fun rootVolume(`value`: AwsClusterControlPlaneRootVolumeArgs?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.rootVolume = mapped
    }

    /**
     * @param argument Optional. Configuration related to the root volume provisioned for each control plane replica. Volumes will be provisioned in the availability zone associated with the corresponding subnet. When unspecified, it defaults to 32 GiB with the GP2 volume type.
     */
    @JvmName("dwmpvniqgfotvmno")
    public suspend fun rootVolume(argument: suspend AwsClusterControlPlaneRootVolumeArgsBuilder.() -> Unit) {
        val toBeMapped = AwsClusterControlPlaneRootVolumeArgsBuilder().applySuspend {
            argument()
        }.build()
        val mapped = of(toBeMapped)
        this.rootVolume = mapped
    }

    /**
     * @param value Optional. The IDs of additional security groups to add to control plane replicas. The Anthos Multi-Cloud API will automatically create and manage security groups with the minimum rules needed for a functioning cluster.
     */
    @JvmName("dakuidfcgeitbpft")
    public suspend fun securityGroupIds(`value`: List?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.securityGroupIds = mapped
    }

    /**
     * @param values Optional. The IDs of additional security groups to add to control plane replicas. The Anthos Multi-Cloud API will automatically create and manage security groups with the minimum rules needed for a functioning cluster.
     */
    @JvmName("ponbrlpybecvudee")
    public suspend fun securityGroupIds(vararg values: String) {
        val toBeMapped = values.toList()
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.securityGroupIds = mapped
    }

    /**
     * @param value Optional. SSH configuration for how to access the underlying control plane machines.
     */
    @JvmName("glcwxvfkfptjmeii")
    public suspend fun sshConfig(`value`: AwsClusterControlPlaneSshConfigArgs?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.sshConfig = mapped
    }

    /**
     * @param argument Optional. SSH configuration for how to access the underlying control plane machines.
     */
    @JvmName("baxkhqiuqlxkrybl")
    public suspend fun sshConfig(argument: suspend AwsClusterControlPlaneSshConfigArgsBuilder.() -> Unit) {
        val toBeMapped = AwsClusterControlPlaneSshConfigArgsBuilder().applySuspend { argument() }.build()
        val mapped = of(toBeMapped)
        this.sshConfig = mapped
    }

    /**
     * @param value The list of subnets where control plane replicas will run. A replica will be provisioned on each subnet and up to three values can be provided. Each subnet must be in a different AWS Availability Zone (AZ).
     */
    @JvmName("oqfbjdgnysvgoony")
    public suspend fun subnetIds(`value`: List) {
        val toBeMapped = value
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.subnetIds = mapped
    }

    /**
     * @param values The list of subnets where control plane replicas will run. A replica will be provisioned on each subnet and up to three values can be provided. Each subnet must be in a different AWS Availability Zone (AZ).
     */
    @JvmName("kxmalotibafqgtbm")
    public suspend fun subnetIds(vararg values: String) {
        val toBeMapped = values.toList()
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.subnetIds = mapped
    }

    /**
     * @param value Optional. A set of AWS resource tags to propagate to all underlying managed AWS resources. Specify at most 50 pairs containing alphanumerics, spaces, and symbols (.+-=_:@/). Keys can be up to 127 Unicode characters. Values can be up to 255 Unicode characters.
     */
    @JvmName("vkeixbagrpcwpryv")
    public suspend fun tags(`value`: Map?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.tags = mapped
    }

    /**
     * @param values Optional. A set of AWS resource tags to propagate to all underlying managed AWS resources. Specify at most 50 pairs containing alphanumerics, spaces, and symbols (.+-=_:@/). Keys can be up to 127 Unicode characters. Values can be up to 255 Unicode characters.
     */
    @JvmName("jyuyxnwasqhmdxqc")
    public fun tags(vararg values: Pair) {
        val toBeMapped = values.toMap()
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.tags = mapped
    }

    /**
     * @param value The Kubernetes version to run on control plane replicas (e.g. `1.19.10-gke.1000`). You can list all supported versions on a given Google Cloud region by calling .
     */
    @JvmName("iixfqluryqkoncml")
    public suspend fun version(`value`: String) {
        val toBeMapped = value
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.version = mapped
    }

    internal fun build(): AwsClusterControlPlaneArgs = AwsClusterControlPlaneArgs(
        awsServicesAuthentication = awsServicesAuthentication ?: throw
            PulumiNullFieldException("awsServicesAuthentication"),
        configEncryption = configEncryption ?: throw PulumiNullFieldException("configEncryption"),
        databaseEncryption = databaseEncryption ?: throw PulumiNullFieldException("databaseEncryption"),
        iamInstanceProfile = iamInstanceProfile ?: throw PulumiNullFieldException("iamInstanceProfile"),
        instancePlacement = instancePlacement,
        instanceType = instanceType,
        mainVolume = mainVolume,
        proxyConfig = proxyConfig,
        rootVolume = rootVolume,
        securityGroupIds = securityGroupIds,
        sshConfig = sshConfig,
        subnetIds = subnetIds ?: throw PulumiNullFieldException("subnetIds"),
        tags = tags,
        version = version ?: throw PulumiNullFieldException("version"),
    )
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy