github.com/pulumi/pulumi-aws/sdk/v6@v6.32.0/go/aws/ec2/vpcIpamPool.go (about)

     1  // Code generated by the Pulumi Terraform Bridge (tfgen) Tool DO NOT EDIT.
     2  // *** WARNING: Do not edit by hand unless you're certain you know what you are doing! ***
     3  
     4  package ec2
     5  
     6  import (
     7  	"context"
     8  	"reflect"
     9  
    10  	"errors"
    11  	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/internal"
    12  	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    13  )
    14  
    15  // Provides an IP address pool resource for IPAM.
    16  //
    17  // ## Example Usage
    18  //
    19  // Basic usage:
    20  //
    21  // <!--Start PulumiCodeChooser -->
    22  // ```go
    23  // package main
    24  //
    25  // import (
    26  //
    27  //	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws"
    28  //	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/ec2"
    29  //	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    30  //
    31  // )
    32  //
    33  //	func main() {
    34  //		pulumi.Run(func(ctx *pulumi.Context) error {
    35  //			current, err := aws.GetRegion(ctx, nil, nil)
    36  //			if err != nil {
    37  //				return err
    38  //			}
    39  //			example, err := ec2.NewVpcIpam(ctx, "example", &ec2.VpcIpamArgs{
    40  //				OperatingRegions: ec2.VpcIpamOperatingRegionArray{
    41  //					&ec2.VpcIpamOperatingRegionArgs{
    42  //						RegionName: pulumi.String(current.Name),
    43  //					},
    44  //				},
    45  //			})
    46  //			if err != nil {
    47  //				return err
    48  //			}
    49  //			_, err = ec2.NewVpcIpamPool(ctx, "example", &ec2.VpcIpamPoolArgs{
    50  //				AddressFamily: pulumi.String("ipv4"),
    51  //				IpamScopeId:   example.PrivateDefaultScopeId,
    52  //				Locale:        pulumi.String(current.Name),
    53  //			})
    54  //			if err != nil {
    55  //				return err
    56  //			}
    57  //			return nil
    58  //		})
    59  //	}
    60  //
    61  // ```
    62  // <!--End PulumiCodeChooser -->
    63  //
    64  // Nested Pools:
    65  //
    66  // <!--Start PulumiCodeChooser -->
    67  // ```go
    68  // package main
    69  //
    70  // import (
    71  //
    72  //	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws"
    73  //	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/ec2"
    74  //	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    75  //
    76  // )
    77  //
    78  //	func main() {
    79  //		pulumi.Run(func(ctx *pulumi.Context) error {
    80  //			current, err := aws.GetRegion(ctx, nil, nil)
    81  //			if err != nil {
    82  //				return err
    83  //			}
    84  //			example, err := ec2.NewVpcIpam(ctx, "example", &ec2.VpcIpamArgs{
    85  //				OperatingRegions: ec2.VpcIpamOperatingRegionArray{
    86  //					&ec2.VpcIpamOperatingRegionArgs{
    87  //						RegionName: pulumi.String(current.Name),
    88  //					},
    89  //				},
    90  //			})
    91  //			if err != nil {
    92  //				return err
    93  //			}
    94  //			parent, err := ec2.NewVpcIpamPool(ctx, "parent", &ec2.VpcIpamPoolArgs{
    95  //				AddressFamily: pulumi.String("ipv4"),
    96  //				IpamScopeId:   example.PrivateDefaultScopeId,
    97  //			})
    98  //			if err != nil {
    99  //				return err
   100  //			}
   101  //			_, err = ec2.NewVpcIpamPoolCidr(ctx, "parent_test", &ec2.VpcIpamPoolCidrArgs{
   102  //				IpamPoolId: parent.ID(),
   103  //				Cidr:       pulumi.String("172.20.0.0/16"),
   104  //			})
   105  //			if err != nil {
   106  //				return err
   107  //			}
   108  //			child, err := ec2.NewVpcIpamPool(ctx, "child", &ec2.VpcIpamPoolArgs{
   109  //				AddressFamily:    pulumi.String("ipv4"),
   110  //				IpamScopeId:      example.PrivateDefaultScopeId,
   111  //				Locale:           pulumi.String(current.Name),
   112  //				SourceIpamPoolId: parent.ID(),
   113  //			})
   114  //			if err != nil {
   115  //				return err
   116  //			}
   117  //			_, err = ec2.NewVpcIpamPoolCidr(ctx, "child_test", &ec2.VpcIpamPoolCidrArgs{
   118  //				IpamPoolId: child.ID(),
   119  //				Cidr:       pulumi.String("172.20.0.0/24"),
   120  //			})
   121  //			if err != nil {
   122  //				return err
   123  //			}
   124  //			return nil
   125  //		})
   126  //	}
   127  //
   128  // ```
   129  // <!--End PulumiCodeChooser -->
   130  //
   131  // ## Import
   132  //
   133  // Using `pulumi import`, import IPAMs using the IPAM pool `id`. For example:
   134  //
   135  // ```sh
   136  // $ pulumi import aws:ec2/vpcIpamPool:VpcIpamPool example ipam-pool-0958f95207d978e1e
   137  // ```
   138  type VpcIpamPool struct {
   139  	pulumi.CustomResourceState
   140  
   141  	// The IP protocol assigned to this pool. You must choose either IPv4 or IPv6 protocol for a pool.
   142  	AddressFamily pulumi.StringOutput `pulumi:"addressFamily"`
   143  	// A default netmask length for allocations added to this pool. If, for example, the CIDR assigned to this pool is 10.0.0.0/8 and you enter 16 here, new allocations will default to 10.0.0.0/16 (unless you provide a different netmask value when you create the new allocation).
   144  	AllocationDefaultNetmaskLength pulumi.IntPtrOutput `pulumi:"allocationDefaultNetmaskLength"`
   145  	// The maximum netmask length that will be required for CIDR allocations in this pool.
   146  	AllocationMaxNetmaskLength pulumi.IntPtrOutput `pulumi:"allocationMaxNetmaskLength"`
   147  	// The minimum netmask length that will be required for CIDR allocations in this pool.
   148  	AllocationMinNetmaskLength pulumi.IntPtrOutput `pulumi:"allocationMinNetmaskLength"`
   149  	// Tags that are required for resources that use CIDRs from this IPAM pool. Resources that do not have these tags will not be allowed to allocate space from the pool. If the resources have their tags changed after they have allocated space or if the allocation tagging requirements are changed on the pool, the resource may be marked as noncompliant.
   150  	AllocationResourceTags pulumi.StringMapOutput `pulumi:"allocationResourceTags"`
   151  	// Amazon Resource Name (ARN) of IPAM
   152  	Arn pulumi.StringOutput `pulumi:"arn"`
   153  	// If you include this argument, IPAM automatically imports any VPCs you have in your scope that fall
   154  	// within the CIDR range in the pool.
   155  	AutoImport pulumi.BoolPtrOutput `pulumi:"autoImport"`
   156  	// Limits which AWS service the pool can be used in. Only useable on public scopes. Valid Values: `ec2`.
   157  	AwsService pulumi.StringPtrOutput `pulumi:"awsService"`
   158  	// Enables you to quickly delete an IPAM pool and all resources within that pool, including provisioned CIDRs, allocations, and other pools.
   159  	Cascade pulumi.BoolPtrOutput `pulumi:"cascade"`
   160  	// A description for the IPAM pool.
   161  	Description pulumi.StringPtrOutput `pulumi:"description"`
   162  	// The ID of the scope in which you would like to create the IPAM pool.
   163  	IpamScopeId   pulumi.StringOutput `pulumi:"ipamScopeId"`
   164  	IpamScopeType pulumi.StringOutput `pulumi:"ipamScopeType"`
   165  	// The locale in which you would like to create the IPAM pool. Locale is the Region where you want to make an IPAM pool available for allocations. You can only create pools with locales that match the operating Regions of the IPAM. You can only create VPCs from a pool whose locale matches the VPC's Region. Possible values: Any AWS region, such as `us-east-1`.
   166  	Locale    pulumi.StringPtrOutput `pulumi:"locale"`
   167  	PoolDepth pulumi.IntOutput       `pulumi:"poolDepth"`
   168  	// The IP address source for pools in the public scope. Only used for provisioning IP address CIDRs to pools in the public scope. Valid values are `byoip` or `amazon`. Default is `byoip`.
   169  	PublicIpSource pulumi.StringPtrOutput `pulumi:"publicIpSource"`
   170  	// Defines whether or not IPv6 pool space is publicly advertisable over the internet. This argument is required if `addressFamily = "ipv6"` and `publicIpSource = "byoip"`, default is `false`. This option is not available for IPv4 pool space or if `publicIpSource = "amazon"`.
   171  	PubliclyAdvertisable pulumi.BoolPtrOutput `pulumi:"publiclyAdvertisable"`
   172  	// The ID of the source IPAM pool. Use this argument to create a child pool within an existing pool.
   173  	SourceIpamPoolId pulumi.StringPtrOutput `pulumi:"sourceIpamPoolId"`
   174  	// The ID of the IPAM
   175  	State pulumi.StringOutput `pulumi:"state"`
   176  	// A map of tags to assign to the resource. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level.
   177  	Tags pulumi.StringMapOutput `pulumi:"tags"`
   178  	// A map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block.
   179  	//
   180  	// Deprecated: Please use `tags` instead.
   181  	TagsAll pulumi.StringMapOutput `pulumi:"tagsAll"`
   182  }
   183  
   184  // NewVpcIpamPool registers a new resource with the given unique name, arguments, and options.
   185  func NewVpcIpamPool(ctx *pulumi.Context,
   186  	name string, args *VpcIpamPoolArgs, opts ...pulumi.ResourceOption) (*VpcIpamPool, error) {
   187  	if args == nil {
   188  		return nil, errors.New("missing one or more required arguments")
   189  	}
   190  
   191  	if args.AddressFamily == nil {
   192  		return nil, errors.New("invalid value for required argument 'AddressFamily'")
   193  	}
   194  	if args.IpamScopeId == nil {
   195  		return nil, errors.New("invalid value for required argument 'IpamScopeId'")
   196  	}
   197  	opts = internal.PkgResourceDefaultOpts(opts)
   198  	var resource VpcIpamPool
   199  	err := ctx.RegisterResource("aws:ec2/vpcIpamPool:VpcIpamPool", name, args, &resource, opts...)
   200  	if err != nil {
   201  		return nil, err
   202  	}
   203  	return &resource, nil
   204  }
   205  
   206  // GetVpcIpamPool gets an existing VpcIpamPool resource's state with the given name, ID, and optional
   207  // state properties that are used to uniquely qualify the lookup (nil if not required).
   208  func GetVpcIpamPool(ctx *pulumi.Context,
   209  	name string, id pulumi.IDInput, state *VpcIpamPoolState, opts ...pulumi.ResourceOption) (*VpcIpamPool, error) {
   210  	var resource VpcIpamPool
   211  	err := ctx.ReadResource("aws:ec2/vpcIpamPool:VpcIpamPool", name, id, state, &resource, opts...)
   212  	if err != nil {
   213  		return nil, err
   214  	}
   215  	return &resource, nil
   216  }
   217  
   218  // Input properties used for looking up and filtering VpcIpamPool resources.
   219  type vpcIpamPoolState struct {
   220  	// The IP protocol assigned to this pool. You must choose either IPv4 or IPv6 protocol for a pool.
   221  	AddressFamily *string `pulumi:"addressFamily"`
   222  	// A default netmask length for allocations added to this pool. If, for example, the CIDR assigned to this pool is 10.0.0.0/8 and you enter 16 here, new allocations will default to 10.0.0.0/16 (unless you provide a different netmask value when you create the new allocation).
   223  	AllocationDefaultNetmaskLength *int `pulumi:"allocationDefaultNetmaskLength"`
   224  	// The maximum netmask length that will be required for CIDR allocations in this pool.
   225  	AllocationMaxNetmaskLength *int `pulumi:"allocationMaxNetmaskLength"`
   226  	// The minimum netmask length that will be required for CIDR allocations in this pool.
   227  	AllocationMinNetmaskLength *int `pulumi:"allocationMinNetmaskLength"`
   228  	// Tags that are required for resources that use CIDRs from this IPAM pool. Resources that do not have these tags will not be allowed to allocate space from the pool. If the resources have their tags changed after they have allocated space or if the allocation tagging requirements are changed on the pool, the resource may be marked as noncompliant.
   229  	AllocationResourceTags map[string]string `pulumi:"allocationResourceTags"`
   230  	// Amazon Resource Name (ARN) of IPAM
   231  	Arn *string `pulumi:"arn"`
   232  	// If you include this argument, IPAM automatically imports any VPCs you have in your scope that fall
   233  	// within the CIDR range in the pool.
   234  	AutoImport *bool `pulumi:"autoImport"`
   235  	// Limits which AWS service the pool can be used in. Only useable on public scopes. Valid Values: `ec2`.
   236  	AwsService *string `pulumi:"awsService"`
   237  	// Enables you to quickly delete an IPAM pool and all resources within that pool, including provisioned CIDRs, allocations, and other pools.
   238  	Cascade *bool `pulumi:"cascade"`
   239  	// A description for the IPAM pool.
   240  	Description *string `pulumi:"description"`
   241  	// The ID of the scope in which you would like to create the IPAM pool.
   242  	IpamScopeId   *string `pulumi:"ipamScopeId"`
   243  	IpamScopeType *string `pulumi:"ipamScopeType"`
   244  	// The locale in which you would like to create the IPAM pool. Locale is the Region where you want to make an IPAM pool available for allocations. You can only create pools with locales that match the operating Regions of the IPAM. You can only create VPCs from a pool whose locale matches the VPC's Region. Possible values: Any AWS region, such as `us-east-1`.
   245  	Locale    *string `pulumi:"locale"`
   246  	PoolDepth *int    `pulumi:"poolDepth"`
   247  	// The IP address source for pools in the public scope. Only used for provisioning IP address CIDRs to pools in the public scope. Valid values are `byoip` or `amazon`. Default is `byoip`.
   248  	PublicIpSource *string `pulumi:"publicIpSource"`
   249  	// Defines whether or not IPv6 pool space is publicly advertisable over the internet. This argument is required if `addressFamily = "ipv6"` and `publicIpSource = "byoip"`, default is `false`. This option is not available for IPv4 pool space or if `publicIpSource = "amazon"`.
   250  	PubliclyAdvertisable *bool `pulumi:"publiclyAdvertisable"`
   251  	// The ID of the source IPAM pool. Use this argument to create a child pool within an existing pool.
   252  	SourceIpamPoolId *string `pulumi:"sourceIpamPoolId"`
   253  	// The ID of the IPAM
   254  	State *string `pulumi:"state"`
   255  	// A map of tags to assign to the resource. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level.
   256  	Tags map[string]string `pulumi:"tags"`
   257  	// A map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block.
   258  	//
   259  	// Deprecated: Please use `tags` instead.
   260  	TagsAll map[string]string `pulumi:"tagsAll"`
   261  }
   262  
   263  type VpcIpamPoolState struct {
   264  	// The IP protocol assigned to this pool. You must choose either IPv4 or IPv6 protocol for a pool.
   265  	AddressFamily pulumi.StringPtrInput
   266  	// A default netmask length for allocations added to this pool. If, for example, the CIDR assigned to this pool is 10.0.0.0/8 and you enter 16 here, new allocations will default to 10.0.0.0/16 (unless you provide a different netmask value when you create the new allocation).
   267  	AllocationDefaultNetmaskLength pulumi.IntPtrInput
   268  	// The maximum netmask length that will be required for CIDR allocations in this pool.
   269  	AllocationMaxNetmaskLength pulumi.IntPtrInput
   270  	// The minimum netmask length that will be required for CIDR allocations in this pool.
   271  	AllocationMinNetmaskLength pulumi.IntPtrInput
   272  	// Tags that are required for resources that use CIDRs from this IPAM pool. Resources that do not have these tags will not be allowed to allocate space from the pool. If the resources have their tags changed after they have allocated space or if the allocation tagging requirements are changed on the pool, the resource may be marked as noncompliant.
   273  	AllocationResourceTags pulumi.StringMapInput
   274  	// Amazon Resource Name (ARN) of IPAM
   275  	Arn pulumi.StringPtrInput
   276  	// If you include this argument, IPAM automatically imports any VPCs you have in your scope that fall
   277  	// within the CIDR range in the pool.
   278  	AutoImport pulumi.BoolPtrInput
   279  	// Limits which AWS service the pool can be used in. Only useable on public scopes. Valid Values: `ec2`.
   280  	AwsService pulumi.StringPtrInput
   281  	// Enables you to quickly delete an IPAM pool and all resources within that pool, including provisioned CIDRs, allocations, and other pools.
   282  	Cascade pulumi.BoolPtrInput
   283  	// A description for the IPAM pool.
   284  	Description pulumi.StringPtrInput
   285  	// The ID of the scope in which you would like to create the IPAM pool.
   286  	IpamScopeId   pulumi.StringPtrInput
   287  	IpamScopeType pulumi.StringPtrInput
   288  	// The locale in which you would like to create the IPAM pool. Locale is the Region where you want to make an IPAM pool available for allocations. You can only create pools with locales that match the operating Regions of the IPAM. You can only create VPCs from a pool whose locale matches the VPC's Region. Possible values: Any AWS region, such as `us-east-1`.
   289  	Locale    pulumi.StringPtrInput
   290  	PoolDepth pulumi.IntPtrInput
   291  	// The IP address source for pools in the public scope. Only used for provisioning IP address CIDRs to pools in the public scope. Valid values are `byoip` or `amazon`. Default is `byoip`.
   292  	PublicIpSource pulumi.StringPtrInput
   293  	// Defines whether or not IPv6 pool space is publicly advertisable over the internet. This argument is required if `addressFamily = "ipv6"` and `publicIpSource = "byoip"`, default is `false`. This option is not available for IPv4 pool space or if `publicIpSource = "amazon"`.
   294  	PubliclyAdvertisable pulumi.BoolPtrInput
   295  	// The ID of the source IPAM pool. Use this argument to create a child pool within an existing pool.
   296  	SourceIpamPoolId pulumi.StringPtrInput
   297  	// The ID of the IPAM
   298  	State pulumi.StringPtrInput
   299  	// A map of tags to assign to the resource. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level.
   300  	Tags pulumi.StringMapInput
   301  	// A map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block.
   302  	//
   303  	// Deprecated: Please use `tags` instead.
   304  	TagsAll pulumi.StringMapInput
   305  }
   306  
   307  func (VpcIpamPoolState) ElementType() reflect.Type {
   308  	return reflect.TypeOf((*vpcIpamPoolState)(nil)).Elem()
   309  }
   310  
   311  type vpcIpamPoolArgs struct {
   312  	// The IP protocol assigned to this pool. You must choose either IPv4 or IPv6 protocol for a pool.
   313  	AddressFamily string `pulumi:"addressFamily"`
   314  	// A default netmask length for allocations added to this pool. If, for example, the CIDR assigned to this pool is 10.0.0.0/8 and you enter 16 here, new allocations will default to 10.0.0.0/16 (unless you provide a different netmask value when you create the new allocation).
   315  	AllocationDefaultNetmaskLength *int `pulumi:"allocationDefaultNetmaskLength"`
   316  	// The maximum netmask length that will be required for CIDR allocations in this pool.
   317  	AllocationMaxNetmaskLength *int `pulumi:"allocationMaxNetmaskLength"`
   318  	// The minimum netmask length that will be required for CIDR allocations in this pool.
   319  	AllocationMinNetmaskLength *int `pulumi:"allocationMinNetmaskLength"`
   320  	// Tags that are required for resources that use CIDRs from this IPAM pool. Resources that do not have these tags will not be allowed to allocate space from the pool. If the resources have their tags changed after they have allocated space or if the allocation tagging requirements are changed on the pool, the resource may be marked as noncompliant.
   321  	AllocationResourceTags map[string]string `pulumi:"allocationResourceTags"`
   322  	// If you include this argument, IPAM automatically imports any VPCs you have in your scope that fall
   323  	// within the CIDR range in the pool.
   324  	AutoImport *bool `pulumi:"autoImport"`
   325  	// Limits which AWS service the pool can be used in. Only useable on public scopes. Valid Values: `ec2`.
   326  	AwsService *string `pulumi:"awsService"`
   327  	// Enables you to quickly delete an IPAM pool and all resources within that pool, including provisioned CIDRs, allocations, and other pools.
   328  	Cascade *bool `pulumi:"cascade"`
   329  	// A description for the IPAM pool.
   330  	Description *string `pulumi:"description"`
   331  	// The ID of the scope in which you would like to create the IPAM pool.
   332  	IpamScopeId string `pulumi:"ipamScopeId"`
   333  	// The locale in which you would like to create the IPAM pool. Locale is the Region where you want to make an IPAM pool available for allocations. You can only create pools with locales that match the operating Regions of the IPAM. You can only create VPCs from a pool whose locale matches the VPC's Region. Possible values: Any AWS region, such as `us-east-1`.
   334  	Locale *string `pulumi:"locale"`
   335  	// The IP address source for pools in the public scope. Only used for provisioning IP address CIDRs to pools in the public scope. Valid values are `byoip` or `amazon`. Default is `byoip`.
   336  	PublicIpSource *string `pulumi:"publicIpSource"`
   337  	// Defines whether or not IPv6 pool space is publicly advertisable over the internet. This argument is required if `addressFamily = "ipv6"` and `publicIpSource = "byoip"`, default is `false`. This option is not available for IPv4 pool space or if `publicIpSource = "amazon"`.
   338  	PubliclyAdvertisable *bool `pulumi:"publiclyAdvertisable"`
   339  	// The ID of the source IPAM pool. Use this argument to create a child pool within an existing pool.
   340  	SourceIpamPoolId *string `pulumi:"sourceIpamPoolId"`
   341  	// A map of tags to assign to the resource. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level.
   342  	Tags map[string]string `pulumi:"tags"`
   343  }
   344  
   345  // The set of arguments for constructing a VpcIpamPool resource.
   346  type VpcIpamPoolArgs struct {
   347  	// The IP protocol assigned to this pool. You must choose either IPv4 or IPv6 protocol for a pool.
   348  	AddressFamily pulumi.StringInput
   349  	// A default netmask length for allocations added to this pool. If, for example, the CIDR assigned to this pool is 10.0.0.0/8 and you enter 16 here, new allocations will default to 10.0.0.0/16 (unless you provide a different netmask value when you create the new allocation).
   350  	AllocationDefaultNetmaskLength pulumi.IntPtrInput
   351  	// The maximum netmask length that will be required for CIDR allocations in this pool.
   352  	AllocationMaxNetmaskLength pulumi.IntPtrInput
   353  	// The minimum netmask length that will be required for CIDR allocations in this pool.
   354  	AllocationMinNetmaskLength pulumi.IntPtrInput
   355  	// Tags that are required for resources that use CIDRs from this IPAM pool. Resources that do not have these tags will not be allowed to allocate space from the pool. If the resources have their tags changed after they have allocated space or if the allocation tagging requirements are changed on the pool, the resource may be marked as noncompliant.
   356  	AllocationResourceTags pulumi.StringMapInput
   357  	// If you include this argument, IPAM automatically imports any VPCs you have in your scope that fall
   358  	// within the CIDR range in the pool.
   359  	AutoImport pulumi.BoolPtrInput
   360  	// Limits which AWS service the pool can be used in. Only useable on public scopes. Valid Values: `ec2`.
   361  	AwsService pulumi.StringPtrInput
   362  	// Enables you to quickly delete an IPAM pool and all resources within that pool, including provisioned CIDRs, allocations, and other pools.
   363  	Cascade pulumi.BoolPtrInput
   364  	// A description for the IPAM pool.
   365  	Description pulumi.StringPtrInput
   366  	// The ID of the scope in which you would like to create the IPAM pool.
   367  	IpamScopeId pulumi.StringInput
   368  	// The locale in which you would like to create the IPAM pool. Locale is the Region where you want to make an IPAM pool available for allocations. You can only create pools with locales that match the operating Regions of the IPAM. You can only create VPCs from a pool whose locale matches the VPC's Region. Possible values: Any AWS region, such as `us-east-1`.
   369  	Locale pulumi.StringPtrInput
   370  	// The IP address source for pools in the public scope. Only used for provisioning IP address CIDRs to pools in the public scope. Valid values are `byoip` or `amazon`. Default is `byoip`.
   371  	PublicIpSource pulumi.StringPtrInput
   372  	// Defines whether or not IPv6 pool space is publicly advertisable over the internet. This argument is required if `addressFamily = "ipv6"` and `publicIpSource = "byoip"`, default is `false`. This option is not available for IPv4 pool space or if `publicIpSource = "amazon"`.
   373  	PubliclyAdvertisable pulumi.BoolPtrInput
   374  	// The ID of the source IPAM pool. Use this argument to create a child pool within an existing pool.
   375  	SourceIpamPoolId pulumi.StringPtrInput
   376  	// A map of tags to assign to the resource. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level.
   377  	Tags pulumi.StringMapInput
   378  }
   379  
   380  func (VpcIpamPoolArgs) ElementType() reflect.Type {
   381  	return reflect.TypeOf((*vpcIpamPoolArgs)(nil)).Elem()
   382  }
   383  
   384  type VpcIpamPoolInput interface {
   385  	pulumi.Input
   386  
   387  	ToVpcIpamPoolOutput() VpcIpamPoolOutput
   388  	ToVpcIpamPoolOutputWithContext(ctx context.Context) VpcIpamPoolOutput
   389  }
   390  
   391  func (*VpcIpamPool) ElementType() reflect.Type {
   392  	return reflect.TypeOf((**VpcIpamPool)(nil)).Elem()
   393  }
   394  
   395  func (i *VpcIpamPool) ToVpcIpamPoolOutput() VpcIpamPoolOutput {
   396  	return i.ToVpcIpamPoolOutputWithContext(context.Background())
   397  }
   398  
   399  func (i *VpcIpamPool) ToVpcIpamPoolOutputWithContext(ctx context.Context) VpcIpamPoolOutput {
   400  	return pulumi.ToOutputWithContext(ctx, i).(VpcIpamPoolOutput)
   401  }
   402  
   403  // VpcIpamPoolArrayInput is an input type that accepts VpcIpamPoolArray and VpcIpamPoolArrayOutput values.
   404  // You can construct a concrete instance of `VpcIpamPoolArrayInput` via:
   405  //
   406  //	VpcIpamPoolArray{ VpcIpamPoolArgs{...} }
   407  type VpcIpamPoolArrayInput interface {
   408  	pulumi.Input
   409  
   410  	ToVpcIpamPoolArrayOutput() VpcIpamPoolArrayOutput
   411  	ToVpcIpamPoolArrayOutputWithContext(context.Context) VpcIpamPoolArrayOutput
   412  }
   413  
   414  type VpcIpamPoolArray []VpcIpamPoolInput
   415  
   416  func (VpcIpamPoolArray) ElementType() reflect.Type {
   417  	return reflect.TypeOf((*[]*VpcIpamPool)(nil)).Elem()
   418  }
   419  
   420  func (i VpcIpamPoolArray) ToVpcIpamPoolArrayOutput() VpcIpamPoolArrayOutput {
   421  	return i.ToVpcIpamPoolArrayOutputWithContext(context.Background())
   422  }
   423  
   424  func (i VpcIpamPoolArray) ToVpcIpamPoolArrayOutputWithContext(ctx context.Context) VpcIpamPoolArrayOutput {
   425  	return pulumi.ToOutputWithContext(ctx, i).(VpcIpamPoolArrayOutput)
   426  }
   427  
   428  // VpcIpamPoolMapInput is an input type that accepts VpcIpamPoolMap and VpcIpamPoolMapOutput values.
   429  // You can construct a concrete instance of `VpcIpamPoolMapInput` via:
   430  //
   431  //	VpcIpamPoolMap{ "key": VpcIpamPoolArgs{...} }
   432  type VpcIpamPoolMapInput interface {
   433  	pulumi.Input
   434  
   435  	ToVpcIpamPoolMapOutput() VpcIpamPoolMapOutput
   436  	ToVpcIpamPoolMapOutputWithContext(context.Context) VpcIpamPoolMapOutput
   437  }
   438  
   439  type VpcIpamPoolMap map[string]VpcIpamPoolInput
   440  
   441  func (VpcIpamPoolMap) ElementType() reflect.Type {
   442  	return reflect.TypeOf((*map[string]*VpcIpamPool)(nil)).Elem()
   443  }
   444  
   445  func (i VpcIpamPoolMap) ToVpcIpamPoolMapOutput() VpcIpamPoolMapOutput {
   446  	return i.ToVpcIpamPoolMapOutputWithContext(context.Background())
   447  }
   448  
   449  func (i VpcIpamPoolMap) ToVpcIpamPoolMapOutputWithContext(ctx context.Context) VpcIpamPoolMapOutput {
   450  	return pulumi.ToOutputWithContext(ctx, i).(VpcIpamPoolMapOutput)
   451  }
   452  
   453  type VpcIpamPoolOutput struct{ *pulumi.OutputState }
   454  
   455  func (VpcIpamPoolOutput) ElementType() reflect.Type {
   456  	return reflect.TypeOf((**VpcIpamPool)(nil)).Elem()
   457  }
   458  
   459  func (o VpcIpamPoolOutput) ToVpcIpamPoolOutput() VpcIpamPoolOutput {
   460  	return o
   461  }
   462  
   463  func (o VpcIpamPoolOutput) ToVpcIpamPoolOutputWithContext(ctx context.Context) VpcIpamPoolOutput {
   464  	return o
   465  }
   466  
   467  // The IP protocol assigned to this pool. You must choose either IPv4 or IPv6 protocol for a pool.
   468  func (o VpcIpamPoolOutput) AddressFamily() pulumi.StringOutput {
   469  	return o.ApplyT(func(v *VpcIpamPool) pulumi.StringOutput { return v.AddressFamily }).(pulumi.StringOutput)
   470  }
   471  
   472  // A default netmask length for allocations added to this pool. If, for example, the CIDR assigned to this pool is 10.0.0.0/8 and you enter 16 here, new allocations will default to 10.0.0.0/16 (unless you provide a different netmask value when you create the new allocation).
   473  func (o VpcIpamPoolOutput) AllocationDefaultNetmaskLength() pulumi.IntPtrOutput {
   474  	return o.ApplyT(func(v *VpcIpamPool) pulumi.IntPtrOutput { return v.AllocationDefaultNetmaskLength }).(pulumi.IntPtrOutput)
   475  }
   476  
   477  // The maximum netmask length that will be required for CIDR allocations in this pool.
   478  func (o VpcIpamPoolOutput) AllocationMaxNetmaskLength() pulumi.IntPtrOutput {
   479  	return o.ApplyT(func(v *VpcIpamPool) pulumi.IntPtrOutput { return v.AllocationMaxNetmaskLength }).(pulumi.IntPtrOutput)
   480  }
   481  
   482  // The minimum netmask length that will be required for CIDR allocations in this pool.
   483  func (o VpcIpamPoolOutput) AllocationMinNetmaskLength() pulumi.IntPtrOutput {
   484  	return o.ApplyT(func(v *VpcIpamPool) pulumi.IntPtrOutput { return v.AllocationMinNetmaskLength }).(pulumi.IntPtrOutput)
   485  }
   486  
   487  // Tags that are required for resources that use CIDRs from this IPAM pool. Resources that do not have these tags will not be allowed to allocate space from the pool. If the resources have their tags changed after they have allocated space or if the allocation tagging requirements are changed on the pool, the resource may be marked as noncompliant.
   488  func (o VpcIpamPoolOutput) AllocationResourceTags() pulumi.StringMapOutput {
   489  	return o.ApplyT(func(v *VpcIpamPool) pulumi.StringMapOutput { return v.AllocationResourceTags }).(pulumi.StringMapOutput)
   490  }
   491  
   492  // Amazon Resource Name (ARN) of IPAM
   493  func (o VpcIpamPoolOutput) Arn() pulumi.StringOutput {
   494  	return o.ApplyT(func(v *VpcIpamPool) pulumi.StringOutput { return v.Arn }).(pulumi.StringOutput)
   495  }
   496  
   497  // If you include this argument, IPAM automatically imports any VPCs you have in your scope that fall
   498  // within the CIDR range in the pool.
   499  func (o VpcIpamPoolOutput) AutoImport() pulumi.BoolPtrOutput {
   500  	return o.ApplyT(func(v *VpcIpamPool) pulumi.BoolPtrOutput { return v.AutoImport }).(pulumi.BoolPtrOutput)
   501  }
   502  
   503  // Limits which AWS service the pool can be used in. Only useable on public scopes. Valid Values: `ec2`.
   504  func (o VpcIpamPoolOutput) AwsService() pulumi.StringPtrOutput {
   505  	return o.ApplyT(func(v *VpcIpamPool) pulumi.StringPtrOutput { return v.AwsService }).(pulumi.StringPtrOutput)
   506  }
   507  
   508  // Enables you to quickly delete an IPAM pool and all resources within that pool, including provisioned CIDRs, allocations, and other pools.
   509  func (o VpcIpamPoolOutput) Cascade() pulumi.BoolPtrOutput {
   510  	return o.ApplyT(func(v *VpcIpamPool) pulumi.BoolPtrOutput { return v.Cascade }).(pulumi.BoolPtrOutput)
   511  }
   512  
   513  // A description for the IPAM pool.
   514  func (o VpcIpamPoolOutput) Description() pulumi.StringPtrOutput {
   515  	return o.ApplyT(func(v *VpcIpamPool) pulumi.StringPtrOutput { return v.Description }).(pulumi.StringPtrOutput)
   516  }
   517  
   518  // The ID of the scope in which you would like to create the IPAM pool.
   519  func (o VpcIpamPoolOutput) IpamScopeId() pulumi.StringOutput {
   520  	return o.ApplyT(func(v *VpcIpamPool) pulumi.StringOutput { return v.IpamScopeId }).(pulumi.StringOutput)
   521  }
   522  
   523  func (o VpcIpamPoolOutput) IpamScopeType() pulumi.StringOutput {
   524  	return o.ApplyT(func(v *VpcIpamPool) pulumi.StringOutput { return v.IpamScopeType }).(pulumi.StringOutput)
   525  }
   526  
   527  // The locale in which you would like to create the IPAM pool. Locale is the Region where you want to make an IPAM pool available for allocations. You can only create pools with locales that match the operating Regions of the IPAM. You can only create VPCs from a pool whose locale matches the VPC's Region. Possible values: Any AWS region, such as `us-east-1`.
   528  func (o VpcIpamPoolOutput) Locale() pulumi.StringPtrOutput {
   529  	return o.ApplyT(func(v *VpcIpamPool) pulumi.StringPtrOutput { return v.Locale }).(pulumi.StringPtrOutput)
   530  }
   531  
   532  func (o VpcIpamPoolOutput) PoolDepth() pulumi.IntOutput {
   533  	return o.ApplyT(func(v *VpcIpamPool) pulumi.IntOutput { return v.PoolDepth }).(pulumi.IntOutput)
   534  }
   535  
   536  // The IP address source for pools in the public scope. Only used for provisioning IP address CIDRs to pools in the public scope. Valid values are `byoip` or `amazon`. Default is `byoip`.
   537  func (o VpcIpamPoolOutput) PublicIpSource() pulumi.StringPtrOutput {
   538  	return o.ApplyT(func(v *VpcIpamPool) pulumi.StringPtrOutput { return v.PublicIpSource }).(pulumi.StringPtrOutput)
   539  }
   540  
   541  // Defines whether or not IPv6 pool space is publicly advertisable over the internet. This argument is required if `addressFamily = "ipv6"` and `publicIpSource = "byoip"`, default is `false`. This option is not available for IPv4 pool space or if `publicIpSource = "amazon"`.
   542  func (o VpcIpamPoolOutput) PubliclyAdvertisable() pulumi.BoolPtrOutput {
   543  	return o.ApplyT(func(v *VpcIpamPool) pulumi.BoolPtrOutput { return v.PubliclyAdvertisable }).(pulumi.BoolPtrOutput)
   544  }
   545  
   546  // The ID of the source IPAM pool. Use this argument to create a child pool within an existing pool.
   547  func (o VpcIpamPoolOutput) SourceIpamPoolId() pulumi.StringPtrOutput {
   548  	return o.ApplyT(func(v *VpcIpamPool) pulumi.StringPtrOutput { return v.SourceIpamPoolId }).(pulumi.StringPtrOutput)
   549  }
   550  
   551  // The ID of the IPAM
   552  func (o VpcIpamPoolOutput) State() pulumi.StringOutput {
   553  	return o.ApplyT(func(v *VpcIpamPool) pulumi.StringOutput { return v.State }).(pulumi.StringOutput)
   554  }
   555  
   556  // A map of tags to assign to the resource. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level.
   557  func (o VpcIpamPoolOutput) Tags() pulumi.StringMapOutput {
   558  	return o.ApplyT(func(v *VpcIpamPool) pulumi.StringMapOutput { return v.Tags }).(pulumi.StringMapOutput)
   559  }
   560  
   561  // A map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block.
   562  //
   563  // Deprecated: Please use `tags` instead.
   564  func (o VpcIpamPoolOutput) TagsAll() pulumi.StringMapOutput {
   565  	return o.ApplyT(func(v *VpcIpamPool) pulumi.StringMapOutput { return v.TagsAll }).(pulumi.StringMapOutput)
   566  }
   567  
   568  type VpcIpamPoolArrayOutput struct{ *pulumi.OutputState }
   569  
   570  func (VpcIpamPoolArrayOutput) ElementType() reflect.Type {
   571  	return reflect.TypeOf((*[]*VpcIpamPool)(nil)).Elem()
   572  }
   573  
   574  func (o VpcIpamPoolArrayOutput) ToVpcIpamPoolArrayOutput() VpcIpamPoolArrayOutput {
   575  	return o
   576  }
   577  
   578  func (o VpcIpamPoolArrayOutput) ToVpcIpamPoolArrayOutputWithContext(ctx context.Context) VpcIpamPoolArrayOutput {
   579  	return o
   580  }
   581  
   582  func (o VpcIpamPoolArrayOutput) Index(i pulumi.IntInput) VpcIpamPoolOutput {
   583  	return pulumi.All(o, i).ApplyT(func(vs []interface{}) *VpcIpamPool {
   584  		return vs[0].([]*VpcIpamPool)[vs[1].(int)]
   585  	}).(VpcIpamPoolOutput)
   586  }
   587  
   588  type VpcIpamPoolMapOutput struct{ *pulumi.OutputState }
   589  
   590  func (VpcIpamPoolMapOutput) ElementType() reflect.Type {
   591  	return reflect.TypeOf((*map[string]*VpcIpamPool)(nil)).Elem()
   592  }
   593  
   594  func (o VpcIpamPoolMapOutput) ToVpcIpamPoolMapOutput() VpcIpamPoolMapOutput {
   595  	return o
   596  }
   597  
   598  func (o VpcIpamPoolMapOutput) ToVpcIpamPoolMapOutputWithContext(ctx context.Context) VpcIpamPoolMapOutput {
   599  	return o
   600  }
   601  
   602  func (o VpcIpamPoolMapOutput) MapIndex(k pulumi.StringInput) VpcIpamPoolOutput {
   603  	return pulumi.All(o, k).ApplyT(func(vs []interface{}) *VpcIpamPool {
   604  		return vs[0].(map[string]*VpcIpamPool)[vs[1].(string)]
   605  	}).(VpcIpamPoolOutput)
   606  }
   607  
   608  func init() {
   609  	pulumi.RegisterInputType(reflect.TypeOf((*VpcIpamPoolInput)(nil)).Elem(), &VpcIpamPool{})
   610  	pulumi.RegisterInputType(reflect.TypeOf((*VpcIpamPoolArrayInput)(nil)).Elem(), VpcIpamPoolArray{})
   611  	pulumi.RegisterInputType(reflect.TypeOf((*VpcIpamPoolMapInput)(nil)).Elem(), VpcIpamPoolMap{})
   612  	pulumi.RegisterOutputType(VpcIpamPoolOutput{})
   613  	pulumi.RegisterOutputType(VpcIpamPoolArrayOutput{})
   614  	pulumi.RegisterOutputType(VpcIpamPoolMapOutput{})
   615  }