pulumi/tests/integration/get_resource/go/main.go
Levi Blackstone aec5ada15d
[sdk/go]: Add support for getResource to Go SDK (#5823)
- Clean up resourceOptions and associated methods
- Add URN field and setter function
- Invoke getResource if URN set
2020-12-01 11:03:47 -07:00

55 lines
1.1 KiB
Go

package main
import (
"reflect"
"github.com/pulumi/pulumi-random/sdk/v2/go/random"
"github.com/pulumi/pulumi/sdk/v2/go/pulumi"
)
type MyResource struct {
pulumi.ResourceState
Length pulumi.IntOutput `pulumi:"length"`
}
type myResourceArgs struct{}
type MyResourceArgs struct{}
func (MyResourceArgs) ElementType() reflect.Type {
return reflect.TypeOf((*myResourceArgs)(nil)).Elem()
}
func GetResource(ctx *pulumi.Context, urn pulumi.URN) (*MyResource, error) {
var resource MyResource
err := ctx.RegisterResource("unused:unused:unused", "unused", &MyResourceArgs{}, &resource,
pulumi.URN_(string(urn)))
if err != nil {
return nil, err
}
return &resource, nil
}
func main() {
pulumi.Run(func(ctx *pulumi.Context) error {
pet, err := random.NewRandomPet(ctx, "cat", &random.RandomPetArgs{
Length: pulumi.Int(2),
})
if err != nil {
return err
}
getPetLength := pet.URN().ApplyT(func(urn pulumi.URN) (pulumi.IntInput, error) {
r, err := GetResource(ctx, urn)
if err != nil {
return nil, err
}
return r.Length, nil
})
ctx.Export("getPetLength", getPetLength)
return nil
})
}