pulumi/tests/testdata/codegen/secrets/go/mypkg/resource.go

207 lines
6.2 KiB
Go
Raw Permalink Normal View History

// Code generated by test DO NOT EDIT.
// *** WARNING: Do not edit by hand unless you're certain you know what you are doing! ***
package mypkg
import (
"context"
"reflect"
"errors"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
"github.com/pulumi/pulumi/sdk/v3/go/pulumix"
2023-06-14 16:34:49 +00:00
"secrets/mypkg/internal"
)
type Resource struct {
pulumi.CustomResourceState
Config ConfigOutput `pulumi:"config"`
ConfigArray ConfigArrayOutput `pulumi:"configArray"`
ConfigMap ConfigMapOutput `pulumi:"configMap"`
Foo pulumi.StringOutput `pulumi:"foo"`
FooArray pulumi.StringArrayOutput `pulumi:"fooArray"`
FooMap pulumi.StringMapOutput `pulumi:"fooMap"`
}
// NewResource registers a new resource with the given unique name, arguments, and options.
func NewResource(ctx *pulumi.Context,
name string, args *ResourceArgs, opts ...pulumi.ResourceOption) (*Resource, error) {
if args == nil {
return nil, errors.New("missing one or more required arguments")
}
if args.Config == nil {
return nil, errors.New("invalid value for required argument 'Config'")
}
if args.ConfigArray == nil {
return nil, errors.New("invalid value for required argument 'ConfigArray'")
}
if args.ConfigMap == nil {
return nil, errors.New("invalid value for required argument 'ConfigMap'")
}
if args.Foo == nil {
return nil, errors.New("invalid value for required argument 'Foo'")
}
if args.FooArray == nil {
return nil, errors.New("invalid value for required argument 'FooArray'")
}
if args.FooMap == nil {
return nil, errors.New("invalid value for required argument 'FooMap'")
}
if args.Config != nil {
fix(sdkgen/go): illegal cast in resource constructors when secret-wrapping input arguments Codegen for wrapping input properties as secrets performed an incorrect cast, as seen in Pulumi's AWS classic SDK. Using the sample program and the resource constructor described in #11664 as our test case, from `pulumi-aws/sdk/v5/go/aws/secretmanager/secretVersion.go`: ```go func NewSecretVersion(ctx *pulumi.Context, name string, args *SecretVersionArgs, opts ...pulumi.ResourceOption) (*SecretVersion, error) { if args == nil { return nil, errors.New("missing one or more required arguments") } if args.SecretId == nil { return nil, errors.New("invalid value for required argument 'SecretId'") } if args.SecretBinary != nil { 82: args.SecretBinary = pulumi.ToSecret(args.SecretBinary).(pulumi.StringPtrOutput) } if args.SecretString != nil { 85: args.SecretString = pulumi.ToSecret(args.SecretString).(pulumi.StringPtrOutput) } ``` `args.SecretBinary` is of type `pulumi.StringPtrInput` and `pulumi.ToSecret` returns `pulumi.Output` returns its input as an Output-wrapped value marked secret. As `StringPtrInput` is an interface accepting multiple input types, the return value would be either `pulumi.StringOutput` `pulumi.StringPtrOutput`. These are both concrete types, and casting to the incorrect one would panic. Fortunately we can cast back to the arg's type, as verified by building the new codegen and testing the Pulumi program in #11664. This should handle regular inputs and plain inputs. The new codegen below converts an input type `T` to `pulumi.Output`, then casts back to `T`. ```go func NewSecretVersion(ctx *pulumi.Context, // ... if args.SecretBinary != nil { 82: args.SecretBinary = pulumi.ToSecret(args.SecretBinary).(pulumi.StringPtrInput) } if args.SecretString != nil { 85: args.SecretString = pulumi.ToSecret(args.SecretString).(pulumi.StringPtrInput) } ```
2022-12-16 23:39:54 +00:00
args.Config = pulumi.ToSecret(args.Config).(ConfigInput)
}
if args.ConfigArray != nil {
fix(sdkgen/go): illegal cast in resource constructors when secret-wrapping input arguments Codegen for wrapping input properties as secrets performed an incorrect cast, as seen in Pulumi's AWS classic SDK. Using the sample program and the resource constructor described in #11664 as our test case, from `pulumi-aws/sdk/v5/go/aws/secretmanager/secretVersion.go`: ```go func NewSecretVersion(ctx *pulumi.Context, name string, args *SecretVersionArgs, opts ...pulumi.ResourceOption) (*SecretVersion, error) { if args == nil { return nil, errors.New("missing one or more required arguments") } if args.SecretId == nil { return nil, errors.New("invalid value for required argument 'SecretId'") } if args.SecretBinary != nil { 82: args.SecretBinary = pulumi.ToSecret(args.SecretBinary).(pulumi.StringPtrOutput) } if args.SecretString != nil { 85: args.SecretString = pulumi.ToSecret(args.SecretString).(pulumi.StringPtrOutput) } ``` `args.SecretBinary` is of type `pulumi.StringPtrInput` and `pulumi.ToSecret` returns `pulumi.Output` returns its input as an Output-wrapped value marked secret. As `StringPtrInput` is an interface accepting multiple input types, the return value would be either `pulumi.StringOutput` `pulumi.StringPtrOutput`. These are both concrete types, and casting to the incorrect one would panic. Fortunately we can cast back to the arg's type, as verified by building the new codegen and testing the Pulumi program in #11664. This should handle regular inputs and plain inputs. The new codegen below converts an input type `T` to `pulumi.Output`, then casts back to `T`. ```go func NewSecretVersion(ctx *pulumi.Context, // ... if args.SecretBinary != nil { 82: args.SecretBinary = pulumi.ToSecret(args.SecretBinary).(pulumi.StringPtrInput) } if args.SecretString != nil { 85: args.SecretString = pulumi.ToSecret(args.SecretString).(pulumi.StringPtrInput) } ```
2022-12-16 23:39:54 +00:00
args.ConfigArray = pulumi.ToSecret(args.ConfigArray).(ConfigArrayInput)
}
if args.ConfigMap != nil {
fix(sdkgen/go): illegal cast in resource constructors when secret-wrapping input arguments Codegen for wrapping input properties as secrets performed an incorrect cast, as seen in Pulumi's AWS classic SDK. Using the sample program and the resource constructor described in #11664 as our test case, from `pulumi-aws/sdk/v5/go/aws/secretmanager/secretVersion.go`: ```go func NewSecretVersion(ctx *pulumi.Context, name string, args *SecretVersionArgs, opts ...pulumi.ResourceOption) (*SecretVersion, error) { if args == nil { return nil, errors.New("missing one or more required arguments") } if args.SecretId == nil { return nil, errors.New("invalid value for required argument 'SecretId'") } if args.SecretBinary != nil { 82: args.SecretBinary = pulumi.ToSecret(args.SecretBinary).(pulumi.StringPtrOutput) } if args.SecretString != nil { 85: args.SecretString = pulumi.ToSecret(args.SecretString).(pulumi.StringPtrOutput) } ``` `args.SecretBinary` is of type `pulumi.StringPtrInput` and `pulumi.ToSecret` returns `pulumi.Output` returns its input as an Output-wrapped value marked secret. As `StringPtrInput` is an interface accepting multiple input types, the return value would be either `pulumi.StringOutput` `pulumi.StringPtrOutput`. These are both concrete types, and casting to the incorrect one would panic. Fortunately we can cast back to the arg's type, as verified by building the new codegen and testing the Pulumi program in #11664. This should handle regular inputs and plain inputs. The new codegen below converts an input type `T` to `pulumi.Output`, then casts back to `T`. ```go func NewSecretVersion(ctx *pulumi.Context, // ... if args.SecretBinary != nil { 82: args.SecretBinary = pulumi.ToSecret(args.SecretBinary).(pulumi.StringPtrInput) } if args.SecretString != nil { 85: args.SecretString = pulumi.ToSecret(args.SecretString).(pulumi.StringPtrInput) } ```
2022-12-16 23:39:54 +00:00
args.ConfigMap = pulumi.ToSecret(args.ConfigMap).(ConfigMapInput)
}
if args.Foo != nil {
fix(sdkgen/go): illegal cast in resource constructors when secret-wrapping input arguments Codegen for wrapping input properties as secrets performed an incorrect cast, as seen in Pulumi's AWS classic SDK. Using the sample program and the resource constructor described in #11664 as our test case, from `pulumi-aws/sdk/v5/go/aws/secretmanager/secretVersion.go`: ```go func NewSecretVersion(ctx *pulumi.Context, name string, args *SecretVersionArgs, opts ...pulumi.ResourceOption) (*SecretVersion, error) { if args == nil { return nil, errors.New("missing one or more required arguments") } if args.SecretId == nil { return nil, errors.New("invalid value for required argument 'SecretId'") } if args.SecretBinary != nil { 82: args.SecretBinary = pulumi.ToSecret(args.SecretBinary).(pulumi.StringPtrOutput) } if args.SecretString != nil { 85: args.SecretString = pulumi.ToSecret(args.SecretString).(pulumi.StringPtrOutput) } ``` `args.SecretBinary` is of type `pulumi.StringPtrInput` and `pulumi.ToSecret` returns `pulumi.Output` returns its input as an Output-wrapped value marked secret. As `StringPtrInput` is an interface accepting multiple input types, the return value would be either `pulumi.StringOutput` `pulumi.StringPtrOutput`. These are both concrete types, and casting to the incorrect one would panic. Fortunately we can cast back to the arg's type, as verified by building the new codegen and testing the Pulumi program in #11664. This should handle regular inputs and plain inputs. The new codegen below converts an input type `T` to `pulumi.Output`, then casts back to `T`. ```go func NewSecretVersion(ctx *pulumi.Context, // ... if args.SecretBinary != nil { 82: args.SecretBinary = pulumi.ToSecret(args.SecretBinary).(pulumi.StringPtrInput) } if args.SecretString != nil { 85: args.SecretString = pulumi.ToSecret(args.SecretString).(pulumi.StringPtrInput) } ```
2022-12-16 23:39:54 +00:00
args.Foo = pulumi.ToSecret(args.Foo).(pulumi.StringInput)
}
if args.FooArray != nil {
fix(sdkgen/go): illegal cast in resource constructors when secret-wrapping input arguments Codegen for wrapping input properties as secrets performed an incorrect cast, as seen in Pulumi's AWS classic SDK. Using the sample program and the resource constructor described in #11664 as our test case, from `pulumi-aws/sdk/v5/go/aws/secretmanager/secretVersion.go`: ```go func NewSecretVersion(ctx *pulumi.Context, name string, args *SecretVersionArgs, opts ...pulumi.ResourceOption) (*SecretVersion, error) { if args == nil { return nil, errors.New("missing one or more required arguments") } if args.SecretId == nil { return nil, errors.New("invalid value for required argument 'SecretId'") } if args.SecretBinary != nil { 82: args.SecretBinary = pulumi.ToSecret(args.SecretBinary).(pulumi.StringPtrOutput) } if args.SecretString != nil { 85: args.SecretString = pulumi.ToSecret(args.SecretString).(pulumi.StringPtrOutput) } ``` `args.SecretBinary` is of type `pulumi.StringPtrInput` and `pulumi.ToSecret` returns `pulumi.Output` returns its input as an Output-wrapped value marked secret. As `StringPtrInput` is an interface accepting multiple input types, the return value would be either `pulumi.StringOutput` `pulumi.StringPtrOutput`. These are both concrete types, and casting to the incorrect one would panic. Fortunately we can cast back to the arg's type, as verified by building the new codegen and testing the Pulumi program in #11664. This should handle regular inputs and plain inputs. The new codegen below converts an input type `T` to `pulumi.Output`, then casts back to `T`. ```go func NewSecretVersion(ctx *pulumi.Context, // ... if args.SecretBinary != nil { 82: args.SecretBinary = pulumi.ToSecret(args.SecretBinary).(pulumi.StringPtrInput) } if args.SecretString != nil { 85: args.SecretString = pulumi.ToSecret(args.SecretString).(pulumi.StringPtrInput) } ```
2022-12-16 23:39:54 +00:00
args.FooArray = pulumi.ToSecret(args.FooArray).(pulumi.StringArrayInput)
}
if args.FooMap != nil {
fix(sdkgen/go): illegal cast in resource constructors when secret-wrapping input arguments Codegen for wrapping input properties as secrets performed an incorrect cast, as seen in Pulumi's AWS classic SDK. Using the sample program and the resource constructor described in #11664 as our test case, from `pulumi-aws/sdk/v5/go/aws/secretmanager/secretVersion.go`: ```go func NewSecretVersion(ctx *pulumi.Context, name string, args *SecretVersionArgs, opts ...pulumi.ResourceOption) (*SecretVersion, error) { if args == nil { return nil, errors.New("missing one or more required arguments") } if args.SecretId == nil { return nil, errors.New("invalid value for required argument 'SecretId'") } if args.SecretBinary != nil { 82: args.SecretBinary = pulumi.ToSecret(args.SecretBinary).(pulumi.StringPtrOutput) } if args.SecretString != nil { 85: args.SecretString = pulumi.ToSecret(args.SecretString).(pulumi.StringPtrOutput) } ``` `args.SecretBinary` is of type `pulumi.StringPtrInput` and `pulumi.ToSecret` returns `pulumi.Output` returns its input as an Output-wrapped value marked secret. As `StringPtrInput` is an interface accepting multiple input types, the return value would be either `pulumi.StringOutput` `pulumi.StringPtrOutput`. These are both concrete types, and casting to the incorrect one would panic. Fortunately we can cast back to the arg's type, as verified by building the new codegen and testing the Pulumi program in #11664. This should handle regular inputs and plain inputs. The new codegen below converts an input type `T` to `pulumi.Output`, then casts back to `T`. ```go func NewSecretVersion(ctx *pulumi.Context, // ... if args.SecretBinary != nil { 82: args.SecretBinary = pulumi.ToSecret(args.SecretBinary).(pulumi.StringPtrInput) } if args.SecretString != nil { 85: args.SecretString = pulumi.ToSecret(args.SecretString).(pulumi.StringPtrInput) } ```
2022-12-16 23:39:54 +00:00
args.FooMap = pulumi.ToSecret(args.FooMap).(pulumi.StringMapInput)
}
secrets := pulumi.AdditionalSecretOutputs([]string{
"config",
"configArray",
"configMap",
"foo",
"fooArray",
"fooMap",
})
opts = append(opts, secrets)
2023-06-14 16:34:49 +00:00
opts = internal.PkgResourceDefaultOpts(opts)
var resource Resource
err := ctx.RegisterResource("mypkg::Resource", name, args, &resource, opts...)
if err != nil {
return nil, err
}
return &resource, nil
}
// GetResource gets an existing Resource resource's state with the given name, ID, and optional
// state properties that are used to uniquely qualify the lookup (nil if not required).
func GetResource(ctx *pulumi.Context,
name string, id pulumi.IDInput, state *ResourceState, opts ...pulumi.ResourceOption) (*Resource, error) {
var resource Resource
err := ctx.ReadResource("mypkg::Resource", name, id, state, &resource, opts...)
if err != nil {
return nil, err
}
return &resource, nil
}
// Input properties used for looking up and filtering Resource resources.
type resourceState struct {
}
type ResourceState struct {
}
func (ResourceState) ElementType() reflect.Type {
return reflect.TypeOf((*resourceState)(nil)).Elem()
}
type resourceArgs struct {
Config Config `pulumi:"config"`
ConfigArray []Config `pulumi:"configArray"`
ConfigMap map[string]Config `pulumi:"configMap"`
Foo string `pulumi:"foo"`
FooArray []string `pulumi:"fooArray"`
FooMap map[string]string `pulumi:"fooMap"`
}
// The set of arguments for constructing a Resource resource.
type ResourceArgs struct {
Config ConfigInput
ConfigArray ConfigArrayInput
ConfigMap ConfigMapInput
Foo pulumi.StringInput
FooArray pulumi.StringArrayInput
FooMap pulumi.StringMapInput
}
func (ResourceArgs) ElementType() reflect.Type {
return reflect.TypeOf((*resourceArgs)(nil)).Elem()
}
type ResourceInput interface {
pulumi.Input
ToResourceOutput() ResourceOutput
ToResourceOutputWithContext(ctx context.Context) ResourceOutput
}
func (*Resource) ElementType() reflect.Type {
return reflect.TypeOf((**Resource)(nil)).Elem()
}
func (i *Resource) ToResourceOutput() ResourceOutput {
return i.ToResourceOutputWithContext(context.Background())
}
func (i *Resource) ToResourceOutputWithContext(ctx context.Context) ResourceOutput {
return pulumi.ToOutputWithContext(ctx, i).(ResourceOutput)
}
func (i *Resource) ToOutput(ctx context.Context) pulumix.Output[*Resource] {
return pulumix.Output[*Resource]{
OutputState: i.ToResourceOutputWithContext(ctx).OutputState,
}
}
type ResourceOutput struct{ *pulumi.OutputState }
func (ResourceOutput) ElementType() reflect.Type {
return reflect.TypeOf((**Resource)(nil)).Elem()
}
func (o ResourceOutput) ToResourceOutput() ResourceOutput {
return o
}
func (o ResourceOutput) ToResourceOutputWithContext(ctx context.Context) ResourceOutput {
return o
}
func (o ResourceOutput) ToOutput(ctx context.Context) pulumix.Output[*Resource] {
return pulumix.Output[*Resource]{
OutputState: o.OutputState,
}
}
func (o ResourceOutput) Config() ConfigOutput {
return o.ApplyT(func(v *Resource) ConfigOutput { return v.Config }).(ConfigOutput)
}
func (o ResourceOutput) ConfigArray() ConfigArrayOutput {
return o.ApplyT(func(v *Resource) ConfigArrayOutput { return v.ConfigArray }).(ConfigArrayOutput)
}
func (o ResourceOutput) ConfigMap() ConfigMapOutput {
return o.ApplyT(func(v *Resource) ConfigMapOutput { return v.ConfigMap }).(ConfigMapOutput)
}
func (o ResourceOutput) Foo() pulumi.StringOutput {
return o.ApplyT(func(v *Resource) pulumi.StringOutput { return v.Foo }).(pulumi.StringOutput)
}
func (o ResourceOutput) FooArray() pulumi.StringArrayOutput {
return o.ApplyT(func(v *Resource) pulumi.StringArrayOutput { return v.FooArray }).(pulumi.StringArrayOutput)
}
func (o ResourceOutput) FooMap() pulumi.StringMapOutput {
return o.ApplyT(func(v *Resource) pulumi.StringMapOutput { return v.FooMap }).(pulumi.StringMapOutput)
}
func init() {
pulumi.RegisterInputType(reflect.TypeOf((*ResourceInput)(nil)).Elem(), &Resource{})
pulumi.RegisterOutputType(ResourceOutput{})
}