From 64d571c8fabd641390c783f29b6d6f56b8f19ee0 Mon Sep 17 00:00:00 2001 From: Fraser Waters Date: Wed, 7 Dec 2022 15:24:02 +0000 Subject: [PATCH] Fix PCL binding of options.range = number --- pkg/codegen/pcl/binder_resource.go | 2 ++ pkg/codegen/testing/test/program_driver.go | 1 - .../simple-range-pp/dotnet/simple-range.cs | 20 +++++++++++-------- .../simple-range-pp/go/simple-range.go | 18 +++++++++-------- .../simple-range-pp/nodejs/simple-range.ts | 16 +++++++++------ .../simple-range-pp/python/simple-range.py | 15 ++++++++------ .../testdata/simple-range-pp/simple-range.pp | 16 +++++++++------ 7 files changed, 53 insertions(+), 35 deletions(-) diff --git a/pkg/codegen/pcl/binder_resource.go b/pkg/codegen/pcl/binder_resource.go index 2dd78ee48f79..c82ec32d1918 100644 --- a/pkg/codegen/pcl/binder_resource.go +++ b/pkg/codegen/pcl/binder_resource.go @@ -305,6 +305,8 @@ func (b *binder) bindResourceBody(node *Resource) hcl.Diagnostics { diags := rangeExpr.Typecheck(false) contract.Assert(len(diags) == 0) + rangeValue = model.IntType + node.VariableType = rangeExpr.Type() default: rk, rv, diags := model.GetCollectionTypes(typ, rng.Range()) diff --git a/pkg/codegen/testing/test/program_driver.go b/pkg/codegen/testing/test/program_driver.go index d4619af8ffc7..28356c74114c 100644 --- a/pkg/codegen/testing/test/program_driver.go +++ b/pkg/codegen/testing/test/program_driver.go @@ -110,7 +110,6 @@ var PulumiPulumiProgramTests = []ProgramTest{ { Directory: "simple-range", Description: "Simple range as int expression translation", - BindOptions: []pcl.BindOption{pcl.AllowMissingVariables}, }, { Directory: "azure-native", diff --git a/pkg/codegen/testing/test/testdata/simple-range-pp/dotnet/simple-range.cs b/pkg/codegen/testing/test/testdata/simple-range-pp/dotnet/simple-range.cs index dd1c3d1d08d6..5b7601e9e6dc 100644 --- a/pkg/codegen/testing/test/testdata/simple-range-pp/dotnet/simple-range.cs +++ b/pkg/codegen/testing/test/testdata/simple-range-pp/dotnet/simple-range.cs @@ -1,20 +1,24 @@ using System.Collections.Generic; using Pulumi; -using Aws = Pulumi.Aws; +using Random = Pulumi.Random; return await Deployment.RunAsync(() => { - var bucket = new List(); - for (var rangeIndex = 0; rangeIndex < 10; rangeIndex++) + var numbers = new List(); + for (var rangeIndex = 0; rangeIndex < 2; rangeIndex++) { var range = new { Value = rangeIndex }; - bucket.Add(new Aws.S3.Bucket($"bucket-{range.Value}", new() + numbers.Add(new Random.RandomInteger($"numbers-{range.Value}", new() { - Website = new Aws.S3.Inputs.BucketWebsiteArgs - { - IndexDocument = $"index-{range.Value}.html", - }, + Min = 1, + Max = range.Value, + Seed = $"seed{range.Value}", })); } + return new Dictionary + { + ["first"] = numbers[0].Id, + ["second"] = numbers[1].Id, + }; }); diff --git a/pkg/codegen/testing/test/testdata/simple-range-pp/go/simple-range.go b/pkg/codegen/testing/test/testdata/simple-range-pp/go/simple-range.go index 9988c12ae598..df22751e832a 100644 --- a/pkg/codegen/testing/test/testdata/simple-range-pp/go/simple-range.go +++ b/pkg/codegen/testing/test/testdata/simple-range-pp/go/simple-range.go @@ -3,26 +3,28 @@ package main import ( "fmt" - "github.com/pulumi/pulumi-aws/sdk/v5/go/aws/s3" + "github.com/pulumi/pulumi-random/sdk/v4/go/random" "github.com/pulumi/pulumi/sdk/v3/go/pulumi" ) func main() { pulumi.Run(func(ctx *pulumi.Context) error { - var bucket []*s3.Bucket - for index := 0; index < 10; index++ { + var numbers []*random.RandomInteger + for index := 0; index < 2; index++ { key0 := index val0 := index - __res, err := s3.NewBucket(ctx, fmt.Sprintf("bucket-%v", key0), &s3.BucketArgs{ - Website: &s3.BucketWebsiteArgs{ - IndexDocument: pulumi.String(fmt.Sprintf("index-%v.html", val0)), - }, + __res, err := random.NewRandomInteger(ctx, fmt.Sprintf("numbers-%v", key0), &random.RandomIntegerArgs{ + Min: pulumi.Int(1), + Max: pulumi.Int(val0), + Seed: pulumi.String(fmt.Sprintf("seed%v", val0)), }) if err != nil { return err } - bucket = append(bucket, __res) + numbers = append(numbers, __res) } + ctx.Export("first", numbers[0].ID()) + ctx.Export("second", numbers[1].ID()) return nil }) } diff --git a/pkg/codegen/testing/test/testdata/simple-range-pp/nodejs/simple-range.ts b/pkg/codegen/testing/test/testdata/simple-range-pp/nodejs/simple-range.ts index a5324217c9a7..23cf1d57fa31 100644 --- a/pkg/codegen/testing/test/testdata/simple-range-pp/nodejs/simple-range.ts +++ b/pkg/codegen/testing/test/testdata/simple-range-pp/nodejs/simple-range.ts @@ -1,9 +1,13 @@ import * as pulumi from "@pulumi/pulumi"; -import * as aws from "@pulumi/aws"; +import * as random from "@pulumi/random"; -const bucket: aws.s3.Bucket[] = []; -for (const range = {value: 0}; range.value < 10; range.value++) { - bucket.push(new aws.s3.Bucket(`bucket-${range.value}`, {website: { - indexDocument: `index-${range.value}.html`, - }})); +const numbers: random.RandomInteger[] = []; +for (const range = {value: 0}; range.value < 2; range.value++) { + numbers.push(new random.RandomInteger(`numbers-${range.value}`, { + min: 1, + max: range.value, + seed: `seed${range.value}`, + })); } +export const first = numbers[0].id; +export const second = numbers[1].id; diff --git a/pkg/codegen/testing/test/testdata/simple-range-pp/python/simple-range.py b/pkg/codegen/testing/test/testdata/simple-range-pp/python/simple-range.py index 396e63ba2607..605e493e1df7 100644 --- a/pkg/codegen/testing/test/testdata/simple-range-pp/python/simple-range.py +++ b/pkg/codegen/testing/test/testdata/simple-range-pp/python/simple-range.py @@ -1,8 +1,11 @@ import pulumi -import pulumi_aws as aws +import pulumi_random as random -bucket = [] -for range in [{"value": i} for i in range(0, 10)]: - bucket.append(aws.s3.Bucket(f"bucket-{range['value']}", website=aws.s3.BucketWebsiteArgs( - index_document=f"index-{range['value']}.html", - ))) +numbers = [] +for range in [{"value": i} for i in range(0, 2)]: + numbers.append(random.RandomInteger(f"numbers-{range['value']}", + min=1, + max=range["value"], + seed=f"seed{range['value']}")) +pulumi.export("first", numbers[0].id) +pulumi.export("second", numbers[1].id) diff --git a/pkg/codegen/testing/test/testdata/simple-range-pp/simple-range.pp b/pkg/codegen/testing/test/testdata/simple-range-pp/simple-range.pp index b28985d21bdd..cb88b96ca555 100644 --- a/pkg/codegen/testing/test/testdata/simple-range-pp/simple-range.pp +++ b/pkg/codegen/testing/test/testdata/simple-range-pp/simple-range.pp @@ -1,8 +1,12 @@ -resource bucket "aws:s3:Bucket" { +resource numbers "random:index/randomInteger:RandomInteger" { options { - range = 10 + range = 2 } - website = { - indexDocument = "index-${range.value}.html" - } -} \ No newline at end of file + + min = 1 + max = range.value + seed = "seed${range.value}" +} + +output first { value = numbers[0].id } +output second { value = numbers[1].id }