From 1cedb29193cfbea0dacb23615321b9bdcf49ac76 Mon Sep 17 00:00:00 2001 From: Anton Tayanovskyy Date: Thu, 18 Nov 2021 17:43:13 -0500 Subject: [PATCH] Programgen support for fn_output forms in Python (#7949) (#8433) * Update Python programgen to use fn_output forms * Fix skips * Fix CHANGELOG * Accept changes, backing out Fargate change --- CHANGELOG_PENDING.md | 4 +++ pkg/codegen/internal/test/program_driver.go | 4 +-- .../python/output-funcs-aws.py | 25 +++++++++++++++++++ pkg/codegen/python/gen_program_expressions.go | 5 ++++ 4 files changed, 36 insertions(+), 2 deletions(-) create mode 100644 pkg/codegen/internal/test/testdata/output-funcs-aws-pp/python/output-funcs-aws.py diff --git a/CHANGELOG_PENDING.md b/CHANGELOG_PENDING.md index f32fa2edc..1a5492256 100644 --- a/CHANGELOG_PENDING.md +++ b/CHANGELOG_PENDING.md @@ -1,5 +1,9 @@ ### Improvements +- [codegen/python] - Program generator now uses `fn_output` forms where + appropriate, simplifying auto-generated examples. + [#8433](https://github.com/pulumi/pulumi/pull/8433) + ### Bug Fixes - [codegen/typescript] - Respect default values in Pulumi object types. diff --git a/pkg/codegen/internal/test/program_driver.go b/pkg/codegen/internal/test/program_driver.go index bdb7d84b1..616797678 100644 --- a/pkg/codegen/internal/test/program_driver.go +++ b/pkg/codegen/internal/test/program_driver.go @@ -50,7 +50,7 @@ var programTests = []programTest{ Name: "aws-fargate", Description: "AWS Fargate", SkipCompile: codegen.NewStringSet("go"), - Skip: codegen.NewStringSet("go", "python", "dotnet"), + Skip: codegen.NewStringSet("go", "dotnet"), }, { Name: "aws-s3-logging", @@ -127,7 +127,7 @@ var programTests = []programTest{ { Name: "output-funcs-aws", Description: "Output Versioned Functions", - Skip: codegen.NewStringSet("go", "python", "dotnet"), + Skip: codegen.NewStringSet("go", "dotnet"), }, } diff --git a/pkg/codegen/internal/test/testdata/output-funcs-aws-pp/python/output-funcs-aws.py b/pkg/codegen/internal/test/testdata/output-funcs-aws-pp/python/output-funcs-aws.py new file mode 100644 index 000000000..ead56998d --- /dev/null +++ b/pkg/codegen/internal/test/testdata/output-funcs-aws-pp/python/output-funcs-aws.py @@ -0,0 +1,25 @@ +import pulumi +import pulumi_aws as aws + +aws_vpc = aws.ec2.Vpc("aws_vpc", + cidr_block="10.0.0.0/16", + instance_tenancy="default") +private_s3_vpc_endpoint = aws.ec2.VpcEndpoint("privateS3VpcEndpoint", + vpc_id=aws_vpc.id, + service_name="com.amazonaws.us-west-2.s3") +private_s3_prefix_list = aws.ec2.get_prefix_list_output(prefix_list_id=private_s3_vpc_endpoint.prefix_list_id) +bar = aws.ec2.NetworkAcl("bar", vpc_id=aws_vpc.id) +private_s3_network_acl_rule = aws.ec2.NetworkAclRule("privateS3NetworkAclRule", + network_acl_id=bar.id, + rule_number=200, + egress=False, + protocol="tcp", + rule_action="allow", + cidr_block=private_s3_prefix_list.cidr_blocks[0], + from_port=443, + to_port=443) +amis = aws.ec2.get_ami_ids_output(owners=[bar.id], + filters=[aws.ec2.GetAmiIdsFilterArgs( + name=bar.id, + values=["pulumi*"], + )]) diff --git a/pkg/codegen/python/gen_program_expressions.go b/pkg/codegen/python/gen_program_expressions.go index da3621438..5e8b892bf 100644 --- a/pkg/codegen/python/gen_program_expressions.go +++ b/pkg/codegen/python/gen_program_expressions.go @@ -230,6 +230,11 @@ func (g *generator) GenFunctionCallExpression(w io.Writer, expr *model.FunctionC } name := fmt.Sprintf("%s%s.%s", pkg, module, PyName(fn)) + isOut := pcl.IsOutputVersionInvokeCall(expr) + if isOut { + name = fmt.Sprintf("%s_output", name) + } + if len(expr.Args) == 1 { g.Fprintf(w, "%s()", name) return