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

com.pulumi.aws.ec2transitgateway.kotlin.ConnectPeer.kt Maven / Gradle / Ivy

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

package com.pulumi.aws.ec2transitgateway.kotlin

import com.pulumi.core.Output
import com.pulumi.kotlin.KotlinCustomResource
import com.pulumi.kotlin.PulumiTagMarker
import com.pulumi.kotlin.ResourceMapper
import com.pulumi.kotlin.options.CustomResourceOptions
import com.pulumi.kotlin.options.CustomResourceOptionsBuilder
import com.pulumi.resources.Resource
import kotlin.Boolean
import kotlin.Deprecated
import kotlin.String
import kotlin.Suppress
import kotlin.Unit
import kotlin.collections.List
import kotlin.collections.Map

/**
 * Builder for [ConnectPeer].
 */
@PulumiTagMarker
public class ConnectPeerResourceBuilder internal constructor() {
    public var name: String? = null

    public var args: ConnectPeerArgs = ConnectPeerArgs()

    public var opts: CustomResourceOptions = CustomResourceOptions()

    /**
     * @param name The _unique_ name of the resulting resource.
     */
    public fun name(`value`: String) {
        this.name = value
    }

    /**
     * @param block The arguments to use to populate this resource's properties.
     */
    public suspend fun args(block: suspend ConnectPeerArgsBuilder.() -> Unit) {
        val builder = ConnectPeerArgsBuilder()
        block(builder)
        this.args = builder.build()
    }

    /**
     * @param block A bag of options that control this resource's behavior.
     */
    public suspend fun opts(block: suspend CustomResourceOptionsBuilder.() -> Unit) {
        this.opts = com.pulumi.kotlin.options.CustomResourceOptions.opts(block)
    }

    internal fun build(): ConnectPeer {
        val builtJavaResource = com.pulumi.aws.ec2transitgateway.ConnectPeer(
            this.name,
            this.args.toJava(),
            this.opts.toJava(),
        )
        return ConnectPeer(builtJavaResource)
    }
}

/**
 * Manages an EC2 Transit Gateway Connect Peer.
 * ## Example Usage
 * 
 * ```typescript
 * import * as pulumi from "@pulumi/pulumi";
 * import * as aws from "@pulumi/aws";
 * const example = new aws.ec2transitgateway.Connect("example", {
 *     transportAttachmentId: exampleAwsEc2TransitGatewayVpcAttachment.id,
 *     transitGatewayId: exampleAwsEc2TransitGateway.id,
 * });
 * const exampleConnectPeer = new aws.ec2transitgateway.ConnectPeer("example", {
 *     peerAddress: "10.1.2.3",
 *     insideCidrBlocks: ["169.254.100.0/29"],
 *     transitGatewayAttachmentId: example.id,
 * });
 * ```
 * ```python
 * import pulumi
 * import pulumi_aws as aws
 * example = aws.ec2transitgateway.Connect("example",
 *     transport_attachment_id=example_aws_ec2_transit_gateway_vpc_attachment["id"],
 *     transit_gateway_id=example_aws_ec2_transit_gateway["id"])
 * example_connect_peer = aws.ec2transitgateway.ConnectPeer("example",
 *     peer_address="10.1.2.3",
 *     inside_cidr_blocks=["169.254.100.0/29"],
 *     transit_gateway_attachment_id=example.id)
 * ```
 * ```csharp
 * using System.Collections.Generic;
 * using System.Linq;
 * using Pulumi;
 * using Aws = Pulumi.Aws;
 * return await Deployment.RunAsync(() =>
 * {
 *     var example = new Aws.Ec2TransitGateway.Connect("example", new()
 *     {
 *         TransportAttachmentId = exampleAwsEc2TransitGatewayVpcAttachment.Id,
 *         TransitGatewayId = exampleAwsEc2TransitGateway.Id,
 *     });
 *     var exampleConnectPeer = new Aws.Ec2TransitGateway.ConnectPeer("example", new()
 *     {
 *         PeerAddress = "10.1.2.3",
 *         InsideCidrBlocks = new[]
 *         {
 *             "169.254.100.0/29",
 *         },
 *         TransitGatewayAttachmentId = example.Id,
 *     });
 * });
 * ```
 * ```go
 * package main
 * import (
 * 	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/ec2transitgateway"
 * 	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
 * )
 * func main() {
 * 	pulumi.Run(func(ctx *pulumi.Context) error {
 * 		example, err := ec2transitgateway.NewConnect(ctx, "example", &ec2transitgateway.ConnectArgs{
 * 			TransportAttachmentId: pulumi.Any(exampleAwsEc2TransitGatewayVpcAttachment.Id),
 * 			TransitGatewayId:      pulumi.Any(exampleAwsEc2TransitGateway.Id),
 * 		})
 * 		if err != nil {
 * 			return err
 * 		}
 * 		_, err = ec2transitgateway.NewConnectPeer(ctx, "example", &ec2transitgateway.ConnectPeerArgs{
 * 			PeerAddress: pulumi.String("10.1.2.3"),
 * 			InsideCidrBlocks: pulumi.StringArray{
 * 				pulumi.String("169.254.100.0/29"),
 * 			},
 * 			TransitGatewayAttachmentId: example.ID(),
 * 		})
 * 		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.aws.ec2transitgateway.Connect;
 * import com.pulumi.aws.ec2transitgateway.ConnectArgs;
 * import com.pulumi.aws.ec2transitgateway.ConnectPeer;
 * import com.pulumi.aws.ec2transitgateway.ConnectPeerArgs;
 * 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) {
 *         var example = new Connect("example", ConnectArgs.builder()
 *             .transportAttachmentId(exampleAwsEc2TransitGatewayVpcAttachment.id())
 *             .transitGatewayId(exampleAwsEc2TransitGateway.id())
 *             .build());
 *         var exampleConnectPeer = new ConnectPeer("exampleConnectPeer", ConnectPeerArgs.builder()
 *             .peerAddress("10.1.2.3")
 *             .insideCidrBlocks("169.254.100.0/29")
 *             .transitGatewayAttachmentId(example.id())
 *             .build());
 *     }
 * }
 * ```
 * ```yaml
 * resources:
 *   example:
 *     type: aws:ec2transitgateway:Connect
 *     properties:
 *       transportAttachmentId: ${exampleAwsEc2TransitGatewayVpcAttachment.id}
 *       transitGatewayId: ${exampleAwsEc2TransitGateway.id}
 *   exampleConnectPeer:
 *     type: aws:ec2transitgateway:ConnectPeer
 *     name: example
 *     properties:
 *       peerAddress: 10.1.2.3
 *       insideCidrBlocks:
 *         - 169.254.100.0/29
 *       transitGatewayAttachmentId: ${example.id}
 * ```
 * 
 * ## Import
 * Using `pulumi import`, import `aws_ec2_transit_gateway_connect_peer` using the EC2 Transit Gateway Connect Peer identifier. For example:
 * ```sh
 * $ pulumi import aws:ec2transitgateway/connectPeer:ConnectPeer example tgw-connect-peer-12345678
 * ```
 */
public class ConnectPeer internal constructor(
    override val javaResource: com.pulumi.aws.ec2transitgateway.ConnectPeer,
) : KotlinCustomResource(javaResource, ConnectPeerMapper) {
    /**
     * EC2 Transit Gateway Connect Peer ARN
     */
    public val arn: Output
        get() = javaResource.arn().applyValue({ args0 -> args0 })

    /**
     * The BGP ASN number assigned customer device. If not provided, it will use the same BGP ASN as is associated with Transit Gateway.
     */
    public val bgpAsn: Output
        get() = javaResource.bgpAsn().applyValue({ args0 -> args0 })

    /**
     * The IP address assigned to customer device, which is used as BGP IP address.
     */
    public val bgpPeerAddress: Output
        get() = javaResource.bgpPeerAddress().applyValue({ args0 -> args0 })

    /**
     * The IP addresses assigned to Transit Gateway, which are used as BGP IP addresses.
     */
    public val bgpTransitGatewayAddresses: Output>
        get() = javaResource.bgpTransitGatewayAddresses().applyValue({ args0 ->
            args0.map({ args0 ->
                args0
            })
        })

    /**
     * The CIDR block that will be used for addressing within the tunnel. It must contain exactly one IPv4 CIDR block and up to one IPv6 CIDR block. The IPv4 CIDR block must be /29 size and must be within 169.254.0.0/16 range, with exception of: 169.254.0.0/29, 169.254.1.0/29, 169.254.2.0/29, 169.254.3.0/29, 169.254.4.0/29, 169.254.5.0/29, 169.254.169.248/29. The IPv6 CIDR block must be /125 size and must be within fd00::/8. The first IP from each CIDR block is assigned for customer gateway, the second and third is for Transit Gateway (An example: from range 169.254.100.0/29, .1 is assigned to customer gateway and .2 and .3 are assigned to Transit Gateway)
     */
    public val insideCidrBlocks: Output>
        get() = javaResource.insideCidrBlocks().applyValue({ args0 -> args0.map({ args0 -> args0 }) })

    /**
     * The IP addressed assigned to customer device, which will be used as tunnel endpoint. It can be IPv4 or IPv6 address, but must be the same address family as `transit_gateway_address`
     */
    public val peerAddress: Output
        get() = javaResource.peerAddress().applyValue({ args0 -> args0 })

    /**
     * Key-value tags for the EC2 Transit Gateway Connect Peer. If configured with a provider `default_tags` configuration block present, tags with matching keys will overwrite those defined at the provider-level.
     */
    public val tags: Output>?
        get() = javaResource.tags().applyValue({ args0 ->
            args0.map({ args0 ->
                args0.map({ args0 ->
                    args0.key.to(args0.value)
                }).toMap()
            }).orElse(null)
        })

    /**
     * A map of tags assigned to the resource, including those inherited from the provider `default_tags` configuration block.
     */
    @Deprecated(
        message = """
  Please use `tags` instead.
  """,
    )
    public val tagsAll: Output>
        get() = javaResource.tagsAll().applyValue({ args0 ->
            args0.map({ args0 ->
                args0.key.to(args0.value)
            }).toMap()
        })

    /**
     * The IP address assigned to Transit Gateway, which will be used as tunnel endpoint. This address must be from associated Transit Gateway CIDR block. The address must be from the same address family as `peer_address`. If not set explicitly, it will be selected from associated Transit Gateway CIDR blocks
     */
    public val transitGatewayAddress: Output
        get() = javaResource.transitGatewayAddress().applyValue({ args0 -> args0 })

    /**
     * The Transit Gateway Connect
     */
    public val transitGatewayAttachmentId: Output
        get() = javaResource.transitGatewayAttachmentId().applyValue({ args0 -> args0 })
}

public object ConnectPeerMapper : ResourceMapper {
    override fun supportsMappingOfType(javaResource: Resource): Boolean =
        com.pulumi.aws.ec2transitgateway.ConnectPeer::class == javaResource::class

    override fun map(javaResource: Resource): ConnectPeer = ConnectPeer(
        javaResource as
            com.pulumi.aws.ec2transitgateway.ConnectPeer,
    )
}

/**
 * @see [ConnectPeer].
 * @param name The _unique_ name of the resulting resource.
 * @param block Builder for [ConnectPeer].
 */
public suspend fun connectPeer(name: String, block: suspend ConnectPeerResourceBuilder.() -> Unit): ConnectPeer {
    val builder = ConnectPeerResourceBuilder()
    builder.name(name)
    block(builder)
    return builder.build()
}

/**
 * @see [ConnectPeer].
 * @param name The _unique_ name of the resulting resource.
 */
public fun connectPeer(name: String): ConnectPeer {
    val builder = ConnectPeerResourceBuilder()
    builder.name(name)
    return builder.build()
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy