pulumi/tests/integration/construct_component/go/main.go

62 lines
1.3 KiB
Go

// Copyright 2016-2020, Pulumi Corporation. All rights reserved.
//go:build !all
// +build !all
package main
import (
"reflect"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)
type componentArgs struct {
Echo interface{} `pulumi:"echo"`
}
type ComponentArgs struct {
Echo pulumi.Input
}
func (ComponentArgs) ElementType() reflect.Type {
return reflect.TypeOf((*componentArgs)(nil)).Elem()
}
type Component struct {
pulumi.ResourceState
Echo pulumi.AnyOutput `pulumi:"echo"`
ChildID pulumi.StringOutput `pulumi:"childId"`
Secret pulumi.StringOutput `pulumi:"secret"`
}
func NewComponent(
ctx *pulumi.Context, name string, args *ComponentArgs, opts ...pulumi.ResourceOption,
) (*Component, error) {
var resource Component
err := ctx.RegisterRemoteComponentResource("testcomponent:index:Component", name, args, &resource, opts...)
if err != nil {
return nil, err
}
return &resource, nil
}
func main() {
pulumi.Run(func(ctx *pulumi.Context) error {
componentA, err := NewComponent(ctx, "a", &ComponentArgs{Echo: pulumi.Int(42)})
if err != nil {
return err
}
_, err = NewComponent(ctx, "b", &ComponentArgs{Echo: componentA.Echo})
if err != nil {
return err
}
_, err = NewComponent(ctx, "C", &ComponentArgs{Echo: componentA.ChildID})
if err != nil {
return err
}
return nil
})
}