From bf06dec628c34de8632f178a7cf0da4a30e819e1 Mon Sep 17 00:00:00 2001 From: Denis Bilenko Date: Wed, 7 Oct 2026 12:07:57 +0200 Subject: [PATCH 01/10] Allow bundle summary with engine: terraform Co-authored-by: Isaac --- .../bundles/summary-terraform-engine.md | 1 + .../summary/engine-terraform/databricks.yml | 8 +++ .../summary/engine-terraform/out.test.toml | 2 + .../summary/engine-terraform/output.txt | 57 +++++++++++++++++++ .../bundle/summary/engine-terraform/script | 7 +++ bundle/bundle.go | 5 ++ bundle/config/validate/validate_engine.go | 6 +- .../config/validate/validate_engine_test.go | 16 ++++++ cmd/bundle/summary.go | 4 ++ cmd/bundle/utils/process.go | 6 +- 10 files changed, 110 insertions(+), 2 deletions(-) create mode 100644 .nextchanges/bundles/summary-terraform-engine.md create mode 100644 acceptance/bundle/summary/engine-terraform/databricks.yml create mode 100644 acceptance/bundle/summary/engine-terraform/out.test.toml create mode 100644 acceptance/bundle/summary/engine-terraform/output.txt create mode 100644 acceptance/bundle/summary/engine-terraform/script diff --git a/.nextchanges/bundles/summary-terraform-engine.md b/.nextchanges/bundles/summary-terraform-engine.md new file mode 100644 index 00000000000..0a137fe06e1 --- /dev/null +++ b/.nextchanges/bundles/summary-terraform-engine.md @@ -0,0 +1 @@ +* `bundle summary` now works when `bundle.engine: terraform` is set, reporting the removed engine as a warning instead of failing. diff --git a/acceptance/bundle/summary/engine-terraform/databricks.yml b/acceptance/bundle/summary/engine-terraform/databricks.yml new file mode 100644 index 00000000000..06f4c135b48 --- /dev/null +++ b/acceptance/bundle/summary/engine-terraform/databricks.yml @@ -0,0 +1,8 @@ +bundle: + name: test-bundle + engine: terraform + +resources: + jobs: + my_job: + name: my job diff --git a/acceptance/bundle/summary/engine-terraform/out.test.toml b/acceptance/bundle/summary/engine-terraform/out.test.toml new file mode 100644 index 00000000000..a927a5fbc06 --- /dev/null +++ b/acceptance/bundle/summary/engine-terraform/out.test.toml @@ -0,0 +1,2 @@ +Cloud = false +EnvMatrix.DMS = ["", "true"] diff --git a/acceptance/bundle/summary/engine-terraform/output.txt b/acceptance/bundle/summary/engine-terraform/output.txt new file mode 100644 index 00000000000..e79b81c108c --- /dev/null +++ b/acceptance/bundle/summary/engine-terraform/output.txt @@ -0,0 +1,57 @@ + +>>> [CLI] bundle summary +Warning: the Terraform deployment engine has been removed in Databricks CLI v1.20.0 + in databricks.yml:3:11 + +Remove the "bundle.engine" setting (or set it to "direct") to deploy with the direct engine; existing Terraform state is migrated automatically. To keep using Terraform, revert to Databricks CLI v1.19.x. +See https://docs.databricks.com/dev-tools/bundles/direct for details + +Name: test-bundle +Target: default +Workspace: + User: [USERNAME] + Path: /Workspace/Users/[USERNAME]/.bundle/test-bundle/default +Resources: + Jobs: + my_job: + Name: my job + URL: (not deployed) + +>>> [CLI] bundle summary -o json +Warning: the Terraform deployment engine has been removed in Databricks CLI v1.20.0 + in databricks.yml:3:11 + +Remove the "bundle.engine" setting (or set it to "direct") to deploy with the direct engine; existing Terraform state is migrated automatically. To keep using Terraform, revert to Databricks CLI v1.19.x. +See https://docs.databricks.com/dev-tools/bundles/direct for details + +"terraform" + +>>> musterr [CLI] bundle validate +Error: the Terraform deployment engine has been removed in Databricks CLI v1.20.0 + in databricks.yml:3:11 + +Remove the "bundle.engine" setting (or set it to "direct") to deploy with the direct engine; existing Terraform state is migrated automatically. To keep using Terraform, revert to Databricks CLI v1.19.x. +See https://docs.databricks.com/dev-tools/bundles/direct for details + +Name: test-bundle +Target: default + +Found 1 error + +>>> [CLI] bundle summary +Warning: the Terraform deployment engine has been removed in Databricks CLI v1.20.0 + in databricks.yml:3:11 + +Remove the "bundle.engine" setting (or set it to "direct") to deploy with the direct engine; existing Terraform state is migrated automatically. To keep using Terraform, revert to Databricks CLI v1.19.x. +See https://docs.databricks.com/dev-tools/bundles/direct for details + +Name: test-bundle +Target: default +Workspace: + User: [USERNAME] + Path: /Workspace/Users/[USERNAME]/.bundle/test-bundle/default +Resources: + Jobs: + my_job: + Name: my job + URL: (not deployed) diff --git a/acceptance/bundle/summary/engine-terraform/script b/acceptance/bundle/summary/engine-terraform/script new file mode 100644 index 00000000000..47a1c36f032 --- /dev/null +++ b/acceptance/bundle/summary/engine-terraform/script @@ -0,0 +1,7 @@ +trace $CLI bundle summary +trace $CLI bundle summary -o json | jq .bundle.engine +# Other commands still reject engine: terraform. +trace musterr $CLI bundle validate + +# The env var is not checked by summary. +DATABRICKS_BUNDLE_ENGINE=terraform trace $CLI bundle summary diff --git a/bundle/bundle.go b/bundle/bundle.go index 5082e8a6c6c..68654bead7c 100644 --- a/bundle/bundle.go +++ b/bundle/bundle.go @@ -194,6 +194,11 @@ type Bundle struct { // leave the terraform state untouched. MigratingToDirect bool + // AllowTerraformEngineConfig reports a terraform bundle.engine as a warning instead + // of an error and skips the DATABRICKS_BUNDLE_ENGINE check. Set by read-only commands + // (bundle summary) so users can still inspect a bundle that pins the removed engine. + AllowTerraformEngineConfig bool + // Quiet is the output verbosity reduction requested via -q/--quiet, which is // repeatable: QuietSummary drops the per-resource lines, QuietAll additionally // drops the summary and progress lines, leaving warnings and errors. diff --git a/bundle/config/validate/validate_engine.go b/bundle/config/validate/validate_engine.go index 6ebd53df50e..056e0bd50a6 100644 --- a/bundle/config/validate/validate_engine.go +++ b/bundle/config/validate/validate_engine.go @@ -51,8 +51,12 @@ func (v *validateEngine) Apply(_ context.Context, b *bundle.Bundle) diag.Diagnos } if parsed == engine.EngineTerraform { + severity := diag.Error + if b.AllowTerraformEngineConfig { + severity = diag.Warning + } return diags.Append(diag.Diagnostic{ - Severity: diag.Error, + Severity: severity, Summary: engine.TerraformRemovedSummary, Detail: engine.TerraformRemovedConfigDetail, Locations: []dyn.Location{loc}, diff --git a/bundle/config/validate/validate_engine_test.go b/bundle/config/validate/validate_engine_test.go index a08e5c92bae..f74cb002650 100644 --- a/bundle/config/validate/validate_engine_test.go +++ b/bundle/config/validate/validate_engine_test.go @@ -81,3 +81,19 @@ func TestValidateEngineTerraformConfigDeprecated(t *testing.T) { assert.Contains(t, diags[0].Summary, "bundle.terraform is deprecated") assert.Equal(t, []dyn.Location{loc}, diags[0].Locations) } + +func TestValidateEngineTerraformAllowed(t *testing.T) { + b := &bundle.Bundle{ + Config: config.Root{ + Bundle: config.Bundle{ + Engine: engine.EngineTerraform, + }, + }, + AllowTerraformEngineConfig: true, + } + bundletest.SetLocation(b, "bundle.engine", []dyn.Location{{File: "databricks.yml", Line: 5, Column: 3}}) + diags := ValidateEngine().Apply(t.Context(), b) + assert.Len(t, diags, 1) + assert.Equal(t, diag.Warning, diags[0].Severity) + assert.Contains(t, diags[0].Summary, "has been removed") +} diff --git a/cmd/bundle/summary.go b/cmd/bundle/summary.go index b3a55a607cc..1a49a89c334 100644 --- a/cmd/bundle/summary.go +++ b/cmd/bundle/summary.go @@ -31,6 +31,10 @@ Useful after deployment to see what was created and where to find it.`, AlwaysPull: forcePull, IncludeLocations: includeLocations, InitIDs: true, + // Let users inspect a bundle that pins the removed Terraform engine. + InitFunc: func(b *bundle.Bundle) { + b.AllowTerraformEngineConfig = true + }, }) if err != nil { return err diff --git a/cmd/bundle/utils/process.go b/cmd/bundle/utils/process.go index a93e314c7df..7e60716ad6c 100644 --- a/cmd/bundle/utils/process.go +++ b/cmd/bundle/utils/process.go @@ -562,12 +562,16 @@ func ValidateEngineSetting(ctx context.Context, b *bundle.Bundle) error { if !ok { return fmt.Errorf("invalid value %q for bundle.engine (expected %q)", configEngine, engine.EngineDirect) } - if parsed == engine.EngineTerraform { + if parsed == engine.EngineTerraform && !b.AllowTerraformEngineConfig { return errors.New(engine.TerraformRemovedConfigMessage) } return nil } + if b.AllowTerraformEngineConfig { + return nil + } + envEngine, err := engine.FromEnv(ctx) if err != nil { return err From d739a8775986766dcb31d5377aa50135e3b56814 Mon Sep 17 00:00:00 2001 From: Denis Bilenko Date: Wed, 7 Oct 2026 12:08:18 +0200 Subject: [PATCH 02/10] Add PR link to changelog fragment Co-authored-by: Isaac --- .nextchanges/bundles/summary-terraform-engine.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.nextchanges/bundles/summary-terraform-engine.md b/.nextchanges/bundles/summary-terraform-engine.md index 0a137fe06e1..93b2db17e2e 100644 --- a/.nextchanges/bundles/summary-terraform-engine.md +++ b/.nextchanges/bundles/summary-terraform-engine.md @@ -1 +1 @@ -* `bundle summary` now works when `bundle.engine: terraform` is set, reporting the removed engine as a warning instead of failing. +* `bundle summary` now works when `bundle.engine: terraform` is set, reporting the removed engine as a warning instead of failing. ([#6968](https://github.com/databricks/cli/pull/6968)) From d219ca95664c80e2af8e38923decd3d9d9bcd5d6 Mon Sep 17 00:00:00 2001 From: Denis Bilenko Date: Wed, 7 Oct 2026 12:14:03 +0200 Subject: [PATCH 03/10] Drop changelog fragment: terraform removal is unreleased Co-authored-by: Isaac --- .nextchanges/bundles/summary-terraform-engine.md | 1 - 1 file changed, 1 deletion(-) delete mode 100644 .nextchanges/bundles/summary-terraform-engine.md diff --git a/.nextchanges/bundles/summary-terraform-engine.md b/.nextchanges/bundles/summary-terraform-engine.md deleted file mode 100644 index 93b2db17e2e..00000000000 --- a/.nextchanges/bundles/summary-terraform-engine.md +++ /dev/null @@ -1 +0,0 @@ -* `bundle summary` now works when `bundle.engine: terraform` is set, reporting the removed engine as a warning instead of failing. ([#6968](https://github.com/databricks/cli/pull/6968)) From 7624287b2337e42723a397e614963e94dbb5b92a Mon Sep 17 00:00:00 2001 From: Denis Bilenko Date: Wed, 7 Oct 2026 12:22:52 +0200 Subject: [PATCH 04/10] acc: bundle summary with engine: terraform shows IDs from terraform state Co-authored-by: Isaac --- .../summary-engine-terraform/databricks.yml | 7 ++ .../summary-engine-terraform/out.test.toml | 2 + .../auto/summary-engine-terraform/output.txt | 45 +++++++ .../auto/summary-engine-terraform/script | 17 +++ .../terraform-requests.json | 19 +++ .../terraform.tfstate | 110 ++++++++++++++++++ 6 files changed, 200 insertions(+) create mode 100644 acceptance/bundle/migrate/auto/summary-engine-terraform/databricks.yml create mode 100644 acceptance/bundle/migrate/auto/summary-engine-terraform/out.test.toml create mode 100644 acceptance/bundle/migrate/auto/summary-engine-terraform/output.txt create mode 100644 acceptance/bundle/migrate/auto/summary-engine-terraform/script create mode 100644 acceptance/bundle/migrate/auto/summary-engine-terraform/terraform-requests.json create mode 100644 acceptance/bundle/migrate/auto/summary-engine-terraform/terraform.tfstate diff --git a/acceptance/bundle/migrate/auto/summary-engine-terraform/databricks.yml b/acceptance/bundle/migrate/auto/summary-engine-terraform/databricks.yml new file mode 100644 index 00000000000..7acc0c3576e --- /dev/null +++ b/acceptance/bundle/migrate/auto/summary-engine-terraform/databricks.yml @@ -0,0 +1,7 @@ +bundle: + name: test-bundle + +resources: + jobs: + test_job: + name: "Test Auto-Migrate Job" diff --git a/acceptance/bundle/migrate/auto/summary-engine-terraform/out.test.toml b/acceptance/bundle/migrate/auto/summary-engine-terraform/out.test.toml new file mode 100644 index 00000000000..19b5b15d11f --- /dev/null +++ b/acceptance/bundle/migrate/auto/summary-engine-terraform/out.test.toml @@ -0,0 +1,2 @@ +Cloud = false +EnvMatrix.DMS = [""] diff --git a/acceptance/bundle/migrate/auto/summary-engine-terraform/output.txt b/acceptance/bundle/migrate/auto/summary-engine-terraform/output.txt new file mode 100644 index 00000000000..4b2da4d0b44 --- /dev/null +++ b/acceptance/bundle/migrate/auto/summary-engine-terraform/output.txt @@ -0,0 +1,45 @@ + +=== Replay a prior terraform deployment +>>> replay_tfstate.py terraform-requests.json terraform.tfstate + +>>> update_file.py databricks.yml name: test-bundle name: test-bundle + engine: terraform + +=== Summary works with engine: terraform and shows the deployed job's ID and URL +>>> [CLI] bundle summary +Warning: the Terraform deployment engine has been removed in Databricks CLI v1.20.0 + in databricks.yml:3:11 + +Remove the "bundle.engine" setting (or set it to "direct") to deploy with the direct engine; existing Terraform state is migrated automatically. To keep using Terraform, revert to Databricks CLI v1.19.x. +See https://docs.databricks.com/dev-tools/bundles/direct for details + +Notice: migrating your bundle to direct deployment engine (https://github.com/databricks/cli/issues/6765). +Name: test-bundle +Target: default +Workspace: + User: [USERNAME] + Path: /Workspace/Users/[USERNAME]/.bundle/test-bundle/default +Resources: + Jobs: + test_job: + Name: Test Auto-Migrate Job + URL: [DATABRICKS_URL]/jobs/[NUMID]?w=[NUMID] + +>>> [CLI] bundle summary -o json +Warning: the Terraform deployment engine has been removed in Databricks CLI v1.20.0 + in databricks.yml:3:11 + +Remove the "bundle.engine" setting (or set it to "direct") to deploy with the direct engine; existing Terraform state is migrated automatically. To keep using Terraform, revert to Databricks CLI v1.19.x. +See https://docs.databricks.com/dev-tools/bundles/direct for details + +Notice: migrating your bundle to direct deployment engine (https://github.com/databricks/cli/issues/6765). +{ + "engine": "terraform", + "id": "[NUMID]", + "url": "[DATABRICKS_URL]/jobs/[NUMID]?w=[NUMID]" +} + +=== Summary does not migrate: terraform state is left untouched + +>>> find.py \.databricks/.*(\.tfstate|resources.*\.json|\.wal) +.databricks/bundle/default/terraform/terraform.tfstate diff --git a/acceptance/bundle/migrate/auto/summary-engine-terraform/script b/acceptance/bundle/migrate/auto/summary-engine-terraform/script new file mode 100644 index 00000000000..6df430aaf55 --- /dev/null +++ b/acceptance/bundle/migrate/auto/summary-engine-terraform/script @@ -0,0 +1,17 @@ +export DATABRICKS_BUNDLE_ENGINE= + +title "Replay a prior terraform deployment" +trace replay_tfstate.py terraform-requests.json terraform.tfstate +rm -f "$OUT_REQUESTS" + +# Set after the replay: replay_tfstate.py runs bundle validate, which rejects engine: terraform. +trace update_file.py databricks.yml " name: test-bundle" " name: test-bundle + engine: terraform" + +title "Summary works with engine: terraform and shows the deployed job's ID and URL" +trace $CLI bundle summary +trace $CLI bundle summary -o json | jq '{engine: .bundle.engine, id: .resources.jobs.test_job.id, url: .resources.jobs.test_job.url}' +rm -f "$OUT_REQUESTS" + +title "Summary does not migrate: terraform state is left untouched\n" +trace find.py '\.databricks/.*(\.tfstate|resources.*\.json|\.wal)' diff --git a/acceptance/bundle/migrate/auto/summary-engine-terraform/terraform-requests.json b/acceptance/bundle/migrate/auto/summary-engine-terraform/terraform-requests.json new file mode 100644 index 00000000000..6482593b189 --- /dev/null +++ b/acceptance/bundle/migrate/auto/summary-engine-terraform/terraform-requests.json @@ -0,0 +1,19 @@ +[ + { + "method": "POST", + "path": "/api/2.2/jobs/create", + "body": { + "deployment": { + "kind": "BUNDLE", + "metadata_file_path": "/Workspace/Users/tester@databricks.com/.bundle/test-bundle/default/state/metadata.json" + }, + "edit_mode": "UI_LOCKED", + "format": "MULTI_TASK", + "max_concurrent_runs": 1, + "name": "Test Auto-Migrate Job", + "queue": { + "enabled": true + } + } + } +] diff --git a/acceptance/bundle/migrate/auto/summary-engine-terraform/terraform.tfstate b/acceptance/bundle/migrate/auto/summary-engine-terraform/terraform.tfstate new file mode 100644 index 00000000000..c04f332a595 --- /dev/null +++ b/acceptance/bundle/migrate/auto/summary-engine-terraform/terraform.tfstate @@ -0,0 +1,110 @@ +{ + "version": 4, + "terraform_version": "1.5.5", + "serial": 1, + "lineage": "c39488aa-8f36-06fd-a7cb-3f0c95b4c506", + "outputs": {}, + "resources": [ + { + "mode": "managed", + "type": "databricks_job", + "name": "test_job", + "provider": "provider[\"registry.terraform.io/databricks/databricks\"]", + "instances": [ + { + "schema_version": 2, + "attributes": { + "always_running": false, + "budget_policy_id": null, + "continuous": [], + "control_run_state": false, + "dbt_task": [], + "deployment": [ + { + "deployment_id": "", + "kind": "BUNDLE", + "metadata_file_path": "/Workspace/Users/tester@databricks.com/.bundle/test-bundle/default/state/metadata.json", + "version_id": "" + } + ], + "description": null, + "edit_mode": "UI_LOCKED", + "email_notifications": [ + { + "no_alert_for_skipped_runs": false, + "on_duration_warning_threshold_exceeded": [], + "on_failure": [], + "on_start": [], + "on_streaming_backlog_exceeded": [], + "on_success": [] + } + ], + "environment": [], + "existing_cluster_id": null, + "format": "MULTI_TASK", + "git_source": [], + "health": [], + "id": "8790612527183335000", + "job_cluster": [], + "library": [], + "max_concurrent_runs": 1, + "max_retries": 0, + "min_retry_interval_millis": 0, + "name": "Test Auto-Migrate Job", + "new_cluster": [], + "notebook_task": [], + "notification_settings": [], + "parameter": [], + "parent_path": null, + "performance_target": null, + "pipeline_task": [], + "provider_config": [ + { + "workspace_id": "900800700600" + } + ], + "python_wheel_task": [], + "queue": [ + { + "enabled": true + } + ], + "retry_on_timeout": false, + "run_as": [ + { + "group_name": "", + "service_principal_name": "", + "user_name": "tester@databricks.com" + } + ], + "run_job_task": [], + "schedule": [], + "spark_jar_task": [], + "spark_python_task": [], + "spark_submit_task": [], + "tags": null, + "task": [], + "timeout_seconds": 0, + "timeouts": null, + "trigger": [], + "triggers": [], + "url": "[DATABRICKS_URL]/#job/8790612527183335000", + "usage_policy_id": null, + "webhook_notifications": [ + { + "on_duration_warning_threshold_exceeded": [], + "on_failure": [], + "on_start": [], + "on_streaming_backlog_exceeded": [], + "on_success": [] + } + ] + }, + "sensitive_attributes": [], + "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjoxODAwMDAwMDAwMDAwLCJ1cGRhdGUiOjE4MDAwMDAwMDAwMDB9LCJzY2hlbWFfdmVyc2lvbiI6IjIifQ==" + } + ] + } + ], + "check_results": null +} From 9df0b15a412ef5178bae7fa29a35ad24f186f0a6 Mon Sep 17 00:00:00 2001 From: Denis Bilenko Date: Wed, 7 Oct 2026 12:23:44 +0200 Subject: [PATCH 05/10] acc: use flow syntax instead of multiline update_file.py Co-authored-by: Isaac --- .../migrate/auto/summary-engine-terraform/databricks.yml | 3 +-- .../migrate/auto/summary-engine-terraform/output.txt | 7 +++---- .../bundle/migrate/auto/summary-engine-terraform/script | 3 +-- 3 files changed, 5 insertions(+), 8 deletions(-) diff --git a/acceptance/bundle/migrate/auto/summary-engine-terraform/databricks.yml b/acceptance/bundle/migrate/auto/summary-engine-terraform/databricks.yml index 7acc0c3576e..5fa3205df9d 100644 --- a/acceptance/bundle/migrate/auto/summary-engine-terraform/databricks.yml +++ b/acceptance/bundle/migrate/auto/summary-engine-terraform/databricks.yml @@ -1,5 +1,4 @@ -bundle: - name: test-bundle +bundle: {name: test-bundle} resources: jobs: diff --git a/acceptance/bundle/migrate/auto/summary-engine-terraform/output.txt b/acceptance/bundle/migrate/auto/summary-engine-terraform/output.txt index 4b2da4d0b44..a87a5869c06 100644 --- a/acceptance/bundle/migrate/auto/summary-engine-terraform/output.txt +++ b/acceptance/bundle/migrate/auto/summary-engine-terraform/output.txt @@ -2,13 +2,12 @@ === Replay a prior terraform deployment >>> replay_tfstate.py terraform-requests.json terraform.tfstate ->>> update_file.py databricks.yml name: test-bundle name: test-bundle - engine: terraform +>>> update_file.py databricks.yml {name: test-bundle} {name: test-bundle, engine: terraform} === Summary works with engine: terraform and shows the deployed job's ID and URL >>> [CLI] bundle summary Warning: the Terraform deployment engine has been removed in Databricks CLI v1.20.0 - in databricks.yml:3:11 + in databricks.yml:1:37 Remove the "bundle.engine" setting (or set it to "direct") to deploy with the direct engine; existing Terraform state is migrated automatically. To keep using Terraform, revert to Databricks CLI v1.19.x. See https://docs.databricks.com/dev-tools/bundles/direct for details @@ -27,7 +26,7 @@ Resources: >>> [CLI] bundle summary -o json Warning: the Terraform deployment engine has been removed in Databricks CLI v1.20.0 - in databricks.yml:3:11 + in databricks.yml:1:37 Remove the "bundle.engine" setting (or set it to "direct") to deploy with the direct engine; existing Terraform state is migrated automatically. To keep using Terraform, revert to Databricks CLI v1.19.x. See https://docs.databricks.com/dev-tools/bundles/direct for details diff --git a/acceptance/bundle/migrate/auto/summary-engine-terraform/script b/acceptance/bundle/migrate/auto/summary-engine-terraform/script index 6df430aaf55..131423e298e 100644 --- a/acceptance/bundle/migrate/auto/summary-engine-terraform/script +++ b/acceptance/bundle/migrate/auto/summary-engine-terraform/script @@ -5,8 +5,7 @@ trace replay_tfstate.py terraform-requests.json terraform.tfstate rm -f "$OUT_REQUESTS" # Set after the replay: replay_tfstate.py runs bundle validate, which rejects engine: terraform. -trace update_file.py databricks.yml " name: test-bundle" " name: test-bundle - engine: terraform" +trace update_file.py databricks.yml "{name: test-bundle}" "{name: test-bundle, engine: terraform}" title "Summary works with engine: terraform and shows the deployed job's ID and URL" trace $CLI bundle summary From fec68f97c7589471d68090648ccded0f78d86a69 Mon Sep 17 00:00:00 2001 From: Denis Bilenko Date: Wed, 7 Oct 2026 12:25:56 +0200 Subject: [PATCH 06/10] acc: replace_ids.py to assert the exact job id in summary Co-authored-by: Isaac --- .../bundle/migrate/auto/summary-engine-terraform/output.txt | 6 +++--- .../bundle/migrate/auto/summary-engine-terraform/script | 1 + 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/acceptance/bundle/migrate/auto/summary-engine-terraform/output.txt b/acceptance/bundle/migrate/auto/summary-engine-terraform/output.txt index a87a5869c06..a355cdf4187 100644 --- a/acceptance/bundle/migrate/auto/summary-engine-terraform/output.txt +++ b/acceptance/bundle/migrate/auto/summary-engine-terraform/output.txt @@ -22,7 +22,7 @@ Resources: Jobs: test_job: Name: Test Auto-Migrate Job - URL: [DATABRICKS_URL]/jobs/[NUMID]?w=[NUMID] + URL: [DATABRICKS_URL]/jobs/[TEST_JOB_ID]?w=[NUMID] >>> [CLI] bundle summary -o json Warning: the Terraform deployment engine has been removed in Databricks CLI v1.20.0 @@ -34,8 +34,8 @@ See https://docs.databricks.com/dev-tools/bundles/direct for details Notice: migrating your bundle to direct deployment engine (https://github.com/databricks/cli/issues/6765). { "engine": "terraform", - "id": "[NUMID]", - "url": "[DATABRICKS_URL]/jobs/[NUMID]?w=[NUMID]" + "id": "[TEST_JOB_ID]", + "url": "[DATABRICKS_URL]/jobs/[TEST_JOB_ID]?w=[NUMID]" } === Summary does not migrate: terraform state is left untouched diff --git a/acceptance/bundle/migrate/auto/summary-engine-terraform/script b/acceptance/bundle/migrate/auto/summary-engine-terraform/script index 131423e298e..131033d8e9a 100644 --- a/acceptance/bundle/migrate/auto/summary-engine-terraform/script +++ b/acceptance/bundle/migrate/auto/summary-engine-terraform/script @@ -2,6 +2,7 @@ export DATABRICKS_BUNDLE_ENGINE= title "Replay a prior terraform deployment" trace replay_tfstate.py terraform-requests.json terraform.tfstate +replace_ids.py rm -f "$OUT_REQUESTS" # Set after the replay: replay_tfstate.py runs bundle validate, which rejects engine: terraform. From bbcd53c5829278b201bb3b0c57bf107beaf0efb8 Mon Sep 17 00:00:00 2001 From: Denis Bilenko Date: Wed, 7 Oct 2026 12:34:21 +0200 Subject: [PATCH 07/10] acc: exercise env var bypass without bundle.engine; assert summary makes no writes Co-authored-by: Isaac --- .../auto/summary-engine-terraform/output.txt | 4 +++- .../auto/summary-engine-terraform/script | 4 ++-- .../summary/engine-terraform/output.txt | 19 +++++++++++++------ .../bundle/summary/engine-terraform/script | 4 +++- 4 files changed, 21 insertions(+), 10 deletions(-) diff --git a/acceptance/bundle/migrate/auto/summary-engine-terraform/output.txt b/acceptance/bundle/migrate/auto/summary-engine-terraform/output.txt index a355cdf4187..296605f953d 100644 --- a/acceptance/bundle/migrate/auto/summary-engine-terraform/output.txt +++ b/acceptance/bundle/migrate/auto/summary-engine-terraform/output.txt @@ -38,7 +38,9 @@ Notice: migrating your bundle to direct deployment engine (https://github.com/da "url": "[DATABRICKS_URL]/jobs/[TEST_JOB_ID]?w=[NUMID]" } -=== Summary does not migrate: terraform state is left untouched +=== Summary does not migrate: no state writes, terraform state is left untouched + +>>> print_requests.py >>> find.py \.databricks/.*(\.tfstate|resources.*\.json|\.wal) .databricks/bundle/default/terraform/terraform.tfstate diff --git a/acceptance/bundle/migrate/auto/summary-engine-terraform/script b/acceptance/bundle/migrate/auto/summary-engine-terraform/script index 131033d8e9a..99e67dda041 100644 --- a/acceptance/bundle/migrate/auto/summary-engine-terraform/script +++ b/acceptance/bundle/migrate/auto/summary-engine-terraform/script @@ -11,7 +11,7 @@ trace update_file.py databricks.yml "{name: test-bundle}" "{name: test-bundle, e title "Summary works with engine: terraform and shows the deployed job's ID and URL" trace $CLI bundle summary trace $CLI bundle summary -o json | jq '{engine: .bundle.engine, id: .resources.jobs.test_job.id, url: .resources.jobs.test_job.url}' -rm -f "$OUT_REQUESTS" -title "Summary does not migrate: terraform state is left untouched\n" +title "Summary does not migrate: no state writes, terraform state is left untouched\n" +trace print_requests.py trace find.py '\.databricks/.*(\.tfstate|resources.*\.json|\.wal)' diff --git a/acceptance/bundle/summary/engine-terraform/output.txt b/acceptance/bundle/summary/engine-terraform/output.txt index e79b81c108c..e81fd453052 100644 --- a/acceptance/bundle/summary/engine-terraform/output.txt +++ b/acceptance/bundle/summary/engine-terraform/output.txt @@ -38,13 +38,9 @@ Target: default Found 1 error ->>> [CLI] bundle summary -Warning: the Terraform deployment engine has been removed in Databricks CLI v1.20.0 - in databricks.yml:3:11 - -Remove the "bundle.engine" setting (or set it to "direct") to deploy with the direct engine; existing Terraform state is migrated automatically. To keep using Terraform, revert to Databricks CLI v1.19.x. -See https://docs.databricks.com/dev-tools/bundles/direct for details +>>> update_file.py databricks.yml engine: terraform +>>> [CLI] bundle summary Name: test-bundle Target: default Workspace: @@ -55,3 +51,14 @@ Resources: my_job: Name: my job URL: (not deployed) + +>>> musterr [CLI] bundle validate +Error: the Terraform deployment engine has been removed in Databricks CLI v1.20.0 + +Unset the DATABRICKS_BUNDLE_ENGINE environment variable (or set it to "direct") to deploy with the direct engine; existing Terraform state is migrated automatically. To keep using Terraform, revert to Databricks CLI v1.19.x. +See https://docs.databricks.com/dev-tools/bundles/direct for details + +Name: test-bundle +Target: default + +Found 1 error diff --git a/acceptance/bundle/summary/engine-terraform/script b/acceptance/bundle/summary/engine-terraform/script index 47a1c36f032..40bfbc31951 100644 --- a/acceptance/bundle/summary/engine-terraform/script +++ b/acceptance/bundle/summary/engine-terraform/script @@ -3,5 +3,7 @@ trace $CLI bundle summary -o json | jq .bundle.engine # Other commands still reject engine: terraform. trace musterr $CLI bundle validate -# The env var is not checked by summary. +# The env var is not checked by summary (bundle.engine is removed first, since it takes priority over the env var). +trace update_file.py databricks.yml " engine: terraform" "" DATABRICKS_BUNDLE_ENGINE=terraform trace $CLI bundle summary +DATABRICKS_BUNDLE_ENGINE=terraform trace musterr $CLI bundle validate From 7bbd20ce7b54be02c04f146de96d90be41ad4c2b Mon Sep 17 00:00:00 2001 From: Denis Bilenko Date: Wed, 7 Oct 2026 12:43:07 +0200 Subject: [PATCH 08/10] acc: fold summary engine: terraform check into migrate/auto/default Co-authored-by: Isaac --- .../migrate/auto/default/databricks.yml | 3 +- .../bundle/migrate/auto/default/output.txt | 45 +++++++ acceptance/bundle/migrate/auto/default/script | 12 ++ .../summary-engine-terraform/databricks.yml | 6 - .../summary-engine-terraform/out.test.toml | 2 - .../auto/summary-engine-terraform/output.txt | 46 -------- .../auto/summary-engine-terraform/script | 17 --- .../terraform-requests.json | 19 --- .../terraform.tfstate | 110 ------------------ 9 files changed, 58 insertions(+), 202 deletions(-) delete mode 100644 acceptance/bundle/migrate/auto/summary-engine-terraform/databricks.yml delete mode 100644 acceptance/bundle/migrate/auto/summary-engine-terraform/out.test.toml delete mode 100644 acceptance/bundle/migrate/auto/summary-engine-terraform/output.txt delete mode 100644 acceptance/bundle/migrate/auto/summary-engine-terraform/script delete mode 100644 acceptance/bundle/migrate/auto/summary-engine-terraform/terraform-requests.json delete mode 100644 acceptance/bundle/migrate/auto/summary-engine-terraform/terraform.tfstate diff --git a/acceptance/bundle/migrate/auto/default/databricks.yml b/acceptance/bundle/migrate/auto/default/databricks.yml index 7acc0c3576e..5fa3205df9d 100644 --- a/acceptance/bundle/migrate/auto/default/databricks.yml +++ b/acceptance/bundle/migrate/auto/default/databricks.yml @@ -1,5 +1,4 @@ -bundle: - name: test-bundle +bundle: {name: test-bundle} resources: jobs: diff --git a/acceptance/bundle/migrate/auto/default/output.txt b/acceptance/bundle/migrate/auto/default/output.txt index e5a10caf919..3755ca5dcde 100644 --- a/acceptance/bundle/migrate/auto/default/output.txt +++ b/acceptance/bundle/migrate/auto/default/output.txt @@ -2,6 +2,51 @@ === Replay a prior terraform deployment >>> replay_tfstate.py terraform-requests.json terraform.tfstate +=== Summary works with engine: terraform and shows the deployed job's ID and URL +>>> update_file.py databricks.yml {name: test-bundle} {name: test-bundle, engine: terraform} + +>>> [CLI] bundle summary +Warning: the Terraform deployment engine has been removed in Databricks CLI v1.20.0 + in databricks.yml:1:37 + +Remove the "bundle.engine" setting (or set it to "direct") to deploy with the direct engine; existing Terraform state is migrated automatically. To keep using Terraform, revert to Databricks CLI v1.19.x. +See https://docs.databricks.com/dev-tools/bundles/direct for details + +Notice: migrating your bundle to direct deployment engine (https://github.com/databricks/cli/issues/6765). +Name: test-bundle +Target: default +Workspace: + User: [USERNAME] + Path: /Workspace/Users/[USERNAME]/.bundle/test-bundle/default +Resources: + Jobs: + test_job: + Name: Test Auto-Migrate Job + URL: [DATABRICKS_URL]/jobs/[TEST_JOB_ID]?w=[NUMID] + +>>> [CLI] bundle summary -o json +Warning: the Terraform deployment engine has been removed in Databricks CLI v1.20.0 + in databricks.yml:1:37 + +Remove the "bundle.engine" setting (or set it to "direct") to deploy with the direct engine; existing Terraform state is migrated automatically. To keep using Terraform, revert to Databricks CLI v1.19.x. +See https://docs.databricks.com/dev-tools/bundles/direct for details + +Notice: migrating your bundle to direct deployment engine (https://github.com/databricks/cli/issues/6765). +{ + "engine": "terraform", + "id": "[TEST_JOB_ID]", + "url": "[DATABRICKS_URL]/jobs/[TEST_JOB_ID]?w=[NUMID]" +} + +=== Summary does not migrate: no state writes, terraform state is left untouched + +>>> print_requests.py + +>>> find.py \.databricks/.*(\.tfstate|resources.*\.json|\.wal) +.databricks/bundle/default/terraform/terraform.tfstate + +>>> update_file.py databricks.yml {name: test-bundle, engine: terraform} {name: test-bundle} + === Redeploy with nothing set: direct is the default, so auto-migration triggers >>> [CLI] bundle deploy Notice: migrating your bundle to direct deployment engine (https://github.com/databricks/cli/issues/6765). diff --git a/acceptance/bundle/migrate/auto/default/script b/acceptance/bundle/migrate/auto/default/script index 28f598a5dfc..e5a34df7e03 100644 --- a/acceptance/bundle/migrate/auto/default/script +++ b/acceptance/bundle/migrate/auto/default/script @@ -5,8 +5,20 @@ export DATABRICKS_BUNDLE_ENGINE= # must not deploy with terraform. title "Replay a prior terraform deployment" trace replay_tfstate.py terraform-requests.json terraform.tfstate +replace_ids.py rm -f "$OUT_REQUESTS" +# Set after the replay: replay_tfstate.py runs bundle validate, which rejects engine: terraform. +title "Summary works with engine: terraform and shows the deployed job's ID and URL" +trace update_file.py databricks.yml "{name: test-bundle}" "{name: test-bundle, engine: terraform}" +trace $CLI bundle summary +trace $CLI bundle summary -o json | jq '{engine: .bundle.engine, id: .resources.jobs.test_job.id, url: .resources.jobs.test_job.url}' + +title "Summary does not migrate: no state writes, terraform state is left untouched\n" +trace print_requests.py +trace find.py '\.databricks/.*(\.tfstate|resources.*\.json|\.wal)' +trace update_file.py databricks.yml "{name: test-bundle, engine: terraform}" "{name: test-bundle}" + title "Redeploy with nothing set: direct is the default, so auto-migration triggers" trace $CLI bundle deploy trace print_migration_telemetry diff --git a/acceptance/bundle/migrate/auto/summary-engine-terraform/databricks.yml b/acceptance/bundle/migrate/auto/summary-engine-terraform/databricks.yml deleted file mode 100644 index 5fa3205df9d..00000000000 --- a/acceptance/bundle/migrate/auto/summary-engine-terraform/databricks.yml +++ /dev/null @@ -1,6 +0,0 @@ -bundle: {name: test-bundle} - -resources: - jobs: - test_job: - name: "Test Auto-Migrate Job" diff --git a/acceptance/bundle/migrate/auto/summary-engine-terraform/out.test.toml b/acceptance/bundle/migrate/auto/summary-engine-terraform/out.test.toml deleted file mode 100644 index 19b5b15d11f..00000000000 --- a/acceptance/bundle/migrate/auto/summary-engine-terraform/out.test.toml +++ /dev/null @@ -1,2 +0,0 @@ -Cloud = false -EnvMatrix.DMS = [""] diff --git a/acceptance/bundle/migrate/auto/summary-engine-terraform/output.txt b/acceptance/bundle/migrate/auto/summary-engine-terraform/output.txt deleted file mode 100644 index 296605f953d..00000000000 --- a/acceptance/bundle/migrate/auto/summary-engine-terraform/output.txt +++ /dev/null @@ -1,46 +0,0 @@ - -=== Replay a prior terraform deployment ->>> replay_tfstate.py terraform-requests.json terraform.tfstate - ->>> update_file.py databricks.yml {name: test-bundle} {name: test-bundle, engine: terraform} - -=== Summary works with engine: terraform and shows the deployed job's ID and URL ->>> [CLI] bundle summary -Warning: the Terraform deployment engine has been removed in Databricks CLI v1.20.0 - in databricks.yml:1:37 - -Remove the "bundle.engine" setting (or set it to "direct") to deploy with the direct engine; existing Terraform state is migrated automatically. To keep using Terraform, revert to Databricks CLI v1.19.x. -See https://docs.databricks.com/dev-tools/bundles/direct for details - -Notice: migrating your bundle to direct deployment engine (https://github.com/databricks/cli/issues/6765). -Name: test-bundle -Target: default -Workspace: - User: [USERNAME] - Path: /Workspace/Users/[USERNAME]/.bundle/test-bundle/default -Resources: - Jobs: - test_job: - Name: Test Auto-Migrate Job - URL: [DATABRICKS_URL]/jobs/[TEST_JOB_ID]?w=[NUMID] - ->>> [CLI] bundle summary -o json -Warning: the Terraform deployment engine has been removed in Databricks CLI v1.20.0 - in databricks.yml:1:37 - -Remove the "bundle.engine" setting (or set it to "direct") to deploy with the direct engine; existing Terraform state is migrated automatically. To keep using Terraform, revert to Databricks CLI v1.19.x. -See https://docs.databricks.com/dev-tools/bundles/direct for details - -Notice: migrating your bundle to direct deployment engine (https://github.com/databricks/cli/issues/6765). -{ - "engine": "terraform", - "id": "[TEST_JOB_ID]", - "url": "[DATABRICKS_URL]/jobs/[TEST_JOB_ID]?w=[NUMID]" -} - -=== Summary does not migrate: no state writes, terraform state is left untouched - ->>> print_requests.py - ->>> find.py \.databricks/.*(\.tfstate|resources.*\.json|\.wal) -.databricks/bundle/default/terraform/terraform.tfstate diff --git a/acceptance/bundle/migrate/auto/summary-engine-terraform/script b/acceptance/bundle/migrate/auto/summary-engine-terraform/script deleted file mode 100644 index 99e67dda041..00000000000 --- a/acceptance/bundle/migrate/auto/summary-engine-terraform/script +++ /dev/null @@ -1,17 +0,0 @@ -export DATABRICKS_BUNDLE_ENGINE= - -title "Replay a prior terraform deployment" -trace replay_tfstate.py terraform-requests.json terraform.tfstate -replace_ids.py -rm -f "$OUT_REQUESTS" - -# Set after the replay: replay_tfstate.py runs bundle validate, which rejects engine: terraform. -trace update_file.py databricks.yml "{name: test-bundle}" "{name: test-bundle, engine: terraform}" - -title "Summary works with engine: terraform and shows the deployed job's ID and URL" -trace $CLI bundle summary -trace $CLI bundle summary -o json | jq '{engine: .bundle.engine, id: .resources.jobs.test_job.id, url: .resources.jobs.test_job.url}' - -title "Summary does not migrate: no state writes, terraform state is left untouched\n" -trace print_requests.py -trace find.py '\.databricks/.*(\.tfstate|resources.*\.json|\.wal)' diff --git a/acceptance/bundle/migrate/auto/summary-engine-terraform/terraform-requests.json b/acceptance/bundle/migrate/auto/summary-engine-terraform/terraform-requests.json deleted file mode 100644 index 6482593b189..00000000000 --- a/acceptance/bundle/migrate/auto/summary-engine-terraform/terraform-requests.json +++ /dev/null @@ -1,19 +0,0 @@ -[ - { - "method": "POST", - "path": "/api/2.2/jobs/create", - "body": { - "deployment": { - "kind": "BUNDLE", - "metadata_file_path": "/Workspace/Users/tester@databricks.com/.bundle/test-bundle/default/state/metadata.json" - }, - "edit_mode": "UI_LOCKED", - "format": "MULTI_TASK", - "max_concurrent_runs": 1, - "name": "Test Auto-Migrate Job", - "queue": { - "enabled": true - } - } - } -] diff --git a/acceptance/bundle/migrate/auto/summary-engine-terraform/terraform.tfstate b/acceptance/bundle/migrate/auto/summary-engine-terraform/terraform.tfstate deleted file mode 100644 index c04f332a595..00000000000 --- a/acceptance/bundle/migrate/auto/summary-engine-terraform/terraform.tfstate +++ /dev/null @@ -1,110 +0,0 @@ -{ - "version": 4, - "terraform_version": "1.5.5", - "serial": 1, - "lineage": "c39488aa-8f36-06fd-a7cb-3f0c95b4c506", - "outputs": {}, - "resources": [ - { - "mode": "managed", - "type": "databricks_job", - "name": "test_job", - "provider": "provider[\"registry.terraform.io/databricks/databricks\"]", - "instances": [ - { - "schema_version": 2, - "attributes": { - "always_running": false, - "budget_policy_id": null, - "continuous": [], - "control_run_state": false, - "dbt_task": [], - "deployment": [ - { - "deployment_id": "", - "kind": "BUNDLE", - "metadata_file_path": "/Workspace/Users/tester@databricks.com/.bundle/test-bundle/default/state/metadata.json", - "version_id": "" - } - ], - "description": null, - "edit_mode": "UI_LOCKED", - "email_notifications": [ - { - "no_alert_for_skipped_runs": false, - "on_duration_warning_threshold_exceeded": [], - "on_failure": [], - "on_start": [], - "on_streaming_backlog_exceeded": [], - "on_success": [] - } - ], - "environment": [], - "existing_cluster_id": null, - "format": "MULTI_TASK", - "git_source": [], - "health": [], - "id": "8790612527183335000", - "job_cluster": [], - "library": [], - "max_concurrent_runs": 1, - "max_retries": 0, - "min_retry_interval_millis": 0, - "name": "Test Auto-Migrate Job", - "new_cluster": [], - "notebook_task": [], - "notification_settings": [], - "parameter": [], - "parent_path": null, - "performance_target": null, - "pipeline_task": [], - "provider_config": [ - { - "workspace_id": "900800700600" - } - ], - "python_wheel_task": [], - "queue": [ - { - "enabled": true - } - ], - "retry_on_timeout": false, - "run_as": [ - { - "group_name": "", - "service_principal_name": "", - "user_name": "tester@databricks.com" - } - ], - "run_job_task": [], - "schedule": [], - "spark_jar_task": [], - "spark_python_task": [], - "spark_submit_task": [], - "tags": null, - "task": [], - "timeout_seconds": 0, - "timeouts": null, - "trigger": [], - "triggers": [], - "url": "[DATABRICKS_URL]/#job/8790612527183335000", - "usage_policy_id": null, - "webhook_notifications": [ - { - "on_duration_warning_threshold_exceeded": [], - "on_failure": [], - "on_start": [], - "on_streaming_backlog_exceeded": [], - "on_success": [] - } - ] - }, - "sensitive_attributes": [], - "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjoxODAwMDAwMDAwMDAwLCJ1cGRhdGUiOjE4MDAwMDAwMDAwMDB9LCJzY2hlbWFfdmVyc2lvbiI6IjIifQ==" - } - ] - } - ], - "check_results": null -} From cac3854c6af6d18d84c05760b6318125ef558580 Mon Sep 17 00:00:00 2001 From: Denis Bilenko Date: Wed, 7 Oct 2026 12:53:36 +0200 Subject: [PATCH 09/10] acc: bundle summary ignores DATABRICKS_BUNDLE_ENGINE in bad_env Co-authored-by: Isaac --- acceptance/bundle/state/bad_env/output.txt | 13 +++++++++++-- acceptance/bundle/state/bad_env/script | 3 ++- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/acceptance/bundle/state/bad_env/output.txt b/acceptance/bundle/state/bad_env/output.txt index fea87090ecb..68190faa62a 100644 --- a/acceptance/bundle/state/bad_env/output.txt +++ b/acceptance/bundle/state/bad_env/output.txt @@ -5,8 +5,17 @@ Error: unexpected setting for DATABRICKS_BUNDLE_ENGINE="abc" (expected 'direct') >>> musterr [CLI] bundle deploy Error: unexpected setting for DATABRICKS_BUNDLE_ENGINE="abc" (expected 'direct') ->>> musterr [CLI] bundle summary -Error: unexpected setting for DATABRICKS_BUNDLE_ENGINE="abc" (expected 'direct') +>>> [CLI] bundle summary +Name: test-bundle +Target: default +Workspace: + User: [USERNAME] + Path: /Workspace/Users/[USERNAME]/.bundle/test-bundle/default +Resources: + Schemas: + foo: + Name: foo + URL: (not deployed) >>> musterr [CLI] bundle destroy --auto-approve Error: unexpected setting for DATABRICKS_BUNDLE_ENGINE="abc" (expected 'direct') diff --git a/acceptance/bundle/state/bad_env/script b/acceptance/bundle/state/bad_env/script index fce3a3a0f85..a509ad748c8 100644 --- a/acceptance/bundle/state/bad_env/script +++ b/acceptance/bundle/state/bad_env/script @@ -1,5 +1,6 @@ export DATABRICKS_BUNDLE_ENGINE=abc trace musterr $CLI bundle plan trace musterr $CLI bundle deploy -trace musterr $CLI bundle summary +# summary does not check DATABRICKS_BUNDLE_ENGINE +trace $CLI bundle summary trace musterr $CLI bundle destroy --auto-approve From efeb87201c5b5ea0df04914d1de3d9b4433a3331 Mon Sep 17 00:00:00 2001 From: Denis Bilenko Date: Wed, 7 Oct 2026 12:56:27 +0200 Subject: [PATCH 10/10] acc: cover bundle validate -o json with engine: terraform Co-authored-by: Isaac --- .../summary/engine-terraform/output.txt | 26 +++++++++++++++++++ .../bundle/summary/engine-terraform/script | 2 ++ 2 files changed, 28 insertions(+) diff --git a/acceptance/bundle/summary/engine-terraform/output.txt b/acceptance/bundle/summary/engine-terraform/output.txt index e81fd453052..815ccf11750 100644 --- a/acceptance/bundle/summary/engine-terraform/output.txt +++ b/acceptance/bundle/summary/engine-terraform/output.txt @@ -38,6 +38,20 @@ Target: default Found 1 error +>>> musterr [CLI] bundle validate -o json +Error: the Terraform deployment engine has been removed in Databricks CLI v1.20.0 + in databricks.yml:3:11 + +Remove the "bundle.engine" setting (or set it to "direct") to deploy with the direct engine; existing Terraform state is migrated automatically. To keep using Terraform, revert to Databricks CLI v1.19.x. +See https://docs.databricks.com/dev-tools/bundles/direct for details + +{ + "engine": "terraform", + "environment": "default", + "name": "test-bundle", + "target": "default" +} + >>> update_file.py databricks.yml engine: terraform >>> [CLI] bundle summary @@ -62,3 +76,15 @@ Name: test-bundle Target: default Found 1 error + +>>> musterr [CLI] bundle validate -o json +Error: the Terraform deployment engine has been removed in Databricks CLI v1.20.0 + +Unset the DATABRICKS_BUNDLE_ENGINE environment variable (or set it to "direct") to deploy with the direct engine; existing Terraform state is migrated automatically. To keep using Terraform, revert to Databricks CLI v1.19.x. +See https://docs.databricks.com/dev-tools/bundles/direct for details + +{ + "environment": "default", + "name": "test-bundle", + "target": "default" +} diff --git a/acceptance/bundle/summary/engine-terraform/script b/acceptance/bundle/summary/engine-terraform/script index 40bfbc31951..bf03d3b291e 100644 --- a/acceptance/bundle/summary/engine-terraform/script +++ b/acceptance/bundle/summary/engine-terraform/script @@ -2,8 +2,10 @@ trace $CLI bundle summary trace $CLI bundle summary -o json | jq .bundle.engine # Other commands still reject engine: terraform. trace musterr $CLI bundle validate +trace musterr $CLI bundle validate -o json | jq .bundle # The env var is not checked by summary (bundle.engine is removed first, since it takes priority over the env var). trace update_file.py databricks.yml " engine: terraform" "" DATABRICKS_BUNDLE_ENGINE=terraform trace $CLI bundle summary DATABRICKS_BUNDLE_ENGINE=terraform trace musterr $CLI bundle validate +DATABRICKS_BUNDLE_ENGINE=terraform trace musterr $CLI bundle validate -o json | jq .bundle