github.com/pulumi/pulumi-aws/sdk/v6@v6.32.0/go/aws/ec2transitgateway/multicastDomain.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 ec2transitgateway
     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  // Manages an EC2 Transit Gateway Multicast Domain.
    16  //
    17  // ## Example Usage
    18  //
    19  // <!--Start PulumiCodeChooser -->
    20  // ```go
    21  // package main
    22  //
    23  // import (
    24  //
    25  //	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws"
    26  //	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/ec2"
    27  //	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/ec2transitgateway"
    28  //	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    29  //
    30  // )
    31  //
    32  //	func main() {
    33  //		pulumi.Run(func(ctx *pulumi.Context) error {
    34  //			available, err := aws.GetAvailabilityZones(ctx, &aws.GetAvailabilityZonesArgs{
    35  //				State: pulumi.StringRef("available"),
    36  //			}, nil)
    37  //			if err != nil {
    38  //				return err
    39  //			}
    40  //			amazonLinux, err := ec2.LookupAmi(ctx, &ec2.LookupAmiArgs{
    41  //				MostRecent: pulumi.BoolRef(true),
    42  //				Owners: []string{
    43  //					"amazon",
    44  //				},
    45  //				Filters: []ec2.GetAmiFilter{
    46  //					{
    47  //						Name: "name",
    48  //						Values: []string{
    49  //							"amzn-ami-hvm-*-x86_64-gp2",
    50  //						},
    51  //					},
    52  //					{
    53  //						Name: "owner-alias",
    54  //						Values: []string{
    55  //							"amazon",
    56  //						},
    57  //					},
    58  //				},
    59  //			}, nil)
    60  //			if err != nil {
    61  //				return err
    62  //			}
    63  //			vpc1, err := ec2.NewVpc(ctx, "vpc1", &ec2.VpcArgs{
    64  //				CidrBlock: pulumi.String("10.0.0.0/16"),
    65  //			})
    66  //			if err != nil {
    67  //				return err
    68  //			}
    69  //			vpc2, err := ec2.NewVpc(ctx, "vpc2", &ec2.VpcArgs{
    70  //				CidrBlock: pulumi.String("10.1.0.0/16"),
    71  //			})
    72  //			if err != nil {
    73  //				return err
    74  //			}
    75  //			subnet1, err := ec2.NewSubnet(ctx, "subnet1", &ec2.SubnetArgs{
    76  //				VpcId:            vpc1.ID(),
    77  //				CidrBlock:        pulumi.String("10.0.1.0/24"),
    78  //				AvailabilityZone: pulumi.String(available.Names[0]),
    79  //			})
    80  //			if err != nil {
    81  //				return err
    82  //			}
    83  //			subnet2, err := ec2.NewSubnet(ctx, "subnet2", &ec2.SubnetArgs{
    84  //				VpcId:            vpc1.ID(),
    85  //				CidrBlock:        pulumi.String("10.0.2.0/24"),
    86  //				AvailabilityZone: pulumi.String(available.Names[1]),
    87  //			})
    88  //			if err != nil {
    89  //				return err
    90  //			}
    91  //			subnet3, err := ec2.NewSubnet(ctx, "subnet3", &ec2.SubnetArgs{
    92  //				VpcId:            vpc2.ID(),
    93  //				CidrBlock:        pulumi.String("10.1.1.0/24"),
    94  //				AvailabilityZone: pulumi.String(available.Names[0]),
    95  //			})
    96  //			if err != nil {
    97  //				return err
    98  //			}
    99  //			instance1, err := ec2.NewInstance(ctx, "instance1", &ec2.InstanceArgs{
   100  //				Ami:          pulumi.String(amazonLinux.Id),
   101  //				InstanceType: pulumi.String(ec2.InstanceType_T2_Micro),
   102  //				SubnetId:     subnet1.ID(),
   103  //			})
   104  //			if err != nil {
   105  //				return err
   106  //			}
   107  //			instance2, err := ec2.NewInstance(ctx, "instance2", &ec2.InstanceArgs{
   108  //				Ami:          pulumi.String(amazonLinux.Id),
   109  //				InstanceType: pulumi.String(ec2.InstanceType_T2_Micro),
   110  //				SubnetId:     subnet2.ID(),
   111  //			})
   112  //			if err != nil {
   113  //				return err
   114  //			}
   115  //			instance3, err := ec2.NewInstance(ctx, "instance3", &ec2.InstanceArgs{
   116  //				Ami:          pulumi.String(amazonLinux.Id),
   117  //				InstanceType: pulumi.String(ec2.InstanceType_T2_Micro),
   118  //				SubnetId:     subnet3.ID(),
   119  //			})
   120  //			if err != nil {
   121  //				return err
   122  //			}
   123  //			tgw, err := ec2transitgateway.NewTransitGateway(ctx, "tgw", &ec2transitgateway.TransitGatewayArgs{
   124  //				MulticastSupport: pulumi.String("enable"),
   125  //			})
   126  //			if err != nil {
   127  //				return err
   128  //			}
   129  //			attachment1, err := ec2transitgateway.NewVpcAttachment(ctx, "attachment1", &ec2transitgateway.VpcAttachmentArgs{
   130  //				SubnetIds: pulumi.StringArray{
   131  //					subnet1.ID(),
   132  //					subnet2.ID(),
   133  //				},
   134  //				TransitGatewayId: tgw.ID(),
   135  //				VpcId:            vpc1.ID(),
   136  //			})
   137  //			if err != nil {
   138  //				return err
   139  //			}
   140  //			attachment2, err := ec2transitgateway.NewVpcAttachment(ctx, "attachment2", &ec2transitgateway.VpcAttachmentArgs{
   141  //				SubnetIds: pulumi.StringArray{
   142  //					subnet3.ID(),
   143  //				},
   144  //				TransitGatewayId: tgw.ID(),
   145  //				VpcId:            vpc2.ID(),
   146  //			})
   147  //			if err != nil {
   148  //				return err
   149  //			}
   150  //			domain, err := ec2transitgateway.NewMulticastDomain(ctx, "domain", &ec2transitgateway.MulticastDomainArgs{
   151  //				TransitGatewayId:     tgw.ID(),
   152  //				StaticSourcesSupport: pulumi.String("enable"),
   153  //				Tags: pulumi.StringMap{
   154  //					"Name": pulumi.String("Transit_Gateway_Multicast_Domain_Example"),
   155  //				},
   156  //			})
   157  //			if err != nil {
   158  //				return err
   159  //			}
   160  //			association3, err := ec2transitgateway.NewMulticastDomainAssociation(ctx, "association3", &ec2transitgateway.MulticastDomainAssociationArgs{
   161  //				SubnetId:                        subnet3.ID(),
   162  //				TransitGatewayAttachmentId:      attachment2.ID(),
   163  //				TransitGatewayMulticastDomainId: domain.ID(),
   164  //			})
   165  //			if err != nil {
   166  //				return err
   167  //			}
   168  //			_, err = ec2transitgateway.NewMulticastGroupSource(ctx, "source", &ec2transitgateway.MulticastGroupSourceArgs{
   169  //				GroupIpAddress:                  pulumi.String("224.0.0.1"),
   170  //				NetworkInterfaceId:              instance3.PrimaryNetworkInterfaceId,
   171  //				TransitGatewayMulticastDomainId: association3.TransitGatewayMulticastDomainId,
   172  //			})
   173  //			if err != nil {
   174  //				return err
   175  //			}
   176  //			association1, err := ec2transitgateway.NewMulticastDomainAssociation(ctx, "association1", &ec2transitgateway.MulticastDomainAssociationArgs{
   177  //				SubnetId:                        subnet1.ID(),
   178  //				TransitGatewayAttachmentId:      attachment1.ID(),
   179  //				TransitGatewayMulticastDomainId: domain.ID(),
   180  //			})
   181  //			if err != nil {
   182  //				return err
   183  //			}
   184  //			_, err = ec2transitgateway.NewMulticastDomainAssociation(ctx, "association2", &ec2transitgateway.MulticastDomainAssociationArgs{
   185  //				SubnetId:                        subnet2.ID(),
   186  //				TransitGatewayAttachmentId:      attachment2.ID(),
   187  //				TransitGatewayMulticastDomainId: domain.ID(),
   188  //			})
   189  //			if err != nil {
   190  //				return err
   191  //			}
   192  //			_, err = ec2transitgateway.NewMulticastGroupMember(ctx, "member1", &ec2transitgateway.MulticastGroupMemberArgs{
   193  //				GroupIpAddress:                  pulumi.String("224.0.0.1"),
   194  //				NetworkInterfaceId:              instance1.PrimaryNetworkInterfaceId,
   195  //				TransitGatewayMulticastDomainId: association1.TransitGatewayMulticastDomainId,
   196  //			})
   197  //			if err != nil {
   198  //				return err
   199  //			}
   200  //			_, err = ec2transitgateway.NewMulticastGroupMember(ctx, "member2", &ec2transitgateway.MulticastGroupMemberArgs{
   201  //				GroupIpAddress:                  pulumi.String("224.0.0.1"),
   202  //				NetworkInterfaceId:              instance2.PrimaryNetworkInterfaceId,
   203  //				TransitGatewayMulticastDomainId: association1.TransitGatewayMulticastDomainId,
   204  //			})
   205  //			if err != nil {
   206  //				return err
   207  //			}
   208  //			return nil
   209  //		})
   210  //	}
   211  //
   212  // ```
   213  // <!--End PulumiCodeChooser -->
   214  //
   215  // ## Import
   216  //
   217  // Using `pulumi import`, import `aws_ec2_transit_gateway_multicast_domain` using the EC2 Transit Gateway Multicast Domain identifier. For example:
   218  //
   219  // ```sh
   220  // $ pulumi import aws:ec2transitgateway/multicastDomain:MulticastDomain example tgw-mcast-domain-12345
   221  // ```
   222  type MulticastDomain struct {
   223  	pulumi.CustomResourceState
   224  
   225  	// EC2 Transit Gateway Multicast Domain Amazon Resource Name (ARN).
   226  	Arn pulumi.StringOutput `pulumi:"arn"`
   227  	// Whether to automatically accept cross-account subnet associations that are associated with the EC2 Transit Gateway Multicast Domain. Valid values: `disable`, `enable`. Default value: `disable`.
   228  	AutoAcceptSharedAssociations pulumi.StringPtrOutput `pulumi:"autoAcceptSharedAssociations"`
   229  	// Whether to enable Internet Group Management Protocol (IGMP) version 2 for the EC2 Transit Gateway Multicast Domain. Valid values: `disable`, `enable`. Default value: `disable`.
   230  	Igmpv2Support pulumi.StringPtrOutput `pulumi:"igmpv2Support"`
   231  	// Identifier of the AWS account that owns the EC2 Transit Gateway Multicast Domain.
   232  	OwnerId pulumi.StringOutput `pulumi:"ownerId"`
   233  	// Whether to enable support for statically configuring multicast group sources for the EC2 Transit Gateway Multicast Domain. Valid values: `disable`, `enable`. Default value: `disable`.
   234  	StaticSourcesSupport pulumi.StringPtrOutput `pulumi:"staticSourcesSupport"`
   235  	// Key-value tags for the EC2 Transit Gateway Multicast Domain. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level.
   236  	Tags pulumi.StringMapOutput `pulumi:"tags"`
   237  	// A map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block.
   238  	//
   239  	// Deprecated: Please use `tags` instead.
   240  	TagsAll pulumi.StringMapOutput `pulumi:"tagsAll"`
   241  	// EC2 Transit Gateway identifier. The EC2 Transit Gateway must have `multicastSupport` enabled.
   242  	TransitGatewayId pulumi.StringOutput `pulumi:"transitGatewayId"`
   243  }
   244  
   245  // NewMulticastDomain registers a new resource with the given unique name, arguments, and options.
   246  func NewMulticastDomain(ctx *pulumi.Context,
   247  	name string, args *MulticastDomainArgs, opts ...pulumi.ResourceOption) (*MulticastDomain, error) {
   248  	if args == nil {
   249  		return nil, errors.New("missing one or more required arguments")
   250  	}
   251  
   252  	if args.TransitGatewayId == nil {
   253  		return nil, errors.New("invalid value for required argument 'TransitGatewayId'")
   254  	}
   255  	opts = internal.PkgResourceDefaultOpts(opts)
   256  	var resource MulticastDomain
   257  	err := ctx.RegisterResource("aws:ec2transitgateway/multicastDomain:MulticastDomain", name, args, &resource, opts...)
   258  	if err != nil {
   259  		return nil, err
   260  	}
   261  	return &resource, nil
   262  }
   263  
   264  // GetMulticastDomain gets an existing MulticastDomain resource's state with the given name, ID, and optional
   265  // state properties that are used to uniquely qualify the lookup (nil if not required).
   266  func GetMulticastDomain(ctx *pulumi.Context,
   267  	name string, id pulumi.IDInput, state *MulticastDomainState, opts ...pulumi.ResourceOption) (*MulticastDomain, error) {
   268  	var resource MulticastDomain
   269  	err := ctx.ReadResource("aws:ec2transitgateway/multicastDomain:MulticastDomain", name, id, state, &resource, opts...)
   270  	if err != nil {
   271  		return nil, err
   272  	}
   273  	return &resource, nil
   274  }
   275  
   276  // Input properties used for looking up and filtering MulticastDomain resources.
   277  type multicastDomainState struct {
   278  	// EC2 Transit Gateway Multicast Domain Amazon Resource Name (ARN).
   279  	Arn *string `pulumi:"arn"`
   280  	// Whether to automatically accept cross-account subnet associations that are associated with the EC2 Transit Gateway Multicast Domain. Valid values: `disable`, `enable`. Default value: `disable`.
   281  	AutoAcceptSharedAssociations *string `pulumi:"autoAcceptSharedAssociations"`
   282  	// Whether to enable Internet Group Management Protocol (IGMP) version 2 for the EC2 Transit Gateway Multicast Domain. Valid values: `disable`, `enable`. Default value: `disable`.
   283  	Igmpv2Support *string `pulumi:"igmpv2Support"`
   284  	// Identifier of the AWS account that owns the EC2 Transit Gateway Multicast Domain.
   285  	OwnerId *string `pulumi:"ownerId"`
   286  	// Whether to enable support for statically configuring multicast group sources for the EC2 Transit Gateway Multicast Domain. Valid values: `disable`, `enable`. Default value: `disable`.
   287  	StaticSourcesSupport *string `pulumi:"staticSourcesSupport"`
   288  	// Key-value tags for the EC2 Transit Gateway Multicast Domain. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level.
   289  	Tags map[string]string `pulumi:"tags"`
   290  	// A map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block.
   291  	//
   292  	// Deprecated: Please use `tags` instead.
   293  	TagsAll map[string]string `pulumi:"tagsAll"`
   294  	// EC2 Transit Gateway identifier. The EC2 Transit Gateway must have `multicastSupport` enabled.
   295  	TransitGatewayId *string `pulumi:"transitGatewayId"`
   296  }
   297  
   298  type MulticastDomainState struct {
   299  	// EC2 Transit Gateway Multicast Domain Amazon Resource Name (ARN).
   300  	Arn pulumi.StringPtrInput
   301  	// Whether to automatically accept cross-account subnet associations that are associated with the EC2 Transit Gateway Multicast Domain. Valid values: `disable`, `enable`. Default value: `disable`.
   302  	AutoAcceptSharedAssociations pulumi.StringPtrInput
   303  	// Whether to enable Internet Group Management Protocol (IGMP) version 2 for the EC2 Transit Gateway Multicast Domain. Valid values: `disable`, `enable`. Default value: `disable`.
   304  	Igmpv2Support pulumi.StringPtrInput
   305  	// Identifier of the AWS account that owns the EC2 Transit Gateway Multicast Domain.
   306  	OwnerId pulumi.StringPtrInput
   307  	// Whether to enable support for statically configuring multicast group sources for the EC2 Transit Gateway Multicast Domain. Valid values: `disable`, `enable`. Default value: `disable`.
   308  	StaticSourcesSupport pulumi.StringPtrInput
   309  	// Key-value tags for the EC2 Transit Gateway Multicast Domain. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level.
   310  	Tags pulumi.StringMapInput
   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  	TagsAll pulumi.StringMapInput
   315  	// EC2 Transit Gateway identifier. The EC2 Transit Gateway must have `multicastSupport` enabled.
   316  	TransitGatewayId pulumi.StringPtrInput
   317  }
   318  
   319  func (MulticastDomainState) ElementType() reflect.Type {
   320  	return reflect.TypeOf((*multicastDomainState)(nil)).Elem()
   321  }
   322  
   323  type multicastDomainArgs struct {
   324  	// Whether to automatically accept cross-account subnet associations that are associated with the EC2 Transit Gateway Multicast Domain. Valid values: `disable`, `enable`. Default value: `disable`.
   325  	AutoAcceptSharedAssociations *string `pulumi:"autoAcceptSharedAssociations"`
   326  	// Whether to enable Internet Group Management Protocol (IGMP) version 2 for the EC2 Transit Gateway Multicast Domain. Valid values: `disable`, `enable`. Default value: `disable`.
   327  	Igmpv2Support *string `pulumi:"igmpv2Support"`
   328  	// Whether to enable support for statically configuring multicast group sources for the EC2 Transit Gateway Multicast Domain. Valid values: `disable`, `enable`. Default value: `disable`.
   329  	StaticSourcesSupport *string `pulumi:"staticSourcesSupport"`
   330  	// Key-value tags for the EC2 Transit Gateway Multicast Domain. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level.
   331  	Tags map[string]string `pulumi:"tags"`
   332  	// EC2 Transit Gateway identifier. The EC2 Transit Gateway must have `multicastSupport` enabled.
   333  	TransitGatewayId string `pulumi:"transitGatewayId"`
   334  }
   335  
   336  // The set of arguments for constructing a MulticastDomain resource.
   337  type MulticastDomainArgs struct {
   338  	// Whether to automatically accept cross-account subnet associations that are associated with the EC2 Transit Gateway Multicast Domain. Valid values: `disable`, `enable`. Default value: `disable`.
   339  	AutoAcceptSharedAssociations pulumi.StringPtrInput
   340  	// Whether to enable Internet Group Management Protocol (IGMP) version 2 for the EC2 Transit Gateway Multicast Domain. Valid values: `disable`, `enable`. Default value: `disable`.
   341  	Igmpv2Support pulumi.StringPtrInput
   342  	// Whether to enable support for statically configuring multicast group sources for the EC2 Transit Gateway Multicast Domain. Valid values: `disable`, `enable`. Default value: `disable`.
   343  	StaticSourcesSupport pulumi.StringPtrInput
   344  	// Key-value tags for the EC2 Transit Gateway Multicast Domain. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level.
   345  	Tags pulumi.StringMapInput
   346  	// EC2 Transit Gateway identifier. The EC2 Transit Gateway must have `multicastSupport` enabled.
   347  	TransitGatewayId pulumi.StringInput
   348  }
   349  
   350  func (MulticastDomainArgs) ElementType() reflect.Type {
   351  	return reflect.TypeOf((*multicastDomainArgs)(nil)).Elem()
   352  }
   353  
   354  type MulticastDomainInput interface {
   355  	pulumi.Input
   356  
   357  	ToMulticastDomainOutput() MulticastDomainOutput
   358  	ToMulticastDomainOutputWithContext(ctx context.Context) MulticastDomainOutput
   359  }
   360  
   361  func (*MulticastDomain) ElementType() reflect.Type {
   362  	return reflect.TypeOf((**MulticastDomain)(nil)).Elem()
   363  }
   364  
   365  func (i *MulticastDomain) ToMulticastDomainOutput() MulticastDomainOutput {
   366  	return i.ToMulticastDomainOutputWithContext(context.Background())
   367  }
   368  
   369  func (i *MulticastDomain) ToMulticastDomainOutputWithContext(ctx context.Context) MulticastDomainOutput {
   370  	return pulumi.ToOutputWithContext(ctx, i).(MulticastDomainOutput)
   371  }
   372  
   373  // MulticastDomainArrayInput is an input type that accepts MulticastDomainArray and MulticastDomainArrayOutput values.
   374  // You can construct a concrete instance of `MulticastDomainArrayInput` via:
   375  //
   376  //	MulticastDomainArray{ MulticastDomainArgs{...} }
   377  type MulticastDomainArrayInput interface {
   378  	pulumi.Input
   379  
   380  	ToMulticastDomainArrayOutput() MulticastDomainArrayOutput
   381  	ToMulticastDomainArrayOutputWithContext(context.Context) MulticastDomainArrayOutput
   382  }
   383  
   384  type MulticastDomainArray []MulticastDomainInput
   385  
   386  func (MulticastDomainArray) ElementType() reflect.Type {
   387  	return reflect.TypeOf((*[]*MulticastDomain)(nil)).Elem()
   388  }
   389  
   390  func (i MulticastDomainArray) ToMulticastDomainArrayOutput() MulticastDomainArrayOutput {
   391  	return i.ToMulticastDomainArrayOutputWithContext(context.Background())
   392  }
   393  
   394  func (i MulticastDomainArray) ToMulticastDomainArrayOutputWithContext(ctx context.Context) MulticastDomainArrayOutput {
   395  	return pulumi.ToOutputWithContext(ctx, i).(MulticastDomainArrayOutput)
   396  }
   397  
   398  // MulticastDomainMapInput is an input type that accepts MulticastDomainMap and MulticastDomainMapOutput values.
   399  // You can construct a concrete instance of `MulticastDomainMapInput` via:
   400  //
   401  //	MulticastDomainMap{ "key": MulticastDomainArgs{...} }
   402  type MulticastDomainMapInput interface {
   403  	pulumi.Input
   404  
   405  	ToMulticastDomainMapOutput() MulticastDomainMapOutput
   406  	ToMulticastDomainMapOutputWithContext(context.Context) MulticastDomainMapOutput
   407  }
   408  
   409  type MulticastDomainMap map[string]MulticastDomainInput
   410  
   411  func (MulticastDomainMap) ElementType() reflect.Type {
   412  	return reflect.TypeOf((*map[string]*MulticastDomain)(nil)).Elem()
   413  }
   414  
   415  func (i MulticastDomainMap) ToMulticastDomainMapOutput() MulticastDomainMapOutput {
   416  	return i.ToMulticastDomainMapOutputWithContext(context.Background())
   417  }
   418  
   419  func (i MulticastDomainMap) ToMulticastDomainMapOutputWithContext(ctx context.Context) MulticastDomainMapOutput {
   420  	return pulumi.ToOutputWithContext(ctx, i).(MulticastDomainMapOutput)
   421  }
   422  
   423  type MulticastDomainOutput struct{ *pulumi.OutputState }
   424  
   425  func (MulticastDomainOutput) ElementType() reflect.Type {
   426  	return reflect.TypeOf((**MulticastDomain)(nil)).Elem()
   427  }
   428  
   429  func (o MulticastDomainOutput) ToMulticastDomainOutput() MulticastDomainOutput {
   430  	return o
   431  }
   432  
   433  func (o MulticastDomainOutput) ToMulticastDomainOutputWithContext(ctx context.Context) MulticastDomainOutput {
   434  	return o
   435  }
   436  
   437  // EC2 Transit Gateway Multicast Domain Amazon Resource Name (ARN).
   438  func (o MulticastDomainOutput) Arn() pulumi.StringOutput {
   439  	return o.ApplyT(func(v *MulticastDomain) pulumi.StringOutput { return v.Arn }).(pulumi.StringOutput)
   440  }
   441  
   442  // Whether to automatically accept cross-account subnet associations that are associated with the EC2 Transit Gateway Multicast Domain. Valid values: `disable`, `enable`. Default value: `disable`.
   443  func (o MulticastDomainOutput) AutoAcceptSharedAssociations() pulumi.StringPtrOutput {
   444  	return o.ApplyT(func(v *MulticastDomain) pulumi.StringPtrOutput { return v.AutoAcceptSharedAssociations }).(pulumi.StringPtrOutput)
   445  }
   446  
   447  // Whether to enable Internet Group Management Protocol (IGMP) version 2 for the EC2 Transit Gateway Multicast Domain. Valid values: `disable`, `enable`. Default value: `disable`.
   448  func (o MulticastDomainOutput) Igmpv2Support() pulumi.StringPtrOutput {
   449  	return o.ApplyT(func(v *MulticastDomain) pulumi.StringPtrOutput { return v.Igmpv2Support }).(pulumi.StringPtrOutput)
   450  }
   451  
   452  // Identifier of the AWS account that owns the EC2 Transit Gateway Multicast Domain.
   453  func (o MulticastDomainOutput) OwnerId() pulumi.StringOutput {
   454  	return o.ApplyT(func(v *MulticastDomain) pulumi.StringOutput { return v.OwnerId }).(pulumi.StringOutput)
   455  }
   456  
   457  // Whether to enable support for statically configuring multicast group sources for the EC2 Transit Gateway Multicast Domain. Valid values: `disable`, `enable`. Default value: `disable`.
   458  func (o MulticastDomainOutput) StaticSourcesSupport() pulumi.StringPtrOutput {
   459  	return o.ApplyT(func(v *MulticastDomain) pulumi.StringPtrOutput { return v.StaticSourcesSupport }).(pulumi.StringPtrOutput)
   460  }
   461  
   462  // Key-value tags for the EC2 Transit Gateway Multicast Domain. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level.
   463  func (o MulticastDomainOutput) Tags() pulumi.StringMapOutput {
   464  	return o.ApplyT(func(v *MulticastDomain) pulumi.StringMapOutput { return v.Tags }).(pulumi.StringMapOutput)
   465  }
   466  
   467  // A map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block.
   468  //
   469  // Deprecated: Please use `tags` instead.
   470  func (o MulticastDomainOutput) TagsAll() pulumi.StringMapOutput {
   471  	return o.ApplyT(func(v *MulticastDomain) pulumi.StringMapOutput { return v.TagsAll }).(pulumi.StringMapOutput)
   472  }
   473  
   474  // EC2 Transit Gateway identifier. The EC2 Transit Gateway must have `multicastSupport` enabled.
   475  func (o MulticastDomainOutput) TransitGatewayId() pulumi.StringOutput {
   476  	return o.ApplyT(func(v *MulticastDomain) pulumi.StringOutput { return v.TransitGatewayId }).(pulumi.StringOutput)
   477  }
   478  
   479  type MulticastDomainArrayOutput struct{ *pulumi.OutputState }
   480  
   481  func (MulticastDomainArrayOutput) ElementType() reflect.Type {
   482  	return reflect.TypeOf((*[]*MulticastDomain)(nil)).Elem()
   483  }
   484  
   485  func (o MulticastDomainArrayOutput) ToMulticastDomainArrayOutput() MulticastDomainArrayOutput {
   486  	return o
   487  }
   488  
   489  func (o MulticastDomainArrayOutput) ToMulticastDomainArrayOutputWithContext(ctx context.Context) MulticastDomainArrayOutput {
   490  	return o
   491  }
   492  
   493  func (o MulticastDomainArrayOutput) Index(i pulumi.IntInput) MulticastDomainOutput {
   494  	return pulumi.All(o, i).ApplyT(func(vs []interface{}) *MulticastDomain {
   495  		return vs[0].([]*MulticastDomain)[vs[1].(int)]
   496  	}).(MulticastDomainOutput)
   497  }
   498  
   499  type MulticastDomainMapOutput struct{ *pulumi.OutputState }
   500  
   501  func (MulticastDomainMapOutput) ElementType() reflect.Type {
   502  	return reflect.TypeOf((*map[string]*MulticastDomain)(nil)).Elem()
   503  }
   504  
   505  func (o MulticastDomainMapOutput) ToMulticastDomainMapOutput() MulticastDomainMapOutput {
   506  	return o
   507  }
   508  
   509  func (o MulticastDomainMapOutput) ToMulticastDomainMapOutputWithContext(ctx context.Context) MulticastDomainMapOutput {
   510  	return o
   511  }
   512  
   513  func (o MulticastDomainMapOutput) MapIndex(k pulumi.StringInput) MulticastDomainOutput {
   514  	return pulumi.All(o, k).ApplyT(func(vs []interface{}) *MulticastDomain {
   515  		return vs[0].(map[string]*MulticastDomain)[vs[1].(string)]
   516  	}).(MulticastDomainOutput)
   517  }
   518  
   519  func init() {
   520  	pulumi.RegisterInputType(reflect.TypeOf((*MulticastDomainInput)(nil)).Elem(), &MulticastDomain{})
   521  	pulumi.RegisterInputType(reflect.TypeOf((*MulticastDomainArrayInput)(nil)).Elem(), MulticastDomainArray{})
   522  	pulumi.RegisterInputType(reflect.TypeOf((*MulticastDomainMapInput)(nil)).Elem(), MulticastDomainMap{})
   523  	pulumi.RegisterOutputType(MulticastDomainOutput{})
   524  	pulumi.RegisterOutputType(MulticastDomainArrayOutput{})
   525  	pulumi.RegisterOutputType(MulticastDomainMapOutput{})
   526  }