github.com/pulumi/pulumi-aws/sdk/v6@v6.32.0/go/aws/servicecatalog/product.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 servicecatalog
     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 a Service Catalog Product.
    16  //
    17  // > **NOTE:** The user or role that uses this resources must have the `cloudformation:GetTemplate` IAM policy permission. This policy permission is required when using the `templatePhysicalId` argument.
    18  //
    19  // > A "provisioning artifact" is also referred to as a "version." A "distributor" is also referred to as a "vendor."
    20  //
    21  // ## Example Usage
    22  //
    23  // ### Basic Usage
    24  //
    25  // <!--Start PulumiCodeChooser -->
    26  // ```go
    27  // package main
    28  //
    29  // import (
    30  //
    31  //	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/servicecatalog"
    32  //	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    33  //
    34  // )
    35  //
    36  //	func main() {
    37  //		pulumi.Run(func(ctx *pulumi.Context) error {
    38  //			_, err := servicecatalog.NewProduct(ctx, "example", &servicecatalog.ProductArgs{
    39  //				Name:  pulumi.String("example"),
    40  //				Owner: pulumi.String("example-owner"),
    41  //				Type:  pulumi.String("CLOUD_FORMATION_TEMPLATE"),
    42  //				ProvisioningArtifactParameters: &servicecatalog.ProductProvisioningArtifactParametersArgs{
    43  //					TemplateUrl: pulumi.String("https://s3.amazonaws.com/cf-templates-ozkq9d3hgiq2-us-east-1/temp1.json"),
    44  //				},
    45  //				Tags: pulumi.StringMap{
    46  //					"foo": pulumi.String("bar"),
    47  //				},
    48  //			})
    49  //			if err != nil {
    50  //				return err
    51  //			}
    52  //			return nil
    53  //		})
    54  //	}
    55  //
    56  // ```
    57  // <!--End PulumiCodeChooser -->
    58  //
    59  // ## Import
    60  //
    61  // Using `pulumi import`, import `aws_servicecatalog_product` using the product ID. For example:
    62  //
    63  // ```sh
    64  // $ pulumi import aws:servicecatalog/product:Product example prod-dnigbtea24ste
    65  // ```
    66  type Product struct {
    67  	pulumi.CustomResourceState
    68  
    69  	// Language code. Valid values: `en` (English), `jp` (Japanese), `zh` (Chinese). Default value is `en`.
    70  	AcceptLanguage pulumi.StringPtrOutput `pulumi:"acceptLanguage"`
    71  	// ARN of the product.
    72  	Arn pulumi.StringOutput `pulumi:"arn"`
    73  	// Time when the product was created.
    74  	CreatedTime pulumi.StringOutput `pulumi:"createdTime"`
    75  	// Description of the product.
    76  	Description pulumi.StringOutput `pulumi:"description"`
    77  	// Distributor (i.e., vendor) of the product.
    78  	Distributor pulumi.StringOutput `pulumi:"distributor"`
    79  	// Whether the product has a default path. If the product does not have a default path, call `ListLaunchPaths` to disambiguate between paths.  Otherwise, `ListLaunchPaths` is not required, and the output of ProductViewSummary can be used directly with `DescribeProvisioningParameters`.
    80  	HasDefaultPath pulumi.BoolOutput `pulumi:"hasDefaultPath"`
    81  	// Name of the product.
    82  	Name pulumi.StringOutput `pulumi:"name"`
    83  	// Owner of the product.
    84  	Owner pulumi.StringOutput `pulumi:"owner"`
    85  	// Configuration block for provisioning artifact (i.e., version) parameters. Detailed below.
    86  	ProvisioningArtifactParameters ProductProvisioningArtifactParametersOutput `pulumi:"provisioningArtifactParameters"`
    87  	// Status of the product.
    88  	Status pulumi.StringOutput `pulumi:"status"`
    89  	// Support information about the product.
    90  	SupportDescription pulumi.StringOutput `pulumi:"supportDescription"`
    91  	// Contact email for product support.
    92  	SupportEmail pulumi.StringOutput `pulumi:"supportEmail"`
    93  	// Contact URL for product support.
    94  	SupportUrl pulumi.StringOutput `pulumi:"supportUrl"`
    95  	// Tags to apply to the product. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level.
    96  	Tags pulumi.StringMapOutput `pulumi:"tags"`
    97  	// A map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block.
    98  	//
    99  	// Deprecated: Please use `tags` instead.
   100  	TagsAll pulumi.StringMapOutput `pulumi:"tagsAll"`
   101  	// Type of product. See [AWS Docs](https://docs.aws.amazon.com/servicecatalog/latest/dg/API_CreateProduct.html#API_CreateProduct_RequestSyntax) for valid list of values.
   102  	//
   103  	// The following arguments are optional:
   104  	Type pulumi.StringOutput `pulumi:"type"`
   105  }
   106  
   107  // NewProduct registers a new resource with the given unique name, arguments, and options.
   108  func NewProduct(ctx *pulumi.Context,
   109  	name string, args *ProductArgs, opts ...pulumi.ResourceOption) (*Product, error) {
   110  	if args == nil {
   111  		return nil, errors.New("missing one or more required arguments")
   112  	}
   113  
   114  	if args.Owner == nil {
   115  		return nil, errors.New("invalid value for required argument 'Owner'")
   116  	}
   117  	if args.ProvisioningArtifactParameters == nil {
   118  		return nil, errors.New("invalid value for required argument 'ProvisioningArtifactParameters'")
   119  	}
   120  	if args.Type == nil {
   121  		return nil, errors.New("invalid value for required argument 'Type'")
   122  	}
   123  	opts = internal.PkgResourceDefaultOpts(opts)
   124  	var resource Product
   125  	err := ctx.RegisterResource("aws:servicecatalog/product:Product", name, args, &resource, opts...)
   126  	if err != nil {
   127  		return nil, err
   128  	}
   129  	return &resource, nil
   130  }
   131  
   132  // GetProduct gets an existing Product 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 GetProduct(ctx *pulumi.Context,
   135  	name string, id pulumi.IDInput, state *ProductState, opts ...pulumi.ResourceOption) (*Product, error) {
   136  	var resource Product
   137  	err := ctx.ReadResource("aws:servicecatalog/product:Product", 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 Product resources.
   145  type productState struct {
   146  	// Language code. Valid values: `en` (English), `jp` (Japanese), `zh` (Chinese). Default value is `en`.
   147  	AcceptLanguage *string `pulumi:"acceptLanguage"`
   148  	// ARN of the product.
   149  	Arn *string `pulumi:"arn"`
   150  	// Time when the product was created.
   151  	CreatedTime *string `pulumi:"createdTime"`
   152  	// Description of the product.
   153  	Description *string `pulumi:"description"`
   154  	// Distributor (i.e., vendor) of the product.
   155  	Distributor *string `pulumi:"distributor"`
   156  	// Whether the product has a default path. If the product does not have a default path, call `ListLaunchPaths` to disambiguate between paths.  Otherwise, `ListLaunchPaths` is not required, and the output of ProductViewSummary can be used directly with `DescribeProvisioningParameters`.
   157  	HasDefaultPath *bool `pulumi:"hasDefaultPath"`
   158  	// Name of the product.
   159  	Name *string `pulumi:"name"`
   160  	// Owner of the product.
   161  	Owner *string `pulumi:"owner"`
   162  	// Configuration block for provisioning artifact (i.e., version) parameters. Detailed below.
   163  	ProvisioningArtifactParameters *ProductProvisioningArtifactParameters `pulumi:"provisioningArtifactParameters"`
   164  	// Status of the product.
   165  	Status *string `pulumi:"status"`
   166  	// Support information about the product.
   167  	SupportDescription *string `pulumi:"supportDescription"`
   168  	// Contact email for product support.
   169  	SupportEmail *string `pulumi:"supportEmail"`
   170  	// Contact URL for product support.
   171  	SupportUrl *string `pulumi:"supportUrl"`
   172  	// Tags to apply to the product. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level.
   173  	Tags map[string]string `pulumi:"tags"`
   174  	// A map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block.
   175  	//
   176  	// Deprecated: Please use `tags` instead.
   177  	TagsAll map[string]string `pulumi:"tagsAll"`
   178  	// Type of product. See [AWS Docs](https://docs.aws.amazon.com/servicecatalog/latest/dg/API_CreateProduct.html#API_CreateProduct_RequestSyntax) for valid list of values.
   179  	//
   180  	// The following arguments are optional:
   181  	Type *string `pulumi:"type"`
   182  }
   183  
   184  type ProductState struct {
   185  	// Language code. Valid values: `en` (English), `jp` (Japanese), `zh` (Chinese). Default value is `en`.
   186  	AcceptLanguage pulumi.StringPtrInput
   187  	// ARN of the product.
   188  	Arn pulumi.StringPtrInput
   189  	// Time when the product was created.
   190  	CreatedTime pulumi.StringPtrInput
   191  	// Description of the product.
   192  	Description pulumi.StringPtrInput
   193  	// Distributor (i.e., vendor) of the product.
   194  	Distributor pulumi.StringPtrInput
   195  	// Whether the product has a default path. If the product does not have a default path, call `ListLaunchPaths` to disambiguate between paths.  Otherwise, `ListLaunchPaths` is not required, and the output of ProductViewSummary can be used directly with `DescribeProvisioningParameters`.
   196  	HasDefaultPath pulumi.BoolPtrInput
   197  	// Name of the product.
   198  	Name pulumi.StringPtrInput
   199  	// Owner of the product.
   200  	Owner pulumi.StringPtrInput
   201  	// Configuration block for provisioning artifact (i.e., version) parameters. Detailed below.
   202  	ProvisioningArtifactParameters ProductProvisioningArtifactParametersPtrInput
   203  	// Status of the product.
   204  	Status pulumi.StringPtrInput
   205  	// Support information about the product.
   206  	SupportDescription pulumi.StringPtrInput
   207  	// Contact email for product support.
   208  	SupportEmail pulumi.StringPtrInput
   209  	// Contact URL for product support.
   210  	SupportUrl pulumi.StringPtrInput
   211  	// Tags to apply to the product. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level.
   212  	Tags pulumi.StringMapInput
   213  	// A map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block.
   214  	//
   215  	// Deprecated: Please use `tags` instead.
   216  	TagsAll pulumi.StringMapInput
   217  	// Type of product. See [AWS Docs](https://docs.aws.amazon.com/servicecatalog/latest/dg/API_CreateProduct.html#API_CreateProduct_RequestSyntax) for valid list of values.
   218  	//
   219  	// The following arguments are optional:
   220  	Type pulumi.StringPtrInput
   221  }
   222  
   223  func (ProductState) ElementType() reflect.Type {
   224  	return reflect.TypeOf((*productState)(nil)).Elem()
   225  }
   226  
   227  type productArgs struct {
   228  	// Language code. Valid values: `en` (English), `jp` (Japanese), `zh` (Chinese). Default value is `en`.
   229  	AcceptLanguage *string `pulumi:"acceptLanguage"`
   230  	// Description of the product.
   231  	Description *string `pulumi:"description"`
   232  	// Distributor (i.e., vendor) of the product.
   233  	Distributor *string `pulumi:"distributor"`
   234  	// Name of the product.
   235  	Name *string `pulumi:"name"`
   236  	// Owner of the product.
   237  	Owner string `pulumi:"owner"`
   238  	// Configuration block for provisioning artifact (i.e., version) parameters. Detailed below.
   239  	ProvisioningArtifactParameters ProductProvisioningArtifactParameters `pulumi:"provisioningArtifactParameters"`
   240  	// Support information about the product.
   241  	SupportDescription *string `pulumi:"supportDescription"`
   242  	// Contact email for product support.
   243  	SupportEmail *string `pulumi:"supportEmail"`
   244  	// Contact URL for product support.
   245  	SupportUrl *string `pulumi:"supportUrl"`
   246  	// Tags to apply to the product. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level.
   247  	Tags map[string]string `pulumi:"tags"`
   248  	// Type of product. See [AWS Docs](https://docs.aws.amazon.com/servicecatalog/latest/dg/API_CreateProduct.html#API_CreateProduct_RequestSyntax) for valid list of values.
   249  	//
   250  	// The following arguments are optional:
   251  	Type string `pulumi:"type"`
   252  }
   253  
   254  // The set of arguments for constructing a Product resource.
   255  type ProductArgs struct {
   256  	// Language code. Valid values: `en` (English), `jp` (Japanese), `zh` (Chinese). Default value is `en`.
   257  	AcceptLanguage pulumi.StringPtrInput
   258  	// Description of the product.
   259  	Description pulumi.StringPtrInput
   260  	// Distributor (i.e., vendor) of the product.
   261  	Distributor pulumi.StringPtrInput
   262  	// Name of the product.
   263  	Name pulumi.StringPtrInput
   264  	// Owner of the product.
   265  	Owner pulumi.StringInput
   266  	// Configuration block for provisioning artifact (i.e., version) parameters. Detailed below.
   267  	ProvisioningArtifactParameters ProductProvisioningArtifactParametersInput
   268  	// Support information about the product.
   269  	SupportDescription pulumi.StringPtrInput
   270  	// Contact email for product support.
   271  	SupportEmail pulumi.StringPtrInput
   272  	// Contact URL for product support.
   273  	SupportUrl pulumi.StringPtrInput
   274  	// Tags to apply to the product. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level.
   275  	Tags pulumi.StringMapInput
   276  	// Type of product. See [AWS Docs](https://docs.aws.amazon.com/servicecatalog/latest/dg/API_CreateProduct.html#API_CreateProduct_RequestSyntax) for valid list of values.
   277  	//
   278  	// The following arguments are optional:
   279  	Type pulumi.StringInput
   280  }
   281  
   282  func (ProductArgs) ElementType() reflect.Type {
   283  	return reflect.TypeOf((*productArgs)(nil)).Elem()
   284  }
   285  
   286  type ProductInput interface {
   287  	pulumi.Input
   288  
   289  	ToProductOutput() ProductOutput
   290  	ToProductOutputWithContext(ctx context.Context) ProductOutput
   291  }
   292  
   293  func (*Product) ElementType() reflect.Type {
   294  	return reflect.TypeOf((**Product)(nil)).Elem()
   295  }
   296  
   297  func (i *Product) ToProductOutput() ProductOutput {
   298  	return i.ToProductOutputWithContext(context.Background())
   299  }
   300  
   301  func (i *Product) ToProductOutputWithContext(ctx context.Context) ProductOutput {
   302  	return pulumi.ToOutputWithContext(ctx, i).(ProductOutput)
   303  }
   304  
   305  // ProductArrayInput is an input type that accepts ProductArray and ProductArrayOutput values.
   306  // You can construct a concrete instance of `ProductArrayInput` via:
   307  //
   308  //	ProductArray{ ProductArgs{...} }
   309  type ProductArrayInput interface {
   310  	pulumi.Input
   311  
   312  	ToProductArrayOutput() ProductArrayOutput
   313  	ToProductArrayOutputWithContext(context.Context) ProductArrayOutput
   314  }
   315  
   316  type ProductArray []ProductInput
   317  
   318  func (ProductArray) ElementType() reflect.Type {
   319  	return reflect.TypeOf((*[]*Product)(nil)).Elem()
   320  }
   321  
   322  func (i ProductArray) ToProductArrayOutput() ProductArrayOutput {
   323  	return i.ToProductArrayOutputWithContext(context.Background())
   324  }
   325  
   326  func (i ProductArray) ToProductArrayOutputWithContext(ctx context.Context) ProductArrayOutput {
   327  	return pulumi.ToOutputWithContext(ctx, i).(ProductArrayOutput)
   328  }
   329  
   330  // ProductMapInput is an input type that accepts ProductMap and ProductMapOutput values.
   331  // You can construct a concrete instance of `ProductMapInput` via:
   332  //
   333  //	ProductMap{ "key": ProductArgs{...} }
   334  type ProductMapInput interface {
   335  	pulumi.Input
   336  
   337  	ToProductMapOutput() ProductMapOutput
   338  	ToProductMapOutputWithContext(context.Context) ProductMapOutput
   339  }
   340  
   341  type ProductMap map[string]ProductInput
   342  
   343  func (ProductMap) ElementType() reflect.Type {
   344  	return reflect.TypeOf((*map[string]*Product)(nil)).Elem()
   345  }
   346  
   347  func (i ProductMap) ToProductMapOutput() ProductMapOutput {
   348  	return i.ToProductMapOutputWithContext(context.Background())
   349  }
   350  
   351  func (i ProductMap) ToProductMapOutputWithContext(ctx context.Context) ProductMapOutput {
   352  	return pulumi.ToOutputWithContext(ctx, i).(ProductMapOutput)
   353  }
   354  
   355  type ProductOutput struct{ *pulumi.OutputState }
   356  
   357  func (ProductOutput) ElementType() reflect.Type {
   358  	return reflect.TypeOf((**Product)(nil)).Elem()
   359  }
   360  
   361  func (o ProductOutput) ToProductOutput() ProductOutput {
   362  	return o
   363  }
   364  
   365  func (o ProductOutput) ToProductOutputWithContext(ctx context.Context) ProductOutput {
   366  	return o
   367  }
   368  
   369  // Language code. Valid values: `en` (English), `jp` (Japanese), `zh` (Chinese). Default value is `en`.
   370  func (o ProductOutput) AcceptLanguage() pulumi.StringPtrOutput {
   371  	return o.ApplyT(func(v *Product) pulumi.StringPtrOutput { return v.AcceptLanguage }).(pulumi.StringPtrOutput)
   372  }
   373  
   374  // ARN of the product.
   375  func (o ProductOutput) Arn() pulumi.StringOutput {
   376  	return o.ApplyT(func(v *Product) pulumi.StringOutput { return v.Arn }).(pulumi.StringOutput)
   377  }
   378  
   379  // Time when the product was created.
   380  func (o ProductOutput) CreatedTime() pulumi.StringOutput {
   381  	return o.ApplyT(func(v *Product) pulumi.StringOutput { return v.CreatedTime }).(pulumi.StringOutput)
   382  }
   383  
   384  // Description of the product.
   385  func (o ProductOutput) Description() pulumi.StringOutput {
   386  	return o.ApplyT(func(v *Product) pulumi.StringOutput { return v.Description }).(pulumi.StringOutput)
   387  }
   388  
   389  // Distributor (i.e., vendor) of the product.
   390  func (o ProductOutput) Distributor() pulumi.StringOutput {
   391  	return o.ApplyT(func(v *Product) pulumi.StringOutput { return v.Distributor }).(pulumi.StringOutput)
   392  }
   393  
   394  // Whether the product has a default path. If the product does not have a default path, call `ListLaunchPaths` to disambiguate between paths.  Otherwise, `ListLaunchPaths` is not required, and the output of ProductViewSummary can be used directly with `DescribeProvisioningParameters`.
   395  func (o ProductOutput) HasDefaultPath() pulumi.BoolOutput {
   396  	return o.ApplyT(func(v *Product) pulumi.BoolOutput { return v.HasDefaultPath }).(pulumi.BoolOutput)
   397  }
   398  
   399  // Name of the product.
   400  func (o ProductOutput) Name() pulumi.StringOutput {
   401  	return o.ApplyT(func(v *Product) pulumi.StringOutput { return v.Name }).(pulumi.StringOutput)
   402  }
   403  
   404  // Owner of the product.
   405  func (o ProductOutput) Owner() pulumi.StringOutput {
   406  	return o.ApplyT(func(v *Product) pulumi.StringOutput { return v.Owner }).(pulumi.StringOutput)
   407  }
   408  
   409  // Configuration block for provisioning artifact (i.e., version) parameters. Detailed below.
   410  func (o ProductOutput) ProvisioningArtifactParameters() ProductProvisioningArtifactParametersOutput {
   411  	return o.ApplyT(func(v *Product) ProductProvisioningArtifactParametersOutput { return v.ProvisioningArtifactParameters }).(ProductProvisioningArtifactParametersOutput)
   412  }
   413  
   414  // Status of the product.
   415  func (o ProductOutput) Status() pulumi.StringOutput {
   416  	return o.ApplyT(func(v *Product) pulumi.StringOutput { return v.Status }).(pulumi.StringOutput)
   417  }
   418  
   419  // Support information about the product.
   420  func (o ProductOutput) SupportDescription() pulumi.StringOutput {
   421  	return o.ApplyT(func(v *Product) pulumi.StringOutput { return v.SupportDescription }).(pulumi.StringOutput)
   422  }
   423  
   424  // Contact email for product support.
   425  func (o ProductOutput) SupportEmail() pulumi.StringOutput {
   426  	return o.ApplyT(func(v *Product) pulumi.StringOutput { return v.SupportEmail }).(pulumi.StringOutput)
   427  }
   428  
   429  // Contact URL for product support.
   430  func (o ProductOutput) SupportUrl() pulumi.StringOutput {
   431  	return o.ApplyT(func(v *Product) pulumi.StringOutput { return v.SupportUrl }).(pulumi.StringOutput)
   432  }
   433  
   434  // Tags to apply to the product. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level.
   435  func (o ProductOutput) Tags() pulumi.StringMapOutput {
   436  	return o.ApplyT(func(v *Product) pulumi.StringMapOutput { return v.Tags }).(pulumi.StringMapOutput)
   437  }
   438  
   439  // A map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block.
   440  //
   441  // Deprecated: Please use `tags` instead.
   442  func (o ProductOutput) TagsAll() pulumi.StringMapOutput {
   443  	return o.ApplyT(func(v *Product) pulumi.StringMapOutput { return v.TagsAll }).(pulumi.StringMapOutput)
   444  }
   445  
   446  // Type of product. See [AWS Docs](https://docs.aws.amazon.com/servicecatalog/latest/dg/API_CreateProduct.html#API_CreateProduct_RequestSyntax) for valid list of values.
   447  //
   448  // The following arguments are optional:
   449  func (o ProductOutput) Type() pulumi.StringOutput {
   450  	return o.ApplyT(func(v *Product) pulumi.StringOutput { return v.Type }).(pulumi.StringOutput)
   451  }
   452  
   453  type ProductArrayOutput struct{ *pulumi.OutputState }
   454  
   455  func (ProductArrayOutput) ElementType() reflect.Type {
   456  	return reflect.TypeOf((*[]*Product)(nil)).Elem()
   457  }
   458  
   459  func (o ProductArrayOutput) ToProductArrayOutput() ProductArrayOutput {
   460  	return o
   461  }
   462  
   463  func (o ProductArrayOutput) ToProductArrayOutputWithContext(ctx context.Context) ProductArrayOutput {
   464  	return o
   465  }
   466  
   467  func (o ProductArrayOutput) Index(i pulumi.IntInput) ProductOutput {
   468  	return pulumi.All(o, i).ApplyT(func(vs []interface{}) *Product {
   469  		return vs[0].([]*Product)[vs[1].(int)]
   470  	}).(ProductOutput)
   471  }
   472  
   473  type ProductMapOutput struct{ *pulumi.OutputState }
   474  
   475  func (ProductMapOutput) ElementType() reflect.Type {
   476  	return reflect.TypeOf((*map[string]*Product)(nil)).Elem()
   477  }
   478  
   479  func (o ProductMapOutput) ToProductMapOutput() ProductMapOutput {
   480  	return o
   481  }
   482  
   483  func (o ProductMapOutput) ToProductMapOutputWithContext(ctx context.Context) ProductMapOutput {
   484  	return o
   485  }
   486  
   487  func (o ProductMapOutput) MapIndex(k pulumi.StringInput) ProductOutput {
   488  	return pulumi.All(o, k).ApplyT(func(vs []interface{}) *Product {
   489  		return vs[0].(map[string]*Product)[vs[1].(string)]
   490  	}).(ProductOutput)
   491  }
   492  
   493  func init() {
   494  	pulumi.RegisterInputType(reflect.TypeOf((*ProductInput)(nil)).Elem(), &Product{})
   495  	pulumi.RegisterInputType(reflect.TypeOf((*ProductArrayInput)(nil)).Elem(), ProductArray{})
   496  	pulumi.RegisterInputType(reflect.TypeOf((*ProductMapInput)(nil)).Elem(), ProductMap{})
   497  	pulumi.RegisterOutputType(ProductOutput{})
   498  	pulumi.RegisterOutputType(ProductArrayOutput{})
   499  	pulumi.RegisterOutputType(ProductMapOutput{})
   500  }