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

com.pulumi.awsnative.networkfirewall.kotlin.inputs.RuleGroupArgs.kt Maven / Gradle / Ivy

@file:Suppress("NAME_SHADOWING", "DEPRECATION")

package com.pulumi.awsnative.networkfirewall.kotlin.inputs

import com.pulumi.awsnative.networkfirewall.inputs.RuleGroupArgs.builder
import com.pulumi.core.Output
import com.pulumi.core.Output.of
import com.pulumi.kotlin.ConvertibleToJava
import com.pulumi.kotlin.PulumiNullFieldException
import com.pulumi.kotlin.PulumiTagMarker
import com.pulumi.kotlin.applySuspend
import kotlin.Suppress
import kotlin.Unit
import kotlin.jvm.JvmName

/**
 *
 * @property referenceSets The reference sets for the stateful rule group.
 * @property ruleVariables Settings that are available for use in the rules in the rule group. You can only use these for stateful rule groups.
 * @property rulesSource The stateful rules or stateless rules for the rule group.
 * @property statefulRuleOptions Additional options governing how Network Firewall handles stateful rules. The policies where you use your stateful rule group must have stateful rule options settings that are compatible with these settings. Some limitations apply; for more information, see [Strict evaluation order](https://docs.aws.amazon.com/network-firewall/latest/developerguide/suricata-limitations-caveats.html) in the *AWS Network Firewall Developer Guide* .
 */
public data class RuleGroupArgs(
    public val referenceSets: Output? = null,
    public val ruleVariables: Output? = null,
    public val rulesSource: Output,
    public val statefulRuleOptions: Output? = null,
) : ConvertibleToJava {
    override fun toJava(): com.pulumi.awsnative.networkfirewall.inputs.RuleGroupArgs =
        com.pulumi.awsnative.networkfirewall.inputs.RuleGroupArgs.builder()
            .referenceSets(referenceSets?.applyValue({ args0 -> args0.let({ args0 -> args0.toJava() }) }))
            .ruleVariables(ruleVariables?.applyValue({ args0 -> args0.let({ args0 -> args0.toJava() }) }))
            .rulesSource(rulesSource.applyValue({ args0 -> args0.let({ args0 -> args0.toJava() }) }))
            .statefulRuleOptions(
                statefulRuleOptions?.applyValue({ args0 ->
                    args0.let({ args0 ->
                        args0.toJava()
                    })
                }),
            ).build()
}

/**
 * Builder for [RuleGroupArgs].
 */
@PulumiTagMarker
public class RuleGroupArgsBuilder internal constructor() {
    private var referenceSets: Output? = null

    private var ruleVariables: Output? = null

    private var rulesSource: Output? = null

    private var statefulRuleOptions: Output? = null

    /**
     * @param value The reference sets for the stateful rule group.
     */
    @JvmName("qgaohmqujvjddqdl")
    public suspend fun referenceSets(`value`: Output) {
        this.referenceSets = value
    }

    /**
     * @param value Settings that are available for use in the rules in the rule group. You can only use these for stateful rule groups.
     */
    @JvmName("tudhsrrvpysdhcmf")
    public suspend fun ruleVariables(`value`: Output) {
        this.ruleVariables = value
    }

    /**
     * @param value The stateful rules or stateless rules for the rule group.
     */
    @JvmName("aprptrrkvuxjolfl")
    public suspend fun rulesSource(`value`: Output) {
        this.rulesSource = value
    }

    /**
     * @param value Additional options governing how Network Firewall handles stateful rules. The policies where you use your stateful rule group must have stateful rule options settings that are compatible with these settings. Some limitations apply; for more information, see [Strict evaluation order](https://docs.aws.amazon.com/network-firewall/latest/developerguide/suricata-limitations-caveats.html) in the *AWS Network Firewall Developer Guide* .
     */
    @JvmName("ieghwmkxanboovbe")
    public suspend fun statefulRuleOptions(`value`: Output) {
        this.statefulRuleOptions = value
    }

    /**
     * @param value The reference sets for the stateful rule group.
     */
    @JvmName("udfrvbfatwjevsgd")
    public suspend fun referenceSets(`value`: RuleGroupReferenceSetsArgs?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.referenceSets = mapped
    }

    /**
     * @param argument The reference sets for the stateful rule group.
     */
    @JvmName("wxdaippjuwtpopfa")
    public suspend fun referenceSets(argument: suspend RuleGroupReferenceSetsArgsBuilder.() -> Unit) {
        val toBeMapped = RuleGroupReferenceSetsArgsBuilder().applySuspend { argument() }.build()
        val mapped = of(toBeMapped)
        this.referenceSets = mapped
    }

    /**
     * @param value Settings that are available for use in the rules in the rule group. You can only use these for stateful rule groups.
     */
    @JvmName("ivnymtrbwreumdxx")
    public suspend fun ruleVariables(`value`: RuleGroupRuleVariablesArgs?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.ruleVariables = mapped
    }

    /**
     * @param argument Settings that are available for use in the rules in the rule group. You can only use these for stateful rule groups.
     */
    @JvmName("cdajqcqddocngnsv")
    public suspend fun ruleVariables(argument: suspend RuleGroupRuleVariablesArgsBuilder.() -> Unit) {
        val toBeMapped = RuleGroupRuleVariablesArgsBuilder().applySuspend { argument() }.build()
        val mapped = of(toBeMapped)
        this.ruleVariables = mapped
    }

    /**
     * @param value The stateful rules or stateless rules for the rule group.
     */
    @JvmName("jqyubbbskiehpbol")
    public suspend fun rulesSource(`value`: RuleGroupRulesSourceArgs) {
        val toBeMapped = value
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.rulesSource = mapped
    }

    /**
     * @param argument The stateful rules or stateless rules for the rule group.
     */
    @JvmName("krwcbfroohxotxdt")
    public suspend fun rulesSource(argument: suspend RuleGroupRulesSourceArgsBuilder.() -> Unit) {
        val toBeMapped = RuleGroupRulesSourceArgsBuilder().applySuspend { argument() }.build()
        val mapped = of(toBeMapped)
        this.rulesSource = mapped
    }

    /**
     * @param value Additional options governing how Network Firewall handles stateful rules. The policies where you use your stateful rule group must have stateful rule options settings that are compatible with these settings. Some limitations apply; for more information, see [Strict evaluation order](https://docs.aws.amazon.com/network-firewall/latest/developerguide/suricata-limitations-caveats.html) in the *AWS Network Firewall Developer Guide* .
     */
    @JvmName("kivcpogyolfqntpg")
    public suspend fun statefulRuleOptions(`value`: RuleGroupStatefulRuleOptionsArgs?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.statefulRuleOptions = mapped
    }

    /**
     * @param argument Additional options governing how Network Firewall handles stateful rules. The policies where you use your stateful rule group must have stateful rule options settings that are compatible with these settings. Some limitations apply; for more information, see [Strict evaluation order](https://docs.aws.amazon.com/network-firewall/latest/developerguide/suricata-limitations-caveats.html) in the *AWS Network Firewall Developer Guide* .
     */
    @JvmName("djltbsswuqjbsxtf")
    public suspend fun statefulRuleOptions(argument: suspend RuleGroupStatefulRuleOptionsArgsBuilder.() -> Unit) {
        val toBeMapped = RuleGroupStatefulRuleOptionsArgsBuilder().applySuspend { argument() }.build()
        val mapped = of(toBeMapped)
        this.statefulRuleOptions = mapped
    }

    internal fun build(): RuleGroupArgs = RuleGroupArgs(
        referenceSets = referenceSets,
        ruleVariables = ruleVariables,
        rulesSource = rulesSource ?: throw PulumiNullFieldException("rulesSource"),
        statefulRuleOptions = statefulRuleOptions,
    )
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy