github.com/pulumi/pulumi-aws/sdk/v6@v6.32.0/go/aws/devopsguru/resourceCollection.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 devopsguru
     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  // Resource for managing an AWS DevOps Guru Resource Collection.
    16  //
    17  // > Only one type of resource collection (All Account Resources, CloudFormation, or Tags) can be enabled in an account at a time. To avoid persistent differences, this resource should be defined only once.
    18  //
    19  // ## Example Usage
    20  //
    21  // ### All Account Resources
    22  //
    23  // <!--Start PulumiCodeChooser -->
    24  // ```go
    25  // package main
    26  //
    27  // import (
    28  //
    29  //	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/devopsguru"
    30  //	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    31  //
    32  // )
    33  //
    34  //	func main() {
    35  //		pulumi.Run(func(ctx *pulumi.Context) error {
    36  //			_, err := devopsguru.NewResourceCollection(ctx, "example", &devopsguru.ResourceCollectionArgs{
    37  //				Type: pulumi.String("AWS_SERVICE"),
    38  //				Cloudformation: &devopsguru.ResourceCollectionCloudformationArgs{
    39  //					StackNames: pulumi.StringArray{
    40  //						pulumi.String("*"),
    41  //					},
    42  //				},
    43  //			})
    44  //			if err != nil {
    45  //				return err
    46  //			}
    47  //			return nil
    48  //		})
    49  //	}
    50  //
    51  // ```
    52  // <!--End PulumiCodeChooser -->
    53  //
    54  // ### CloudFormation Stacks
    55  //
    56  // <!--Start PulumiCodeChooser -->
    57  // ```go
    58  // package main
    59  //
    60  // import (
    61  //
    62  //	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/devopsguru"
    63  //	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    64  //
    65  // )
    66  //
    67  //	func main() {
    68  //		pulumi.Run(func(ctx *pulumi.Context) error {
    69  //			_, err := devopsguru.NewResourceCollection(ctx, "example", &devopsguru.ResourceCollectionArgs{
    70  //				Type: pulumi.String("AWS_CLOUD_FORMATION"),
    71  //				Cloudformation: &devopsguru.ResourceCollectionCloudformationArgs{
    72  //					StackNames: pulumi.StringArray{
    73  //						pulumi.String("ExampleStack"),
    74  //					},
    75  //				},
    76  //			})
    77  //			if err != nil {
    78  //				return err
    79  //			}
    80  //			return nil
    81  //		})
    82  //	}
    83  //
    84  // ```
    85  // <!--End PulumiCodeChooser -->
    86  //
    87  // ### Tags
    88  //
    89  // <!--Start PulumiCodeChooser -->
    90  // ```go
    91  // package main
    92  //
    93  // import (
    94  //
    95  //	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/devopsguru"
    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 := devopsguru.NewResourceCollection(ctx, "example", &devopsguru.ResourceCollectionArgs{
   103  //				Type: pulumi.String("AWS_TAGS"),
   104  //				Tags: &devopsguru.ResourceCollectionTagsArgs{
   105  //					AppBoundaryKey: pulumi.String("DevOps-Guru-Example"),
   106  //					TagValues: pulumi.StringArray{
   107  //						pulumi.String("Example-Value"),
   108  //					},
   109  //				},
   110  //			})
   111  //			if err != nil {
   112  //				return err
   113  //			}
   114  //			return nil
   115  //		})
   116  //	}
   117  //
   118  // ```
   119  // <!--End PulumiCodeChooser -->
   120  //
   121  // ### Tags All Resources
   122  //
   123  // To analyze all resources with the `appBoundaryKey` regardless of the corresponding tag value, set `tagValues` to `["*"]`.
   124  //
   125  // <!--Start PulumiCodeChooser -->
   126  // ```go
   127  // package main
   128  //
   129  // import (
   130  //
   131  //	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/devopsguru"
   132  //	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
   133  //
   134  // )
   135  //
   136  //	func main() {
   137  //		pulumi.Run(func(ctx *pulumi.Context) error {
   138  //			_, err := devopsguru.NewResourceCollection(ctx, "example", &devopsguru.ResourceCollectionArgs{
   139  //				Type: pulumi.String("AWS_TAGS"),
   140  //				Tags: &devopsguru.ResourceCollectionTagsArgs{
   141  //					AppBoundaryKey: pulumi.String("DevOps-Guru-Example"),
   142  //					TagValues: pulumi.StringArray{
   143  //						pulumi.String("*"),
   144  //					},
   145  //				},
   146  //			})
   147  //			if err != nil {
   148  //				return err
   149  //			}
   150  //			return nil
   151  //		})
   152  //	}
   153  //
   154  // ```
   155  // <!--End PulumiCodeChooser -->
   156  //
   157  // ## Import
   158  //
   159  // Using `pulumi import`, import DevOps Guru Resource Collection using the `id`. For example:
   160  //
   161  // ```sh
   162  // $ pulumi import aws:devopsguru/resourceCollection:ResourceCollection example AWS_CLOUD_FORMATION
   163  // ```
   164  type ResourceCollection struct {
   165  	pulumi.CustomResourceState
   166  
   167  	// A collection of AWS CloudFormation stacks. See `cloudformation` below for additional details.
   168  	Cloudformation ResourceCollectionCloudformationPtrOutput `pulumi:"cloudformation"`
   169  	// AWS tags used to filter the resources in the resource collection. See `tags` below for additional details.
   170  	Tags ResourceCollectionTagsPtrOutput `pulumi:"tags"`
   171  	// Type of AWS resource collection to create. Valid values are `AWS_CLOUD_FORMATION`, `AWS_SERVICE`, and `AWS_TAGS`.
   172  	//
   173  	// The following arguments are optional:
   174  	Type pulumi.StringOutput `pulumi:"type"`
   175  }
   176  
   177  // NewResourceCollection registers a new resource with the given unique name, arguments, and options.
   178  func NewResourceCollection(ctx *pulumi.Context,
   179  	name string, args *ResourceCollectionArgs, opts ...pulumi.ResourceOption) (*ResourceCollection, error) {
   180  	if args == nil {
   181  		return nil, errors.New("missing one or more required arguments")
   182  	}
   183  
   184  	if args.Type == nil {
   185  		return nil, errors.New("invalid value for required argument 'Type'")
   186  	}
   187  	opts = internal.PkgResourceDefaultOpts(opts)
   188  	var resource ResourceCollection
   189  	err := ctx.RegisterResource("aws:devopsguru/resourceCollection:ResourceCollection", name, args, &resource, opts...)
   190  	if err != nil {
   191  		return nil, err
   192  	}
   193  	return &resource, nil
   194  }
   195  
   196  // GetResourceCollection gets an existing ResourceCollection resource's state with the given name, ID, and optional
   197  // state properties that are used to uniquely qualify the lookup (nil if not required).
   198  func GetResourceCollection(ctx *pulumi.Context,
   199  	name string, id pulumi.IDInput, state *ResourceCollectionState, opts ...pulumi.ResourceOption) (*ResourceCollection, error) {
   200  	var resource ResourceCollection
   201  	err := ctx.ReadResource("aws:devopsguru/resourceCollection:ResourceCollection", name, id, state, &resource, opts...)
   202  	if err != nil {
   203  		return nil, err
   204  	}
   205  	return &resource, nil
   206  }
   207  
   208  // Input properties used for looking up and filtering ResourceCollection resources.
   209  type resourceCollectionState struct {
   210  	// A collection of AWS CloudFormation stacks. See `cloudformation` below for additional details.
   211  	Cloudformation *ResourceCollectionCloudformation `pulumi:"cloudformation"`
   212  	// AWS tags used to filter the resources in the resource collection. See `tags` below for additional details.
   213  	Tags *ResourceCollectionTags `pulumi:"tags"`
   214  	// Type of AWS resource collection to create. Valid values are `AWS_CLOUD_FORMATION`, `AWS_SERVICE`, and `AWS_TAGS`.
   215  	//
   216  	// The following arguments are optional:
   217  	Type *string `pulumi:"type"`
   218  }
   219  
   220  type ResourceCollectionState struct {
   221  	// A collection of AWS CloudFormation stacks. See `cloudformation` below for additional details.
   222  	Cloudformation ResourceCollectionCloudformationPtrInput
   223  	// AWS tags used to filter the resources in the resource collection. See `tags` below for additional details.
   224  	Tags ResourceCollectionTagsPtrInput
   225  	// Type of AWS resource collection to create. Valid values are `AWS_CLOUD_FORMATION`, `AWS_SERVICE`, and `AWS_TAGS`.
   226  	//
   227  	// The following arguments are optional:
   228  	Type pulumi.StringPtrInput
   229  }
   230  
   231  func (ResourceCollectionState) ElementType() reflect.Type {
   232  	return reflect.TypeOf((*resourceCollectionState)(nil)).Elem()
   233  }
   234  
   235  type resourceCollectionArgs struct {
   236  	// A collection of AWS CloudFormation stacks. See `cloudformation` below for additional details.
   237  	Cloudformation *ResourceCollectionCloudformation `pulumi:"cloudformation"`
   238  	// AWS tags used to filter the resources in the resource collection. See `tags` below for additional details.
   239  	Tags *ResourceCollectionTags `pulumi:"tags"`
   240  	// Type of AWS resource collection to create. Valid values are `AWS_CLOUD_FORMATION`, `AWS_SERVICE`, and `AWS_TAGS`.
   241  	//
   242  	// The following arguments are optional:
   243  	Type string `pulumi:"type"`
   244  }
   245  
   246  // The set of arguments for constructing a ResourceCollection resource.
   247  type ResourceCollectionArgs struct {
   248  	// A collection of AWS CloudFormation stacks. See `cloudformation` below for additional details.
   249  	Cloudformation ResourceCollectionCloudformationPtrInput
   250  	// AWS tags used to filter the resources in the resource collection. See `tags` below for additional details.
   251  	Tags ResourceCollectionTagsPtrInput
   252  	// Type of AWS resource collection to create. Valid values are `AWS_CLOUD_FORMATION`, `AWS_SERVICE`, and `AWS_TAGS`.
   253  	//
   254  	// The following arguments are optional:
   255  	Type pulumi.StringInput
   256  }
   257  
   258  func (ResourceCollectionArgs) ElementType() reflect.Type {
   259  	return reflect.TypeOf((*resourceCollectionArgs)(nil)).Elem()
   260  }
   261  
   262  type ResourceCollectionInput interface {
   263  	pulumi.Input
   264  
   265  	ToResourceCollectionOutput() ResourceCollectionOutput
   266  	ToResourceCollectionOutputWithContext(ctx context.Context) ResourceCollectionOutput
   267  }
   268  
   269  func (*ResourceCollection) ElementType() reflect.Type {
   270  	return reflect.TypeOf((**ResourceCollection)(nil)).Elem()
   271  }
   272  
   273  func (i *ResourceCollection) ToResourceCollectionOutput() ResourceCollectionOutput {
   274  	return i.ToResourceCollectionOutputWithContext(context.Background())
   275  }
   276  
   277  func (i *ResourceCollection) ToResourceCollectionOutputWithContext(ctx context.Context) ResourceCollectionOutput {
   278  	return pulumi.ToOutputWithContext(ctx, i).(ResourceCollectionOutput)
   279  }
   280  
   281  // ResourceCollectionArrayInput is an input type that accepts ResourceCollectionArray and ResourceCollectionArrayOutput values.
   282  // You can construct a concrete instance of `ResourceCollectionArrayInput` via:
   283  //
   284  //	ResourceCollectionArray{ ResourceCollectionArgs{...} }
   285  type ResourceCollectionArrayInput interface {
   286  	pulumi.Input
   287  
   288  	ToResourceCollectionArrayOutput() ResourceCollectionArrayOutput
   289  	ToResourceCollectionArrayOutputWithContext(context.Context) ResourceCollectionArrayOutput
   290  }
   291  
   292  type ResourceCollectionArray []ResourceCollectionInput
   293  
   294  func (ResourceCollectionArray) ElementType() reflect.Type {
   295  	return reflect.TypeOf((*[]*ResourceCollection)(nil)).Elem()
   296  }
   297  
   298  func (i ResourceCollectionArray) ToResourceCollectionArrayOutput() ResourceCollectionArrayOutput {
   299  	return i.ToResourceCollectionArrayOutputWithContext(context.Background())
   300  }
   301  
   302  func (i ResourceCollectionArray) ToResourceCollectionArrayOutputWithContext(ctx context.Context) ResourceCollectionArrayOutput {
   303  	return pulumi.ToOutputWithContext(ctx, i).(ResourceCollectionArrayOutput)
   304  }
   305  
   306  // ResourceCollectionMapInput is an input type that accepts ResourceCollectionMap and ResourceCollectionMapOutput values.
   307  // You can construct a concrete instance of `ResourceCollectionMapInput` via:
   308  //
   309  //	ResourceCollectionMap{ "key": ResourceCollectionArgs{...} }
   310  type ResourceCollectionMapInput interface {
   311  	pulumi.Input
   312  
   313  	ToResourceCollectionMapOutput() ResourceCollectionMapOutput
   314  	ToResourceCollectionMapOutputWithContext(context.Context) ResourceCollectionMapOutput
   315  }
   316  
   317  type ResourceCollectionMap map[string]ResourceCollectionInput
   318  
   319  func (ResourceCollectionMap) ElementType() reflect.Type {
   320  	return reflect.TypeOf((*map[string]*ResourceCollection)(nil)).Elem()
   321  }
   322  
   323  func (i ResourceCollectionMap) ToResourceCollectionMapOutput() ResourceCollectionMapOutput {
   324  	return i.ToResourceCollectionMapOutputWithContext(context.Background())
   325  }
   326  
   327  func (i ResourceCollectionMap) ToResourceCollectionMapOutputWithContext(ctx context.Context) ResourceCollectionMapOutput {
   328  	return pulumi.ToOutputWithContext(ctx, i).(ResourceCollectionMapOutput)
   329  }
   330  
   331  type ResourceCollectionOutput struct{ *pulumi.OutputState }
   332  
   333  func (ResourceCollectionOutput) ElementType() reflect.Type {
   334  	return reflect.TypeOf((**ResourceCollection)(nil)).Elem()
   335  }
   336  
   337  func (o ResourceCollectionOutput) ToResourceCollectionOutput() ResourceCollectionOutput {
   338  	return o
   339  }
   340  
   341  func (o ResourceCollectionOutput) ToResourceCollectionOutputWithContext(ctx context.Context) ResourceCollectionOutput {
   342  	return o
   343  }
   344  
   345  // A collection of AWS CloudFormation stacks. See `cloudformation` below for additional details.
   346  func (o ResourceCollectionOutput) Cloudformation() ResourceCollectionCloudformationPtrOutput {
   347  	return o.ApplyT(func(v *ResourceCollection) ResourceCollectionCloudformationPtrOutput { return v.Cloudformation }).(ResourceCollectionCloudformationPtrOutput)
   348  }
   349  
   350  // AWS tags used to filter the resources in the resource collection. See `tags` below for additional details.
   351  func (o ResourceCollectionOutput) Tags() ResourceCollectionTagsPtrOutput {
   352  	return o.ApplyT(func(v *ResourceCollection) ResourceCollectionTagsPtrOutput { return v.Tags }).(ResourceCollectionTagsPtrOutput)
   353  }
   354  
   355  // Type of AWS resource collection to create. Valid values are `AWS_CLOUD_FORMATION`, `AWS_SERVICE`, and `AWS_TAGS`.
   356  //
   357  // The following arguments are optional:
   358  func (o ResourceCollectionOutput) Type() pulumi.StringOutput {
   359  	return o.ApplyT(func(v *ResourceCollection) pulumi.StringOutput { return v.Type }).(pulumi.StringOutput)
   360  }
   361  
   362  type ResourceCollectionArrayOutput struct{ *pulumi.OutputState }
   363  
   364  func (ResourceCollectionArrayOutput) ElementType() reflect.Type {
   365  	return reflect.TypeOf((*[]*ResourceCollection)(nil)).Elem()
   366  }
   367  
   368  func (o ResourceCollectionArrayOutput) ToResourceCollectionArrayOutput() ResourceCollectionArrayOutput {
   369  	return o
   370  }
   371  
   372  func (o ResourceCollectionArrayOutput) ToResourceCollectionArrayOutputWithContext(ctx context.Context) ResourceCollectionArrayOutput {
   373  	return o
   374  }
   375  
   376  func (o ResourceCollectionArrayOutput) Index(i pulumi.IntInput) ResourceCollectionOutput {
   377  	return pulumi.All(o, i).ApplyT(func(vs []interface{}) *ResourceCollection {
   378  		return vs[0].([]*ResourceCollection)[vs[1].(int)]
   379  	}).(ResourceCollectionOutput)
   380  }
   381  
   382  type ResourceCollectionMapOutput struct{ *pulumi.OutputState }
   383  
   384  func (ResourceCollectionMapOutput) ElementType() reflect.Type {
   385  	return reflect.TypeOf((*map[string]*ResourceCollection)(nil)).Elem()
   386  }
   387  
   388  func (o ResourceCollectionMapOutput) ToResourceCollectionMapOutput() ResourceCollectionMapOutput {
   389  	return o
   390  }
   391  
   392  func (o ResourceCollectionMapOutput) ToResourceCollectionMapOutputWithContext(ctx context.Context) ResourceCollectionMapOutput {
   393  	return o
   394  }
   395  
   396  func (o ResourceCollectionMapOutput) MapIndex(k pulumi.StringInput) ResourceCollectionOutput {
   397  	return pulumi.All(o, k).ApplyT(func(vs []interface{}) *ResourceCollection {
   398  		return vs[0].(map[string]*ResourceCollection)[vs[1].(string)]
   399  	}).(ResourceCollectionOutput)
   400  }
   401  
   402  func init() {
   403  	pulumi.RegisterInputType(reflect.TypeOf((*ResourceCollectionInput)(nil)).Elem(), &ResourceCollection{})
   404  	pulumi.RegisterInputType(reflect.TypeOf((*ResourceCollectionArrayInput)(nil)).Elem(), ResourceCollectionArray{})
   405  	pulumi.RegisterInputType(reflect.TypeOf((*ResourceCollectionMapInput)(nil)).Elem(), ResourceCollectionMap{})
   406  	pulumi.RegisterOutputType(ResourceCollectionOutput{})
   407  	pulumi.RegisterOutputType(ResourceCollectionArrayOutput{})
   408  	pulumi.RegisterOutputType(ResourceCollectionMapOutput{})
   409  }