Skip to content

Commit 50f06f7

Browse files
authored
Add NoDanglingReferences option (#3118)
Historically providers such as pulumi-aws generated schemata that had type references that cannot resolve, and relied on the quirks of the Node SDK generator to make use of these references to link in overlay types. This is going away in upcoming major release of pulumi-aws, and newer providers should be strict about generating the schema. When the new flag NoDanglingReferences is set to `true`, bridge will perform strict schema validity checks before emitting a schema during `make tfgen`. Fixes #3116
1 parent 569be2d commit 50f06f7

File tree

3 files changed

+19
-2
lines changed

3 files changed

+19
-2
lines changed

pkg/tfbridge/info/info.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -186,6 +186,9 @@ type Provider struct {
186186

187187
// DisableRequiredWithDefaultTurningOptional disables making required properties optional if they have a default value.
188188
DisableRequiredWithDefaultTurningOptional bool
189+
190+
// Check generated schema for dangling references. Newer providers should opt into this.
191+
NoDanglingReferences bool
189192
}
190193

191194
// HclExampler represents a supplemental HCL example for a given resource or function.

pkg/tfgen/generate.go

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1140,8 +1140,15 @@ func (g *Generator) UnstableGenerateFromSchema(genSchemaResult *GenerateSchemaRe
11401140
files[path] = code
11411141
}
11421142
default:
1143+
allowDanglingRefernces := true
1144+
if g.info.NoDanglingReferences {
1145+
allowDanglingRefernces = false
1146+
}
11431147
pulumiPackage, diags, err := pschema.BindSpec(
1144-
pulumiPackageSpec, nil, pschema.ValidationOptions{AllowDanglingReferences: true})
1148+
pulumiPackageSpec, nil, pschema.ValidationOptions{
1149+
AllowDanglingReferences: allowDanglingRefernces,
1150+
},
1151+
)
11451152
if err != nil {
11461153
return nil, pkgerrors.Wrapf(err, "failed to import Pulumi schema")
11471154
}

pkg/tfgen/generate_schema.go

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -442,7 +442,14 @@ func (g *schemaGenerator) genPackageSpec(pack *pkg, sink diag.Sink) (pschema.Pac
442442
}
443443

444444
// Validate the schema.
445-
_, diags, err := pschema.BindSpec(spec, nil, pschema.ValidationOptions{AllowDanglingReferences: true})
445+
446+
allowDanglingReferences := true
447+
if g.info.NoDanglingReferences {
448+
allowDanglingReferences = false
449+
}
450+
_, diags, err := pschema.BindSpec(spec, nil, pschema.ValidationOptions{
451+
AllowDanglingReferences: allowDanglingReferences,
452+
})
446453
if err != nil {
447454
return pschema.PackageSpec{}, err
448455
}

0 commit comments

Comments
 (0)