databricks-cli/libs
Pieter Noordhuis f70ec359dc
Use `dyn.Value` as input to generating Terraform JSON (#1218)
## Changes

This builds on #1098 and uses the `dyn.Value` representation of the
bundle configuration to generate the Terraform JSON definition of
resources in the bundle.

The existing code (in `BundleToTerraform`) was not great and in an
effort to slightly improve this, I added a package `tfdyn` that includes
dedicated files for each resource type. Every resource type has its own
conversion type that takes the `dyn.Value` of the bundle-side resource
and converts it into Terraform resources (e.g. a job and optionally its
permissions).

Because we now use a `dyn.Value` as input, we can represent and emit
zero-values that have so far been omitted. For example, setting
`num_workers: 0` in your bundle configuration now propagates all the way
to the Terraform JSON definition.

## Tests

* Unit tests for every converter. I reused the test inputs from
`convert_test.go`.
* Equivalence tests in every existing test case checks that the
resulting JSON is identical.
* I manually compared the TF JSON file generated by the CLI from the
main branch and from this PR on all of our bundles and bundle examples
(internal and external) and found the output doesn't change (with the
exception of the odd zero-value being included by the version in this
PR).
2024-02-16 20:54:38 +00:00
..
auth Add short_name helper function to bundle init templates (#1167) 2024-02-01 16:46:07 +00:00
cmdgroup Make sure grouped flags are added to the command flag set (#1180) 2024-02-07 10:27:13 +00:00
cmdio Improve experience for multiple builtin templates (#1052) 2023-12-27 12:03:08 +00:00
databrickscfg Skip profile resolution if `DATABRICKS_AUTH_TYPE` is set (#1068) 2023-12-18 09:57:07 +00:00
diag Rename libs/config -> libs/dyn (#1086) 2023-12-22 13:20:45 +00:00
dyn Use `dyn.Value` as input to generating Terraform JSON (#1218) 2024-02-16 20:54:38 +00:00
env Fix `panic: $HOME is not set` (#1027) 2023-11-29 19:08:27 +00:00
errs Added ability for deferred mutator execution (#380) 2023-05-16 18:01:50 +02:00
exec Avoid race-conditions while executing sub-commands (#1201) 2024-02-12 15:04:14 +00:00
filer Correctly overwrite local state if remote state is newer (#1008) 2023-11-24 11:15:46 +00:00
fileset Support .gitignore syntax in sync section and make sure it works recursively (#854) 2023-10-10 08:45:15 +00:00
flags Add override to support YAML inputs for apps (#921) 2023-10-27 18:57:26 +00:00
folders Move folders package into libs (#1184) 2024-02-07 16:33:18 +00:00
git Move folders package into libs (#1184) 2024-02-07 16:33:18 +00:00
jsonschema Add support for `anyOf` to `skip_prompt_if` (#1133) 2024-01-25 10:09:42 +00:00
locker Correct name for force acquire deploy flag (#656) 2023-08-15 19:03:43 +00:00
log Rewrite the friendly log handler (#1038) 2023-12-01 12:17:04 +00:00
notebook Added `databricks bundle generate job` command (#1043) 2024-01-17 14:26:33 +00:00
process Stub out Python virtual environment installation for `labs` commands (#1057) 2023-12-11 16:30:19 +00:00
python Added `python.DetectInterpreters` and other utils (#805) 2023-10-03 10:47:09 +00:00
set Added support for sync.include and sync.exclude sections (#671) 2023-08-18 08:07:25 +00:00
sync Support .gitignore syntax in sync section and make sure it works recursively (#854) 2023-10-10 08:45:15 +00:00
tags Library to validate and normalize cloud specific tags (#819) 2023-09-29 08:49:08 +00:00
template Use dynamic configuration model in bundles (#1098) 2024-02-16 19:41:58 +00:00
terraform Add bundle destroy command (#300) 2023-04-06 12:54:58 +02:00
testfile Refactor and cover edge cases in sync integration tests (#160) 2023-01-10 13:16:30 +01:00
textutil Added `databricks bundle generate job` command (#1043) 2024-01-17 14:26:33 +00:00