databricks-cli/bundle/deploy/terraform
shreyas-goenka 4e8e027380
Sort tasks by `task_key` before generating the Terraform configuration (#1776)
## Changes
Sort the tasks in the resultant `bundle.tf.json`. This is important
because configuration from one task can leak into another if the tasks
are not sorted.

For more details see:
1.
https://github.com/databricks/terraform-provider-databricks/issues/3951
2.
https://github.com/databricks/terraform-provider-databricks/issues/4011

## Tests
Unit test and manually.

For manual testing I used the following configuration:
```
resources:
  jobs:
    foo:
      tasks: 
        - task_key: task-Z
          notebook_task: 
            notebook_path: nb.py
            source: GIT
          existing_cluster_id: 0715-133738-ju0ma84z

        - task_key: task-1
          notebook_task: 
            notebook_path: ${workspace.file_path}/local.py
            source: WORKSPACE
          existing_cluster_id: 0715-133738-ju0ma84z
          depends_on: 
            - task_key: task-Z


      git_source: 
        git_provider: gitHub
        git_url: https://github.com/shreyas-goenka/job-source-tmp.git
        git_branch: main
```

Steps (1):
1. Deploy this bundle.
2. Comment out "source: GIT"
3. Deploy again

Before:
Deploying this bundle twice would fail. This is because the "source:
GIT" would carry over to the next deployment.

After:
There was no error on the subsequent deployment.

Steps (2):
1. Deploy once
2. Deploy again

Before:
Works correctly but leads to a update API call every time.

After:
No diff is detected by terraform.
2024-09-26 13:22:22 +00:00
..
tfdyn Sort tasks by `task_key` before generating the Terraform configuration (#1776) 2024-09-26 13:22:22 +00:00
apply.go Use precomputed terraform plan for `bundle deploy` (#1640) 2024-07-31 14:07:25 +00:00
check_running_resources.go Don't merge-in remote resources during depolyments (#1432) 2024-05-15 12:41:44 +00:00
check_running_resources_test.go Don't merge-in remote resources during depolyments (#1432) 2024-05-15 12:41:44 +00:00
convert.go Sort tasks by `task_key` before generating the Terraform configuration (#1776) 2024-09-26 13:22:22 +00:00
convert_test.go Added support for creating all-purpose clusters (#1698) 2024-09-23 10:42:34 +00:00
dir.go Consolidate environment variable interaction (#747) 2023-09-11 08:18:43 +00:00
import.go Fix streaming of stdout, stdin, stderr in cobra test runner (#1742) 2024-09-02 13:43:17 +00:00
init.go Pass along $AZURE_CONFIG_FILE to Terraform process (#1734) 2024-08-29 14:41:12 +00:00
init_test.go Pass along $AZURE_CONFIG_FILE to Terraform process (#1734) 2024-08-29 14:41:12 +00:00
interpolate.go Added support for creating all-purpose clusters (#1698) 2024-09-23 10:42:34 +00:00
interpolate_test.go Added support for creating all-purpose clusters (#1698) 2024-09-23 10:42:34 +00:00
load.go Don't fail while parsing outdated terraform state (#1404) 2024-05-01 08:22:35 +00:00
load_test.go Move path field to bundle type (#1316) 2024-03-27 09:03:24 +00:00
pkg.go Followup improvements to the Docker setup script (#1369) 2024-04-18 20:52:11 +00:00
pkg_test.go Followup improvements to the Docker setup script (#1369) 2024-04-18 20:52:11 +00:00
plan.go Move to a single prompt during bundle destroy (#1583) 2024-07-24 13:02:19 +00:00
state_pull.go Use local Terraform state only when lineage match (#1588) 2024-07-18 09:47:59 +00:00
state_pull_test.go Use local Terraform state only when lineage match (#1588) 2024-07-18 09:47:59 +00:00
state_push.go Use precomputed terraform plan for `bundle deploy` (#1640) 2024-07-31 14:07:25 +00:00
state_push_test.go Use local Terraform state only when lineage match (#1588) 2024-07-18 09:47:59 +00:00
state_test.go Use local Terraform state only when lineage match (#1588) 2024-07-18 09:47:59 +00:00
unbind.go Return `diag.Diagnostics` from mutators (#1305) 2024-03-25 14:18:47 +00:00
util.go Use local Terraform state only when lineage match (#1588) 2024-07-18 09:47:59 +00:00
util_test.go Use local Terraform state only when lineage match (#1588) 2024-07-18 09:47:59 +00:00
write.go Return `diag.Diagnostics` from mutators (#1305) 2024-03-25 14:18:47 +00:00