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

com.pulumi.kubernetes.admissionregistration.v1beta1.kotlin.inputs.ParamRefArgs.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.admissionregistration.v1beta1.kotlin.inputs

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.admissionregistration.v1beta1.inputs.ParamRefArgs.builder
import com.pulumi.kubernetes.meta.v1.kotlin.inputs.LabelSelectorArgs
import com.pulumi.kubernetes.meta.v1.kotlin.inputs.LabelSelectorArgsBuilder
import kotlin.String
import kotlin.Suppress
import kotlin.Unit
import kotlin.jvm.JvmName

/**
 * ParamRef describes how to locate the params to be used as input to expressions of rules applied by a policy binding.
 * @property name name is the name of the resource being referenced.
 * One of `name` or `selector` must be set, but `name` and `selector` are mutually exclusive properties. If one is set, the other must be unset.
 * A single parameter used for all admission requests can be configured by setting the `name` field, leaving `selector` blank, and setting namespace if `paramKind` is namespace-scoped.
 * @property namespace namespace is the namespace of the referenced resource. Allows limiting the search for params to a specific namespace. Applies to both `name` and `selector` fields.
 * A per-namespace parameter may be used by specifying a namespace-scoped `paramKind` in the policy and leaving this field empty.
 * - If `paramKind` is cluster-scoped, this field MUST be unset. Setting this field results in a configuration error.
 * - If `paramKind` is namespace-scoped, the namespace of the object being evaluated for admission will be used when this field is left unset. Take care that if this is left empty the binding must not match any cluster-scoped resources, which will result in an error.
 * @property parameterNotFoundAction `parameterNotFoundAction` controls the behavior of the binding when the resource exists, and name or selector is valid, but there are no parameters matched by the binding. If the value is set to `Allow`, then no matched parameters will be treated as successful validation by the binding. If set to `Deny`, then no matched parameters will be subject to the `failurePolicy` of the policy.
 * Allowed values are `Allow` or `Deny`
 * Required
 * @property selector selector can be used to match multiple param objects based on their labels. Supply selector: {} to match all resources of the ParamKind.
 * If multiple params are found, they are all evaluated with the policy expressions and the results are ANDed together.
 * One of `name` or `selector` must be set, but `name` and `selector` are mutually exclusive properties. If one is set, the other must be unset.
 */
public data class ParamRefArgs(
    public val name: Output? = null,
    public val namespace: Output? = null,
    public val parameterNotFoundAction: Output? = null,
    public val selector: Output? = null,
) : ConvertibleToJava {
    override fun toJava(): com.pulumi.kubernetes.admissionregistration.v1beta1.inputs.ParamRefArgs =
        com.pulumi.kubernetes.admissionregistration.v1beta1.inputs.ParamRefArgs.builder()
            .name(name?.applyValue({ args0 -> args0 }))
            .namespace(namespace?.applyValue({ args0 -> args0 }))
            .parameterNotFoundAction(parameterNotFoundAction?.applyValue({ args0 -> args0 }))
            .selector(selector?.applyValue({ args0 -> args0.let({ args0 -> args0.toJava() }) })).build()
}

/**
 * Builder for [ParamRefArgs].
 */
@PulumiTagMarker
public class ParamRefArgsBuilder internal constructor() {
    private var name: Output? = null

    private var namespace: Output? = null

    private var parameterNotFoundAction: Output? = null

    private var selector: Output? = null

    /**
     * @param value name is the name of the resource being referenced.
     * One of `name` or `selector` must be set, but `name` and `selector` are mutually exclusive properties. If one is set, the other must be unset.
     * A single parameter used for all admission requests can be configured by setting the `name` field, leaving `selector` blank, and setting namespace if `paramKind` is namespace-scoped.
     */
    @JvmName("pgacndnsqoxayuhu")
    public suspend fun name(`value`: Output) {
        this.name = value
    }

    /**
     * @param value namespace is the namespace of the referenced resource. Allows limiting the search for params to a specific namespace. Applies to both `name` and `selector` fields.
     * A per-namespace parameter may be used by specifying a namespace-scoped `paramKind` in the policy and leaving this field empty.
     * - If `paramKind` is cluster-scoped, this field MUST be unset. Setting this field results in a configuration error.
     * - If `paramKind` is namespace-scoped, the namespace of the object being evaluated for admission will be used when this field is left unset. Take care that if this is left empty the binding must not match any cluster-scoped resources, which will result in an error.
     */
    @JvmName("yyipvrwyylmsxabo")
    public suspend fun namespace(`value`: Output) {
        this.namespace = value
    }

    /**
     * @param value `parameterNotFoundAction` controls the behavior of the binding when the resource exists, and name or selector is valid, but there are no parameters matched by the binding. If the value is set to `Allow`, then no matched parameters will be treated as successful validation by the binding. If set to `Deny`, then no matched parameters will be subject to the `failurePolicy` of the policy.
     * Allowed values are `Allow` or `Deny`
     * Required
     */
    @JvmName("ercvdowclxrsarfg")
    public suspend fun parameterNotFoundAction(`value`: Output) {
        this.parameterNotFoundAction = value
    }

    /**
     * @param value selector can be used to match multiple param objects based on their labels. Supply selector: {} to match all resources of the ParamKind.
     * If multiple params are found, they are all evaluated with the policy expressions and the results are ANDed together.
     * One of `name` or `selector` must be set, but `name` and `selector` are mutually exclusive properties. If one is set, the other must be unset.
     */
    @JvmName("vfoveuquyayqgpcu")
    public suspend fun selector(`value`: Output) {
        this.selector = value
    }

    /**
     * @param value name is the name of the resource being referenced.
     * One of `name` or `selector` must be set, but `name` and `selector` are mutually exclusive properties. If one is set, the other must be unset.
     * A single parameter used for all admission requests can be configured by setting the `name` field, leaving `selector` blank, and setting namespace if `paramKind` is namespace-scoped.
     */
    @JvmName("gfnleqsltgwctbxr")
    public suspend fun name(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.name = mapped
    }

    /**
     * @param value namespace is the namespace of the referenced resource. Allows limiting the search for params to a specific namespace. Applies to both `name` and `selector` fields.
     * A per-namespace parameter may be used by specifying a namespace-scoped `paramKind` in the policy and leaving this field empty.
     * - If `paramKind` is cluster-scoped, this field MUST be unset. Setting this field results in a configuration error.
     * - If `paramKind` is namespace-scoped, the namespace of the object being evaluated for admission will be used when this field is left unset. Take care that if this is left empty the binding must not match any cluster-scoped resources, which will result in an error.
     */
    @JvmName("nbwhdfljtytivrpl")
    public suspend fun namespace(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.namespace = mapped
    }

    /**
     * @param value `parameterNotFoundAction` controls the behavior of the binding when the resource exists, and name or selector is valid, but there are no parameters matched by the binding. If the value is set to `Allow`, then no matched parameters will be treated as successful validation by the binding. If set to `Deny`, then no matched parameters will be subject to the `failurePolicy` of the policy.
     * Allowed values are `Allow` or `Deny`
     * Required
     */
    @JvmName("sxtuifylwgjggtql")
    public suspend fun parameterNotFoundAction(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.parameterNotFoundAction = mapped
    }

    /**
     * @param value selector can be used to match multiple param objects based on their labels. Supply selector: {} to match all resources of the ParamKind.
     * If multiple params are found, they are all evaluated with the policy expressions and the results are ANDed together.
     * One of `name` or `selector` must be set, but `name` and `selector` are mutually exclusive properties. If one is set, the other must be unset.
     */
    @JvmName("ydoajoagrkhplgik")
    public suspend fun selector(`value`: LabelSelectorArgs?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.selector = mapped
    }

    /**
     * @param argument selector can be used to match multiple param objects based on their labels. Supply selector: {} to match all resources of the ParamKind.
     * If multiple params are found, they are all evaluated with the policy expressions and the results are ANDed together.
     * One of `name` or `selector` must be set, but `name` and `selector` are mutually exclusive properties. If one is set, the other must be unset.
     */
    @JvmName("shdfwwoaoknlitvu")
    public suspend fun selector(argument: suspend LabelSelectorArgsBuilder.() -> Unit) {
        val toBeMapped = LabelSelectorArgsBuilder().applySuspend { argument() }.build()
        val mapped = of(toBeMapped)
        this.selector = mapped
    }

    internal fun build(): ParamRefArgs = ParamRefArgs(
        name = name,
        namespace = namespace,
        parameterNotFoundAction = parameterNotFoundAction,
        selector = selector,
    )
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy