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

com.pulumi.alicloud.vpn.kotlin.GatewayVpnAttachmentArgs.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: 3.62.0.0
Show newest version
@file:Suppress("NAME_SHADOWING", "DEPRECATION")

package com.pulumi.alicloud.vpn.kotlin

import com.pulumi.alicloud.vpn.GatewayVpnAttachmentArgs.builder
import com.pulumi.alicloud.vpn.kotlin.inputs.GatewayVpnAttachmentBgpConfigArgs
import com.pulumi.alicloud.vpn.kotlin.inputs.GatewayVpnAttachmentBgpConfigArgsBuilder
import com.pulumi.alicloud.vpn.kotlin.inputs.GatewayVpnAttachmentHealthCheckConfigArgs
import com.pulumi.alicloud.vpn.kotlin.inputs.GatewayVpnAttachmentHealthCheckConfigArgsBuilder
import com.pulumi.alicloud.vpn.kotlin.inputs.GatewayVpnAttachmentIkeConfigArgs
import com.pulumi.alicloud.vpn.kotlin.inputs.GatewayVpnAttachmentIkeConfigArgsBuilder
import com.pulumi.alicloud.vpn.kotlin.inputs.GatewayVpnAttachmentIpsecConfigArgs
import com.pulumi.alicloud.vpn.kotlin.inputs.GatewayVpnAttachmentIpsecConfigArgsBuilder
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.String
import kotlin.Suppress
import kotlin.Unit
import kotlin.jvm.JvmName

/**
 * Provides a VPN Gateway Vpn Attachment resource.
 * For information about VPN Gateway Vpn Attachment and how to use it, see [What is Vpn Attachment](https://www.alibabacloud.com/help/zh/virtual-private-cloud/latest/createvpnattachment).
 * > **NOTE:** Available since v1.181.0.
 * ## Example Usage
 * Basic Usage
 * 
 * ```typescript
 * import * as pulumi from "@pulumi/pulumi";
 * import * as alicloud from "@pulumi/alicloud";
 * const config = new pulumi.Config();
 * const name = config.get("name") || "tf-example";
 * const _default = new alicloud.vpn.CustomerGateway("default", {
 *     customerGatewayName: name,
 *     ipAddress: "42.104.22.210",
 *     asn: "45014",
 *     description: name,
 * });
 * const defaultGatewayVpnAttachment = new alicloud.vpn.GatewayVpnAttachment("default", {
 *     customerGatewayId: _default.id,
 *     networkType: "public",
 *     localSubnet: "0.0.0.0/0",
 *     remoteSubnet: "0.0.0.0/0",
 *     effectImmediately: false,
 *     ikeConfig: {
 *         ikeAuthAlg: "md5",
 *         ikeEncAlg: "des",
 *         ikeVersion: "ikev2",
 *         ikeMode: "main",
 *         ikeLifetime: 86400,
 *         psk: "tf-testvpn2",
 *         ikePfs: "group1",
 *         remoteId: "testbob2",
 *         localId: "testalice2",
 *     },
 *     ipsecConfig: {
 *         ipsecPfs: "group5",
 *         ipsecEncAlg: "des",
 *         ipsecAuthAlg: "md5",
 *         ipsecLifetime: 86400,
 *     },
 *     bgpConfig: {
 *         enable: true,
 *         localAsn: 45014,
 *         tunnelCidr: "169.254.11.0/30",
 *         localBgpIp: "169.254.11.1",
 *     },
 *     healthCheckConfig: {
 *         enable: true,
 *         sip: "192.168.1.1",
 *         dip: "10.0.0.1",
 *         interval: 10,
 *         retry: 10,
 *         policy: "revoke_route",
 *     },
 *     enableDpd: true,
 *     enableNatTraversal: true,
 *     vpnAttachmentName: name,
 * });
 * ```
 * ```python
 * import pulumi
 * import pulumi_alicloud as alicloud
 * config = pulumi.Config()
 * name = config.get("name")
 * if name is None:
 *     name = "tf-example"
 * default = alicloud.vpn.CustomerGateway("default",
 *     customer_gateway_name=name,
 *     ip_address="42.104.22.210",
 *     asn="45014",
 *     description=name)
 * default_gateway_vpn_attachment = alicloud.vpn.GatewayVpnAttachment("default",
 *     customer_gateway_id=default.id,
 *     network_type="public",
 *     local_subnet="0.0.0.0/0",
 *     remote_subnet="0.0.0.0/0",
 *     effect_immediately=False,
 *     ike_config={
 *         "ike_auth_alg": "md5",
 *         "ike_enc_alg": "des",
 *         "ike_version": "ikev2",
 *         "ike_mode": "main",
 *         "ike_lifetime": 86400,
 *         "psk": "tf-testvpn2",
 *         "ike_pfs": "group1",
 *         "remote_id": "testbob2",
 *         "local_id": "testalice2",
 *     },
 *     ipsec_config={
 *         "ipsec_pfs": "group5",
 *         "ipsec_enc_alg": "des",
 *         "ipsec_auth_alg": "md5",
 *         "ipsec_lifetime": 86400,
 *     },
 *     bgp_config={
 *         "enable": True,
 *         "local_asn": 45014,
 *         "tunnel_cidr": "169.254.11.0/30",
 *         "local_bgp_ip": "169.254.11.1",
 *     },
 *     health_check_config={
 *         "enable": True,
 *         "sip": "192.168.1.1",
 *         "dip": "10.0.0.1",
 *         "interval": 10,
 *         "retry": 10,
 *         "policy": "revoke_route",
 *     },
 *     enable_dpd=True,
 *     enable_nat_traversal=True,
 *     vpn_attachment_name=name)
 * ```
 * ```csharp
 * using System.Collections.Generic;
 * using System.Linq;
 * using Pulumi;
 * using AliCloud = Pulumi.AliCloud;
 * return await Deployment.RunAsync(() =>
 * {
 *     var config = new Config();
 *     var name = config.Get("name") ?? "tf-example";
 *     var @default = new AliCloud.Vpn.CustomerGateway("default", new()
 *     {
 *         CustomerGatewayName = name,
 *         IpAddress = "42.104.22.210",
 *         Asn = "45014",
 *         Description = name,
 *     });
 *     var defaultGatewayVpnAttachment = new AliCloud.Vpn.GatewayVpnAttachment("default", new()
 *     {
 *         CustomerGatewayId = @default.Id,
 *         NetworkType = "public",
 *         LocalSubnet = "0.0.0.0/0",
 *         RemoteSubnet = "0.0.0.0/0",
 *         EffectImmediately = false,
 *         IkeConfig = new AliCloud.Vpn.Inputs.GatewayVpnAttachmentIkeConfigArgs
 *         {
 *             IkeAuthAlg = "md5",
 *             IkeEncAlg = "des",
 *             IkeVersion = "ikev2",
 *             IkeMode = "main",
 *             IkeLifetime = 86400,
 *             Psk = "tf-testvpn2",
 *             IkePfs = "group1",
 *             RemoteId = "testbob2",
 *             LocalId = "testalice2",
 *         },
 *         IpsecConfig = new AliCloud.Vpn.Inputs.GatewayVpnAttachmentIpsecConfigArgs
 *         {
 *             IpsecPfs = "group5",
 *             IpsecEncAlg = "des",
 *             IpsecAuthAlg = "md5",
 *             IpsecLifetime = 86400,
 *         },
 *         BgpConfig = new AliCloud.Vpn.Inputs.GatewayVpnAttachmentBgpConfigArgs
 *         {
 *             Enable = true,
 *             LocalAsn = 45014,
 *             TunnelCidr = "169.254.11.0/30",
 *             LocalBgpIp = "169.254.11.1",
 *         },
 *         HealthCheckConfig = new AliCloud.Vpn.Inputs.GatewayVpnAttachmentHealthCheckConfigArgs
 *         {
 *             Enable = true,
 *             Sip = "192.168.1.1",
 *             Dip = "10.0.0.1",
 *             Interval = 10,
 *             Retry = 10,
 *             Policy = "revoke_route",
 *         },
 *         EnableDpd = true,
 *         EnableNatTraversal = true,
 *         VpnAttachmentName = name,
 *     });
 * });
 * ```
 * ```go
 * package main
 * import (
 * 	"github.com/pulumi/pulumi-alicloud/sdk/v3/go/alicloud/vpn"
 * 	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
 * 	"github.com/pulumi/pulumi/sdk/v3/go/pulumi/config"
 * )
 * func main() {
 * 	pulumi.Run(func(ctx *pulumi.Context) error {
 * 		cfg := config.New(ctx, "")
 * 		name := "tf-example"
 * 		if param := cfg.Get("name"); param != "" {
 * 			name = param
 * 		}
 * 		_, err := vpn.NewCustomerGateway(ctx, "default", &vpn.CustomerGatewayArgs{
 * 			CustomerGatewayName: pulumi.String(name),
 * 			IpAddress:           pulumi.String("42.104.22.210"),
 * 			Asn:                 pulumi.String("45014"),
 * 			Description:         pulumi.String(name),
 * 		})
 * 		if err != nil {
 * 			return err
 * 		}
 * 		_, err = vpn.NewGatewayVpnAttachment(ctx, "default", &vpn.GatewayVpnAttachmentArgs{
 * 			CustomerGatewayId: _default.ID(),
 * 			NetworkType:       pulumi.String("public"),
 * 			LocalSubnet:       pulumi.String("0.0.0.0/0"),
 * 			RemoteSubnet:      pulumi.String("0.0.0.0/0"),
 * 			EffectImmediately: pulumi.Bool(false),
 * 			IkeConfig: &vpn.GatewayVpnAttachmentIkeConfigArgs{
 * 				IkeAuthAlg:  pulumi.String("md5"),
 * 				IkeEncAlg:   pulumi.String("des"),
 * 				IkeVersion:  pulumi.String("ikev2"),
 * 				IkeMode:     pulumi.String("main"),
 * 				IkeLifetime: pulumi.Int(86400),
 * 				Psk:         pulumi.String("tf-testvpn2"),
 * 				IkePfs:      pulumi.String("group1"),
 * 				RemoteId:    pulumi.String("testbob2"),
 * 				LocalId:     pulumi.String("testalice2"),
 * 			},
 * 			IpsecConfig: &vpn.GatewayVpnAttachmentIpsecConfigArgs{
 * 				IpsecPfs:      pulumi.String("group5"),
 * 				IpsecEncAlg:   pulumi.String("des"),
 * 				IpsecAuthAlg:  pulumi.String("md5"),
 * 				IpsecLifetime: pulumi.Int(86400),
 * 			},
 * 			BgpConfig: &vpn.GatewayVpnAttachmentBgpConfigArgs{
 * 				Enable:     pulumi.Bool(true),
 * 				LocalAsn:   pulumi.Int(45014),
 * 				TunnelCidr: pulumi.String("169.254.11.0/30"),
 * 				LocalBgpIp: pulumi.String("169.254.11.1"),
 * 			},
 * 			HealthCheckConfig: &vpn.GatewayVpnAttachmentHealthCheckConfigArgs{
 * 				Enable:   pulumi.Bool(true),
 * 				Sip:      pulumi.String("192.168.1.1"),
 * 				Dip:      pulumi.String("10.0.0.1"),
 * 				Interval: pulumi.Int(10),
 * 				Retry:    pulumi.Int(10),
 * 				Policy:   pulumi.String("revoke_route"),
 * 			},
 * 			EnableDpd:          pulumi.Bool(true),
 * 			EnableNatTraversal: pulumi.Bool(true),
 * 			VpnAttachmentName:  pulumi.String(name),
 * 		})
 * 		if err != nil {
 * 			return err
 * 		}
 * 		return nil
 * 	})
 * }
 * ```
 * ```java
 * package generated_program;
 * import com.pulumi.Context;
 * import com.pulumi.Pulumi;
 * import com.pulumi.core.Output;
 * import com.pulumi.alicloud.vpn.CustomerGateway;
 * import com.pulumi.alicloud.vpn.CustomerGatewayArgs;
 * import com.pulumi.alicloud.vpn.GatewayVpnAttachment;
 * import com.pulumi.alicloud.vpn.GatewayVpnAttachmentArgs;
 * import com.pulumi.alicloud.vpn.inputs.GatewayVpnAttachmentIkeConfigArgs;
 * import com.pulumi.alicloud.vpn.inputs.GatewayVpnAttachmentIpsecConfigArgs;
 * import com.pulumi.alicloud.vpn.inputs.GatewayVpnAttachmentBgpConfigArgs;
 * import com.pulumi.alicloud.vpn.inputs.GatewayVpnAttachmentHealthCheckConfigArgs;
 * import java.util.List;
 * import java.util.ArrayList;
 * import java.util.Map;
 * import java.io.File;
 * import java.nio.file.Files;
 * import java.nio.file.Paths;
 * public class App {
 *     public static void main(String[] args) {
 *         Pulumi.run(App::stack);
 *     }
 *     public static void stack(Context ctx) {
 *         final var config = ctx.config();
 *         final var name = config.get("name").orElse("tf-example");
 *         var default_ = new CustomerGateway("default", CustomerGatewayArgs.builder()
 *             .customerGatewayName(name)
 *             .ipAddress("42.104.22.210")
 *             .asn("45014")
 *             .description(name)
 *             .build());
 *         var defaultGatewayVpnAttachment = new GatewayVpnAttachment("defaultGatewayVpnAttachment", GatewayVpnAttachmentArgs.builder()
 *             .customerGatewayId(default_.id())
 *             .networkType("public")
 *             .localSubnet("0.0.0.0/0")
 *             .remoteSubnet("0.0.0.0/0")
 *             .effectImmediately(false)
 *             .ikeConfig(GatewayVpnAttachmentIkeConfigArgs.builder()
 *                 .ikeAuthAlg("md5")
 *                 .ikeEncAlg("des")
 *                 .ikeVersion("ikev2")
 *                 .ikeMode("main")
 *                 .ikeLifetime(86400)
 *                 .psk("tf-testvpn2")
 *                 .ikePfs("group1")
 *                 .remoteId("testbob2")
 *                 .localId("testalice2")
 *                 .build())
 *             .ipsecConfig(GatewayVpnAttachmentIpsecConfigArgs.builder()
 *                 .ipsecPfs("group5")
 *                 .ipsecEncAlg("des")
 *                 .ipsecAuthAlg("md5")
 *                 .ipsecLifetime(86400)
 *                 .build())
 *             .bgpConfig(GatewayVpnAttachmentBgpConfigArgs.builder()
 *                 .enable(true)
 *                 .localAsn(45014)
 *                 .tunnelCidr("169.254.11.0/30")
 *                 .localBgpIp("169.254.11.1")
 *                 .build())
 *             .healthCheckConfig(GatewayVpnAttachmentHealthCheckConfigArgs.builder()
 *                 .enable(true)
 *                 .sip("192.168.1.1")
 *                 .dip("10.0.0.1")
 *                 .interval(10)
 *                 .retry(10)
 *                 .policy("revoke_route")
 *                 .build())
 *             .enableDpd(true)
 *             .enableNatTraversal(true)
 *             .vpnAttachmentName(name)
 *             .build());
 *     }
 * }
 * ```
 * ```yaml
 * configuration:
 *   name:
 *     type: string
 *     default: tf-example
 * resources:
 *   default:
 *     type: alicloud:vpn:CustomerGateway
 *     properties:
 *       customerGatewayName: ${name}
 *       ipAddress: 42.104.22.210
 *       asn: '45014'
 *       description: ${name}
 *   defaultGatewayVpnAttachment:
 *     type: alicloud:vpn:GatewayVpnAttachment
 *     name: default
 *     properties:
 *       customerGatewayId: ${default.id}
 *       networkType: public
 *       localSubnet: 0.0.0.0/0
 *       remoteSubnet: 0.0.0.0/0
 *       effectImmediately: false
 *       ikeConfig:
 *         ikeAuthAlg: md5
 *         ikeEncAlg: des
 *         ikeVersion: ikev2
 *         ikeMode: main
 *         ikeLifetime: 86400
 *         psk: tf-testvpn2
 *         ikePfs: group1
 *         remoteId: testbob2
 *         localId: testalice2
 *       ipsecConfig:
 *         ipsecPfs: group5
 *         ipsecEncAlg: des
 *         ipsecAuthAlg: md5
 *         ipsecLifetime: 86400
 *       bgpConfig:
 *         enable: true
 *         localAsn: 45014
 *         tunnelCidr: 169.254.11.0/30
 *         localBgpIp: 169.254.11.1
 *       healthCheckConfig:
 *         enable: true
 *         sip: 192.168.1.1
 *         dip: 10.0.0.1
 *         interval: 10
 *         retry: 10
 *         policy: revoke_route
 *       enableDpd: true
 *       enableNatTraversal: true
 *       vpnAttachmentName: ${name}
 * ```
 * 
 * ## Import
 * VPN Gateway Vpn Attachment can be imported using the id, e.g.
 * ```sh
 * $ pulumi import alicloud:vpn/gatewayVpnAttachment:GatewayVpnAttachment example 
 * ```
 * @property bgpConfig Bgp configuration information. See `bgp_config` below.
 * @property customerGatewayId The ID of the customer gateway. From version 1.196.0, `customer_gateway_id` can be modified.
 * @property effectImmediately Indicates whether IPsec-VPN negotiations are initiated immediately. Valid values.
 * @property enableDpd Whether to enable the DPD (peer survival detection) function.
 * @property enableNatTraversal Allow NAT penetration.
 * @property healthCheckConfig Health check configuration information. See `health_check_config` below.
 * @property ikeConfig Configuration negotiated in the second stage. See `ike_config` below.
 * @property ipsecConfig Configuration negotiated in the second stage. See `ipsec_config` below.
 * @property localSubnet The CIDR block of the virtual private cloud (VPC).
 * @property networkType The network type of the IPsec connection. Valid values: `public`, `private`.
 * @property remoteSubnet The CIDR block of the on-premises data center.
 * @property vpnAttachmentName The name of the vpn attachment.
 */
public data class GatewayVpnAttachmentArgs(
    public val bgpConfig: Output? = null,
    public val customerGatewayId: Output? = null,
    public val effectImmediately: Output? = null,
    public val enableDpd: Output? = null,
    public val enableNatTraversal: Output? = null,
    public val healthCheckConfig: Output? = null,
    public val ikeConfig: Output? = null,
    public val ipsecConfig: Output? = null,
    public val localSubnet: Output? = null,
    public val networkType: Output? = null,
    public val remoteSubnet: Output? = null,
    public val vpnAttachmentName: Output? = null,
) : ConvertibleToJava {
    override fun toJava(): com.pulumi.alicloud.vpn.GatewayVpnAttachmentArgs =
        com.pulumi.alicloud.vpn.GatewayVpnAttachmentArgs.builder()
            .bgpConfig(bgpConfig?.applyValue({ args0 -> args0.let({ args0 -> args0.toJava() }) }))
            .customerGatewayId(customerGatewayId?.applyValue({ args0 -> args0 }))
            .effectImmediately(effectImmediately?.applyValue({ args0 -> args0 }))
            .enableDpd(enableDpd?.applyValue({ args0 -> args0 }))
            .enableNatTraversal(enableNatTraversal?.applyValue({ args0 -> args0 }))
            .healthCheckConfig(healthCheckConfig?.applyValue({ args0 -> args0.let({ args0 -> args0.toJava() }) }))
            .ikeConfig(ikeConfig?.applyValue({ args0 -> args0.let({ args0 -> args0.toJava() }) }))
            .ipsecConfig(ipsecConfig?.applyValue({ args0 -> args0.let({ args0 -> args0.toJava() }) }))
            .localSubnet(localSubnet?.applyValue({ args0 -> args0 }))
            .networkType(networkType?.applyValue({ args0 -> args0 }))
            .remoteSubnet(remoteSubnet?.applyValue({ args0 -> args0 }))
            .vpnAttachmentName(vpnAttachmentName?.applyValue({ args0 -> args0 })).build()
}

/**
 * Builder for [GatewayVpnAttachmentArgs].
 */
@PulumiTagMarker
public class GatewayVpnAttachmentArgsBuilder internal constructor() {
    private var bgpConfig: Output? = null

    private var customerGatewayId: Output? = null

    private var effectImmediately: Output? = null

    private var enableDpd: Output? = null

    private var enableNatTraversal: Output? = null

    private var healthCheckConfig: Output? = null

    private var ikeConfig: Output? = null

    private var ipsecConfig: Output? = null

    private var localSubnet: Output? = null

    private var networkType: Output? = null

    private var remoteSubnet: Output? = null

    private var vpnAttachmentName: Output? = null

    /**
     * @param value Bgp configuration information. See `bgp_config` below.
     */
    @JvmName("uqinslancdojbxrb")
    public suspend fun bgpConfig(`value`: Output) {
        this.bgpConfig = value
    }

    /**
     * @param value The ID of the customer gateway. From version 1.196.0, `customer_gateway_id` can be modified.
     */
    @JvmName("sarydqhbgodiwkfu")
    public suspend fun customerGatewayId(`value`: Output) {
        this.customerGatewayId = value
    }

    /**
     * @param value Indicates whether IPsec-VPN negotiations are initiated immediately. Valid values.
     */
    @JvmName("jlryxubvfwjyyaos")
    public suspend fun effectImmediately(`value`: Output) {
        this.effectImmediately = value
    }

    /**
     * @param value Whether to enable the DPD (peer survival detection) function.
     */
    @JvmName("mlvqhnkiessttyiv")
    public suspend fun enableDpd(`value`: Output) {
        this.enableDpd = value
    }

    /**
     * @param value Allow NAT penetration.
     */
    @JvmName("quntpnhacsniaexw")
    public suspend fun enableNatTraversal(`value`: Output) {
        this.enableNatTraversal = value
    }

    /**
     * @param value Health check configuration information. See `health_check_config` below.
     */
    @JvmName("alxmsbjpiawafghb")
    public suspend fun healthCheckConfig(`value`: Output) {
        this.healthCheckConfig = value
    }

    /**
     * @param value Configuration negotiated in the second stage. See `ike_config` below.
     */
    @JvmName("ktxagtnoejxdwxlj")
    public suspend fun ikeConfig(`value`: Output) {
        this.ikeConfig = value
    }

    /**
     * @param value Configuration negotiated in the second stage. See `ipsec_config` below.
     */
    @JvmName("jegqabklgtgjbgqy")
    public suspend fun ipsecConfig(`value`: Output) {
        this.ipsecConfig = value
    }

    /**
     * @param value The CIDR block of the virtual private cloud (VPC).
     */
    @JvmName("ehjbsqpebwashmyi")
    public suspend fun localSubnet(`value`: Output) {
        this.localSubnet = value
    }

    /**
     * @param value The network type of the IPsec connection. Valid values: `public`, `private`.
     */
    @JvmName("ypeqpayfuarcagoh")
    public suspend fun networkType(`value`: Output) {
        this.networkType = value
    }

    /**
     * @param value The CIDR block of the on-premises data center.
     */
    @JvmName("cdoqosqkyogphlqx")
    public suspend fun remoteSubnet(`value`: Output) {
        this.remoteSubnet = value
    }

    /**
     * @param value The name of the vpn attachment.
     */
    @JvmName("vyamlchitbgbgaae")
    public suspend fun vpnAttachmentName(`value`: Output) {
        this.vpnAttachmentName = value
    }

    /**
     * @param value Bgp configuration information. See `bgp_config` below.
     */
    @JvmName("epkuotourgrxjerl")
    public suspend fun bgpConfig(`value`: GatewayVpnAttachmentBgpConfigArgs?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.bgpConfig = mapped
    }

    /**
     * @param argument Bgp configuration information. See `bgp_config` below.
     */
    @JvmName("vrtwacuadrpgbqtk")
    public suspend fun bgpConfig(argument: suspend GatewayVpnAttachmentBgpConfigArgsBuilder.() -> Unit) {
        val toBeMapped = GatewayVpnAttachmentBgpConfigArgsBuilder().applySuspend { argument() }.build()
        val mapped = of(toBeMapped)
        this.bgpConfig = mapped
    }

    /**
     * @param value The ID of the customer gateway. From version 1.196.0, `customer_gateway_id` can be modified.
     */
    @JvmName("pdwbfningruumkbj")
    public suspend fun customerGatewayId(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.customerGatewayId = mapped
    }

    /**
     * @param value Indicates whether IPsec-VPN negotiations are initiated immediately. Valid values.
     */
    @JvmName("jabmlqjkvfijidjg")
    public suspend fun effectImmediately(`value`: Boolean?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.effectImmediately = mapped
    }

    /**
     * @param value Whether to enable the DPD (peer survival detection) function.
     */
    @JvmName("csnratxialajfhns")
    public suspend fun enableDpd(`value`: Boolean?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.enableDpd = mapped
    }

    /**
     * @param value Allow NAT penetration.
     */
    @JvmName("iwmonpqvhggxockc")
    public suspend fun enableNatTraversal(`value`: Boolean?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.enableNatTraversal = mapped
    }

    /**
     * @param value Health check configuration information. See `health_check_config` below.
     */
    @JvmName("bmoubxggssjunigc")
    public suspend fun healthCheckConfig(`value`: GatewayVpnAttachmentHealthCheckConfigArgs?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.healthCheckConfig = mapped
    }

    /**
     * @param argument Health check configuration information. See `health_check_config` below.
     */
    @JvmName("nodnonoebpcumspc")
    public suspend fun healthCheckConfig(argument: suspend GatewayVpnAttachmentHealthCheckConfigArgsBuilder.() -> Unit) {
        val toBeMapped = GatewayVpnAttachmentHealthCheckConfigArgsBuilder().applySuspend {
            argument()
        }.build()
        val mapped = of(toBeMapped)
        this.healthCheckConfig = mapped
    }

    /**
     * @param value Configuration negotiated in the second stage. See `ike_config` below.
     */
    @JvmName("nenbihlqwfadbfdk")
    public suspend fun ikeConfig(`value`: GatewayVpnAttachmentIkeConfigArgs?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.ikeConfig = mapped
    }

    /**
     * @param argument Configuration negotiated in the second stage. See `ike_config` below.
     */
    @JvmName("xnuyqestovrabjwy")
    public suspend fun ikeConfig(argument: suspend GatewayVpnAttachmentIkeConfigArgsBuilder.() -> Unit) {
        val toBeMapped = GatewayVpnAttachmentIkeConfigArgsBuilder().applySuspend { argument() }.build()
        val mapped = of(toBeMapped)
        this.ikeConfig = mapped
    }

    /**
     * @param value Configuration negotiated in the second stage. See `ipsec_config` below.
     */
    @JvmName("rostckvsqoxmomil")
    public suspend fun ipsecConfig(`value`: GatewayVpnAttachmentIpsecConfigArgs?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.ipsecConfig = mapped
    }

    /**
     * @param argument Configuration negotiated in the second stage. See `ipsec_config` below.
     */
    @JvmName("rvruviyijpihkjne")
    public suspend fun ipsecConfig(argument: suspend GatewayVpnAttachmentIpsecConfigArgsBuilder.() -> Unit) {
        val toBeMapped = GatewayVpnAttachmentIpsecConfigArgsBuilder().applySuspend { argument() }.build()
        val mapped = of(toBeMapped)
        this.ipsecConfig = mapped
    }

    /**
     * @param value The CIDR block of the virtual private cloud (VPC).
     */
    @JvmName("nhmvrxirakdqtqms")
    public suspend fun localSubnet(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.localSubnet = mapped
    }

    /**
     * @param value The network type of the IPsec connection. Valid values: `public`, `private`.
     */
    @JvmName("jesouvikceetkmli")
    public suspend fun networkType(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.networkType = mapped
    }

    /**
     * @param value The CIDR block of the on-premises data center.
     */
    @JvmName("xfpxxdqcsjouxxhk")
    public suspend fun remoteSubnet(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.remoteSubnet = mapped
    }

    /**
     * @param value The name of the vpn attachment.
     */
    @JvmName("uviyrjwarvqtvlex")
    public suspend fun vpnAttachmentName(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.vpnAttachmentName = mapped
    }

    internal fun build(): GatewayVpnAttachmentArgs = GatewayVpnAttachmentArgs(
        bgpConfig = bgpConfig,
        customerGatewayId = customerGatewayId,
        effectImmediately = effectImmediately,
        enableDpd = enableDpd,
        enableNatTraversal = enableNatTraversal,
        healthCheckConfig = healthCheckConfig,
        ikeConfig = ikeConfig,
        ipsecConfig = ipsecConfig,
        localSubnet = localSubnet,
        networkType = networkType,
        remoteSubnet = remoteSubnet,
        vpnAttachmentName = vpnAttachmentName,
    )
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy