Skip to content

Commit

Permalink
more robust bridging
Browse files Browse the repository at this point in the history
  • Loading branch information
blampe committed Jan 18, 2024
1 parent 1a6d3fe commit cc147c0
Show file tree
Hide file tree
Showing 3 changed files with 20 additions and 13 deletions.
18 changes: 8 additions & 10 deletions provider/internal/buildx.go
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
package internal

import (
"context"

provider "github.com/pulumi/pulumi-go-provider"
"github.com/pulumi/pulumi-go-provider/infer"
"github.com/pulumi/pulumi/pkg/v3/codegen/schema"
Expand Down Expand Up @@ -29,7 +31,7 @@ func NewBuildxProvider() provider.Provider {
return infer.Provider(
infer.Options{
Resources: []infer.InferredResource{
imageResource(),
infer.Resource[*Image, ImageArgs, ImageState](),
},
ModuleMap: map[tokens.ModuleName]tokens.ModuleName{
"internal": "buildx/image",
Expand All @@ -39,14 +41,10 @@ func NewBuildxProvider() provider.Provider {
)
}

// ImageSchema returns Image's schema for SDK generation.
func ImageSchema() schema.ResourceSpec {
r := imageResource()
s, err := r.GetSchema(nil) // We don't have subtypes.
// Schema returns our package specification.
func Schema(ctx context.Context, version string) schema.PackageSpec {
p := NewBuildxProvider()
spec, err := provider.GetSchema(ctx, "docker", version, p)
contract.AssertNoErrorf(err, "missing schema")
return s
}

func imageResource() infer.InferredResource {
return infer.Resource[*Image, ImageArgs, ImageState]()
return spec
}
3 changes: 2 additions & 1 deletion provider/internal/buildx_test.go
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package internal

import (
"context"
"testing"

"github.com/blang/semver"
Expand Down Expand Up @@ -33,7 +34,7 @@ func TestAnnotate(_ *testing.T) {

// TestSchema sanity checks that our schema doesn't panic.
func TestSchema(_ *testing.T) {
ImageSchema()
Schema(context.Background(), "v4")
}

type annotator struct{}
Expand Down
12 changes: 10 additions & 2 deletions provider/resources.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
package provider

import (
"context"
"fmt"
"path/filepath"
"unicode"
Expand Down Expand Up @@ -230,8 +231,6 @@ func Provider(version string) tfbridge.ProviderInfo {
},
},
ExtraResources: map[string]schema.ResourceSpec{
dockerResource("buildx", "Image").String(): internal.ImageSchema(),

dockerResource(dockerMod, "Image").String(): {
ObjectTypeSpec: schema.ObjectTypeSpec{
Type: "object",
Expand Down Expand Up @@ -369,6 +368,15 @@ func Provider(version string) tfbridge.ProviderInfo {
MetadataInfo: tfbridge.NewProviderMetadata(metadata),
}

// Bridge pulumi-go-provider types into our provider.
spec := internal.Schema(context.Background(), version)
for k, v := range spec.Resources {
prov.ExtraResources[k] = v
}
for k, v := range spec.Types {
prov.ExtraTypes[k] = v
}

prov.MustComputeTokens(tfbridgetokens.SingleModule("docker_", dockerMod,
tfbridgetokens.MakeStandard(dockerPkg)))
prov.MustApplyAutoAliases()
Expand Down

0 comments on commit cc147c0

Please sign in to comment.