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

feat: Synthesis in HCL #3365

Merged
merged 122 commits into from Jan 9, 2024
Merged

feat: Synthesis in HCL #3365

merged 122 commits into from Jan 9, 2024

Conversation

ansgarm
Copy link
Member

@ansgarm ansgarm commented Jan 2, 2024

Related issue

Fixes #225

Description

Add support for CDKTF to synthesize code to HCL Terraform instead of just JSON. While we are trying to ensure that HCL generation is as good as the existing JSON synthesis, care is requested when using it as JSON synthesis is much better tested and robust.

In order to use HCL output, the --hcl flag can be passed on to the synth command (e.g. cdktf synth --hcl).

Warning

Please note that we currently don't erase / remove existing JSON files, so care has to be exercised when using both cdktf synth along with cdktf synth --hcl as terraform will try to use both files if present and that will cause problems.

Missing features / Problems

  • Some keywords may be quoted when not necessary. e.g. when = destroy will be when = "destroy" within the provisioner block.
  • Overrides do not contain enough type information, so they may be rendered incorrectly. We try our best to find the right rendering, but it's not always possible.

@ansgarm ansgarm changed the base branch from main to feat/hcl-output January 2, 2024 17:26
@ansgarm ansgarm changed the base branch from feat/hcl-output to main January 2, 2024 17:26
@ansgarm ansgarm changed the title feat/hcl output rebase feat:hcl output (rebase) Jan 2, 2024
@ansgarm ansgarm changed the title feat:hcl output (rebase) feat: hcl output (rebase) Jan 3, 2024
@mutahhir mutahhir marked this pull request as ready for review January 9, 2024 17:31
@mutahhir mutahhir requested review from a team as code owners January 9, 2024 17:31
@mutahhir mutahhir requested review from DanielMSchmidt and Maed223 and removed request for a team January 9, 2024 17:31
@mutahhir mutahhir changed the title feat: hcl output (rebase) feat: Synthesis in HCL Jan 9, 2024
Copy link
Contributor

@DanielMSchmidt DanielMSchmidt left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🎉🎉🎉

@ansgarm ansgarm added this pull request to the merge queue Jan 9, 2024
Merged via the queue into main with commit d4f9710 Jan 9, 2024
851 of 975 checks passed
@ansgarm ansgarm deleted the feat/hcl-output-rebase branch January 9, 2024 19:41
@mutahhir mutahhir mentioned this pull request Jan 10, 2024
mutahhir added a commit that referenced this pull request Jan 10, 2024
## 0.20.0

**Breaking changes**

### Module names / import paths changing

To resolve
[\#3026](#3026) we
improved the logic for generating names for [Terraform
Modules](https://developer.hashicorp.com/terraform/cdktf/concepts/modules).
This makes the default module names nicer, but also leads to breaking
changes for Python, C#, and Java. When updating CDKTF, please generate
the new bindings with `cdktf get` after updating the CLI and update your
module imports.

### Removal of deprecated backends

We have removed deprecated backends artifactory, etcd, etcdv3, manta,
and swift. CDK for Terraform v0.14 deprecated these backends initially.
Terraform removed these backends in v1.3. For migration paths from these
removed backends, refer to [Upgrading to Terraform
v1.3](/terraform/language/v1.3.x/upgrade-guides).

### Python 3.7 is no longer supported

We have dropped support for Python 3.7, please update to Python 3.8 or
higher.

### feat

- feat: Synthesis in HCL
[\#3365](#3365)
- feat(lib): update backend options
[\#3352](#3352)
- feat: add Terraform 1.6.5 to Docker image
[\#3336](#3336)
- feat(docs): Add note to address having the same name as new Terraform
stacks feature
[\#3333](#3333)
- feat(lib): Add support for the built-in Terraform data resource
[\#3317](#3317)
- feat(lib): add `.allWithMapKey` iterator to lists
[\#3299](#3299)
- feat(lib): Add DynamicListTerraformIterator with support for lists or
sets with objects that have properties that are only known at apply time
[\#3273](#3273)
- feat(lib): allow chaining of TerraformIterator created resources
[\#3272](#3272)
- feat(lib): add move workflows for specifying ids directly
[\#3231](#3231)

### fix

- fix pipenv build
[\#3364](#3364)
- fix(cli): Handle overlapping resource names in augmented logs
[\#3343](#3343)
- fix: Terraform Modules relatively referencing each other with
generated bindings
[\#3341](#3341)
- fix(lib): respect AppOption.outdir before env var
[\#3334](#3334)
- fix(provider-generator): use module name that does not collide
commonly [\#3332](#3332)
- fix(lib): Fix handling of replaceTriggeredBy lifecycle attribute
[\#3322](#3322)
- fix(cli): error message for non-existent tf cloud orgs
[\#3308](#3308)
- fix(provider-generator): provided name does not need to match name in
source [\#3305](#3305)
- fix(provider-generator): don't require attributes to be set on
nested_type
[\#3304](#3304)
- fix(lib): improve error messages for token resolution
[\#3300](#3300)
- fix: Use unique names to see if Github filters can pick it up
[\#3291](#3291)
- fix(tests): Update provider version in C# snapshot test
[\#3289](#3289)
- fix: Use an additional results step to ensure dynamic matrix jobs can…
[\#3288](#3288)
- fix(provider-generator): fix oci provider by skipping attributes that
conflict after being camel cased
[\#3285](#3285)
- fix(lib): expose `conditional`
[\#3264](#3264)
- fix: lower cache usage by reusing more of the yarn caches
[\#3162](#3162)

### chore

- chore: cd into dist/python
[\#3400](#3400)
- chore: simplify python release
[\#3399](#3399)
- chore: remove set in gh action script
[\#3398](#3398)
- chore: fix python publishing
[\#3397](#3397)
- chore: Upgrade dependencies for @cdktf/hcl2json
[\#3392](#3392)
- chore: Upgrade dependencies for @cdktf/provider-schema
[\#3391](#3391)
- chore: Upgrade dependencies for cdktf
[\#3390](#3390)
- chore: Upgrade dependencies for @cdktf/cli-core
[\#3389](#3389)
- chore: Upgrade dependencies for @cdktf/commons
[\#3388](#3388)
- chore: Upgrade dependencies for @cdktf/provider-generator
[\#3387](#3387)
- chore: set include-system-site-packages=true for python release
[\#3386](#3386)
- chore: set include-system-site-packages=true for python release
[\#3385](#3385)
- chore: activate virtual env in same shell
[\#3384](#3384)
- chore(deps): pin trusted workflows based on HashiCorp TSCCR
[\#3383](#3383)
- chore: use publib for releases
[\#3382](#3382)
- chore: enable python virtual environment before releasing
[\#3381](#3381)
- chore: run python tests in virtual env
[\#3379](#3379)
- chore: npm-check-updates && yarn upgrade
[\#3377](#3377)
- chore: Upgrade dependencies for @cdktf/commons
[\#3375](#3375)
- chore: Upgrade dependencies for @cdktf/cli-core
[\#3373](#3373)
- chore: Upgrade dependencies for cdktf
[\#3371](#3371)
- chore: run prettier
[\#3369](#3369)
- chore: update required python version in examples
[\#3368](#3368)
- chore: use --break-system-packages to install pipenv and pipx globally
[\#3367](#3367)
- chore: use activated virtual env in docker
[\#3366](#3366)
- chore: update docker base image
[\#3363](#3363)
- chore: fix aspects documentation
[\#3362](#3362)
- chore: Use locally built bindings for ts provider doc example
[\#3359](#3359)
- chore: add a subshell
[\#3357](#3357)
- chore: full checkout and deal with empty lists
[\#3356](#3356)
- chore: disable test for TF 1.5.5
[\#3354](#3354)
- chore: delete old branches before docs rollout
[\#3353](#3353)
- chore(deps): pin trusted workflows based on HashiCorp TSCCR
[\#3351](#3351)
- chore: Upgrade dependencies for @cdktf/provider-generator
[\#3347](#3347)
- chore(deps): pin trusted workflows based on HashiCorp TSCCR
[\#3346](#3346)
- chore: document correct environment variable
[\#3344](#3344)
- chore: pin all dependencies
[\#3340](#3340)
- chore: update CI to run against TF 1.6.5 and 1.5.5
[\#3338](#3338)
- chore: update CI to run against TF 1.5 and 1.4
[\#3335](#3335)
- chore: Upgrade dependencies for @cdktf/provider-generator
[\#3330](#3330)
- chore: Upgrade dependencies for @cdktf/provider-schema
[\#3324](#3324)
- chore: update terraform functions
[\#3319](#3319)
- chore(provider-generator): fix typo in docstring
[\#3316](#3316)
- chore: remove label action
[\#3315](#3315)
- chore(tests): re-enable provider schema tests
[\#3314](#3314)
- chore(lib): Formalize error messages in lib
[\#3312](#3312)
- chore: ignore nx cache
[\#3303](#3303)
- chore: re-enable operator example
[\#3302](#3302)
- chore: remove reference to mergeLists
[\#3301](#3301)
- chore(deps): pin trusted workflows based on HashiCorp TSCCR
[\#3293](#3293)
- chore: Run all tests per PR unless skipped
[\#3286](#3286)
- chore: remove tabs in documentation
[\#3284](#3284)
- chore: Upgrade dependencies for @cdktf/hcl2json
[\#3283](#3283)
- chore: Upgrade dependencies for @cdktf/commons
[\#3282](#3282)
- chore(deps): pin trusted workflows based on HashiCorp TSCCR
[\#3279](#3279)
- chore: add depcheck for cdktf lib
[\#3276](#3276)
- chore: add depcheck for hcl2cdk
[\#3275](#3275)
- chore: add depcheck for hcl2json
[\#3274](#3274)
- chore: fix dependencies for provider packages
[\#3271](#3271)
- chore: dependency check commons package
[\#3270](#3270)
- chore: Upgrade dependencies for @cdktf/commons
[\#3268](#3268)
- chore: Upgrade dependencies for @cdktf/provider-schema
[\#3267](#3267)
- chore: Upgrade dependencies for @cdktf/cli-core
[\#3266](#3266)
- chore: Upgrade dependencies for @cdktf/hcl2json
[\#3265](#3265)
- chore(deps): pin trusted workflows based on HashiCorp TSCCR
[\#3263](#3263)
- chore: update registry conversion tool
[\#3261](#3261)
- chore: Upgrade dependencies for cdktf
[\#3252](#3252)
- chore: Upgrade dependencies for @cdktf/cli-core
[\#3244](#3244)

---------

Co-authored-by: Daniel Schmidt <danielmschmidt92@gmail.com>
Copy link
Contributor

github-actions bot commented Feb 9, 2024

I'm going to lock this pull request because it has been closed for 30 days. This helps our maintainers find and focus on the active issues. If you've found a problem that seems related to this change, please open a new issue and complete the issue template so we can capture all the details necessary to investigate further.

@github-actions github-actions bot locked as resolved and limited conversation to collaborators Feb 9, 2024
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

[Feature] Add Support for HCL Output
3 participants