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

com.pulumi.gcp.compute.kotlin.inputs.URLMapPathMatcherRouteRuleArgs.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.compute.kotlin.inputs

import com.pulumi.core.Output
import com.pulumi.core.Output.of
import com.pulumi.gcp.compute.inputs.URLMapPathMatcherRouteRuleArgs.builder
import com.pulumi.kotlin.ConvertibleToJava
import com.pulumi.kotlin.PulumiNullFieldException
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 headerAction Specifies changes to request and response headers that need to take effect for
 * the selected backendService. The headerAction specified here are applied before
 * the matching pathMatchers[].headerAction and after pathMatchers[].routeRules[].r
 * outeAction.weightedBackendService.backendServiceWeightAction[].headerAction
 * Structure is documented below.
 * @property matchRules The rules for determining a match.
 * Structure is documented below.
 * @property priority For routeRules within a given pathMatcher, priority determines the order
 * in which load balancer will interpret routeRules. RouteRules are evaluated
 * in order of priority, from the lowest to highest number. The priority of
 * a rule decreases as its number increases (1, 2, 3, N+1). The first rule
 * that matches the request is applied.
 * You cannot configure two or more routeRules with the same priority.
 * Priority for each rule must be set to a number between 0 and
 * 2147483647 inclusive.
 * Priority numbers can have gaps, which enable you to add or remove rules
 * in the future without affecting the rest of the rules. For example,
 * 1, 2, 3, 4, 5, 9, 12, 16 is a valid series of priority numbers to which
 * you could add rules numbered from 6 to 8, 10 to 11, and 13 to 15 in the
 * future without any impact on existing rules.
 * @property routeAction In response to a matching matchRule, the load balancer performs advanced routing
 * actions like URL rewrites, header transformations, etc. prior to forwarding the
 * request to the selected backend. If  routeAction specifies any
 * weightedBackendServices, service must not be set. Conversely if service is set,
 * routeAction cannot contain any  weightedBackendServices. Only one of routeAction
 * or urlRedirect must be set.
 * Structure is documented below.
 * @property service The backend service resource to which traffic is
 * directed if this rule is matched. If routeAction is additionally specified,
 * advanced routing actions like URL Rewrites, etc. take effect prior to sending
 * the request to the backend. However, if service is specified, routeAction cannot
 * contain any weightedBackendService s. Conversely, if routeAction specifies any
 * weightedBackendServices, service must not be specified. Only one of urlRedirect,
 * service or routeAction.weightedBackendService must be set.
 * @property urlRedirect When this rule is matched, the request is redirected to a URL specified by
 * urlRedirect. If urlRedirect is specified, service or routeAction must not be
 * set.
 * Structure is documented below.
 */
public data class URLMapPathMatcherRouteRuleArgs(
    public val headerAction: Output? = null,
    public val matchRules: Output>? = null,
    public val priority: Output,
    public val routeAction: Output? = null,
    public val service: Output? = null,
    public val urlRedirect: Output? = null,
) : ConvertibleToJava {
    override fun toJava(): com.pulumi.gcp.compute.inputs.URLMapPathMatcherRouteRuleArgs =
        com.pulumi.gcp.compute.inputs.URLMapPathMatcherRouteRuleArgs.builder()
            .headerAction(headerAction?.applyValue({ args0 -> args0.let({ args0 -> args0.toJava() }) }))
            .matchRules(
                matchRules?.applyValue({ args0 ->
                    args0.map({ args0 ->
                        args0.let({ args0 ->
                            args0.toJava()
                        })
                    })
                }),
            )
            .priority(priority.applyValue({ args0 -> args0 }))
            .routeAction(routeAction?.applyValue({ args0 -> args0.let({ args0 -> args0.toJava() }) }))
            .service(service?.applyValue({ args0 -> args0 }))
            .urlRedirect(urlRedirect?.applyValue({ args0 -> args0.let({ args0 -> args0.toJava() }) })).build()
}

/**
 * Builder for [URLMapPathMatcherRouteRuleArgs].
 */
@PulumiTagMarker
public class URLMapPathMatcherRouteRuleArgsBuilder internal constructor() {
    private var headerAction: Output? = null

    private var matchRules: Output>? = null

    private var priority: Output? = null

    private var routeAction: Output? = null

    private var service: Output? = null

    private var urlRedirect: Output? = null

    /**
     * @param value Specifies changes to request and response headers that need to take effect for
     * the selected backendService. The headerAction specified here are applied before
     * the matching pathMatchers[].headerAction and after pathMatchers[].routeRules[].r
     * outeAction.weightedBackendService.backendServiceWeightAction[].headerAction
     * Structure is documented below.
     */
    @JvmName("fvvimaxdxulaxjiq")
    public suspend fun headerAction(`value`: Output) {
        this.headerAction = value
    }

    /**
     * @param value The rules for determining a match.
     * Structure is documented below.
     */
    @JvmName("xwvgkidvaqircgyc")
    public suspend fun matchRules(`value`: Output>) {
        this.matchRules = value
    }

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

    /**
     * @param values The rules for determining a match.
     * Structure is documented below.
     */
    @JvmName("kknubalbpuctpmsm")
    public suspend fun matchRules(values: List>) {
        this.matchRules = Output.all(values)
    }

    /**
     * @param value For routeRules within a given pathMatcher, priority determines the order
     * in which load balancer will interpret routeRules. RouteRules are evaluated
     * in order of priority, from the lowest to highest number. The priority of
     * a rule decreases as its number increases (1, 2, 3, N+1). The first rule
     * that matches the request is applied.
     * You cannot configure two or more routeRules with the same priority.
     * Priority for each rule must be set to a number between 0 and
     * 2147483647 inclusive.
     * Priority numbers can have gaps, which enable you to add or remove rules
     * in the future without affecting the rest of the rules. For example,
     * 1, 2, 3, 4, 5, 9, 12, 16 is a valid series of priority numbers to which
     * you could add rules numbered from 6 to 8, 10 to 11, and 13 to 15 in the
     * future without any impact on existing rules.
     */
    @JvmName("jbrbcwlodswgqqxk")
    public suspend fun priority(`value`: Output) {
        this.priority = value
    }

    /**
     * @param value In response to a matching matchRule, the load balancer performs advanced routing
     * actions like URL rewrites, header transformations, etc. prior to forwarding the
     * request to the selected backend. If  routeAction specifies any
     * weightedBackendServices, service must not be set. Conversely if service is set,
     * routeAction cannot contain any  weightedBackendServices. Only one of routeAction
     * or urlRedirect must be set.
     * Structure is documented below.
     */
    @JvmName("vbdnuceglixtrwop")
    public suspend fun routeAction(`value`: Output) {
        this.routeAction = value
    }

    /**
     * @param value The backend service resource to which traffic is
     * directed if this rule is matched. If routeAction is additionally specified,
     * advanced routing actions like URL Rewrites, etc. take effect prior to sending
     * the request to the backend. However, if service is specified, routeAction cannot
     * contain any weightedBackendService s. Conversely, if routeAction specifies any
     * weightedBackendServices, service must not be specified. Only one of urlRedirect,
     * service or routeAction.weightedBackendService must be set.
     */
    @JvmName("uuftlmjuicaicblt")
    public suspend fun service(`value`: Output) {
        this.service = value
    }

    /**
     * @param value When this rule is matched, the request is redirected to a URL specified by
     * urlRedirect. If urlRedirect is specified, service or routeAction must not be
     * set.
     * Structure is documented below.
     */
    @JvmName("nhowckdvaafkivge")
    public suspend fun urlRedirect(`value`: Output) {
        this.urlRedirect = value
    }

    /**
     * @param value Specifies changes to request and response headers that need to take effect for
     * the selected backendService. The headerAction specified here are applied before
     * the matching pathMatchers[].headerAction and after pathMatchers[].routeRules[].r
     * outeAction.weightedBackendService.backendServiceWeightAction[].headerAction
     * Structure is documented below.
     */
    @JvmName("eabwarjmddxppyuv")
    public suspend fun headerAction(`value`: URLMapPathMatcherRouteRuleHeaderActionArgs?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.headerAction = mapped
    }

    /**
     * @param argument Specifies changes to request and response headers that need to take effect for
     * the selected backendService. The headerAction specified here are applied before
     * the matching pathMatchers[].headerAction and after pathMatchers[].routeRules[].r
     * outeAction.weightedBackendService.backendServiceWeightAction[].headerAction
     * Structure is documented below.
     */
    @JvmName("qcpocvkhbbfjqqnq")
    public suspend fun headerAction(argument: suspend URLMapPathMatcherRouteRuleHeaderActionArgsBuilder.() -> Unit) {
        val toBeMapped = URLMapPathMatcherRouteRuleHeaderActionArgsBuilder().applySuspend {
            argument()
        }.build()
        val mapped = of(toBeMapped)
        this.headerAction = mapped
    }

    /**
     * @param value The rules for determining a match.
     * Structure is documented below.
     */
    @JvmName("akjfutaewfqnerxa")
    public suspend fun matchRules(`value`: List?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.matchRules = mapped
    }

    /**
     * @param argument The rules for determining a match.
     * Structure is documented below.
     */
    @JvmName("gfhbehwuihbxtkcb")
    public suspend fun matchRules(argument: List Unit>) {
        val toBeMapped = argument.toList().map {
            URLMapPathMatcherRouteRuleMatchRuleArgsBuilder().applySuspend { it() }.build()
        }
        val mapped = of(toBeMapped)
        this.matchRules = mapped
    }

    /**
     * @param argument The rules for determining a match.
     * Structure is documented below.
     */
    @JvmName("yubvceshthleunnx")
    public suspend fun matchRules(vararg argument: suspend URLMapPathMatcherRouteRuleMatchRuleArgsBuilder.() -> Unit) {
        val toBeMapped = argument.toList().map {
            URLMapPathMatcherRouteRuleMatchRuleArgsBuilder().applySuspend { it() }.build()
        }
        val mapped = of(toBeMapped)
        this.matchRules = mapped
    }

    /**
     * @param argument The rules for determining a match.
     * Structure is documented below.
     */
    @JvmName("rrxwtnruncvucwqw")
    public suspend fun matchRules(argument: suspend URLMapPathMatcherRouteRuleMatchRuleArgsBuilder.() -> Unit) {
        val toBeMapped = listOf(
            URLMapPathMatcherRouteRuleMatchRuleArgsBuilder().applySuspend {
                argument()
            }.build(),
        )
        val mapped = of(toBeMapped)
        this.matchRules = mapped
    }

    /**
     * @param values The rules for determining a match.
     * Structure is documented below.
     */
    @JvmName("cncuademgtaoetal")
    public suspend fun matchRules(vararg values: URLMapPathMatcherRouteRuleMatchRuleArgs) {
        val toBeMapped = values.toList()
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.matchRules = mapped
    }

    /**
     * @param value For routeRules within a given pathMatcher, priority determines the order
     * in which load balancer will interpret routeRules. RouteRules are evaluated
     * in order of priority, from the lowest to highest number. The priority of
     * a rule decreases as its number increases (1, 2, 3, N+1). The first rule
     * that matches the request is applied.
     * You cannot configure two or more routeRules with the same priority.
     * Priority for each rule must be set to a number between 0 and
     * 2147483647 inclusive.
     * Priority numbers can have gaps, which enable you to add or remove rules
     * in the future without affecting the rest of the rules. For example,
     * 1, 2, 3, 4, 5, 9, 12, 16 is a valid series of priority numbers to which
     * you could add rules numbered from 6 to 8, 10 to 11, and 13 to 15 in the
     * future without any impact on existing rules.
     */
    @JvmName("vjkmddecvuneauuo")
    public suspend fun priority(`value`: Int) {
        val toBeMapped = value
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.priority = mapped
    }

    /**
     * @param value In response to a matching matchRule, the load balancer performs advanced routing
     * actions like URL rewrites, header transformations, etc. prior to forwarding the
     * request to the selected backend. If  routeAction specifies any
     * weightedBackendServices, service must not be set. Conversely if service is set,
     * routeAction cannot contain any  weightedBackendServices. Only one of routeAction
     * or urlRedirect must be set.
     * Structure is documented below.
     */
    @JvmName("dpxetkovkqjkdbgt")
    public suspend fun routeAction(`value`: URLMapPathMatcherRouteRuleRouteActionArgs?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.routeAction = mapped
    }

    /**
     * @param argument In response to a matching matchRule, the load balancer performs advanced routing
     * actions like URL rewrites, header transformations, etc. prior to forwarding the
     * request to the selected backend. If  routeAction specifies any
     * weightedBackendServices, service must not be set. Conversely if service is set,
     * routeAction cannot contain any  weightedBackendServices. Only one of routeAction
     * or urlRedirect must be set.
     * Structure is documented below.
     */
    @JvmName("yabtiwpgpthonptd")
    public suspend fun routeAction(argument: suspend URLMapPathMatcherRouteRuleRouteActionArgsBuilder.() -> Unit) {
        val toBeMapped = URLMapPathMatcherRouteRuleRouteActionArgsBuilder().applySuspend {
            argument()
        }.build()
        val mapped = of(toBeMapped)
        this.routeAction = mapped
    }

    /**
     * @param value The backend service resource to which traffic is
     * directed if this rule is matched. If routeAction is additionally specified,
     * advanced routing actions like URL Rewrites, etc. take effect prior to sending
     * the request to the backend. However, if service is specified, routeAction cannot
     * contain any weightedBackendService s. Conversely, if routeAction specifies any
     * weightedBackendServices, service must not be specified. Only one of urlRedirect,
     * service or routeAction.weightedBackendService must be set.
     */
    @JvmName("suepxrdcrmykrelx")
    public suspend fun service(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.service = mapped
    }

    /**
     * @param value When this rule is matched, the request is redirected to a URL specified by
     * urlRedirect. If urlRedirect is specified, service or routeAction must not be
     * set.
     * Structure is documented below.
     */
    @JvmName("xbqsumfpxrqtxkjy")
    public suspend fun urlRedirect(`value`: URLMapPathMatcherRouteRuleUrlRedirectArgs?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.urlRedirect = mapped
    }

    /**
     * @param argument When this rule is matched, the request is redirected to a URL specified by
     * urlRedirect. If urlRedirect is specified, service or routeAction must not be
     * set.
     * Structure is documented below.
     */
    @JvmName("msallwlkffkojndj")
    public suspend fun urlRedirect(argument: suspend URLMapPathMatcherRouteRuleUrlRedirectArgsBuilder.() -> Unit) {
        val toBeMapped = URLMapPathMatcherRouteRuleUrlRedirectArgsBuilder().applySuspend {
            argument()
        }.build()
        val mapped = of(toBeMapped)
        this.urlRedirect = mapped
    }

    internal fun build(): URLMapPathMatcherRouteRuleArgs = URLMapPathMatcherRouteRuleArgs(
        headerAction = headerAction,
        matchRules = matchRules,
        priority = priority ?: throw PulumiNullFieldException("priority"),
        routeAction = routeAction,
        service = service,
        urlRedirect = urlRedirect,
    )
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy