github.com/pulumi/pulumi-aws/sdk/v6@v6.32.0/go/aws/ec2/vpcIpamResourceDiscovery.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 IPAM Resource Discovery resource. IPAM Resource Discoveries are resources meant for multi-organization customers. If you wish to use a single IPAM across multiple orgs, a resource discovery can be created and shared from a subordinate organization to the management organizations IPAM delegated admin account. For a full deployment example, see `ec2.VpcIpamResourceDiscoveryAssociation` resource.
    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  //			_, err = ec2.NewVpcIpamResourceDiscovery(ctx, "main", &ec2.VpcIpamResourceDiscoveryArgs{
    40  //				Description: pulumi.String("My IPAM Resource Discovery"),
    41  //				OperatingRegions: ec2.VpcIpamResourceDiscoveryOperatingRegionArray{
    42  //					&ec2.VpcIpamResourceDiscoveryOperatingRegionArgs{
    43  //						RegionName: pulumi.String(current.Name),
    44  //					},
    45  //				},
    46  //				Tags: pulumi.StringMap{
    47  //					"Test": pulumi.String("Main"),
    48  //				},
    49  //			})
    50  //			if err != nil {
    51  //				return err
    52  //			}
    53  //			return nil
    54  //		})
    55  //	}
    56  //
    57  // ```
    58  // <!--End PulumiCodeChooser -->
    59  //
    60  // ## Import
    61  //
    62  // Using `pulumi import`, import IPAMs using the IPAM resource discovery `id`. For example:
    63  //
    64  // ```sh
    65  // $ pulumi import aws:ec2/vpcIpamResourceDiscovery:VpcIpamResourceDiscovery example ipam-res-disco-0178368ad2146a492
    66  // ```
    67  type VpcIpamResourceDiscovery struct {
    68  	pulumi.CustomResourceState
    69  
    70  	// Amazon Resource Name (ARN) of IPAM Resource Discovery
    71  	Arn pulumi.StringOutput `pulumi:"arn"`
    72  	// A description for the IPAM Resource Discovery.
    73  	Description pulumi.StringPtrOutput `pulumi:"description"`
    74  	// The home region of the Resource Discovery
    75  	IpamResourceDiscoveryRegion pulumi.StringOutput `pulumi:"ipamResourceDiscoveryRegion"`
    76  	// A boolean to identify if the Resource Discovery is the accounts default resource discovery
    77  	IsDefault pulumi.BoolOutput `pulumi:"isDefault"`
    78  	// Determines which regions the Resource Discovery will enable IPAM features for usage and monitoring. 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 Resource Discovery. You can only create VPCs from a pool whose locale matches the VPC's Region. You specify a region using the regionName parameter. **You must set your provider block region as an operating_region.**
    79  	OperatingRegions VpcIpamResourceDiscoveryOperatingRegionArrayOutput `pulumi:"operatingRegions"`
    80  	// The account ID for the account that manages the Resource Discovery
    81  	OwnerId pulumi.StringOutput `pulumi:"ownerId"`
    82  	// 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.
    83  	Tags pulumi.StringMapOutput `pulumi:"tags"`
    84  	// A map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block.
    85  	//
    86  	// Deprecated: Please use `tags` instead.
    87  	TagsAll pulumi.StringMapOutput `pulumi:"tagsAll"`
    88  }
    89  
    90  // NewVpcIpamResourceDiscovery registers a new resource with the given unique name, arguments, and options.
    91  func NewVpcIpamResourceDiscovery(ctx *pulumi.Context,
    92  	name string, args *VpcIpamResourceDiscoveryArgs, opts ...pulumi.ResourceOption) (*VpcIpamResourceDiscovery, error) {
    93  	if args == nil {
    94  		return nil, errors.New("missing one or more required arguments")
    95  	}
    96  
    97  	if args.OperatingRegions == nil {
    98  		return nil, errors.New("invalid value for required argument 'OperatingRegions'")
    99  	}
   100  	opts = internal.PkgResourceDefaultOpts(opts)
   101  	var resource VpcIpamResourceDiscovery
   102  	err := ctx.RegisterResource("aws:ec2/vpcIpamResourceDiscovery:VpcIpamResourceDiscovery", name, args, &resource, opts...)
   103  	if err != nil {
   104  		return nil, err
   105  	}
   106  	return &resource, nil
   107  }
   108  
   109  // GetVpcIpamResourceDiscovery gets an existing VpcIpamResourceDiscovery resource's state with the given name, ID, and optional
   110  // state properties that are used to uniquely qualify the lookup (nil if not required).
   111  func GetVpcIpamResourceDiscovery(ctx *pulumi.Context,
   112  	name string, id pulumi.IDInput, state *VpcIpamResourceDiscoveryState, opts ...pulumi.ResourceOption) (*VpcIpamResourceDiscovery, error) {
   113  	var resource VpcIpamResourceDiscovery
   114  	err := ctx.ReadResource("aws:ec2/vpcIpamResourceDiscovery:VpcIpamResourceDiscovery", name, id, state, &resource, opts...)
   115  	if err != nil {
   116  		return nil, err
   117  	}
   118  	return &resource, nil
   119  }
   120  
   121  // Input properties used for looking up and filtering VpcIpamResourceDiscovery resources.
   122  type vpcIpamResourceDiscoveryState struct {
   123  	// Amazon Resource Name (ARN) of IPAM Resource Discovery
   124  	Arn *string `pulumi:"arn"`
   125  	// A description for the IPAM Resource Discovery.
   126  	Description *string `pulumi:"description"`
   127  	// The home region of the Resource Discovery
   128  	IpamResourceDiscoveryRegion *string `pulumi:"ipamResourceDiscoveryRegion"`
   129  	// A boolean to identify if the Resource Discovery is the accounts default resource discovery
   130  	IsDefault *bool `pulumi:"isDefault"`
   131  	// Determines which regions the Resource Discovery will enable IPAM features for usage and monitoring. 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 Resource Discovery. You can only create VPCs from a pool whose locale matches the VPC's Region. You specify a region using the regionName parameter. **You must set your provider block region as an operating_region.**
   132  	OperatingRegions []VpcIpamResourceDiscoveryOperatingRegion `pulumi:"operatingRegions"`
   133  	// The account ID for the account that manages the Resource Discovery
   134  	OwnerId *string `pulumi:"ownerId"`
   135  	// 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.
   136  	Tags map[string]string `pulumi:"tags"`
   137  	// A map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block.
   138  	//
   139  	// Deprecated: Please use `tags` instead.
   140  	TagsAll map[string]string `pulumi:"tagsAll"`
   141  }
   142  
   143  type VpcIpamResourceDiscoveryState struct {
   144  	// Amazon Resource Name (ARN) of IPAM Resource Discovery
   145  	Arn pulumi.StringPtrInput
   146  	// A description for the IPAM Resource Discovery.
   147  	Description pulumi.StringPtrInput
   148  	// The home region of the Resource Discovery
   149  	IpamResourceDiscoveryRegion pulumi.StringPtrInput
   150  	// A boolean to identify if the Resource Discovery is the accounts default resource discovery
   151  	IsDefault pulumi.BoolPtrInput
   152  	// Determines which regions the Resource Discovery will enable IPAM features for usage and monitoring. 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 Resource Discovery. You can only create VPCs from a pool whose locale matches the VPC's Region. You specify a region using the regionName parameter. **You must set your provider block region as an operating_region.**
   153  	OperatingRegions VpcIpamResourceDiscoveryOperatingRegionArrayInput
   154  	// The account ID for the account that manages the Resource Discovery
   155  	OwnerId pulumi.StringPtrInput
   156  	// 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.
   157  	Tags pulumi.StringMapInput
   158  	// A map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block.
   159  	//
   160  	// Deprecated: Please use `tags` instead.
   161  	TagsAll pulumi.StringMapInput
   162  }
   163  
   164  func (VpcIpamResourceDiscoveryState) ElementType() reflect.Type {
   165  	return reflect.TypeOf((*vpcIpamResourceDiscoveryState)(nil)).Elem()
   166  }
   167  
   168  type vpcIpamResourceDiscoveryArgs struct {
   169  	// A description for the IPAM Resource Discovery.
   170  	Description *string `pulumi:"description"`
   171  	// Determines which regions the Resource Discovery will enable IPAM features for usage and monitoring. 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 Resource Discovery. You can only create VPCs from a pool whose locale matches the VPC's Region. You specify a region using the regionName parameter. **You must set your provider block region as an operating_region.**
   172  	OperatingRegions []VpcIpamResourceDiscoveryOperatingRegion `pulumi:"operatingRegions"`
   173  	// 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.
   174  	Tags map[string]string `pulumi:"tags"`
   175  }
   176  
   177  // The set of arguments for constructing a VpcIpamResourceDiscovery resource.
   178  type VpcIpamResourceDiscoveryArgs struct {
   179  	// A description for the IPAM Resource Discovery.
   180  	Description pulumi.StringPtrInput
   181  	// Determines which regions the Resource Discovery will enable IPAM features for usage and monitoring. 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 Resource Discovery. You can only create VPCs from a pool whose locale matches the VPC's Region. You specify a region using the regionName parameter. **You must set your provider block region as an operating_region.**
   182  	OperatingRegions VpcIpamResourceDiscoveryOperatingRegionArrayInput
   183  	// 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.
   184  	Tags pulumi.StringMapInput
   185  }
   186  
   187  func (VpcIpamResourceDiscoveryArgs) ElementType() reflect.Type {
   188  	return reflect.TypeOf((*vpcIpamResourceDiscoveryArgs)(nil)).Elem()
   189  }
   190  
   191  type VpcIpamResourceDiscoveryInput interface {
   192  	pulumi.Input
   193  
   194  	ToVpcIpamResourceDiscoveryOutput() VpcIpamResourceDiscoveryOutput
   195  	ToVpcIpamResourceDiscoveryOutputWithContext(ctx context.Context) VpcIpamResourceDiscoveryOutput
   196  }
   197  
   198  func (*VpcIpamResourceDiscovery) ElementType() reflect.Type {
   199  	return reflect.TypeOf((**VpcIpamResourceDiscovery)(nil)).Elem()
   200  }
   201  
   202  func (i *VpcIpamResourceDiscovery) ToVpcIpamResourceDiscoveryOutput() VpcIpamResourceDiscoveryOutput {
   203  	return i.ToVpcIpamResourceDiscoveryOutputWithContext(context.Background())
   204  }
   205  
   206  func (i *VpcIpamResourceDiscovery) ToVpcIpamResourceDiscoveryOutputWithContext(ctx context.Context) VpcIpamResourceDiscoveryOutput {
   207  	return pulumi.ToOutputWithContext(ctx, i).(VpcIpamResourceDiscoveryOutput)
   208  }
   209  
   210  // VpcIpamResourceDiscoveryArrayInput is an input type that accepts VpcIpamResourceDiscoveryArray and VpcIpamResourceDiscoveryArrayOutput values.
   211  // You can construct a concrete instance of `VpcIpamResourceDiscoveryArrayInput` via:
   212  //
   213  //	VpcIpamResourceDiscoveryArray{ VpcIpamResourceDiscoveryArgs{...} }
   214  type VpcIpamResourceDiscoveryArrayInput interface {
   215  	pulumi.Input
   216  
   217  	ToVpcIpamResourceDiscoveryArrayOutput() VpcIpamResourceDiscoveryArrayOutput
   218  	ToVpcIpamResourceDiscoveryArrayOutputWithContext(context.Context) VpcIpamResourceDiscoveryArrayOutput
   219  }
   220  
   221  type VpcIpamResourceDiscoveryArray []VpcIpamResourceDiscoveryInput
   222  
   223  func (VpcIpamResourceDiscoveryArray) ElementType() reflect.Type {
   224  	return reflect.TypeOf((*[]*VpcIpamResourceDiscovery)(nil)).Elem()
   225  }
   226  
   227  func (i VpcIpamResourceDiscoveryArray) ToVpcIpamResourceDiscoveryArrayOutput() VpcIpamResourceDiscoveryArrayOutput {
   228  	return i.ToVpcIpamResourceDiscoveryArrayOutputWithContext(context.Background())
   229  }
   230  
   231  func (i VpcIpamResourceDiscoveryArray) ToVpcIpamResourceDiscoveryArrayOutputWithContext(ctx context.Context) VpcIpamResourceDiscoveryArrayOutput {
   232  	return pulumi.ToOutputWithContext(ctx, i).(VpcIpamResourceDiscoveryArrayOutput)
   233  }
   234  
   235  // VpcIpamResourceDiscoveryMapInput is an input type that accepts VpcIpamResourceDiscoveryMap and VpcIpamResourceDiscoveryMapOutput values.
   236  // You can construct a concrete instance of `VpcIpamResourceDiscoveryMapInput` via:
   237  //
   238  //	VpcIpamResourceDiscoveryMap{ "key": VpcIpamResourceDiscoveryArgs{...} }
   239  type VpcIpamResourceDiscoveryMapInput interface {
   240  	pulumi.Input
   241  
   242  	ToVpcIpamResourceDiscoveryMapOutput() VpcIpamResourceDiscoveryMapOutput
   243  	ToVpcIpamResourceDiscoveryMapOutputWithContext(context.Context) VpcIpamResourceDiscoveryMapOutput
   244  }
   245  
   246  type VpcIpamResourceDiscoveryMap map[string]VpcIpamResourceDiscoveryInput
   247  
   248  func (VpcIpamResourceDiscoveryMap) ElementType() reflect.Type {
   249  	return reflect.TypeOf((*map[string]*VpcIpamResourceDiscovery)(nil)).Elem()
   250  }
   251  
   252  func (i VpcIpamResourceDiscoveryMap) ToVpcIpamResourceDiscoveryMapOutput() VpcIpamResourceDiscoveryMapOutput {
   253  	return i.ToVpcIpamResourceDiscoveryMapOutputWithContext(context.Background())
   254  }
   255  
   256  func (i VpcIpamResourceDiscoveryMap) ToVpcIpamResourceDiscoveryMapOutputWithContext(ctx context.Context) VpcIpamResourceDiscoveryMapOutput {
   257  	return pulumi.ToOutputWithContext(ctx, i).(VpcIpamResourceDiscoveryMapOutput)
   258  }
   259  
   260  type VpcIpamResourceDiscoveryOutput struct{ *pulumi.OutputState }
   261  
   262  func (VpcIpamResourceDiscoveryOutput) ElementType() reflect.Type {
   263  	return reflect.TypeOf((**VpcIpamResourceDiscovery)(nil)).Elem()
   264  }
   265  
   266  func (o VpcIpamResourceDiscoveryOutput) ToVpcIpamResourceDiscoveryOutput() VpcIpamResourceDiscoveryOutput {
   267  	return o
   268  }
   269  
   270  func (o VpcIpamResourceDiscoveryOutput) ToVpcIpamResourceDiscoveryOutputWithContext(ctx context.Context) VpcIpamResourceDiscoveryOutput {
   271  	return o
   272  }
   273  
   274  // Amazon Resource Name (ARN) of IPAM Resource Discovery
   275  func (o VpcIpamResourceDiscoveryOutput) Arn() pulumi.StringOutput {
   276  	return o.ApplyT(func(v *VpcIpamResourceDiscovery) pulumi.StringOutput { return v.Arn }).(pulumi.StringOutput)
   277  }
   278  
   279  // A description for the IPAM Resource Discovery.
   280  func (o VpcIpamResourceDiscoveryOutput) Description() pulumi.StringPtrOutput {
   281  	return o.ApplyT(func(v *VpcIpamResourceDiscovery) pulumi.StringPtrOutput { return v.Description }).(pulumi.StringPtrOutput)
   282  }
   283  
   284  // The home region of the Resource Discovery
   285  func (o VpcIpamResourceDiscoveryOutput) IpamResourceDiscoveryRegion() pulumi.StringOutput {
   286  	return o.ApplyT(func(v *VpcIpamResourceDiscovery) pulumi.StringOutput { return v.IpamResourceDiscoveryRegion }).(pulumi.StringOutput)
   287  }
   288  
   289  // A boolean to identify if the Resource Discovery is the accounts default resource discovery
   290  func (o VpcIpamResourceDiscoveryOutput) IsDefault() pulumi.BoolOutput {
   291  	return o.ApplyT(func(v *VpcIpamResourceDiscovery) pulumi.BoolOutput { return v.IsDefault }).(pulumi.BoolOutput)
   292  }
   293  
   294  // Determines which regions the Resource Discovery will enable IPAM features for usage and monitoring. 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 Resource Discovery. You can only create VPCs from a pool whose locale matches the VPC's Region. You specify a region using the regionName parameter. **You must set your provider block region as an operating_region.**
   295  func (o VpcIpamResourceDiscoveryOutput) OperatingRegions() VpcIpamResourceDiscoveryOperatingRegionArrayOutput {
   296  	return o.ApplyT(func(v *VpcIpamResourceDiscovery) VpcIpamResourceDiscoveryOperatingRegionArrayOutput {
   297  		return v.OperatingRegions
   298  	}).(VpcIpamResourceDiscoveryOperatingRegionArrayOutput)
   299  }
   300  
   301  // The account ID for the account that manages the Resource Discovery
   302  func (o VpcIpamResourceDiscoveryOutput) OwnerId() pulumi.StringOutput {
   303  	return o.ApplyT(func(v *VpcIpamResourceDiscovery) pulumi.StringOutput { return v.OwnerId }).(pulumi.StringOutput)
   304  }
   305  
   306  // 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.
   307  func (o VpcIpamResourceDiscoveryOutput) Tags() pulumi.StringMapOutput {
   308  	return o.ApplyT(func(v *VpcIpamResourceDiscovery) pulumi.StringMapOutput { return v.Tags }).(pulumi.StringMapOutput)
   309  }
   310  
   311  // A map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block.
   312  //
   313  // Deprecated: Please use `tags` instead.
   314  func (o VpcIpamResourceDiscoveryOutput) TagsAll() pulumi.StringMapOutput {
   315  	return o.ApplyT(func(v *VpcIpamResourceDiscovery) pulumi.StringMapOutput { return v.TagsAll }).(pulumi.StringMapOutput)
   316  }
   317  
   318  type VpcIpamResourceDiscoveryArrayOutput struct{ *pulumi.OutputState }
   319  
   320  func (VpcIpamResourceDiscoveryArrayOutput) ElementType() reflect.Type {
   321  	return reflect.TypeOf((*[]*VpcIpamResourceDiscovery)(nil)).Elem()
   322  }
   323  
   324  func (o VpcIpamResourceDiscoveryArrayOutput) ToVpcIpamResourceDiscoveryArrayOutput() VpcIpamResourceDiscoveryArrayOutput {
   325  	return o
   326  }
   327  
   328  func (o VpcIpamResourceDiscoveryArrayOutput) ToVpcIpamResourceDiscoveryArrayOutputWithContext(ctx context.Context) VpcIpamResourceDiscoveryArrayOutput {
   329  	return o
   330  }
   331  
   332  func (o VpcIpamResourceDiscoveryArrayOutput) Index(i pulumi.IntInput) VpcIpamResourceDiscoveryOutput {
   333  	return pulumi.All(o, i).ApplyT(func(vs []interface{}) *VpcIpamResourceDiscovery {
   334  		return vs[0].([]*VpcIpamResourceDiscovery)[vs[1].(int)]
   335  	}).(VpcIpamResourceDiscoveryOutput)
   336  }
   337  
   338  type VpcIpamResourceDiscoveryMapOutput struct{ *pulumi.OutputState }
   339  
   340  func (VpcIpamResourceDiscoveryMapOutput) ElementType() reflect.Type {
   341  	return reflect.TypeOf((*map[string]*VpcIpamResourceDiscovery)(nil)).Elem()
   342  }
   343  
   344  func (o VpcIpamResourceDiscoveryMapOutput) ToVpcIpamResourceDiscoveryMapOutput() VpcIpamResourceDiscoveryMapOutput {
   345  	return o
   346  }
   347  
   348  func (o VpcIpamResourceDiscoveryMapOutput) ToVpcIpamResourceDiscoveryMapOutputWithContext(ctx context.Context) VpcIpamResourceDiscoveryMapOutput {
   349  	return o
   350  }
   351  
   352  func (o VpcIpamResourceDiscoveryMapOutput) MapIndex(k pulumi.StringInput) VpcIpamResourceDiscoveryOutput {
   353  	return pulumi.All(o, k).ApplyT(func(vs []interface{}) *VpcIpamResourceDiscovery {
   354  		return vs[0].(map[string]*VpcIpamResourceDiscovery)[vs[1].(string)]
   355  	}).(VpcIpamResourceDiscoveryOutput)
   356  }
   357  
   358  func init() {
   359  	pulumi.RegisterInputType(reflect.TypeOf((*VpcIpamResourceDiscoveryInput)(nil)).Elem(), &VpcIpamResourceDiscovery{})
   360  	pulumi.RegisterInputType(reflect.TypeOf((*VpcIpamResourceDiscoveryArrayInput)(nil)).Elem(), VpcIpamResourceDiscoveryArray{})
   361  	pulumi.RegisterInputType(reflect.TypeOf((*VpcIpamResourceDiscoveryMapInput)(nil)).Elem(), VpcIpamResourceDiscoveryMap{})
   362  	pulumi.RegisterOutputType(VpcIpamResourceDiscoveryOutput{})
   363  	pulumi.RegisterOutputType(VpcIpamResourceDiscoveryArrayOutput{})
   364  	pulumi.RegisterOutputType(VpcIpamResourceDiscoveryMapOutput{})
   365  }