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

com.pulumi.kubernetes.kotlin.ProviderArgs.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: 4.18.2.0
Show newest version
@file:Suppress("NAME_SHADOWING", "DEPRECATION")

package com.pulumi.kubernetes.kotlin

import com.pulumi.core.Output
import com.pulumi.core.Output.of
import com.pulumi.kotlin.ConvertibleToJava
import com.pulumi.kotlin.PulumiTagMarker
import com.pulumi.kotlin.applySuspend
import com.pulumi.kubernetes.ProviderArgs.builder
import com.pulumi.kubernetes.kotlin.inputs.HelmReleaseSettingsArgs
import com.pulumi.kubernetes.kotlin.inputs.HelmReleaseSettingsArgsBuilder
import com.pulumi.kubernetes.kotlin.inputs.KubeClientSettingsArgs
import com.pulumi.kubernetes.kotlin.inputs.KubeClientSettingsArgsBuilder
import kotlin.Boolean
import kotlin.String
import kotlin.Suppress
import kotlin.Unit
import kotlin.jvm.JvmName

/**
 * The provider type for the kubernetes package.
 * @property cluster If present, the name of the kubeconfig cluster to use.
 * @property clusterIdentifier If present, this value will control the provider's replacement behavior. In particular, the provider will _only_ be replaced when `clusterIdentifier` changes; all other changes to provider configuration will be treated as updates.
 * Kubernetes does not yet offer an API for cluster identification, so Pulumi uses heuristics to decide when a provider resource should be replaced or updated. These heuristics can sometimes lead to destructive replace operations when an update would be more appropriate, or vice versa.
 * Use `clusterIdentifier` for more fine-grained control of the provider resource's lifecycle.
 * @property context If present, the name of the kubeconfig context to use.
 * @property deleteUnreachable If present and set to true, the provider will delete resources associated with an unreachable Kubernetes cluster from Pulumi state
 * @property enableConfigMapMutable BETA FEATURE - If present and set to true, allow ConfigMaps to be mutated.
 * This feature is in developer preview, and is disabled by default.
 * This config can be specified in the following ways using this precedence:
 * 1. This `enableConfigMapMutable` parameter.
 * 2. The `PULUMI_K8S_ENABLE_CONFIGMAP_MUTABLE` environment variable.
 * @property enableSecretMutable BETA FEATURE - If present and set to true, allow Secrets to be mutated.
 * This feature is in developer preview, and is disabled by default.
 * This config can be specified in the following ways using this precedence:
 * 1. This `enableSecretMutable` parameter.
 * 2. The `PULUMI_K8S_ENABLE_SECRET_MUTABLE` environment variable.
 * @property enableServerSideApply If present and set to false, disable Server-Side Apply mode.
 * See https://github.com/pulumi/pulumi-kubernetes/issues/2011 for additional details.
 * @property helmReleaseSettings Options to configure the Helm Release resource.
 * @property kubeClientSettings Options for tuning the Kubernetes client used by a Provider.
 * @property kubeconfig The contents of a kubeconfig file or the path to a kubeconfig file.
 * @property namespace If present, the default namespace to use. This flag is ignored for cluster-scoped resources.
 * A namespace can be specified in multiple places, and the precedence is as follows:
 * 1. `.metadata.namespace` set on the resource.
 * 2. This `namespace` parameter.
 * 3. `namespace` set for the active context in the kubeconfig.
 * @property renderYamlToDirectory BETA FEATURE - If present, render resource manifests to this directory. In this mode, resources will not
 * be created on a Kubernetes cluster, but the rendered manifests will be kept in sync with changes
 * to the Pulumi program. This feature is in developer preview, and is disabled by default.
 * Note that some computed Outputs such as status fields will not be populated
 * since the resources are not created on a Kubernetes cluster. These Output values will remain undefined,
 * and may result in an error if they are referenced by other resources. Also note that any secret values
 * used in these resources will be rendered in plaintext to the resulting YAML.
 * @property skipUpdateUnreachable If present and set to true, the provider will skip resources update associated with an unreachable Kubernetes cluster from Pulumi state
 * @property suppressDeprecationWarnings If present and set to true, suppress apiVersion deprecation warnings from the CLI.
 * @property suppressHelmHookWarnings If present and set to true, suppress unsupported Helm hook warnings from the CLI.
 */
public data class ProviderArgs(
    public val cluster: Output? = null,
    public val clusterIdentifier: Output? = null,
    public val context: Output? = null,
    public val deleteUnreachable: Output? = null,
    public val enableConfigMapMutable: Output? = null,
    public val enableSecretMutable: Output? = null,
    public val enableServerSideApply: Output? = null,
    public val helmReleaseSettings: Output? = null,
    public val kubeClientSettings: Output? = null,
    public val kubeconfig: Output? = null,
    public val namespace: Output? = null,
    public val renderYamlToDirectory: Output? = null,
    public val skipUpdateUnreachable: Output? = null,
    public val suppressDeprecationWarnings: Output? = null,
    public val suppressHelmHookWarnings: Output? = null,
) : ConvertibleToJava {
    override fun toJava(): com.pulumi.kubernetes.ProviderArgs =
        com.pulumi.kubernetes.ProviderArgs.builder()
            .cluster(cluster?.applyValue({ args0 -> args0 }))
            .clusterIdentifier(clusterIdentifier?.applyValue({ args0 -> args0 }))
            .context(context?.applyValue({ args0 -> args0 }))
            .deleteUnreachable(deleteUnreachable?.applyValue({ args0 -> args0 }))
            .enableConfigMapMutable(enableConfigMapMutable?.applyValue({ args0 -> args0 }))
            .enableSecretMutable(enableSecretMutable?.applyValue({ args0 -> args0 }))
            .enableServerSideApply(enableServerSideApply?.applyValue({ args0 -> args0 }))
            .helmReleaseSettings(
                helmReleaseSettings?.applyValue({ args0 ->
                    args0.let({ args0 ->
                        args0.toJava()
                    })
                }),
            )
            .kubeClientSettings(
                kubeClientSettings?.applyValue({ args0 ->
                    args0.let({ args0 ->
                        args0.toJava()
                    })
                }),
            )
            .kubeconfig(kubeconfig?.applyValue({ args0 -> args0 }))
            .namespace(namespace?.applyValue({ args0 -> args0 }))
            .renderYamlToDirectory(renderYamlToDirectory?.applyValue({ args0 -> args0 }))
            .skipUpdateUnreachable(skipUpdateUnreachable?.applyValue({ args0 -> args0 }))
            .suppressDeprecationWarnings(suppressDeprecationWarnings?.applyValue({ args0 -> args0 }))
            .suppressHelmHookWarnings(suppressHelmHookWarnings?.applyValue({ args0 -> args0 })).build()
}

/**
 * Builder for [ProviderArgs].
 */
@PulumiTagMarker
public class ProviderArgsBuilder internal constructor() {
    private var cluster: Output? = null

    private var clusterIdentifier: Output? = null

    private var context: Output? = null

    private var deleteUnreachable: Output? = null

    private var enableConfigMapMutable: Output? = null

    private var enableSecretMutable: Output? = null

    private var enableServerSideApply: Output? = null

    private var helmReleaseSettings: Output? = null

    private var kubeClientSettings: Output? = null

    private var kubeconfig: Output? = null

    private var namespace: Output? = null

    private var renderYamlToDirectory: Output? = null

    private var skipUpdateUnreachable: Output? = null

    private var suppressDeprecationWarnings: Output? = null

    private var suppressHelmHookWarnings: Output? = null

    /**
     * @param value If present, the name of the kubeconfig cluster to use.
     */
    @JvmName("civdvuwppstspjso")
    public suspend fun cluster(`value`: Output) {
        this.cluster = value
    }

    /**
     * @param value If present, this value will control the provider's replacement behavior. In particular, the provider will _only_ be replaced when `clusterIdentifier` changes; all other changes to provider configuration will be treated as updates.
     * Kubernetes does not yet offer an API for cluster identification, so Pulumi uses heuristics to decide when a provider resource should be replaced or updated. These heuristics can sometimes lead to destructive replace operations when an update would be more appropriate, or vice versa.
     * Use `clusterIdentifier` for more fine-grained control of the provider resource's lifecycle.
     */
    @JvmName("jbouwmrgqpuleugc")
    public suspend fun clusterIdentifier(`value`: Output) {
        this.clusterIdentifier = value
    }

    /**
     * @param value If present, the name of the kubeconfig context to use.
     */
    @JvmName("kmuetaulnrpfiwma")
    public suspend fun context(`value`: Output) {
        this.context = value
    }

    /**
     * @param value If present and set to true, the provider will delete resources associated with an unreachable Kubernetes cluster from Pulumi state
     */
    @JvmName("wemolfhvqbnllrlv")
    public suspend fun deleteUnreachable(`value`: Output) {
        this.deleteUnreachable = value
    }

    /**
     * @param value BETA FEATURE - If present and set to true, allow ConfigMaps to be mutated.
     * This feature is in developer preview, and is disabled by default.
     * This config can be specified in the following ways using this precedence:
     * 1. This `enableConfigMapMutable` parameter.
     * 2. The `PULUMI_K8S_ENABLE_CONFIGMAP_MUTABLE` environment variable.
     */
    @JvmName("feuepvtqxtllwppf")
    public suspend fun enableConfigMapMutable(`value`: Output) {
        this.enableConfigMapMutable = value
    }

    /**
     * @param value BETA FEATURE - If present and set to true, allow Secrets to be mutated.
     * This feature is in developer preview, and is disabled by default.
     * This config can be specified in the following ways using this precedence:
     * 1. This `enableSecretMutable` parameter.
     * 2. The `PULUMI_K8S_ENABLE_SECRET_MUTABLE` environment variable.
     */
    @JvmName("xmeryqdwpkjwtqxi")
    public suspend fun enableSecretMutable(`value`: Output) {
        this.enableSecretMutable = value
    }

    /**
     * @param value If present and set to false, disable Server-Side Apply mode.
     * See https://github.com/pulumi/pulumi-kubernetes/issues/2011 for additional details.
     */
    @JvmName("okfsobcaqbmbkqys")
    public suspend fun enableServerSideApply(`value`: Output) {
        this.enableServerSideApply = value
    }

    /**
     * @param value Options to configure the Helm Release resource.
     */
    @JvmName("qgwvibctommuwolx")
    public suspend fun helmReleaseSettings(`value`: Output) {
        this.helmReleaseSettings = value
    }

    /**
     * @param value Options for tuning the Kubernetes client used by a Provider.
     */
    @JvmName("sxnsopvmqdessape")
    public suspend fun kubeClientSettings(`value`: Output) {
        this.kubeClientSettings = value
    }

    /**
     * @param value The contents of a kubeconfig file or the path to a kubeconfig file.
     */
    @JvmName("rgojgdbirhupqapl")
    public suspend fun kubeconfig(`value`: Output) {
        this.kubeconfig = value
    }

    /**
     * @param value If present, the default namespace to use. This flag is ignored for cluster-scoped resources.
     * A namespace can be specified in multiple places, and the precedence is as follows:
     * 1. `.metadata.namespace` set on the resource.
     * 2. This `namespace` parameter.
     * 3. `namespace` set for the active context in the kubeconfig.
     */
    @JvmName("edhuckplnpmteico")
    public suspend fun namespace(`value`: Output) {
        this.namespace = value
    }

    /**
     * @param value BETA FEATURE - If present, render resource manifests to this directory. In this mode, resources will not
     * be created on a Kubernetes cluster, but the rendered manifests will be kept in sync with changes
     * to the Pulumi program. This feature is in developer preview, and is disabled by default.
     * Note that some computed Outputs such as status fields will not be populated
     * since the resources are not created on a Kubernetes cluster. These Output values will remain undefined,
     * and may result in an error if they are referenced by other resources. Also note that any secret values
     * used in these resources will be rendered in plaintext to the resulting YAML.
     */
    @JvmName("lrneyrxdydmglums")
    public suspend fun renderYamlToDirectory(`value`: Output) {
        this.renderYamlToDirectory = value
    }

    /**
     * @param value If present and set to true, the provider will skip resources update associated with an unreachable Kubernetes cluster from Pulumi state
     */
    @JvmName("rkssluhikrtgdhhj")
    public suspend fun skipUpdateUnreachable(`value`: Output) {
        this.skipUpdateUnreachable = value
    }

    /**
     * @param value If present and set to true, suppress apiVersion deprecation warnings from the CLI.
     */
    @JvmName("cuqubqvtxocymfjo")
    public suspend fun suppressDeprecationWarnings(`value`: Output) {
        this.suppressDeprecationWarnings = value
    }

    /**
     * @param value If present and set to true, suppress unsupported Helm hook warnings from the CLI.
     */
    @JvmName("iyuupjtwwonpfbqw")
    public suspend fun suppressHelmHookWarnings(`value`: Output) {
        this.suppressHelmHookWarnings = value
    }

    /**
     * @param value If present, the name of the kubeconfig cluster to use.
     */
    @JvmName("idnfnvcnyyhorhir")
    public suspend fun cluster(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.cluster = mapped
    }

    /**
     * @param value If present, this value will control the provider's replacement behavior. In particular, the provider will _only_ be replaced when `clusterIdentifier` changes; all other changes to provider configuration will be treated as updates.
     * Kubernetes does not yet offer an API for cluster identification, so Pulumi uses heuristics to decide when a provider resource should be replaced or updated. These heuristics can sometimes lead to destructive replace operations when an update would be more appropriate, or vice versa.
     * Use `clusterIdentifier` for more fine-grained control of the provider resource's lifecycle.
     */
    @JvmName("uduouvsdhekmgtmc")
    public suspend fun clusterIdentifier(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.clusterIdentifier = mapped
    }

    /**
     * @param value If present, the name of the kubeconfig context to use.
     */
    @JvmName("wpiffwkpioidesqq")
    public suspend fun context(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.context = mapped
    }

    /**
     * @param value If present and set to true, the provider will delete resources associated with an unreachable Kubernetes cluster from Pulumi state
     */
    @JvmName("oiiebdftwcpcpnee")
    public suspend fun deleteUnreachable(`value`: Boolean?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.deleteUnreachable = mapped
    }

    /**
     * @param value BETA FEATURE - If present and set to true, allow ConfigMaps to be mutated.
     * This feature is in developer preview, and is disabled by default.
     * This config can be specified in the following ways using this precedence:
     * 1. This `enableConfigMapMutable` parameter.
     * 2. The `PULUMI_K8S_ENABLE_CONFIGMAP_MUTABLE` environment variable.
     */
    @JvmName("mmtjcwefpynprwgj")
    public suspend fun enableConfigMapMutable(`value`: Boolean?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.enableConfigMapMutable = mapped
    }

    /**
     * @param value BETA FEATURE - If present and set to true, allow Secrets to be mutated.
     * This feature is in developer preview, and is disabled by default.
     * This config can be specified in the following ways using this precedence:
     * 1. This `enableSecretMutable` parameter.
     * 2. The `PULUMI_K8S_ENABLE_SECRET_MUTABLE` environment variable.
     */
    @JvmName("jvcsehyqsjhfeibq")
    public suspend fun enableSecretMutable(`value`: Boolean?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.enableSecretMutable = mapped
    }

    /**
     * @param value If present and set to false, disable Server-Side Apply mode.
     * See https://github.com/pulumi/pulumi-kubernetes/issues/2011 for additional details.
     */
    @JvmName("ypoiauqksaptgisg")
    public suspend fun enableServerSideApply(`value`: Boolean?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.enableServerSideApply = mapped
    }

    /**
     * @param value Options to configure the Helm Release resource.
     */
    @JvmName("bfuxtvjeobepsrfp")
    public suspend fun helmReleaseSettings(`value`: HelmReleaseSettingsArgs?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.helmReleaseSettings = mapped
    }

    /**
     * @param argument Options to configure the Helm Release resource.
     */
    @JvmName("awqilkdgjufofpqq")
    public suspend fun helmReleaseSettings(argument: suspend HelmReleaseSettingsArgsBuilder.() -> Unit) {
        val toBeMapped = HelmReleaseSettingsArgsBuilder().applySuspend { argument() }.build()
        val mapped = of(toBeMapped)
        this.helmReleaseSettings = mapped
    }

    /**
     * @param value Options for tuning the Kubernetes client used by a Provider.
     */
    @JvmName("fivhdajugjfugwrr")
    public suspend fun kubeClientSettings(`value`: KubeClientSettingsArgs?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.kubeClientSettings = mapped
    }

    /**
     * @param argument Options for tuning the Kubernetes client used by a Provider.
     */
    @JvmName("axynahyrckonaing")
    public suspend fun kubeClientSettings(argument: suspend KubeClientSettingsArgsBuilder.() -> Unit) {
        val toBeMapped = KubeClientSettingsArgsBuilder().applySuspend { argument() }.build()
        val mapped = of(toBeMapped)
        this.kubeClientSettings = mapped
    }

    /**
     * @param value The contents of a kubeconfig file or the path to a kubeconfig file.
     */
    @JvmName("jdqlgxtellsusbtq")
    public suspend fun kubeconfig(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.kubeconfig = mapped
    }

    /**
     * @param value If present, the default namespace to use. This flag is ignored for cluster-scoped resources.
     * A namespace can be specified in multiple places, and the precedence is as follows:
     * 1. `.metadata.namespace` set on the resource.
     * 2. This `namespace` parameter.
     * 3. `namespace` set for the active context in the kubeconfig.
     */
    @JvmName("lvosdrxknorywjnk")
    public suspend fun namespace(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.namespace = mapped
    }

    /**
     * @param value BETA FEATURE - If present, render resource manifests to this directory. In this mode, resources will not
     * be created on a Kubernetes cluster, but the rendered manifests will be kept in sync with changes
     * to the Pulumi program. This feature is in developer preview, and is disabled by default.
     * Note that some computed Outputs such as status fields will not be populated
     * since the resources are not created on a Kubernetes cluster. These Output values will remain undefined,
     * and may result in an error if they are referenced by other resources. Also note that any secret values
     * used in these resources will be rendered in plaintext to the resulting YAML.
     */
    @JvmName("rtuuvlruxcvldqgr")
    public suspend fun renderYamlToDirectory(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.renderYamlToDirectory = mapped
    }

    /**
     * @param value If present and set to true, the provider will skip resources update associated with an unreachable Kubernetes cluster from Pulumi state
     */
    @JvmName("annoyjfffhndvbsd")
    public suspend fun skipUpdateUnreachable(`value`: Boolean?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.skipUpdateUnreachable = mapped
    }

    /**
     * @param value If present and set to true, suppress apiVersion deprecation warnings from the CLI.
     */
    @JvmName("eedhokwjlbynyhdv")
    public suspend fun suppressDeprecationWarnings(`value`: Boolean?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.suppressDeprecationWarnings = mapped
    }

    /**
     * @param value If present and set to true, suppress unsupported Helm hook warnings from the CLI.
     */
    @JvmName("rygpocnkmuepsjpl")
    public suspend fun suppressHelmHookWarnings(`value`: Boolean?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.suppressHelmHookWarnings = mapped
    }

    internal fun build(): ProviderArgs = ProviderArgs(
        cluster = cluster,
        clusterIdentifier = clusterIdentifier,
        context = context,
        deleteUnreachable = deleteUnreachable,
        enableConfigMapMutable = enableConfigMapMutable,
        enableSecretMutable = enableSecretMutable,
        enableServerSideApply = enableServerSideApply,
        helmReleaseSettings = helmReleaseSettings,
        kubeClientSettings = kubeClientSettings,
        kubeconfig = kubeconfig,
        namespace = namespace,
        renderYamlToDirectory = renderYamlToDirectory,
        skipUpdateUnreachable = skipUpdateUnreachable,
        suppressDeprecationWarnings = suppressDeprecationWarnings,
        suppressHelmHookWarnings = suppressHelmHookWarnings,
    )
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy