diff --git a/changelog/pending/20221116--programgen--enable-type-checking-for-resource-attributes.yaml b/changelog/pending/20221116--programgen--enable-type-checking-for-resource-attributes.yaml
new file mode 100644
index 000000000000..3f75dacee383
--- /dev/null
+++ b/changelog/pending/20221116--programgen--enable-type-checking-for-resource-attributes.yaml
@@ -0,0 +1,4 @@
+changes:
+- type: fix
+ scope: programgen
+ description: Enable type checking for resource attributes
diff --git a/pkg/codegen/pcl/binder.go b/pkg/codegen/pcl/binder.go
index 305857e480a3..7e573103f890 100644
--- a/pkg/codegen/pcl/binder.go
+++ b/pkg/codegen/pcl/binder.go
@@ -96,9 +96,6 @@ func BindProgram(files []*syntax.File, opts ...BindOption) (*Program, hcl.Diagno
o(&options)
}
- // TODO: remove this once the latest pulumi-terraform-bridge has been rolled out
- options.skipResourceTypecheck = true
-
if options.loader == nil {
cwd, err := os.Getwd()
if err != nil {
diff --git a/pkg/codegen/testing/test/program_driver.go b/pkg/codegen/testing/test/program_driver.go
index d2f3b7298807..8146ca51c363 100644
--- a/pkg/codegen/testing/test/program_driver.go
+++ b/pkg/codegen/testing/test/program_driver.go
@@ -57,6 +57,7 @@ var PulumiPulumiProgramTests = []ProgramTest{
{
Directory: "assets-archives",
Description: "Assets and archives",
+ SkipCompile: codegen.NewStringSet("go"),
},
{
Directory: "synthetic-resource-properties",
@@ -227,6 +228,7 @@ var PulumiPulumiYAMLProgramTests = []ProgramTest{
Directory: transpiled("aws-static-website"),
Description: "AWS static website",
Skip: codegen.NewStringSet("go", "nodejs", "dotnet"),
+ BindOptions: []pcl.BindOption{pcl.SkipResourceTypechecking},
},
{
Directory: transpiled("awsx-fargate"),
@@ -237,6 +239,7 @@ var PulumiPulumiYAMLProgramTests = []ProgramTest{
Directory: transpiled("azure-app-service"),
Description: "Azure App Service",
Skip: codegen.NewStringSet("go", "dotnet"),
+ BindOptions: []pcl.BindOption{pcl.SkipResourceTypechecking},
},
{
Directory: transpiled("azure-container-apps"),
@@ -269,6 +272,9 @@ var PulumiPulumiYAMLProgramTests = []ProgramTest{
Directory: transpiled("kubernetes"),
Description: "Kubernetes",
Skip: codegen.NewStringSet("go"),
+ // PCL resource attribute type checking doesn't handle missing `const` attributes.
+ //
+ BindOptions: []pcl.BindOption{pcl.SkipResourceTypechecking},
},
{
Directory: transpiled("pulumi-variable"),
diff --git a/pkg/codegen/testing/test/testdata/assets-archives-pp/assets-archives.pp b/pkg/codegen/testing/test/testdata/assets-archives-pp/assets-archives.pp
index 742b601f94ae..d9d6a427213c 100644
--- a/pkg/codegen/testing/test/testdata/assets-archives-pp/assets-archives.pp
+++ b/pkg/codegen/testing/test/testdata/assets-archives-pp/assets-archives.pp
@@ -15,19 +15,19 @@
source = remoteAsset("https://pulumi.test")
}
-resource testFileArchive "aws:s3:BucketObject" {
- bucket = siteBucket.id // Reference the s3.Bucket object
- source = fileArchive("file.tar.gz")
+resource testFileArchive "aws:lambda:Function" {
+ role = siteBucket.arn // Reference the s3.Bucket object
+ code = fileArchive("file.tar.gz")
}
-resource testRemoteArchive "aws:s3:BucketObject" {
- bucket = siteBucket.id // Reference the s3.Bucket object
- source = remoteArchive("https://pulumi.test/foo.tar.gz")
+resource testRemoteArchive "aws:lambda:Function" {
+ role = siteBucket.arn // Reference the s3.Bucket object
+ code = remoteArchive("https://pulumi.test/foo.tar.gz")
}
-resource testAssetArchive "aws:s3:BucketObject" {
- bucket = siteBucket.id // Reference the s3.Bucket object
- source = assetArchive({
+resource testAssetArchive "aws:lambda:Function" {
+ role = siteBucket.arn // Reference the s3.Bucket object
+ code = assetArchive({
"file.txt": fileAsset("file.txt")
"string.txt": stringAsset("
File contents
")
"remote.txt": remoteAsset("https://pulumi.test")
diff --git a/pkg/codegen/testing/test/testdata/assets-archives-pp/dotnet/assets-archives.cs b/pkg/codegen/testing/test/testdata/assets-archives-pp/dotnet/assets-archives.cs
index 91b4198b26e6..e4a950e704dc 100644
--- a/pkg/codegen/testing/test/testdata/assets-archives-pp/dotnet/assets-archives.cs
+++ b/pkg/codegen/testing/test/testdata/assets-archives-pp/dotnet/assets-archives.cs
@@ -24,22 +24,22 @@
Source = new RemoteAsset("https://pulumi.test"),
});
- var testFileArchive = new Aws.S3.BucketObject("testFileArchive", new()
+ var testFileArchive = new Aws.Lambda.Function("testFileArchive", new()
{
- Bucket = siteBucket.Id,
- Source = new FileArchive("file.tar.gz"),
+ Role = siteBucket.Arn,
+ Code = new FileArchive("file.tar.gz"),
});
- var testRemoteArchive = new Aws.S3.BucketObject("testRemoteArchive", new()
+ var testRemoteArchive = new Aws.Lambda.Function("testRemoteArchive", new()
{
- Bucket = siteBucket.Id,
- Source = new RemoteArchive("https://pulumi.test/foo.tar.gz"),
+ Role = siteBucket.Arn,
+ Code = new RemoteArchive("https://pulumi.test/foo.tar.gz"),
});
- var testAssetArchive = new Aws.S3.BucketObject("testAssetArchive", new()
+ var testAssetArchive = new Aws.Lambda.Function("testAssetArchive", new()
{
- Bucket = siteBucket.Id,
- Source = new AssetArchive(new Dictionary
+ Role = siteBucket.Arn,
+ Code = new AssetArchive(new Dictionary
{
["file.txt"] = new FileAsset("file.txt"),
["string.txt"] = new StringAsset("File contents
"),
diff --git a/pkg/codegen/testing/test/testdata/assets-archives-pp/go/assets-archives.go b/pkg/codegen/testing/test/testdata/assets-archives-pp/go/assets-archives.go
index 6b2a0c7e656a..20ff72edd51d 100644
--- a/pkg/codegen/testing/test/testdata/assets-archives-pp/go/assets-archives.go
+++ b/pkg/codegen/testing/test/testdata/assets-archives-pp/go/assets-archives.go
@@ -1,6 +1,8 @@
package main
import (
+ "github.com/pulumi/pulumi-aws/sdk/v5/go/aws"
+ "github.com/pulumi/pulumi-aws/sdk/v5/go/aws/lambda"
"github.com/pulumi/pulumi-aws/sdk/v5/go/aws/s3"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)
@@ -32,23 +34,23 @@ func main() {
if err != nil {
return err
}
- _, err = s3.NewBucketObject(ctx, "testFileArchive", &s3.BucketObjectArgs{
- Bucket: siteBucket.ID(),
- Source: pulumi.NewFileArchive("file.tar.gz"),
+ _, err = lambda.NewFunction(ctx, "testFileArchive", &lambda.FunctionArgs{
+ Role: siteBucket.Arn,
+ Code: pulumi.NewFileArchive("file.tar.gz"),
})
if err != nil {
return err
}
- _, err = s3.NewBucketObject(ctx, "testRemoteArchive", &s3.BucketObjectArgs{
- Bucket: siteBucket.ID(),
- Source: pulumi.NewRemoteArchive("https://pulumi.test/foo.tar.gz"),
+ _, err = lambda.NewFunction(ctx, "testRemoteArchive", &lambda.FunctionArgs{
+ Role: siteBucket.Arn,
+ Code: pulumi.NewRemoteArchive("https://pulumi.test/foo.tar.gz"),
})
if err != nil {
return err
}
- _, err = s3.NewBucketObject(ctx, "testAssetArchive", &s3.BucketObjectArgs{
- Bucket: siteBucket.ID(),
- Source: pulumi.NewAssetArchive(map[string]interface{}{
+ _, err = lambda.NewFunction(ctx, "testAssetArchive", &lambda.FunctionArgs{
+ Role: siteBucket.Arn,
+ Code: pulumi.NewAssetArchive(map[string]interface{}{
"file.txt": pulumi.NewFileAsset("file.txt"),
"string.txt": pulumi.NewStringAsset("File contents
"),
"remote.txt": pulumi.NewRemoteAsset("https://pulumi.test"),
diff --git a/pkg/codegen/testing/test/testdata/assets-archives-pp/nodejs/assets-archives.ts b/pkg/codegen/testing/test/testdata/assets-archives-pp/nodejs/assets-archives.ts
index 55ceb6bc31ea..e33a3ae69d81 100644
--- a/pkg/codegen/testing/test/testdata/assets-archives-pp/nodejs/assets-archives.ts
+++ b/pkg/codegen/testing/test/testdata/assets-archives-pp/nodejs/assets-archives.ts
@@ -14,17 +14,17 @@ const testRemoteAsset = new aws.s3.BucketObject("testRemoteAsset", {
bucket: siteBucket.id,
source: new pulumi.asset.RemoteAsset("https://pulumi.test"),
});
-const testFileArchive = new aws.s3.BucketObject("testFileArchive", {
- bucket: siteBucket.id,
- source: new pulumi.asset.FileArchive("file.tar.gz"),
+const testFileArchive = new aws.lambda.Function("testFileArchive", {
+ role: siteBucket.arn,
+ code: new pulumi.asset.FileArchive("file.tar.gz"),
});
-const testRemoteArchive = new aws.s3.BucketObject("testRemoteArchive", {
- bucket: siteBucket.id,
- source: new pulumi.asset.RemoteArchive("https://pulumi.test/foo.tar.gz"),
+const testRemoteArchive = new aws.lambda.Function("testRemoteArchive", {
+ role: siteBucket.arn,
+ code: new pulumi.asset.RemoteArchive("https://pulumi.test/foo.tar.gz"),
});
-const testAssetArchive = new aws.s3.BucketObject("testAssetArchive", {
- bucket: siteBucket.id,
- source: new pulumi.asset.AssetArchive({
+const testAssetArchive = new aws.lambda.Function("testAssetArchive", {
+ role: siteBucket.arn,
+ code: new pulumi.asset.AssetArchive({
"file.txt": new pulumi.asset.FileAsset("file.txt"),
"string.txt": new pulumi.asset.StringAsset("File contents
"),
"remote.txt": new pulumi.asset.RemoteAsset("https://pulumi.test"),
diff --git a/pkg/codegen/testing/test/testdata/assets-archives-pp/python/assets-archives.py b/pkg/codegen/testing/test/testdata/assets-archives-pp/python/assets-archives.py
index bef6f941dd24..1c0d8f016751 100644
--- a/pkg/codegen/testing/test/testdata/assets-archives-pp/python/assets-archives.py
+++ b/pkg/codegen/testing/test/testdata/assets-archives-pp/python/assets-archives.py
@@ -11,15 +11,15 @@
test_remote_asset = aws.s3.BucketObject("testRemoteAsset",
bucket=site_bucket.id,
source=pulumi.remoteAsset("https://pulumi.test"))
-test_file_archive = aws.s3.BucketObject("testFileArchive",
- bucket=site_bucket.id,
- source=pulumi.FileArchive("file.tar.gz"))
-test_remote_archive = aws.s3.BucketObject("testRemoteArchive",
- bucket=site_bucket.id,
- source=pulumi.RemoteArchive("https://pulumi.test/foo.tar.gz"))
-test_asset_archive = aws.s3.BucketObject("testAssetArchive",
- bucket=site_bucket.id,
- source=pulumi.AssetArchive({
+test_file_archive = aws.lambda_.Function("testFileArchive",
+ role=site_bucket.arn,
+ code=pulumi.FileArchive("file.tar.gz"))
+test_remote_archive = aws.lambda_.Function("testRemoteArchive",
+ role=site_bucket.arn,
+ code=pulumi.RemoteArchive("https://pulumi.test/foo.tar.gz"))
+test_asset_archive = aws.lambda_.Function("testAssetArchive",
+ role=site_bucket.arn,
+ code=pulumi.AssetArchive({
"file.txt": pulumi.FileAsset("file.txt"),
"string.txt": pulumi.StringAsset("File contents
"),
"remote.txt": pulumi.remoteAsset("https://pulumi.test"),