databricks-cli/bundle
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
..
artifacts Refactor library to artifact matching to not use pointers (#1172) 2024-02-05 15:29:45 +00:00
config Use dynamic configuration model in bundles (#1098) 2024-02-16 19:41:58 +00:00
deploy Use `dyn.Value` as input to generating Terraform JSON (#1218) 2024-02-16 20:54:38 +00:00
deployer Fix locker unlock for destroy (#492) 2023-06-19 15:57:25 +02:00
env Consolidate environment variable interaction (#747) 2023-09-11 08:18:43 +00:00
internal Use dynamic configuration model in bundles (#1098) 2024-02-16 19:41:58 +00:00
libraries Refactor library to artifact matching to not use pointers (#1172) 2024-02-05 15:29:45 +00:00
metadata Make `file_path` and `artifact_path` fields consistent with json tag (#987) 2023-11-15 13:37:26 +00:00
permissions Revert "Filter current user from resource permissions (#1145)" (#1179) 2024-02-07 09:22:44 +00:00
phases Use dynamic configuration model in bundles (#1098) 2024-02-16 19:41:58 +00:00
python Use MockWorkspaceClient from SDK instead of WithImpl mocking (#1134) 2024-01-19 14:12:58 +00:00
run Added `--restart` flag for `bundle run` command (#1191) 2024-02-09 14:33:14 +00:00
schema Bump github.com/databricks/databricks-sdk-go from 0.30.1 to 0.32.0 (#1199) 2024-02-15 14:52:17 +00:00
scripts Added exec.NewCommandExecutor to execute commands with correct interpreter (#1075) 2023-12-21 15:45:23 +00:00
tests Use dynamic configuration model in bundles (#1098) 2024-02-16 19:41:58 +00:00
bundle.go Move folders package into libs (#1184) 2024-02-07 16:33:18 +00:00
bundle_test.go Consolidate environment variable interaction (#747) 2023-09-11 08:18:43 +00:00
context.go Rename variable `bundle -> b` (#989) 2023-11-15 14:03:36 +00:00
context_test.go Add command that writes the materialized bundle configuration to stdout (#95) 2022-11-21 15:39:53 +01:00
deferred.go Added support for bundle.Seq, simplified Mutator.Apply interface (#403) 2023-05-24 14:45:19 +02:00
deferred_test.go Rename variable `bundle -> b` (#989) 2023-11-15 14:03:36 +00:00
log_string.go Tune output of bundle deploy command (#1047) 2023-12-21 08:00:37 +00:00
mutator.go Use dynamic configuration model in bundles (#1098) 2024-02-16 19:41:58 +00:00
mutator_test.go Rename variable `bundle -> b` (#989) 2023-11-15 14:03:36 +00:00
root.go Move folders package into libs (#1184) 2024-02-07 16:33:18 +00:00
root_test.go Consolidate environment variable interaction (#747) 2023-09-11 08:18:43 +00:00
seq.go Added support for bundle.Seq, simplified Mutator.Apply interface (#403) 2023-05-24 14:45:19 +02:00
seq_test.go Rename variable `bundle -> b` (#989) 2023-11-15 14:03:36 +00:00