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

com.pulumi.awsnative.ec2.kotlin.inputs.SpotFleetInstanceNetworkInterfaceSpecificationArgs.kt Maven / Gradle / Ivy

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

package com.pulumi.awsnative.ec2.kotlin.inputs

import com.pulumi.awsnative.ec2.inputs.SpotFleetInstanceNetworkInterfaceSpecificationArgs.builder
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 kotlin.Boolean
import kotlin.Int
import kotlin.String
import kotlin.Suppress
import kotlin.Unit
import kotlin.collections.List
import kotlin.jvm.JvmName

/**
 *
 * @property associatePublicIpAddress Indicates whether to assign a public IPv4 address to an instance you launch in a VPC. The public IP address can only be assigned to a network interface for eth0, and can only be assigned to a new network interface, not an existing one. You cannot specify more than one network interface in the request. If launching into a default subnet, the default value is `true` .
 * AWS charges for all public IPv4 addresses, including public IPv4 addresses associated with running instances and Elastic IP addresses. For more information, see the *Public IPv4 Address* tab on the [Amazon VPC pricing page](https://docs.aws.amazon.com/vpc/pricing/) .
 * @property deleteOnTermination Indicates whether the network interface is deleted when the instance is terminated.
 * @property description The description of the network interface. Applies only if creating a network interface when launching an instance.
 * @property deviceIndex The position of the network interface in the attachment order. A primary network interface has a device index of 0.
 * If you specify a network interface when launching an instance, you must specify the device index.
 * @property groups The IDs of the security groups for the network interface. Applies only if creating a network interface when launching an instance.
 * @property ipv6AddressCount A number of IPv6 addresses to assign to the network interface. Amazon EC2 chooses the IPv6 addresses from the range of the subnet. You cannot specify this option and the option to assign specific IPv6 addresses in the same request. You can specify this option if you've specified a minimum number of instances to launch.
 * @property ipv6Addresses The IPv6 addresses to assign to the network interface. You cannot specify this option and the option to assign a number of IPv6 addresses in the same request. You cannot specify this option if you've specified a minimum number of instances to launch.
 * @property networkInterfaceId The ID of the network interface.
 * If you are creating a Spot Fleet, omit this parameter because you can’t specify a network interface ID in a launch specification.
 * @property privateIpAddresses The private IPv4 addresses to assign to the network interface. Only one private IPv4 address can be designated as primary. You cannot specify this option if you're launching more than one instance in a [RunInstances](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_RunInstances.html) request.
 * @property secondaryPrivateIpAddressCount The number of secondary private IPv4 addresses. You can't specify this option and specify more than one private IP address using the private IP addresses option. You cannot specify this option if you're launching more than one instance in a [RunInstances](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_RunInstances.html) request.
 * @property subnetId The ID of the subnet associated with the network interface.
 */
public data class SpotFleetInstanceNetworkInterfaceSpecificationArgs(
    public val associatePublicIpAddress: Output? = null,
    public val deleteOnTermination: Output? = null,
    public val description: Output? = null,
    public val deviceIndex: Output? = null,
    public val groups: Output>? = null,
    public val ipv6AddressCount: Output? = null,
    public val ipv6Addresses: Output>? = null,
    public val networkInterfaceId: Output? = null,
    public val privateIpAddresses: Output>? = null,
    public val secondaryPrivateIpAddressCount: Output? = null,
    public val subnetId: Output? = null,
) :
    ConvertibleToJava {
    override fun toJava(): com.pulumi.awsnative.ec2.inputs.SpotFleetInstanceNetworkInterfaceSpecificationArgs =
        com.pulumi.awsnative.ec2.inputs.SpotFleetInstanceNetworkInterfaceSpecificationArgs.builder()
            .associatePublicIpAddress(associatePublicIpAddress?.applyValue({ args0 -> args0 }))
            .deleteOnTermination(deleteOnTermination?.applyValue({ args0 -> args0 }))
            .description(description?.applyValue({ args0 -> args0 }))
            .deviceIndex(deviceIndex?.applyValue({ args0 -> args0 }))
            .groups(groups?.applyValue({ args0 -> args0.map({ args0 -> args0 }) }))
            .ipv6AddressCount(ipv6AddressCount?.applyValue({ args0 -> args0 }))
            .ipv6Addresses(
                ipv6Addresses?.applyValue({ args0 ->
                    args0.map({ args0 ->
                        args0.let({ args0 ->
                            args0.toJava()
                        })
                    })
                }),
            )
            .networkInterfaceId(networkInterfaceId?.applyValue({ args0 -> args0 }))
            .privateIpAddresses(
                privateIpAddresses?.applyValue({ args0 ->
                    args0.map({ args0 ->
                        args0.let({ args0 -> args0.toJava() })
                    })
                }),
            )
            .secondaryPrivateIpAddressCount(secondaryPrivateIpAddressCount?.applyValue({ args0 -> args0 }))
            .subnetId(subnetId?.applyValue({ args0 -> args0 })).build()
}

/**
 * Builder for [SpotFleetInstanceNetworkInterfaceSpecificationArgs].
 */
@PulumiTagMarker
public class SpotFleetInstanceNetworkInterfaceSpecificationArgsBuilder internal constructor() {
    private var associatePublicIpAddress: Output? = null

    private var deleteOnTermination: Output? = null

    private var description: Output? = null

    private var deviceIndex: Output? = null

    private var groups: Output>? = null

    private var ipv6AddressCount: Output? = null

    private var ipv6Addresses: Output>? = null

    private var networkInterfaceId: Output? = null

    private var privateIpAddresses: Output>? = null

    private var secondaryPrivateIpAddressCount: Output? = null

    private var subnetId: Output? = null

    /**
     * @param value Indicates whether to assign a public IPv4 address to an instance you launch in a VPC. The public IP address can only be assigned to a network interface for eth0, and can only be assigned to a new network interface, not an existing one. You cannot specify more than one network interface in the request. If launching into a default subnet, the default value is `true` .
     * AWS charges for all public IPv4 addresses, including public IPv4 addresses associated with running instances and Elastic IP addresses. For more information, see the *Public IPv4 Address* tab on the [Amazon VPC pricing page](https://docs.aws.amazon.com/vpc/pricing/) .
     */
    @JvmName("lsflivtrqpeaylml")
    public suspend fun associatePublicIpAddress(`value`: Output) {
        this.associatePublicIpAddress = value
    }

    /**
     * @param value Indicates whether the network interface is deleted when the instance is terminated.
     */
    @JvmName("vvyxbpdccjsjedia")
    public suspend fun deleteOnTermination(`value`: Output) {
        this.deleteOnTermination = value
    }

    /**
     * @param value The description of the network interface. Applies only if creating a network interface when launching an instance.
     */
    @JvmName("qwkoglagcguplfmi")
    public suspend fun description(`value`: Output) {
        this.description = value
    }

    /**
     * @param value The position of the network interface in the attachment order. A primary network interface has a device index of 0.
     * If you specify a network interface when launching an instance, you must specify the device index.
     */
    @JvmName("clfikbemyleyphka")
    public suspend fun deviceIndex(`value`: Output) {
        this.deviceIndex = value
    }

    /**
     * @param value The IDs of the security groups for the network interface. Applies only if creating a network interface when launching an instance.
     */
    @JvmName("tgusoijqmuarvsjd")
    public suspend fun groups(`value`: Output>) {
        this.groups = value
    }

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

    /**
     * @param values The IDs of the security groups for the network interface. Applies only if creating a network interface when launching an instance.
     */
    @JvmName("btxgeicdyyolmfcb")
    public suspend fun groups(values: List>) {
        this.groups = Output.all(values)
    }

    /**
     * @param value A number of IPv6 addresses to assign to the network interface. Amazon EC2 chooses the IPv6 addresses from the range of the subnet. You cannot specify this option and the option to assign specific IPv6 addresses in the same request. You can specify this option if you've specified a minimum number of instances to launch.
     */
    @JvmName("locojiilhlfpaqsh")
    public suspend fun ipv6AddressCount(`value`: Output) {
        this.ipv6AddressCount = value
    }

    /**
     * @param value The IPv6 addresses to assign to the network interface. You cannot specify this option and the option to assign a number of IPv6 addresses in the same request. You cannot specify this option if you've specified a minimum number of instances to launch.
     */
    @JvmName("fnmsppweikgmteju")
    public suspend fun ipv6Addresses(`value`: Output>) {
        this.ipv6Addresses = value
    }

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

    /**
     * @param values The IPv6 addresses to assign to the network interface. You cannot specify this option and the option to assign a number of IPv6 addresses in the same request. You cannot specify this option if you've specified a minimum number of instances to launch.
     */
    @JvmName("lnntmuiavwtfsxlf")
    public suspend fun ipv6Addresses(values: List>) {
        this.ipv6Addresses = Output.all(values)
    }

    /**
     * @param value The ID of the network interface.
     * If you are creating a Spot Fleet, omit this parameter because you can’t specify a network interface ID in a launch specification.
     */
    @JvmName("mppmchmneccbkyfy")
    public suspend fun networkInterfaceId(`value`: Output) {
        this.networkInterfaceId = value
    }

    /**
     * @param value The private IPv4 addresses to assign to the network interface. Only one private IPv4 address can be designated as primary. You cannot specify this option if you're launching more than one instance in a [RunInstances](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_RunInstances.html) request.
     */
    @JvmName("fcfohaxdtisdvksv")
    public suspend fun privateIpAddresses(`value`: Output>) {
        this.privateIpAddresses = value
    }

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

    /**
     * @param values The private IPv4 addresses to assign to the network interface. Only one private IPv4 address can be designated as primary. You cannot specify this option if you're launching more than one instance in a [RunInstances](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_RunInstances.html) request.
     */
    @JvmName("qpmdoqiuulxrklmt")
    public suspend fun privateIpAddresses(values: List>) {
        this.privateIpAddresses = Output.all(values)
    }

    /**
     * @param value The number of secondary private IPv4 addresses. You can't specify this option and specify more than one private IP address using the private IP addresses option. You cannot specify this option if you're launching more than one instance in a [RunInstances](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_RunInstances.html) request.
     */
    @JvmName("uulesulcnexwtebr")
    public suspend fun secondaryPrivateIpAddressCount(`value`: Output) {
        this.secondaryPrivateIpAddressCount = value
    }

    /**
     * @param value The ID of the subnet associated with the network interface.
     */
    @JvmName("vscbauirelaccoxj")
    public suspend fun subnetId(`value`: Output) {
        this.subnetId = value
    }

    /**
     * @param value Indicates whether to assign a public IPv4 address to an instance you launch in a VPC. The public IP address can only be assigned to a network interface for eth0, and can only be assigned to a new network interface, not an existing one. You cannot specify more than one network interface in the request. If launching into a default subnet, the default value is `true` .
     * AWS charges for all public IPv4 addresses, including public IPv4 addresses associated with running instances and Elastic IP addresses. For more information, see the *Public IPv4 Address* tab on the [Amazon VPC pricing page](https://docs.aws.amazon.com/vpc/pricing/) .
     */
    @JvmName("ifdeetgegyrwdato")
    public suspend fun associatePublicIpAddress(`value`: Boolean?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.associatePublicIpAddress = mapped
    }

    /**
     * @param value Indicates whether the network interface is deleted when the instance is terminated.
     */
    @JvmName("xqhkldwbugiguehv")
    public suspend fun deleteOnTermination(`value`: Boolean?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.deleteOnTermination = mapped
    }

    /**
     * @param value The description of the network interface. Applies only if creating a network interface when launching an instance.
     */
    @JvmName("hmaglwbuccbedogx")
    public suspend fun description(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.description = mapped
    }

    /**
     * @param value The position of the network interface in the attachment order. A primary network interface has a device index of 0.
     * If you specify a network interface when launching an instance, you must specify the device index.
     */
    @JvmName("todvsmvwimobptku")
    public suspend fun deviceIndex(`value`: Int?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.deviceIndex = mapped
    }

    /**
     * @param value The IDs of the security groups for the network interface. Applies only if creating a network interface when launching an instance.
     */
    @JvmName("ohrakrytobmushjg")
    public suspend fun groups(`value`: List?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.groups = mapped
    }

    /**
     * @param values The IDs of the security groups for the network interface. Applies only if creating a network interface when launching an instance.
     */
    @JvmName("jfumwtfihnydyfsi")
    public suspend fun groups(vararg values: String) {
        val toBeMapped = values.toList()
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.groups = mapped
    }

    /**
     * @param value A number of IPv6 addresses to assign to the network interface. Amazon EC2 chooses the IPv6 addresses from the range of the subnet. You cannot specify this option and the option to assign specific IPv6 addresses in the same request. You can specify this option if you've specified a minimum number of instances to launch.
     */
    @JvmName("dhiuptqwlrcaxocu")
    public suspend fun ipv6AddressCount(`value`: Int?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.ipv6AddressCount = mapped
    }

    /**
     * @param value The IPv6 addresses to assign to the network interface. You cannot specify this option and the option to assign a number of IPv6 addresses in the same request. You cannot specify this option if you've specified a minimum number of instances to launch.
     */
    @JvmName("rjukyhwxxgqigvfw")
    public suspend fun ipv6Addresses(`value`: List?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.ipv6Addresses = mapped
    }

    /**
     * @param argument The IPv6 addresses to assign to the network interface. You cannot specify this option and the option to assign a number of IPv6 addresses in the same request. You cannot specify this option if you've specified a minimum number of instances to launch.
     */
    @JvmName("numvvechxabjqtoo")
    public suspend fun ipv6Addresses(argument: List Unit>) {
        val toBeMapped = argument.toList().map {
            SpotFleetInstanceIpv6AddressArgsBuilder().applySuspend {
                it()
            }.build()
        }
        val mapped = of(toBeMapped)
        this.ipv6Addresses = mapped
    }

    /**
     * @param argument The IPv6 addresses to assign to the network interface. You cannot specify this option and the option to assign a number of IPv6 addresses in the same request. You cannot specify this option if you've specified a minimum number of instances to launch.
     */
    @JvmName("iykubkivisnkbvxs")
    public suspend fun ipv6Addresses(vararg argument: suspend SpotFleetInstanceIpv6AddressArgsBuilder.() -> Unit) {
        val toBeMapped = argument.toList().map {
            SpotFleetInstanceIpv6AddressArgsBuilder().applySuspend {
                it()
            }.build()
        }
        val mapped = of(toBeMapped)
        this.ipv6Addresses = mapped
    }

    /**
     * @param argument The IPv6 addresses to assign to the network interface. You cannot specify this option and the option to assign a number of IPv6 addresses in the same request. You cannot specify this option if you've specified a minimum number of instances to launch.
     */
    @JvmName("jauwmtdyeghlbrpg")
    public suspend fun ipv6Addresses(argument: suspend SpotFleetInstanceIpv6AddressArgsBuilder.() -> Unit) {
        val toBeMapped = listOf(
            SpotFleetInstanceIpv6AddressArgsBuilder().applySuspend {
                argument()
            }.build(),
        )
        val mapped = of(toBeMapped)
        this.ipv6Addresses = mapped
    }

    /**
     * @param values The IPv6 addresses to assign to the network interface. You cannot specify this option and the option to assign a number of IPv6 addresses in the same request. You cannot specify this option if you've specified a minimum number of instances to launch.
     */
    @JvmName("pnwnnqqvvmjmayah")
    public suspend fun ipv6Addresses(vararg values: SpotFleetInstanceIpv6AddressArgs) {
        val toBeMapped = values.toList()
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.ipv6Addresses = mapped
    }

    /**
     * @param value The ID of the network interface.
     * If you are creating a Spot Fleet, omit this parameter because you can’t specify a network interface ID in a launch specification.
     */
    @JvmName("pfflsbolukvalirk")
    public suspend fun networkInterfaceId(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.networkInterfaceId = mapped
    }

    /**
     * @param value The private IPv4 addresses to assign to the network interface. Only one private IPv4 address can be designated as primary. You cannot specify this option if you're launching more than one instance in a [RunInstances](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_RunInstances.html) request.
     */
    @JvmName("vctcrrgohugypmke")
    public suspend fun privateIpAddresses(`value`: List?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.privateIpAddresses = mapped
    }

    /**
     * @param argument The private IPv4 addresses to assign to the network interface. Only one private IPv4 address can be designated as primary. You cannot specify this option if you're launching more than one instance in a [RunInstances](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_RunInstances.html) request.
     */
    @JvmName("gxjthhwqjcrdgaqp")
    public suspend fun privateIpAddresses(argument: List Unit>) {
        val toBeMapped = argument.toList().map {
            SpotFleetPrivateIpAddressSpecificationArgsBuilder().applySuspend { it() }.build()
        }
        val mapped = of(toBeMapped)
        this.privateIpAddresses = mapped
    }

    /**
     * @param argument The private IPv4 addresses to assign to the network interface. Only one private IPv4 address can be designated as primary. You cannot specify this option if you're launching more than one instance in a [RunInstances](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_RunInstances.html) request.
     */
    @JvmName("vdocsiwkkpcfxnqy")
    public suspend fun privateIpAddresses(vararg argument: suspend SpotFleetPrivateIpAddressSpecificationArgsBuilder.() -> Unit) {
        val toBeMapped = argument.toList().map {
            SpotFleetPrivateIpAddressSpecificationArgsBuilder().applySuspend { it() }.build()
        }
        val mapped = of(toBeMapped)
        this.privateIpAddresses = mapped
    }

    /**
     * @param argument The private IPv4 addresses to assign to the network interface. Only one private IPv4 address can be designated as primary. You cannot specify this option if you're launching more than one instance in a [RunInstances](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_RunInstances.html) request.
     */
    @JvmName("horuecbtgmusohfn")
    public suspend fun privateIpAddresses(argument: suspend SpotFleetPrivateIpAddressSpecificationArgsBuilder.() -> Unit) {
        val toBeMapped = listOf(
            SpotFleetPrivateIpAddressSpecificationArgsBuilder().applySuspend {
                argument()
            }.build(),
        )
        val mapped = of(toBeMapped)
        this.privateIpAddresses = mapped
    }

    /**
     * @param values The private IPv4 addresses to assign to the network interface. Only one private IPv4 address can be designated as primary. You cannot specify this option if you're launching more than one instance in a [RunInstances](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_RunInstances.html) request.
     */
    @JvmName("occbqcjxspnlxrsd")
    public suspend fun privateIpAddresses(vararg values: SpotFleetPrivateIpAddressSpecificationArgs) {
        val toBeMapped = values.toList()
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.privateIpAddresses = mapped
    }

    /**
     * @param value The number of secondary private IPv4 addresses. You can't specify this option and specify more than one private IP address using the private IP addresses option. You cannot specify this option if you're launching more than one instance in a [RunInstances](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_RunInstances.html) request.
     */
    @JvmName("vsjwwmcwjqdwrhls")
    public suspend fun secondaryPrivateIpAddressCount(`value`: Int?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.secondaryPrivateIpAddressCount = mapped
    }

    /**
     * @param value The ID of the subnet associated with the network interface.
     */
    @JvmName("ajjcqyhjmmwjppwu")
    public suspend fun subnetId(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.subnetId = mapped
    }

    internal fun build(): SpotFleetInstanceNetworkInterfaceSpecificationArgs =
        SpotFleetInstanceNetworkInterfaceSpecificationArgs(
            associatePublicIpAddress = associatePublicIpAddress,
            deleteOnTermination = deleteOnTermination,
            description = description,
            deviceIndex = deviceIndex,
            groups = groups,
            ipv6AddressCount = ipv6AddressCount,
            ipv6Addresses = ipv6Addresses,
            networkInterfaceId = networkInterfaceId,
            privateIpAddresses = privateIpAddresses,
            secondaryPrivateIpAddressCount = secondaryPrivateIpAddressCount,
            subnetId = subnetId,
        )
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy