Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[sdk-gen/go] Generate non-plain type variants for types used as inputs inside unions #14679

Merged
merged 1 commit into from
Nov 29, 2023

Conversation

Zaid-Ajaj
Copy link
Contributor

@Zaid-Ajaj Zaid-Ajaj commented Nov 28, 2023

Description

When using types in union cases (using oneOf in the schema) then Go SDK-gen doesn't detect these types as being used as inputs and only emits the plain version of a type. That is unless generateExtraInputTypes: true is specified in which case Go SDK-gen will emit the non-plain types as well.

In the case of azure-native modules, generateExtraInputTypes is currently set to false (default) as of latest v2.19.0 and is missing a few non-plain type variants (for example FirewallPolicyFilterRuleCollection from this file). There no single plain type in azure-native and yet it is missing these non-plain variants.

This PR fixes that by also traversing the element types of schema union definitions when determining plain-ness of types and how they are used.

I added an example schema with an array of unions (common case in azure-native) and confirmed that the change actually results in the non-plain types being generated when generateExtraInputTypes is set to false

Fixes pulumi/pulumi-azure-native#1922

Checklist

  • I have run make tidy to update any new dependencies
  • I have run make lint to verify my code passes the lint check
    • I have formatted my code using gofumpt
  • I have added tests that prove my fix is effective or that my feature works
  • I have run make changelog and committed the changelog/pending/<file> documenting my change
  • Yes, there are changes in this PR that warrants bumping the Pulumi Cloud API version

@Zaid-Ajaj Zaid-Ajaj added language/go area/codegen SDK-gen, program-gen, convert labels Nov 28, 2023
@Zaid-Ajaj Zaid-Ajaj requested a review from a team November 28, 2023 17:39
@pulumi-bot
Copy link
Contributor

Changelog

[uncommitted] (2023-11-28)

Bug Fixes

  • [sdkgen/go] Generate non-plain type variants for types used as inputs inside unions
    #14679

@Zaid-Ajaj Zaid-Ajaj added this pull request to the merge queue Nov 29, 2023
Merged via the queue into master with commit 59c3de6 Nov 29, 2023
48 checks passed
@Zaid-Ajaj Zaid-Ajaj deleted the zaid/fix-unions-with-arrays branch November 29, 2023 15:02
github-merge-queue bot pushed a commit that referenced this pull request Nov 30, 2023
### Features

- [cli/config] Include config values from ESC in `pulumi config`
  [#14560](#14560)

- [cli/config] Add commands for managing stack environments
  [#14628](#14628)

- [cli/config] Add a command to create an ESC environment from stack
config
  [#14634](#14634)

- [sdk/go] add optional display name and tag fields to project templates
  [#14587](#14587)

- [cli/plugin] Load policy packs in parallel on startup to reduce
startup time
  [#14495](#14495)

- [sdkgen/{go,nodejs,python}] Resource methods with plain: true outputs
can now return plain values without an Output wrapper. In particular,
this feature enables resource methods to serve as explicit provider
factories by returning preconfigured explicit providers.
  [#13592](#13592)


### Bug Fixes

- [auto/go] Fix a datarace in cloning git repos.
  [#14643](#14643)

- [auto/go] Fixes event stream lag on windows runtime
  [#14659](#14659)

- [engine] Engine now correctly handles any resource name.
  [#14107](#14107)

- [engine] Fix a panic in cancellation.
  [#14612](#14612)

- [engine] Fix root directory passed to langauge plugins when starting
pulumi in a subfolder.
  [#14684](#14684)

- [sdkgen] Schemas now validate that 'urn' and 'id' are not used as
resource output properties.
  [#14637](#14637)

- [sdkgen] Fixes marshalling the "plain" flag from object or resource
properties
  [#14648](#14648)

- [programgen/nodejs] Fix generated readFile function so that it
includes the encoding and returns a string
  [#14633](#14633)

- [sdkgen/{dotnet,go,nodejs,python}] No longer writing out name and
project from alias definitions into SDKs, only type
  [#14625](#14625)

- [sdk/go] Fix optional handling on nested props
  [#14629](#14629)

- [sdkgen/go] Fixes plain and optional properties for generated types
for Go SDKs using generics
  [#14616](#14616)

- [sdkgen/go] Generate non-plain type variants for types used as inputs
inside unions
  [#14679](#14679)

- [sdk/python] Introduces RuntimeError when we detect a cycle upon
adding dependencies to the graph. Additionally adds
"PULUMI_ERROR_ON_DEPENDENCY_CYCLES" as a new environment variable to
control this behavior. Set to `False` to return to the previous
behavior, which could potentially re-introduce infinite hangs for some
programs.
  [#14597](#14597)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
area/codegen SDK-gen, program-gen, convert language/go
Projects
None yet
Development

Successfully merging this pull request may close these issues.

golang: FirewallPolicy example is wrong and not working
3 participants