github.com/pulumi/pulumi-aws/sdk/v6@v6.32.0/go/aws/rds/reservedInstance.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 rds
     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 RDS DB Reserved Instance.
    16  //
    17  // > **NOTE:** Once created, a reservation is valid for the `duration` of the provided `offeringId` and cannot be deleted. Performing a `destroy` will only remove the resource from state. For more information see [RDS Reserved Instances Documentation](https://aws.amazon.com/rds/reserved-instances/) and [PurchaseReservedDBInstancesOffering](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_PurchaseReservedDBInstancesOffering.html).
    18  //
    19  // > **NOTE:** Due to the expense of testing this resource, we provide it as best effort. If you find it useful, and have the ability to help test or notice issues, consider reaching out to us on GitHub.
    20  //
    21  // ## Example Usage
    22  //
    23  // <!--Start PulumiCodeChooser -->
    24  // ```go
    25  // package main
    26  //
    27  // import (
    28  //
    29  //	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/rds"
    30  //	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    31  //
    32  // )
    33  //
    34  //	func main() {
    35  //		pulumi.Run(func(ctx *pulumi.Context) error {
    36  //			test, err := rds.GetReservedInstanceOffering(ctx, &rds.GetReservedInstanceOfferingArgs{
    37  //				DbInstanceClass:    "db.t2.micro",
    38  //				Duration:           31536000,
    39  //				MultiAz:            false,
    40  //				OfferingType:       "All Upfront",
    41  //				ProductDescription: "mysql",
    42  //			}, nil)
    43  //			if err != nil {
    44  //				return err
    45  //			}
    46  //			_, err = rds.NewReservedInstance(ctx, "example", &rds.ReservedInstanceArgs{
    47  //				OfferingId:    pulumi.String(test.OfferingId),
    48  //				ReservationId: pulumi.String("optionalCustomReservationID"),
    49  //				InstanceCount: pulumi.Int(3),
    50  //			})
    51  //			if err != nil {
    52  //				return err
    53  //			}
    54  //			return nil
    55  //		})
    56  //	}
    57  //
    58  // ```
    59  // <!--End PulumiCodeChooser -->
    60  //
    61  // ## Import
    62  //
    63  // Using `pulumi import`, import RDS DB Instance Reservations using the `instance_id`. For example:
    64  //
    65  // ```sh
    66  // $ pulumi import aws:rds/reservedInstance:ReservedInstance reservation_instance CustomReservationID
    67  // ```
    68  type ReservedInstance struct {
    69  	pulumi.CustomResourceState
    70  
    71  	// ARN for the reserved DB instance.
    72  	Arn pulumi.StringOutput `pulumi:"arn"`
    73  	// Currency code for the reserved DB instance.
    74  	CurrencyCode pulumi.StringOutput `pulumi:"currencyCode"`
    75  	// DB instance class for the reserved DB instance.
    76  	DbInstanceClass pulumi.StringOutput `pulumi:"dbInstanceClass"`
    77  	// Duration of the reservation in seconds.
    78  	Duration pulumi.IntOutput `pulumi:"duration"`
    79  	// Fixed price charged for this reserved DB instance.
    80  	FixedPrice pulumi.Float64Output `pulumi:"fixedPrice"`
    81  	// Number of instances to reserve. Default value is `1`.
    82  	InstanceCount pulumi.IntPtrOutput `pulumi:"instanceCount"`
    83  	// Unique identifier for the lease associated with the reserved DB instance. Amazon Web Services Support might request the lease ID for an issue related to a reserved DB instance.
    84  	LeaseId pulumi.StringOutput `pulumi:"leaseId"`
    85  	// Whether the reservation applies to Multi-AZ deployments.
    86  	MultiAz pulumi.BoolOutput `pulumi:"multiAz"`
    87  	// ID of the Reserved DB instance offering to purchase. To determine an `offeringId`, see the `rds.getReservedInstanceOffering` data source.
    88  	//
    89  	// The following arguments are optional:
    90  	OfferingId pulumi.StringOutput `pulumi:"offeringId"`
    91  	// Offering type of this reserved DB instance.
    92  	OfferingType pulumi.StringOutput `pulumi:"offeringType"`
    93  	// Description of the reserved DB instance.
    94  	ProductDescription pulumi.StringOutput `pulumi:"productDescription"`
    95  	// Recurring price charged to run this reserved DB instance.
    96  	RecurringCharges ReservedInstanceRecurringChargeArrayOutput `pulumi:"recurringCharges"`
    97  	// Customer-specified identifier to track this reservation.
    98  	ReservationId pulumi.StringPtrOutput `pulumi:"reservationId"`
    99  	// Time the reservation started.
   100  	StartTime pulumi.StringOutput `pulumi:"startTime"`
   101  	// State of the reserved DB instance.
   102  	State pulumi.StringOutput `pulumi:"state"`
   103  	// Map of tags to assign to the DB reservation. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level.
   104  	Tags pulumi.StringMapOutput `pulumi:"tags"`
   105  	// Map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block.
   106  	//
   107  	// Deprecated: Please use `tags` instead.
   108  	TagsAll pulumi.StringMapOutput `pulumi:"tagsAll"`
   109  	// Hourly price charged for this reserved DB instance.
   110  	UsagePrice pulumi.Float64Output `pulumi:"usagePrice"`
   111  }
   112  
   113  // NewReservedInstance registers a new resource with the given unique name, arguments, and options.
   114  func NewReservedInstance(ctx *pulumi.Context,
   115  	name string, args *ReservedInstanceArgs, opts ...pulumi.ResourceOption) (*ReservedInstance, error) {
   116  	if args == nil {
   117  		return nil, errors.New("missing one or more required arguments")
   118  	}
   119  
   120  	if args.OfferingId == nil {
   121  		return nil, errors.New("invalid value for required argument 'OfferingId'")
   122  	}
   123  	opts = internal.PkgResourceDefaultOpts(opts)
   124  	var resource ReservedInstance
   125  	err := ctx.RegisterResource("aws:rds/reservedInstance:ReservedInstance", name, args, &resource, opts...)
   126  	if err != nil {
   127  		return nil, err
   128  	}
   129  	return &resource, nil
   130  }
   131  
   132  // GetReservedInstance gets an existing ReservedInstance resource's state with the given name, ID, and optional
   133  // state properties that are used to uniquely qualify the lookup (nil if not required).
   134  func GetReservedInstance(ctx *pulumi.Context,
   135  	name string, id pulumi.IDInput, state *ReservedInstanceState, opts ...pulumi.ResourceOption) (*ReservedInstance, error) {
   136  	var resource ReservedInstance
   137  	err := ctx.ReadResource("aws:rds/reservedInstance:ReservedInstance", name, id, state, &resource, opts...)
   138  	if err != nil {
   139  		return nil, err
   140  	}
   141  	return &resource, nil
   142  }
   143  
   144  // Input properties used for looking up and filtering ReservedInstance resources.
   145  type reservedInstanceState struct {
   146  	// ARN for the reserved DB instance.
   147  	Arn *string `pulumi:"arn"`
   148  	// Currency code for the reserved DB instance.
   149  	CurrencyCode *string `pulumi:"currencyCode"`
   150  	// DB instance class for the reserved DB instance.
   151  	DbInstanceClass *string `pulumi:"dbInstanceClass"`
   152  	// Duration of the reservation in seconds.
   153  	Duration *int `pulumi:"duration"`
   154  	// Fixed price charged for this reserved DB instance.
   155  	FixedPrice *float64 `pulumi:"fixedPrice"`
   156  	// Number of instances to reserve. Default value is `1`.
   157  	InstanceCount *int `pulumi:"instanceCount"`
   158  	// Unique identifier for the lease associated with the reserved DB instance. Amazon Web Services Support might request the lease ID for an issue related to a reserved DB instance.
   159  	LeaseId *string `pulumi:"leaseId"`
   160  	// Whether the reservation applies to Multi-AZ deployments.
   161  	MultiAz *bool `pulumi:"multiAz"`
   162  	// ID of the Reserved DB instance offering to purchase. To determine an `offeringId`, see the `rds.getReservedInstanceOffering` data source.
   163  	//
   164  	// The following arguments are optional:
   165  	OfferingId *string `pulumi:"offeringId"`
   166  	// Offering type of this reserved DB instance.
   167  	OfferingType *string `pulumi:"offeringType"`
   168  	// Description of the reserved DB instance.
   169  	ProductDescription *string `pulumi:"productDescription"`
   170  	// Recurring price charged to run this reserved DB instance.
   171  	RecurringCharges []ReservedInstanceRecurringCharge `pulumi:"recurringCharges"`
   172  	// Customer-specified identifier to track this reservation.
   173  	ReservationId *string `pulumi:"reservationId"`
   174  	// Time the reservation started.
   175  	StartTime *string `pulumi:"startTime"`
   176  	// State of the reserved DB instance.
   177  	State *string `pulumi:"state"`
   178  	// Map of tags to assign to the DB reservation. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level.
   179  	Tags map[string]string `pulumi:"tags"`
   180  	// Map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block.
   181  	//
   182  	// Deprecated: Please use `tags` instead.
   183  	TagsAll map[string]string `pulumi:"tagsAll"`
   184  	// Hourly price charged for this reserved DB instance.
   185  	UsagePrice *float64 `pulumi:"usagePrice"`
   186  }
   187  
   188  type ReservedInstanceState struct {
   189  	// ARN for the reserved DB instance.
   190  	Arn pulumi.StringPtrInput
   191  	// Currency code for the reserved DB instance.
   192  	CurrencyCode pulumi.StringPtrInput
   193  	// DB instance class for the reserved DB instance.
   194  	DbInstanceClass pulumi.StringPtrInput
   195  	// Duration of the reservation in seconds.
   196  	Duration pulumi.IntPtrInput
   197  	// Fixed price charged for this reserved DB instance.
   198  	FixedPrice pulumi.Float64PtrInput
   199  	// Number of instances to reserve. Default value is `1`.
   200  	InstanceCount pulumi.IntPtrInput
   201  	// Unique identifier for the lease associated with the reserved DB instance. Amazon Web Services Support might request the lease ID for an issue related to a reserved DB instance.
   202  	LeaseId pulumi.StringPtrInput
   203  	// Whether the reservation applies to Multi-AZ deployments.
   204  	MultiAz pulumi.BoolPtrInput
   205  	// ID of the Reserved DB instance offering to purchase. To determine an `offeringId`, see the `rds.getReservedInstanceOffering` data source.
   206  	//
   207  	// The following arguments are optional:
   208  	OfferingId pulumi.StringPtrInput
   209  	// Offering type of this reserved DB instance.
   210  	OfferingType pulumi.StringPtrInput
   211  	// Description of the reserved DB instance.
   212  	ProductDescription pulumi.StringPtrInput
   213  	// Recurring price charged to run this reserved DB instance.
   214  	RecurringCharges ReservedInstanceRecurringChargeArrayInput
   215  	// Customer-specified identifier to track this reservation.
   216  	ReservationId pulumi.StringPtrInput
   217  	// Time the reservation started.
   218  	StartTime pulumi.StringPtrInput
   219  	// State of the reserved DB instance.
   220  	State pulumi.StringPtrInput
   221  	// Map of tags to assign to the DB reservation. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level.
   222  	Tags pulumi.StringMapInput
   223  	// Map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block.
   224  	//
   225  	// Deprecated: Please use `tags` instead.
   226  	TagsAll pulumi.StringMapInput
   227  	// Hourly price charged for this reserved DB instance.
   228  	UsagePrice pulumi.Float64PtrInput
   229  }
   230  
   231  func (ReservedInstanceState) ElementType() reflect.Type {
   232  	return reflect.TypeOf((*reservedInstanceState)(nil)).Elem()
   233  }
   234  
   235  type reservedInstanceArgs struct {
   236  	// Number of instances to reserve. Default value is `1`.
   237  	InstanceCount *int `pulumi:"instanceCount"`
   238  	// ID of the Reserved DB instance offering to purchase. To determine an `offeringId`, see the `rds.getReservedInstanceOffering` data source.
   239  	//
   240  	// The following arguments are optional:
   241  	OfferingId string `pulumi:"offeringId"`
   242  	// Customer-specified identifier to track this reservation.
   243  	ReservationId *string `pulumi:"reservationId"`
   244  	// Map of tags to assign to the DB reservation. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level.
   245  	Tags map[string]string `pulumi:"tags"`
   246  }
   247  
   248  // The set of arguments for constructing a ReservedInstance resource.
   249  type ReservedInstanceArgs struct {
   250  	// Number of instances to reserve. Default value is `1`.
   251  	InstanceCount pulumi.IntPtrInput
   252  	// ID of the Reserved DB instance offering to purchase. To determine an `offeringId`, see the `rds.getReservedInstanceOffering` data source.
   253  	//
   254  	// The following arguments are optional:
   255  	OfferingId pulumi.StringInput
   256  	// Customer-specified identifier to track this reservation.
   257  	ReservationId pulumi.StringPtrInput
   258  	// Map of tags to assign to the DB reservation. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level.
   259  	Tags pulumi.StringMapInput
   260  }
   261  
   262  func (ReservedInstanceArgs) ElementType() reflect.Type {
   263  	return reflect.TypeOf((*reservedInstanceArgs)(nil)).Elem()
   264  }
   265  
   266  type ReservedInstanceInput interface {
   267  	pulumi.Input
   268  
   269  	ToReservedInstanceOutput() ReservedInstanceOutput
   270  	ToReservedInstanceOutputWithContext(ctx context.Context) ReservedInstanceOutput
   271  }
   272  
   273  func (*ReservedInstance) ElementType() reflect.Type {
   274  	return reflect.TypeOf((**ReservedInstance)(nil)).Elem()
   275  }
   276  
   277  func (i *ReservedInstance) ToReservedInstanceOutput() ReservedInstanceOutput {
   278  	return i.ToReservedInstanceOutputWithContext(context.Background())
   279  }
   280  
   281  func (i *ReservedInstance) ToReservedInstanceOutputWithContext(ctx context.Context) ReservedInstanceOutput {
   282  	return pulumi.ToOutputWithContext(ctx, i).(ReservedInstanceOutput)
   283  }
   284  
   285  // ReservedInstanceArrayInput is an input type that accepts ReservedInstanceArray and ReservedInstanceArrayOutput values.
   286  // You can construct a concrete instance of `ReservedInstanceArrayInput` via:
   287  //
   288  //	ReservedInstanceArray{ ReservedInstanceArgs{...} }
   289  type ReservedInstanceArrayInput interface {
   290  	pulumi.Input
   291  
   292  	ToReservedInstanceArrayOutput() ReservedInstanceArrayOutput
   293  	ToReservedInstanceArrayOutputWithContext(context.Context) ReservedInstanceArrayOutput
   294  }
   295  
   296  type ReservedInstanceArray []ReservedInstanceInput
   297  
   298  func (ReservedInstanceArray) ElementType() reflect.Type {
   299  	return reflect.TypeOf((*[]*ReservedInstance)(nil)).Elem()
   300  }
   301  
   302  func (i ReservedInstanceArray) ToReservedInstanceArrayOutput() ReservedInstanceArrayOutput {
   303  	return i.ToReservedInstanceArrayOutputWithContext(context.Background())
   304  }
   305  
   306  func (i ReservedInstanceArray) ToReservedInstanceArrayOutputWithContext(ctx context.Context) ReservedInstanceArrayOutput {
   307  	return pulumi.ToOutputWithContext(ctx, i).(ReservedInstanceArrayOutput)
   308  }
   309  
   310  // ReservedInstanceMapInput is an input type that accepts ReservedInstanceMap and ReservedInstanceMapOutput values.
   311  // You can construct a concrete instance of `ReservedInstanceMapInput` via:
   312  //
   313  //	ReservedInstanceMap{ "key": ReservedInstanceArgs{...} }
   314  type ReservedInstanceMapInput interface {
   315  	pulumi.Input
   316  
   317  	ToReservedInstanceMapOutput() ReservedInstanceMapOutput
   318  	ToReservedInstanceMapOutputWithContext(context.Context) ReservedInstanceMapOutput
   319  }
   320  
   321  type ReservedInstanceMap map[string]ReservedInstanceInput
   322  
   323  func (ReservedInstanceMap) ElementType() reflect.Type {
   324  	return reflect.TypeOf((*map[string]*ReservedInstance)(nil)).Elem()
   325  }
   326  
   327  func (i ReservedInstanceMap) ToReservedInstanceMapOutput() ReservedInstanceMapOutput {
   328  	return i.ToReservedInstanceMapOutputWithContext(context.Background())
   329  }
   330  
   331  func (i ReservedInstanceMap) ToReservedInstanceMapOutputWithContext(ctx context.Context) ReservedInstanceMapOutput {
   332  	return pulumi.ToOutputWithContext(ctx, i).(ReservedInstanceMapOutput)
   333  }
   334  
   335  type ReservedInstanceOutput struct{ *pulumi.OutputState }
   336  
   337  func (ReservedInstanceOutput) ElementType() reflect.Type {
   338  	return reflect.TypeOf((**ReservedInstance)(nil)).Elem()
   339  }
   340  
   341  func (o ReservedInstanceOutput) ToReservedInstanceOutput() ReservedInstanceOutput {
   342  	return o
   343  }
   344  
   345  func (o ReservedInstanceOutput) ToReservedInstanceOutputWithContext(ctx context.Context) ReservedInstanceOutput {
   346  	return o
   347  }
   348  
   349  // ARN for the reserved DB instance.
   350  func (o ReservedInstanceOutput) Arn() pulumi.StringOutput {
   351  	return o.ApplyT(func(v *ReservedInstance) pulumi.StringOutput { return v.Arn }).(pulumi.StringOutput)
   352  }
   353  
   354  // Currency code for the reserved DB instance.
   355  func (o ReservedInstanceOutput) CurrencyCode() pulumi.StringOutput {
   356  	return o.ApplyT(func(v *ReservedInstance) pulumi.StringOutput { return v.CurrencyCode }).(pulumi.StringOutput)
   357  }
   358  
   359  // DB instance class for the reserved DB instance.
   360  func (o ReservedInstanceOutput) DbInstanceClass() pulumi.StringOutput {
   361  	return o.ApplyT(func(v *ReservedInstance) pulumi.StringOutput { return v.DbInstanceClass }).(pulumi.StringOutput)
   362  }
   363  
   364  // Duration of the reservation in seconds.
   365  func (o ReservedInstanceOutput) Duration() pulumi.IntOutput {
   366  	return o.ApplyT(func(v *ReservedInstance) pulumi.IntOutput { return v.Duration }).(pulumi.IntOutput)
   367  }
   368  
   369  // Fixed price charged for this reserved DB instance.
   370  func (o ReservedInstanceOutput) FixedPrice() pulumi.Float64Output {
   371  	return o.ApplyT(func(v *ReservedInstance) pulumi.Float64Output { return v.FixedPrice }).(pulumi.Float64Output)
   372  }
   373  
   374  // Number of instances to reserve. Default value is `1`.
   375  func (o ReservedInstanceOutput) InstanceCount() pulumi.IntPtrOutput {
   376  	return o.ApplyT(func(v *ReservedInstance) pulumi.IntPtrOutput { return v.InstanceCount }).(pulumi.IntPtrOutput)
   377  }
   378  
   379  // Unique identifier for the lease associated with the reserved DB instance. Amazon Web Services Support might request the lease ID for an issue related to a reserved DB instance.
   380  func (o ReservedInstanceOutput) LeaseId() pulumi.StringOutput {
   381  	return o.ApplyT(func(v *ReservedInstance) pulumi.StringOutput { return v.LeaseId }).(pulumi.StringOutput)
   382  }
   383  
   384  // Whether the reservation applies to Multi-AZ deployments.
   385  func (o ReservedInstanceOutput) MultiAz() pulumi.BoolOutput {
   386  	return o.ApplyT(func(v *ReservedInstance) pulumi.BoolOutput { return v.MultiAz }).(pulumi.BoolOutput)
   387  }
   388  
   389  // ID of the Reserved DB instance offering to purchase. To determine an `offeringId`, see the `rds.getReservedInstanceOffering` data source.
   390  //
   391  // The following arguments are optional:
   392  func (o ReservedInstanceOutput) OfferingId() pulumi.StringOutput {
   393  	return o.ApplyT(func(v *ReservedInstance) pulumi.StringOutput { return v.OfferingId }).(pulumi.StringOutput)
   394  }
   395  
   396  // Offering type of this reserved DB instance.
   397  func (o ReservedInstanceOutput) OfferingType() pulumi.StringOutput {
   398  	return o.ApplyT(func(v *ReservedInstance) pulumi.StringOutput { return v.OfferingType }).(pulumi.StringOutput)
   399  }
   400  
   401  // Description of the reserved DB instance.
   402  func (o ReservedInstanceOutput) ProductDescription() pulumi.StringOutput {
   403  	return o.ApplyT(func(v *ReservedInstance) pulumi.StringOutput { return v.ProductDescription }).(pulumi.StringOutput)
   404  }
   405  
   406  // Recurring price charged to run this reserved DB instance.
   407  func (o ReservedInstanceOutput) RecurringCharges() ReservedInstanceRecurringChargeArrayOutput {
   408  	return o.ApplyT(func(v *ReservedInstance) ReservedInstanceRecurringChargeArrayOutput { return v.RecurringCharges }).(ReservedInstanceRecurringChargeArrayOutput)
   409  }
   410  
   411  // Customer-specified identifier to track this reservation.
   412  func (o ReservedInstanceOutput) ReservationId() pulumi.StringPtrOutput {
   413  	return o.ApplyT(func(v *ReservedInstance) pulumi.StringPtrOutput { return v.ReservationId }).(pulumi.StringPtrOutput)
   414  }
   415  
   416  // Time the reservation started.
   417  func (o ReservedInstanceOutput) StartTime() pulumi.StringOutput {
   418  	return o.ApplyT(func(v *ReservedInstance) pulumi.StringOutput { return v.StartTime }).(pulumi.StringOutput)
   419  }
   420  
   421  // State of the reserved DB instance.
   422  func (o ReservedInstanceOutput) State() pulumi.StringOutput {
   423  	return o.ApplyT(func(v *ReservedInstance) pulumi.StringOutput { return v.State }).(pulumi.StringOutput)
   424  }
   425  
   426  // Map of tags to assign to the DB reservation. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level.
   427  func (o ReservedInstanceOutput) Tags() pulumi.StringMapOutput {
   428  	return o.ApplyT(func(v *ReservedInstance) pulumi.StringMapOutput { return v.Tags }).(pulumi.StringMapOutput)
   429  }
   430  
   431  // Map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block.
   432  //
   433  // Deprecated: Please use `tags` instead.
   434  func (o ReservedInstanceOutput) TagsAll() pulumi.StringMapOutput {
   435  	return o.ApplyT(func(v *ReservedInstance) pulumi.StringMapOutput { return v.TagsAll }).(pulumi.StringMapOutput)
   436  }
   437  
   438  // Hourly price charged for this reserved DB instance.
   439  func (o ReservedInstanceOutput) UsagePrice() pulumi.Float64Output {
   440  	return o.ApplyT(func(v *ReservedInstance) pulumi.Float64Output { return v.UsagePrice }).(pulumi.Float64Output)
   441  }
   442  
   443  type ReservedInstanceArrayOutput struct{ *pulumi.OutputState }
   444  
   445  func (ReservedInstanceArrayOutput) ElementType() reflect.Type {
   446  	return reflect.TypeOf((*[]*ReservedInstance)(nil)).Elem()
   447  }
   448  
   449  func (o ReservedInstanceArrayOutput) ToReservedInstanceArrayOutput() ReservedInstanceArrayOutput {
   450  	return o
   451  }
   452  
   453  func (o ReservedInstanceArrayOutput) ToReservedInstanceArrayOutputWithContext(ctx context.Context) ReservedInstanceArrayOutput {
   454  	return o
   455  }
   456  
   457  func (o ReservedInstanceArrayOutput) Index(i pulumi.IntInput) ReservedInstanceOutput {
   458  	return pulumi.All(o, i).ApplyT(func(vs []interface{}) *ReservedInstance {
   459  		return vs[0].([]*ReservedInstance)[vs[1].(int)]
   460  	}).(ReservedInstanceOutput)
   461  }
   462  
   463  type ReservedInstanceMapOutput struct{ *pulumi.OutputState }
   464  
   465  func (ReservedInstanceMapOutput) ElementType() reflect.Type {
   466  	return reflect.TypeOf((*map[string]*ReservedInstance)(nil)).Elem()
   467  }
   468  
   469  func (o ReservedInstanceMapOutput) ToReservedInstanceMapOutput() ReservedInstanceMapOutput {
   470  	return o
   471  }
   472  
   473  func (o ReservedInstanceMapOutput) ToReservedInstanceMapOutputWithContext(ctx context.Context) ReservedInstanceMapOutput {
   474  	return o
   475  }
   476  
   477  func (o ReservedInstanceMapOutput) MapIndex(k pulumi.StringInput) ReservedInstanceOutput {
   478  	return pulumi.All(o, k).ApplyT(func(vs []interface{}) *ReservedInstance {
   479  		return vs[0].(map[string]*ReservedInstance)[vs[1].(string)]
   480  	}).(ReservedInstanceOutput)
   481  }
   482  
   483  func init() {
   484  	pulumi.RegisterInputType(reflect.TypeOf((*ReservedInstanceInput)(nil)).Elem(), &ReservedInstance{})
   485  	pulumi.RegisterInputType(reflect.TypeOf((*ReservedInstanceArrayInput)(nil)).Elem(), ReservedInstanceArray{})
   486  	pulumi.RegisterInputType(reflect.TypeOf((*ReservedInstanceMapInput)(nil)).Elem(), ReservedInstanceMap{})
   487  	pulumi.RegisterOutputType(ReservedInstanceOutput{})
   488  	pulumi.RegisterOutputType(ReservedInstanceArrayOutput{})
   489  	pulumi.RegisterOutputType(ReservedInstanceMapOutput{})
   490  }