github.com/pulumi/pulumi-aws/sdk/v6@v6.32.0/go/aws/backup/selection.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 backup
     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 selection conditions for AWS Backup plan resources.
    16  //
    17  // ## Example Usage
    18  //
    19  // ### IAM Role
    20  //
    21  // > For more information about creating and managing IAM Roles for backups and restores, see the [AWS Backup Developer Guide](https://docs.aws.amazon.com/aws-backup/latest/devguide/iam-service-roles.html).
    22  //
    23  // The below example creates an IAM role with the default managed IAM Policy for allowing AWS Backup to create backups.
    24  //
    25  // <!--Start PulumiCodeChooser -->
    26  // ```go
    27  // package main
    28  //
    29  // import (
    30  //
    31  //	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/backup"
    32  //	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam"
    33  //	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    34  //
    35  // )
    36  //
    37  //	func main() {
    38  //		pulumi.Run(func(ctx *pulumi.Context) error {
    39  //			assumeRole, err := iam.GetPolicyDocument(ctx, &iam.GetPolicyDocumentArgs{
    40  //				Statements: []iam.GetPolicyDocumentStatement{
    41  //					{
    42  //						Effect: pulumi.StringRef("Allow"),
    43  //						Principals: []iam.GetPolicyDocumentStatementPrincipal{
    44  //							{
    45  //								Type: "Service",
    46  //								Identifiers: []string{
    47  //									"backup.amazonaws.com",
    48  //								},
    49  //							},
    50  //						},
    51  //						Actions: []string{
    52  //							"sts:AssumeRole",
    53  //						},
    54  //					},
    55  //				},
    56  //			}, nil)
    57  //			if err != nil {
    58  //				return err
    59  //			}
    60  //			example, err := iam.NewRole(ctx, "example", &iam.RoleArgs{
    61  //				Name:             pulumi.String("example"),
    62  //				AssumeRolePolicy: pulumi.String(assumeRole.Json),
    63  //			})
    64  //			if err != nil {
    65  //				return err
    66  //			}
    67  //			_, err = iam.NewRolePolicyAttachment(ctx, "example", &iam.RolePolicyAttachmentArgs{
    68  //				PolicyArn: pulumi.String("arn:aws:iam::aws:policy/service-role/AWSBackupServiceRolePolicyForBackup"),
    69  //				Role:      example.Name,
    70  //			})
    71  //			if err != nil {
    72  //				return err
    73  //			}
    74  //			_, err = backup.NewSelection(ctx, "example", &backup.SelectionArgs{
    75  //				IamRoleArn: example.Arn,
    76  //			})
    77  //			if err != nil {
    78  //				return err
    79  //			}
    80  //			return nil
    81  //		})
    82  //	}
    83  //
    84  // ```
    85  // <!--End PulumiCodeChooser -->
    86  //
    87  // ### Selecting Backups By Tag
    88  //
    89  // <!--Start PulumiCodeChooser -->
    90  // ```go
    91  // package main
    92  //
    93  // import (
    94  //
    95  //	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/backup"
    96  //	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    97  //
    98  // )
    99  //
   100  //	func main() {
   101  //		pulumi.Run(func(ctx *pulumi.Context) error {
   102  //			_, err := backup.NewSelection(ctx, "example", &backup.SelectionArgs{
   103  //				IamRoleArn: pulumi.Any(exampleAwsIamRole.Arn),
   104  //				Name:       pulumi.String("my_example_backup_selection"),
   105  //				PlanId:     pulumi.Any(exampleAwsBackupPlan.Id),
   106  //				SelectionTags: backup.SelectionSelectionTagArray{
   107  //					&backup.SelectionSelectionTagArgs{
   108  //						Type:  pulumi.String("STRINGEQUALS"),
   109  //						Key:   pulumi.String("foo"),
   110  //						Value: pulumi.String("bar"),
   111  //					},
   112  //				},
   113  //			})
   114  //			if err != nil {
   115  //				return err
   116  //			}
   117  //			return nil
   118  //		})
   119  //	}
   120  //
   121  // ```
   122  // <!--End PulumiCodeChooser -->
   123  //
   124  // ### Selecting Backups By Conditions
   125  //
   126  // <!--Start PulumiCodeChooser -->
   127  // ```go
   128  // package main
   129  //
   130  // import (
   131  //
   132  //	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/backup"
   133  //	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
   134  //
   135  // )
   136  //
   137  //	func main() {
   138  //		pulumi.Run(func(ctx *pulumi.Context) error {
   139  //			_, err := backup.NewSelection(ctx, "example", &backup.SelectionArgs{
   140  //				IamRoleArn: pulumi.Any(exampleAwsIamRole.Arn),
   141  //				Name:       pulumi.String("my_example_backup_selection"),
   142  //				PlanId:     pulumi.Any(exampleAwsBackupPlan.Id),
   143  //				Resources: pulumi.StringArray{
   144  //					pulumi.String("*"),
   145  //				},
   146  //				Conditions: backup.SelectionConditionArray{
   147  //					&backup.SelectionConditionArgs{
   148  //						StringEquals: backup.SelectionConditionStringEqualArray{
   149  //							&backup.SelectionConditionStringEqualArgs{
   150  //								Key:   pulumi.String("aws:ResourceTag/Component"),
   151  //								Value: pulumi.String("rds"),
   152  //							},
   153  //						},
   154  //						StringLikes: backup.SelectionConditionStringLikeArray{
   155  //							&backup.SelectionConditionStringLikeArgs{
   156  //								Key:   pulumi.String("aws:ResourceTag/Application"),
   157  //								Value: pulumi.String("app*"),
   158  //							},
   159  //						},
   160  //						StringNotEquals: backup.SelectionConditionStringNotEqualArray{
   161  //							&backup.SelectionConditionStringNotEqualArgs{
   162  //								Key:   pulumi.String("aws:ResourceTag/Backup"),
   163  //								Value: pulumi.String("false"),
   164  //							},
   165  //						},
   166  //						StringNotLikes: backup.SelectionConditionStringNotLikeArray{
   167  //							&backup.SelectionConditionStringNotLikeArgs{
   168  //								Key:   pulumi.String("aws:ResourceTag/Environment"),
   169  //								Value: pulumi.String("test*"),
   170  //							},
   171  //						},
   172  //					},
   173  //				},
   174  //			})
   175  //			if err != nil {
   176  //				return err
   177  //			}
   178  //			return nil
   179  //		})
   180  //	}
   181  //
   182  // ```
   183  // <!--End PulumiCodeChooser -->
   184  //
   185  // ### Selecting Backups By Resource
   186  //
   187  // <!--Start PulumiCodeChooser -->
   188  // ```go
   189  // package main
   190  //
   191  // import (
   192  //
   193  //	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/backup"
   194  //	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
   195  //
   196  // )
   197  //
   198  //	func main() {
   199  //		pulumi.Run(func(ctx *pulumi.Context) error {
   200  //			_, err := backup.NewSelection(ctx, "example", &backup.SelectionArgs{
   201  //				IamRoleArn: pulumi.Any(exampleAwsIamRole.Arn),
   202  //				Name:       pulumi.String("my_example_backup_selection"),
   203  //				PlanId:     pulumi.Any(exampleAwsBackupPlan.Id),
   204  //				Resources: pulumi.StringArray{
   205  //					exampleAwsDbInstance.Arn,
   206  //					exampleAwsEbsVolume.Arn,
   207  //					exampleAwsEfsFileSystem.Arn,
   208  //				},
   209  //			})
   210  //			if err != nil {
   211  //				return err
   212  //			}
   213  //			return nil
   214  //		})
   215  //	}
   216  //
   217  // ```
   218  // <!--End PulumiCodeChooser -->
   219  //
   220  // ### Selecting Backups By Not Resource
   221  //
   222  // <!--Start PulumiCodeChooser -->
   223  // ```go
   224  // package main
   225  //
   226  // import (
   227  //
   228  //	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/backup"
   229  //	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
   230  //
   231  // )
   232  //
   233  //	func main() {
   234  //		pulumi.Run(func(ctx *pulumi.Context) error {
   235  //			_, err := backup.NewSelection(ctx, "example", &backup.SelectionArgs{
   236  //				IamRoleArn: pulumi.Any(exampleAwsIamRole.Arn),
   237  //				Name:       pulumi.String("my_example_backup_selection"),
   238  //				PlanId:     pulumi.Any(exampleAwsBackupPlan.Id),
   239  //				NotResources: pulumi.StringArray{
   240  //					exampleAwsDbInstance.Arn,
   241  //					exampleAwsEbsVolume.Arn,
   242  //					exampleAwsEfsFileSystem.Arn,
   243  //				},
   244  //			})
   245  //			if err != nil {
   246  //				return err
   247  //			}
   248  //			return nil
   249  //		})
   250  //	}
   251  //
   252  // ```
   253  // <!--End PulumiCodeChooser -->
   254  //
   255  // ## Import
   256  //
   257  // Using `pulumi import`, import Backup selection using the role plan_id and id separated by `|`. For example:
   258  //
   259  // ```sh
   260  // $ pulumi import aws:backup/selection:Selection example plan-id|selection-id
   261  // ```
   262  type Selection struct {
   263  	pulumi.CustomResourceState
   264  
   265  	// A list of conditions that you define to assign resources to your backup plans using tags.
   266  	Conditions SelectionConditionArrayOutput `pulumi:"conditions"`
   267  	// The ARN of the IAM role that AWS Backup uses to authenticate when restoring and backing up the target resource. See the [AWS Backup Developer Guide](https://docs.aws.amazon.com/aws-backup/latest/devguide/access-control.html#managed-policies) for additional information about using AWS managed policies or creating custom policies attached to the IAM role.
   268  	IamRoleArn pulumi.StringOutput `pulumi:"iamRoleArn"`
   269  	// The display name of a resource selection document.
   270  	Name pulumi.StringOutput `pulumi:"name"`
   271  	// An array of strings that either contain Amazon Resource Names (ARNs) or match patterns of resources to exclude from a backup plan.
   272  	NotResources pulumi.StringArrayOutput `pulumi:"notResources"`
   273  	// The backup plan ID to be associated with the selection of resources.
   274  	PlanId pulumi.StringOutput `pulumi:"planId"`
   275  	// An array of strings that either contain Amazon Resource Names (ARNs) or match patterns of resources to assign to a backup plan.
   276  	Resources pulumi.StringArrayOutput `pulumi:"resources"`
   277  	// Tag-based conditions used to specify a set of resources to assign to a backup plan.
   278  	SelectionTags SelectionSelectionTagArrayOutput `pulumi:"selectionTags"`
   279  }
   280  
   281  // NewSelection registers a new resource with the given unique name, arguments, and options.
   282  func NewSelection(ctx *pulumi.Context,
   283  	name string, args *SelectionArgs, opts ...pulumi.ResourceOption) (*Selection, error) {
   284  	if args == nil {
   285  		return nil, errors.New("missing one or more required arguments")
   286  	}
   287  
   288  	if args.IamRoleArn == nil {
   289  		return nil, errors.New("invalid value for required argument 'IamRoleArn'")
   290  	}
   291  	if args.PlanId == nil {
   292  		return nil, errors.New("invalid value for required argument 'PlanId'")
   293  	}
   294  	opts = internal.PkgResourceDefaultOpts(opts)
   295  	var resource Selection
   296  	err := ctx.RegisterResource("aws:backup/selection:Selection", name, args, &resource, opts...)
   297  	if err != nil {
   298  		return nil, err
   299  	}
   300  	return &resource, nil
   301  }
   302  
   303  // GetSelection gets an existing Selection resource's state with the given name, ID, and optional
   304  // state properties that are used to uniquely qualify the lookup (nil if not required).
   305  func GetSelection(ctx *pulumi.Context,
   306  	name string, id pulumi.IDInput, state *SelectionState, opts ...pulumi.ResourceOption) (*Selection, error) {
   307  	var resource Selection
   308  	err := ctx.ReadResource("aws:backup/selection:Selection", name, id, state, &resource, opts...)
   309  	if err != nil {
   310  		return nil, err
   311  	}
   312  	return &resource, nil
   313  }
   314  
   315  // Input properties used for looking up and filtering Selection resources.
   316  type selectionState struct {
   317  	// A list of conditions that you define to assign resources to your backup plans using tags.
   318  	Conditions []SelectionCondition `pulumi:"conditions"`
   319  	// The ARN of the IAM role that AWS Backup uses to authenticate when restoring and backing up the target resource. See the [AWS Backup Developer Guide](https://docs.aws.amazon.com/aws-backup/latest/devguide/access-control.html#managed-policies) for additional information about using AWS managed policies or creating custom policies attached to the IAM role.
   320  	IamRoleArn *string `pulumi:"iamRoleArn"`
   321  	// The display name of a resource selection document.
   322  	Name *string `pulumi:"name"`
   323  	// An array of strings that either contain Amazon Resource Names (ARNs) or match patterns of resources to exclude from a backup plan.
   324  	NotResources []string `pulumi:"notResources"`
   325  	// The backup plan ID to be associated with the selection of resources.
   326  	PlanId *string `pulumi:"planId"`
   327  	// An array of strings that either contain Amazon Resource Names (ARNs) or match patterns of resources to assign to a backup plan.
   328  	Resources []string `pulumi:"resources"`
   329  	// Tag-based conditions used to specify a set of resources to assign to a backup plan.
   330  	SelectionTags []SelectionSelectionTag `pulumi:"selectionTags"`
   331  }
   332  
   333  type SelectionState struct {
   334  	// A list of conditions that you define to assign resources to your backup plans using tags.
   335  	Conditions SelectionConditionArrayInput
   336  	// The ARN of the IAM role that AWS Backup uses to authenticate when restoring and backing up the target resource. See the [AWS Backup Developer Guide](https://docs.aws.amazon.com/aws-backup/latest/devguide/access-control.html#managed-policies) for additional information about using AWS managed policies or creating custom policies attached to the IAM role.
   337  	IamRoleArn pulumi.StringPtrInput
   338  	// The display name of a resource selection document.
   339  	Name pulumi.StringPtrInput
   340  	// An array of strings that either contain Amazon Resource Names (ARNs) or match patterns of resources to exclude from a backup plan.
   341  	NotResources pulumi.StringArrayInput
   342  	// The backup plan ID to be associated with the selection of resources.
   343  	PlanId pulumi.StringPtrInput
   344  	// An array of strings that either contain Amazon Resource Names (ARNs) or match patterns of resources to assign to a backup plan.
   345  	Resources pulumi.StringArrayInput
   346  	// Tag-based conditions used to specify a set of resources to assign to a backup plan.
   347  	SelectionTags SelectionSelectionTagArrayInput
   348  }
   349  
   350  func (SelectionState) ElementType() reflect.Type {
   351  	return reflect.TypeOf((*selectionState)(nil)).Elem()
   352  }
   353  
   354  type selectionArgs struct {
   355  	// A list of conditions that you define to assign resources to your backup plans using tags.
   356  	Conditions []SelectionCondition `pulumi:"conditions"`
   357  	// The ARN of the IAM role that AWS Backup uses to authenticate when restoring and backing up the target resource. See the [AWS Backup Developer Guide](https://docs.aws.amazon.com/aws-backup/latest/devguide/access-control.html#managed-policies) for additional information about using AWS managed policies or creating custom policies attached to the IAM role.
   358  	IamRoleArn string `pulumi:"iamRoleArn"`
   359  	// The display name of a resource selection document.
   360  	Name *string `pulumi:"name"`
   361  	// An array of strings that either contain Amazon Resource Names (ARNs) or match patterns of resources to exclude from a backup plan.
   362  	NotResources []string `pulumi:"notResources"`
   363  	// The backup plan ID to be associated with the selection of resources.
   364  	PlanId string `pulumi:"planId"`
   365  	// An array of strings that either contain Amazon Resource Names (ARNs) or match patterns of resources to assign to a backup plan.
   366  	Resources []string `pulumi:"resources"`
   367  	// Tag-based conditions used to specify a set of resources to assign to a backup plan.
   368  	SelectionTags []SelectionSelectionTag `pulumi:"selectionTags"`
   369  }
   370  
   371  // The set of arguments for constructing a Selection resource.
   372  type SelectionArgs struct {
   373  	// A list of conditions that you define to assign resources to your backup plans using tags.
   374  	Conditions SelectionConditionArrayInput
   375  	// The ARN of the IAM role that AWS Backup uses to authenticate when restoring and backing up the target resource. See the [AWS Backup Developer Guide](https://docs.aws.amazon.com/aws-backup/latest/devguide/access-control.html#managed-policies) for additional information about using AWS managed policies or creating custom policies attached to the IAM role.
   376  	IamRoleArn pulumi.StringInput
   377  	// The display name of a resource selection document.
   378  	Name pulumi.StringPtrInput
   379  	// An array of strings that either contain Amazon Resource Names (ARNs) or match patterns of resources to exclude from a backup plan.
   380  	NotResources pulumi.StringArrayInput
   381  	// The backup plan ID to be associated with the selection of resources.
   382  	PlanId pulumi.StringInput
   383  	// An array of strings that either contain Amazon Resource Names (ARNs) or match patterns of resources to assign to a backup plan.
   384  	Resources pulumi.StringArrayInput
   385  	// Tag-based conditions used to specify a set of resources to assign to a backup plan.
   386  	SelectionTags SelectionSelectionTagArrayInput
   387  }
   388  
   389  func (SelectionArgs) ElementType() reflect.Type {
   390  	return reflect.TypeOf((*selectionArgs)(nil)).Elem()
   391  }
   392  
   393  type SelectionInput interface {
   394  	pulumi.Input
   395  
   396  	ToSelectionOutput() SelectionOutput
   397  	ToSelectionOutputWithContext(ctx context.Context) SelectionOutput
   398  }
   399  
   400  func (*Selection) ElementType() reflect.Type {
   401  	return reflect.TypeOf((**Selection)(nil)).Elem()
   402  }
   403  
   404  func (i *Selection) ToSelectionOutput() SelectionOutput {
   405  	return i.ToSelectionOutputWithContext(context.Background())
   406  }
   407  
   408  func (i *Selection) ToSelectionOutputWithContext(ctx context.Context) SelectionOutput {
   409  	return pulumi.ToOutputWithContext(ctx, i).(SelectionOutput)
   410  }
   411  
   412  // SelectionArrayInput is an input type that accepts SelectionArray and SelectionArrayOutput values.
   413  // You can construct a concrete instance of `SelectionArrayInput` via:
   414  //
   415  //	SelectionArray{ SelectionArgs{...} }
   416  type SelectionArrayInput interface {
   417  	pulumi.Input
   418  
   419  	ToSelectionArrayOutput() SelectionArrayOutput
   420  	ToSelectionArrayOutputWithContext(context.Context) SelectionArrayOutput
   421  }
   422  
   423  type SelectionArray []SelectionInput
   424  
   425  func (SelectionArray) ElementType() reflect.Type {
   426  	return reflect.TypeOf((*[]*Selection)(nil)).Elem()
   427  }
   428  
   429  func (i SelectionArray) ToSelectionArrayOutput() SelectionArrayOutput {
   430  	return i.ToSelectionArrayOutputWithContext(context.Background())
   431  }
   432  
   433  func (i SelectionArray) ToSelectionArrayOutputWithContext(ctx context.Context) SelectionArrayOutput {
   434  	return pulumi.ToOutputWithContext(ctx, i).(SelectionArrayOutput)
   435  }
   436  
   437  // SelectionMapInput is an input type that accepts SelectionMap and SelectionMapOutput values.
   438  // You can construct a concrete instance of `SelectionMapInput` via:
   439  //
   440  //	SelectionMap{ "key": SelectionArgs{...} }
   441  type SelectionMapInput interface {
   442  	pulumi.Input
   443  
   444  	ToSelectionMapOutput() SelectionMapOutput
   445  	ToSelectionMapOutputWithContext(context.Context) SelectionMapOutput
   446  }
   447  
   448  type SelectionMap map[string]SelectionInput
   449  
   450  func (SelectionMap) ElementType() reflect.Type {
   451  	return reflect.TypeOf((*map[string]*Selection)(nil)).Elem()
   452  }
   453  
   454  func (i SelectionMap) ToSelectionMapOutput() SelectionMapOutput {
   455  	return i.ToSelectionMapOutputWithContext(context.Background())
   456  }
   457  
   458  func (i SelectionMap) ToSelectionMapOutputWithContext(ctx context.Context) SelectionMapOutput {
   459  	return pulumi.ToOutputWithContext(ctx, i).(SelectionMapOutput)
   460  }
   461  
   462  type SelectionOutput struct{ *pulumi.OutputState }
   463  
   464  func (SelectionOutput) ElementType() reflect.Type {
   465  	return reflect.TypeOf((**Selection)(nil)).Elem()
   466  }
   467  
   468  func (o SelectionOutput) ToSelectionOutput() SelectionOutput {
   469  	return o
   470  }
   471  
   472  func (o SelectionOutput) ToSelectionOutputWithContext(ctx context.Context) SelectionOutput {
   473  	return o
   474  }
   475  
   476  // A list of conditions that you define to assign resources to your backup plans using tags.
   477  func (o SelectionOutput) Conditions() SelectionConditionArrayOutput {
   478  	return o.ApplyT(func(v *Selection) SelectionConditionArrayOutput { return v.Conditions }).(SelectionConditionArrayOutput)
   479  }
   480  
   481  // The ARN of the IAM role that AWS Backup uses to authenticate when restoring and backing up the target resource. See the [AWS Backup Developer Guide](https://docs.aws.amazon.com/aws-backup/latest/devguide/access-control.html#managed-policies) for additional information about using AWS managed policies or creating custom policies attached to the IAM role.
   482  func (o SelectionOutput) IamRoleArn() pulumi.StringOutput {
   483  	return o.ApplyT(func(v *Selection) pulumi.StringOutput { return v.IamRoleArn }).(pulumi.StringOutput)
   484  }
   485  
   486  // The display name of a resource selection document.
   487  func (o SelectionOutput) Name() pulumi.StringOutput {
   488  	return o.ApplyT(func(v *Selection) pulumi.StringOutput { return v.Name }).(pulumi.StringOutput)
   489  }
   490  
   491  // An array of strings that either contain Amazon Resource Names (ARNs) or match patterns of resources to exclude from a backup plan.
   492  func (o SelectionOutput) NotResources() pulumi.StringArrayOutput {
   493  	return o.ApplyT(func(v *Selection) pulumi.StringArrayOutput { return v.NotResources }).(pulumi.StringArrayOutput)
   494  }
   495  
   496  // The backup plan ID to be associated with the selection of resources.
   497  func (o SelectionOutput) PlanId() pulumi.StringOutput {
   498  	return o.ApplyT(func(v *Selection) pulumi.StringOutput { return v.PlanId }).(pulumi.StringOutput)
   499  }
   500  
   501  // An array of strings that either contain Amazon Resource Names (ARNs) or match patterns of resources to assign to a backup plan.
   502  func (o SelectionOutput) Resources() pulumi.StringArrayOutput {
   503  	return o.ApplyT(func(v *Selection) pulumi.StringArrayOutput { return v.Resources }).(pulumi.StringArrayOutput)
   504  }
   505  
   506  // Tag-based conditions used to specify a set of resources to assign to a backup plan.
   507  func (o SelectionOutput) SelectionTags() SelectionSelectionTagArrayOutput {
   508  	return o.ApplyT(func(v *Selection) SelectionSelectionTagArrayOutput { return v.SelectionTags }).(SelectionSelectionTagArrayOutput)
   509  }
   510  
   511  type SelectionArrayOutput struct{ *pulumi.OutputState }
   512  
   513  func (SelectionArrayOutput) ElementType() reflect.Type {
   514  	return reflect.TypeOf((*[]*Selection)(nil)).Elem()
   515  }
   516  
   517  func (o SelectionArrayOutput) ToSelectionArrayOutput() SelectionArrayOutput {
   518  	return o
   519  }
   520  
   521  func (o SelectionArrayOutput) ToSelectionArrayOutputWithContext(ctx context.Context) SelectionArrayOutput {
   522  	return o
   523  }
   524  
   525  func (o SelectionArrayOutput) Index(i pulumi.IntInput) SelectionOutput {
   526  	return pulumi.All(o, i).ApplyT(func(vs []interface{}) *Selection {
   527  		return vs[0].([]*Selection)[vs[1].(int)]
   528  	}).(SelectionOutput)
   529  }
   530  
   531  type SelectionMapOutput struct{ *pulumi.OutputState }
   532  
   533  func (SelectionMapOutput) ElementType() reflect.Type {
   534  	return reflect.TypeOf((*map[string]*Selection)(nil)).Elem()
   535  }
   536  
   537  func (o SelectionMapOutput) ToSelectionMapOutput() SelectionMapOutput {
   538  	return o
   539  }
   540  
   541  func (o SelectionMapOutput) ToSelectionMapOutputWithContext(ctx context.Context) SelectionMapOutput {
   542  	return o
   543  }
   544  
   545  func (o SelectionMapOutput) MapIndex(k pulumi.StringInput) SelectionOutput {
   546  	return pulumi.All(o, k).ApplyT(func(vs []interface{}) *Selection {
   547  		return vs[0].(map[string]*Selection)[vs[1].(string)]
   548  	}).(SelectionOutput)
   549  }
   550  
   551  func init() {
   552  	pulumi.RegisterInputType(reflect.TypeOf((*SelectionInput)(nil)).Elem(), &Selection{})
   553  	pulumi.RegisterInputType(reflect.TypeOf((*SelectionArrayInput)(nil)).Elem(), SelectionArray{})
   554  	pulumi.RegisterInputType(reflect.TypeOf((*SelectionMapInput)(nil)).Elem(), SelectionMap{})
   555  	pulumi.RegisterOutputType(SelectionOutput{})
   556  	pulumi.RegisterOutputType(SelectionArrayOutput{})
   557  	pulumi.RegisterOutputType(SelectionMapOutput{})
   558  }