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

com.pulumi.azurenative.mobilenetwork.kotlin.inputs.ServiceDataFlowTemplateArgs.kt Maven / Gradle / Ivy

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

package com.pulumi.azurenative.mobilenetwork.kotlin.inputs

import com.pulumi.azurenative.mobilenetwork.inputs.ServiceDataFlowTemplateArgs.builder
import com.pulumi.azurenative.mobilenetwork.kotlin.enums.SdfDirection
import com.pulumi.core.Either
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 kotlin.String
import kotlin.Suppress
import kotlin.collections.List
import kotlin.jvm.JvmName

/**
 * Data flow template
 * @property direction The direction of this flow.
 * @property ports The port(s) to which UEs will connect for this flow. You can specify zero or more ports or port ranges. If you specify one or more ports or port ranges then you must specify a value other than `ip` in the `protocol` field. This is an optional setting. If you do not specify it then connections will be allowed on all ports. Port ranges must be specified as -. For example: [`8080`, `8082-8085`].
 * @property protocol A list of the allowed protocol(s) for this flow. If you want this flow to be able to use any protocol within the internet protocol suite, use the value `ip`. If you only want to allow a selection of protocols, you must use the corresponding IANA Assigned Internet Protocol Number for each protocol, as described in https://www.iana.org/assignments/protocol-numbers/protocol-numbers.xhtml. For example, for UDP, you must use 17. If you use the value `ip` then you must leave the field `port` unspecified.
 * @property remoteIpList The remote IP address(es) to which UEs will connect for this flow. If you want to allow connections on any IP address, use the value `any`. Otherwise, you must provide each of the remote IP addresses to which the packet core instance will connect for this flow. You must provide each IP address in CIDR notation, including the netmask (for example, 192.0.2.54/24).
 * @property templateName The name of the data flow template. This must be unique within the parent data flow policy rule. You must not use any of the following reserved strings - `default`, `requested` or `service`.
 */
public data class ServiceDataFlowTemplateArgs(
    public val direction: Output>,
    public val ports: Output>? = null,
    public val protocol: Output>,
    public val remoteIpList: Output>,
    public val templateName: Output,
) : ConvertibleToJava {
    override fun toJava(): com.pulumi.azurenative.mobilenetwork.inputs.ServiceDataFlowTemplateArgs =
        com.pulumi.azurenative.mobilenetwork.inputs.ServiceDataFlowTemplateArgs.builder()
            .direction(
                direction.applyValue({ args0 ->
                    args0.transform({ args0 -> args0 }, { args0 ->
                        args0.let({ args0 -> args0.toJava() })
                    })
                }),
            )
            .ports(ports?.applyValue({ args0 -> args0.map({ args0 -> args0 }) }))
            .protocol(protocol.applyValue({ args0 -> args0.map({ args0 -> args0 }) }))
            .remoteIpList(remoteIpList.applyValue({ args0 -> args0.map({ args0 -> args0 }) }))
            .templateName(templateName.applyValue({ args0 -> args0 })).build()
}

/**
 * Builder for [ServiceDataFlowTemplateArgs].
 */
@PulumiTagMarker
public class ServiceDataFlowTemplateArgsBuilder internal constructor() {
    private var direction: Output>? = null

    private var ports: Output>? = null

    private var protocol: Output>? = null

    private var remoteIpList: Output>? = null

    private var templateName: Output? = null

    /**
     * @param value The direction of this flow.
     */
    @JvmName("npvcgjjnhafklttp")
    public suspend fun direction(`value`: Output>) {
        this.direction = value
    }

    /**
     * @param value The port(s) to which UEs will connect for this flow. You can specify zero or more ports or port ranges. If you specify one or more ports or port ranges then you must specify a value other than `ip` in the `protocol` field. This is an optional setting. If you do not specify it then connections will be allowed on all ports. Port ranges must be specified as -. For example: [`8080`, `8082-8085`].
     */
    @JvmName("nyggccjlrwfwvgwb")
    public suspend fun ports(`value`: Output>) {
        this.ports = value
    }

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

    /**
     * @param values The port(s) to which UEs will connect for this flow. You can specify zero or more ports or port ranges. If you specify one or more ports or port ranges then you must specify a value other than `ip` in the `protocol` field. This is an optional setting. If you do not specify it then connections will be allowed on all ports. Port ranges must be specified as -. For example: [`8080`, `8082-8085`].
     */
    @JvmName("mggsnwrwiotqtilg")
    public suspend fun ports(values: List>) {
        this.ports = Output.all(values)
    }

    /**
     * @param value A list of the allowed protocol(s) for this flow. If you want this flow to be able to use any protocol within the internet protocol suite, use the value `ip`. If you only want to allow a selection of protocols, you must use the corresponding IANA Assigned Internet Protocol Number for each protocol, as described in https://www.iana.org/assignments/protocol-numbers/protocol-numbers.xhtml. For example, for UDP, you must use 17. If you use the value `ip` then you must leave the field `port` unspecified.
     */
    @JvmName("yhfouawxfaajmsov")
    public suspend fun protocol(`value`: Output>) {
        this.protocol = value
    }

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

    /**
     * @param values A list of the allowed protocol(s) for this flow. If you want this flow to be able to use any protocol within the internet protocol suite, use the value `ip`. If you only want to allow a selection of protocols, you must use the corresponding IANA Assigned Internet Protocol Number for each protocol, as described in https://www.iana.org/assignments/protocol-numbers/protocol-numbers.xhtml. For example, for UDP, you must use 17. If you use the value `ip` then you must leave the field `port` unspecified.
     */
    @JvmName("knekrhoayhcvjsox")
    public suspend fun protocol(values: List>) {
        this.protocol = Output.all(values)
    }

    /**
     * @param value The remote IP address(es) to which UEs will connect for this flow. If you want to allow connections on any IP address, use the value `any`. Otherwise, you must provide each of the remote IP addresses to which the packet core instance will connect for this flow. You must provide each IP address in CIDR notation, including the netmask (for example, 192.0.2.54/24).
     */
    @JvmName("fasfuekvmnnwkvds")
    public suspend fun remoteIpList(`value`: Output>) {
        this.remoteIpList = value
    }

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

    /**
     * @param values The remote IP address(es) to which UEs will connect for this flow. If you want to allow connections on any IP address, use the value `any`. Otherwise, you must provide each of the remote IP addresses to which the packet core instance will connect for this flow. You must provide each IP address in CIDR notation, including the netmask (for example, 192.0.2.54/24).
     */
    @JvmName("iqrhelshivdedkem")
    public suspend fun remoteIpList(values: List>) {
        this.remoteIpList = Output.all(values)
    }

    /**
     * @param value The name of the data flow template. This must be unique within the parent data flow policy rule. You must not use any of the following reserved strings - `default`, `requested` or `service`.
     */
    @JvmName("ycvrrqwqmjrgxpaf")
    public suspend fun templateName(`value`: Output) {
        this.templateName = value
    }

    /**
     * @param value The direction of this flow.
     */
    @JvmName("acaepicuosyvieji")
    public suspend fun direction(`value`: Either) {
        val toBeMapped = value
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.direction = mapped
    }

    /**
     * @param value The direction of this flow.
     */
    @JvmName("ywqmhkxusoujitqo")
    public fun direction(`value`: String) {
        val toBeMapped = Either.ofLeft(value)
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.direction = mapped
    }

    /**
     * @param value The direction of this flow.
     */
    @JvmName("lhjyguxmofktwvvn")
    public fun direction(`value`: SdfDirection) {
        val toBeMapped = Either.ofRight(value)
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.direction = mapped
    }

    /**
     * @param value The port(s) to which UEs will connect for this flow. You can specify zero or more ports or port ranges. If you specify one or more ports or port ranges then you must specify a value other than `ip` in the `protocol` field. This is an optional setting. If you do not specify it then connections will be allowed on all ports. Port ranges must be specified as -. For example: [`8080`, `8082-8085`].
     */
    @JvmName("fpfotfnfhdugwqgq")
    public suspend fun ports(`value`: List?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.ports = mapped
    }

    /**
     * @param values The port(s) to which UEs will connect for this flow. You can specify zero or more ports or port ranges. If you specify one or more ports or port ranges then you must specify a value other than `ip` in the `protocol` field. This is an optional setting. If you do not specify it then connections will be allowed on all ports. Port ranges must be specified as -. For example: [`8080`, `8082-8085`].
     */
    @JvmName("khyclnxtfyvquhjp")
    public suspend fun ports(vararg values: String) {
        val toBeMapped = values.toList()
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.ports = mapped
    }

    /**
     * @param value A list of the allowed protocol(s) for this flow. If you want this flow to be able to use any protocol within the internet protocol suite, use the value `ip`. If you only want to allow a selection of protocols, you must use the corresponding IANA Assigned Internet Protocol Number for each protocol, as described in https://www.iana.org/assignments/protocol-numbers/protocol-numbers.xhtml. For example, for UDP, you must use 17. If you use the value `ip` then you must leave the field `port` unspecified.
     */
    @JvmName("vqhcvehvejearbge")
    public suspend fun protocol(`value`: List) {
        val toBeMapped = value
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.protocol = mapped
    }

    /**
     * @param values A list of the allowed protocol(s) for this flow. If you want this flow to be able to use any protocol within the internet protocol suite, use the value `ip`. If you only want to allow a selection of protocols, you must use the corresponding IANA Assigned Internet Protocol Number for each protocol, as described in https://www.iana.org/assignments/protocol-numbers/protocol-numbers.xhtml. For example, for UDP, you must use 17. If you use the value `ip` then you must leave the field `port` unspecified.
     */
    @JvmName("nlaqjumljwcxytlt")
    public suspend fun protocol(vararg values: String) {
        val toBeMapped = values.toList()
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.protocol = mapped
    }

    /**
     * @param value The remote IP address(es) to which UEs will connect for this flow. If you want to allow connections on any IP address, use the value `any`. Otherwise, you must provide each of the remote IP addresses to which the packet core instance will connect for this flow. You must provide each IP address in CIDR notation, including the netmask (for example, 192.0.2.54/24).
     */
    @JvmName("kvdnbrhcyufshjgr")
    public suspend fun remoteIpList(`value`: List) {
        val toBeMapped = value
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.remoteIpList = mapped
    }

    /**
     * @param values The remote IP address(es) to which UEs will connect for this flow. If you want to allow connections on any IP address, use the value `any`. Otherwise, you must provide each of the remote IP addresses to which the packet core instance will connect for this flow. You must provide each IP address in CIDR notation, including the netmask (for example, 192.0.2.54/24).
     */
    @JvmName("bmsfootifscirigp")
    public suspend fun remoteIpList(vararg values: String) {
        val toBeMapped = values.toList()
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.remoteIpList = mapped
    }

    /**
     * @param value The name of the data flow template. This must be unique within the parent data flow policy rule. You must not use any of the following reserved strings - `default`, `requested` or `service`.
     */
    @JvmName("jitwfgeoaroxywqi")
    public suspend fun templateName(`value`: String) {
        val toBeMapped = value
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.templateName = mapped
    }

    internal fun build(): ServiceDataFlowTemplateArgs = ServiceDataFlowTemplateArgs(
        direction = direction ?: throw PulumiNullFieldException("direction"),
        ports = ports,
        protocol = protocol ?: throw PulumiNullFieldException("protocol"),
        remoteIpList = remoteIpList ?: throw PulumiNullFieldException("remoteIpList"),
        templateName = templateName ?: throw PulumiNullFieldException("templateName"),
    )
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy