Skip to content

Dry-run migration to direct engine after terraform deploy - #5797

Merged
denik merged 4 commits into
mainfrom
denik/migration-telemetry
Jul 2, 2026
Merged

Dry-run migration to direct engine after terraform deploy#5797
denik merged 4 commits into
mainfrom
denik/migration-telemetry

Conversation

@denik

@denikdenik commented Jul 2, 2026

Copy link
Copy Markdown
Contributor

After a successful terraform deploy, the CLI now converts the deployment state to the direct engine entirely in memory (writing nothing locally or remotely) and reports the outcome via telemetry, to measure how many bundles could migrate cleanly.

  • If the migration fails, the actual error is surfaced to the user as a warning.
  • Internal warnings (e.g. resources the direct engine can't yet represent) are downgraded to info level and reported through telemetry via a has_warnings flag rather than shown to the user.
  • New experimental.terraform_to_direct_migration telemetry field records success / error_message / has_warnings.

This pull request and its description were written by Isaac.

After a successful terraform deploy, convert the state to the direct engine
in memory (writing nothing locally or remotely) and report the outcome via
telemetry. Surface the error to the user as a warning if it fails; internal
warnings are downgraded to info level and reported through telemetry only.
Co-authored-by: Isaac
@denik
deniktemporarily deployed to test-trigger-is July 2, 2026 07:06 — with GitHub Actions Inactive
@denik
deniktemporarily deployed to test-trigger-is July 2, 2026 07:06 — with GitHub Actions Inactive
@eng-dev-ecosystem-bot

eng-dev-ecosystem-bot commented Jul 2, 2026

Copy link
Copy Markdown
Collaborator

Integration test report

Commit: f1e4c67

Run: 28585676971

Env🟨​KNOWN💚​RECOVERED🙈​SKIP✅​pass🙈​skipTime
🟨​aws linux731323010415:27
🟨​aws windows731323210397:04
💚​aws-ucws linux10133149594:52
💚​aws-ucws windows10133169573:58
💚​azure linux41523010404:16
💚​azure windows41523210383:38
💚​azure-ucws linux4153169564:57
💚​azure-ucws windows4153189544:03
💚​gcp linux41522910423:51
💚​gcp windows41523110403:50
23 interesting tests: 13 SKIP, 7 KNOWN, 3 RECOVERED
Test Nameaws linuxaws windowsaws-ucws linuxaws-ucws windowsazure linuxazure windowsazure-ucws linuxazure-ucws windowsgcp linuxgcp windows
🟨​TestAccept🟨​K🟨​K💚​R💚​R💚​R💚​R💚​R💚​R💚​R💚​R
🙈​TestAccept/bundle/invariant/no_drift🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S
🙈​TestAccept/bundle/resources/permissions🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S
🟨​TestAccept/bundle/resources/permissions/jobs/destroy_without_mgmtperms/with_permissions🟨​K🟨​K💚​R💚​R🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S
🟨​TestAccept/bundle/resources/permissions/jobs/destroy_without_mgmtperms/with_permissions/DATABRICKS_BUNDLE_ENGINE=direct🟨​K🟨​K💚​R💚​R
🟨​TestAccept/bundle/resources/permissions/jobs/destroy_without_mgmtperms/with_permissions/DATABRICKS_BUNDLE_ENGINE=terraform🟨​K🟨​K💚​R💚​R
🟨​TestAccept/bundle/resources/permissions/jobs/destroy_without_mgmtperms/without_permissions🟨​K🟨​K💚​R💚​R🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S
🟨​TestAccept/bundle/resources/permissions/jobs/destroy_without_mgmtperms/without_permissions/DATABRICKS_BUNDLE_ENGINE=direct🟨​K🟨​K💚​R💚​R
🟨​TestAccept/bundle/resources/permissions/jobs/destroy_without_mgmtperms/without_permissions/DATABRICKS_BUNDLE_ENGINE=terraform🟨​K🟨​K💚​R💚​R
🙈​TestAccept/bundle/resources/postgres_branches/basic🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S
🙈​TestAccept/bundle/resources/postgres_branches/recreate🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S
🙈​TestAccept/bundle/resources/postgres_branches/replace_existing🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S
🙈​TestAccept/bundle/resources/postgres_branches/update_protected🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S
🙈​TestAccept/bundle/resources/postgres_branches/without_branch_id🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S
🙈​TestAccept/bundle/resources/postgres_endpoints/basic🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S
🙈​TestAccept/bundle/resources/postgres_projects/update_display_name🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S
🙈​TestAccept/bundle/resources/synced_database_tables/basic🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S
🙈​TestAccept/bundle/resources/vector_search_endpoints/drift/recreated_same_name🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S
🙈​TestAccept/bundle/resources/vector_search_indexes/recreate/embedding_dimension🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S
🙈​TestAccept/ssh/connection🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S
💚​TestFetchRepositoryInfoAPI_FromRepo💚​R💚​R💚​R💚​R💚​R💚​R💚​R💚​R💚​R💚​R
💚​TestFetchRepositoryInfoAPI_FromRepo/root💚​R💚​R💚​R💚​R💚​R💚​R💚​R💚​R💚​R💚​R
💚​TestFetchRepositoryInfoAPI_FromRepo/subdir💚​R💚​R💚​R💚​R💚​R💚​R💚​R💚​R💚​R💚​R
Top 4 slowest tests (at least 2 minutes):
durationenvtestname
3:05gcp windowsTestAccept
3:01azure-ucws windowsTestAccept
2:50aws-ucws windowsTestAccept
2:45azure windowsTestAccept

- Revert dstate changes; write the throwaway direct state to a temp file
that is deleted afterwards instead of an in-memory write mode.
- Keep migration warnings user-visible with a "post-deploy dry-run migration
to direct: " prefix instead of downgrading them.
- Record the outcome as direct_drymigrate_success / direct_drymigrate_warnings
bool telemetry instead of a dedicated proto field.
- Run the dry-run after "Deployment complete!".
Co-authored-by: Isaac
@denik
deniktemporarily deployed to test-trigger-is July 2, 2026 08:52 — with GitHub Actions Inactive
@denik
deniktemporarily deployed to test-trigger-is July 2, 2026 08:52 — with GitHub Actions Inactive
Redirect the terraform-only direct_drymigrate_* bool_values snapshots (and the
migration warning output) to per-engine files so the shared output stays
engine-agnostic.
Co-authored-by: Isaac
@denik
deniktemporarily deployed to test-trigger-is July 2, 2026 09:07 — with GitHub Actions Inactive
@denik
deniktemporarily deployed to test-trigger-is July 2, 2026 09:07 — with GitHub Actions Inactive
Comment threadNEXT_CHANGELOG.md Outdated
* direct: Fix spurious update when `apply_policy_default_values: true` is set on job task, for-each-task, or job cluster new_cluster ([#5731](https://github.com/databricks/cli/pull/5731)). Also fix spurious updates for for-each-task clusters due to missing backend defaults for `data_security_mode`, `node_type_id`, `driver_node_type_id`, `driver_instance_pool_id`, `enable_elastic_disk`, and `enable_local_disk_encryption`.
* direct: Cluster resize now falls back to regular update if resize fails due to `INVALID_STATE` ([#5716](https://github.com/databricks/cli/pull/5716)).
* Fixed `bundle deployment migrate` failing on `model_serving_endpoints`/`database_instances` with permissions (regression since v1.5.0) ([#5775](https://github.com/databricks/cli/pull/5775)).
* After a terraform deploy, the CLI now dry-runs an in-memory migration to the direct engine (writing nothing locally or remotely) and reports the outcome via telemetry, warning if the migration could not be completed.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Suggested change
* After a terraform deploy, the CLI now dry-runs an in-memory migration to the direct engine (writing nothing locally or remotely) and reports the outcome via telemetry, warning if the migration could not be completed.
* After a terraform deploy, the CLI now dry-runs an in-memory migration to the direct engine (writing nothing locally or remotely) and reports the outcome via telemetry, warning if the migration could not be completed ([#5797](https://github.com/databricks/cli/pull/5797)).

- Append a notice after dry-run migration warnings pointing users to
dabs-feedback@databricks.com and clarifying the deploy is unaffected.
- Snapshot common bool_values in shared output and only the terraform-only
direct_drymigrate_* entries per-engine, using print_telemetry_bool_values.
- Drop obvious doc comment; changelog: drop "in-memory", add PR link.
Co-authored-by: Isaac
@denik
deniktemporarily deployed to test-trigger-is July 2, 2026 11:12 — with GitHub Actions Inactive
@denik
deniktemporarily deployed to test-trigger-is July 2, 2026 11:12 — with GitHub Actions Inactive
@denik
denik added this pull request to the merge queueJul 2, 2026
Merged via the queue into main with commit 253d888Jul 2, 2026
25 checks passed
@denik
denik deleted the denik/migration-telemetry branch July 2, 2026 12:18
@eng-dev-ecosystem-bot

Copy link
Copy Markdown
Collaborator

Integration test report

Commit: 253d888

Run: 28589447069

Env❌​FAIL🟨​KNOWN🔄​flaky💚​RECOVERED🙈​SKIP✅​pass🙈​skipTime
🔄​aws linux461323010416:08
🔄​aws windows1101323110394:13
💚​aws-ucws linux10133149595:00
💚​aws-ucws windows10133169574:06
💚​azure linux41523010404:23
🔄​azure windows221523210386:01
💚​azure-ucws linux4153169564:58
💚​azure-ucws windows4153189543:47
❌​gcp linux54111516410423:03
❌​gcp windows2032152810292:46
226 interesting tests: 203 FAIL, 13 SKIP, 6 flaky, 2 KNOWN, 2 RECOVERED
Test Nameaws linuxaws windowsaws-ucws linuxaws-ucws windowsazure linuxazure windowsazure-ucws linuxazure-ucws windowsgcp linuxgcp windows
🟨​TestAccept💚​R💚​R💚​R💚​R💚​R💚​R💚​R💚​R💚​R🟨​K
❌​TestAccept/bundle/deploy/mlops-stacks✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p❌​F
❌​TestAccept/bundle/deploy/mlops-stacks/DATABRICKS_BUNDLE_ENGINE=direct✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p❌​F
❌​TestAccept/bundle/deploy/mlops-stacks/DATABRICKS_BUNDLE_ENGINE=terraform✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p❌​F
🙈​TestAccept/bundle/invariant/no_drift🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S
🙈​TestAccept/bundle/resources/permissions🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S
💚​TestAccept/bundle/resources/permissions/jobs/destroy_without_mgmtperms/with_permissions💚​R💚​R💚​R💚​R🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S
🔄​TestAccept/bundle/resources/permissions/jobs/destroy_without_mgmtperms/with_permissions/DATABRICKS_BUNDLE_ENGINE=direct🔄​f💚​R💚​R💚​R
🔄​TestAccept/bundle/resources/permissions/jobs/destroy_without_mgmtperms/with_permissions/DATABRICKS_BUNDLE_ENGINE=terraform🔄​f💚​R💚​R💚​R
💚​TestAccept/bundle/resources/permissions/jobs/destroy_without_mgmtperms/without_permissions💚​R💚​R💚​R💚​R🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S
🔄​TestAccept/bundle/resources/permissions/jobs/destroy_without_mgmtperms/without_permissions/DATABRICKS_BUNDLE_ENGINE=direct🔄​f💚​R💚​R💚​R
🔄​TestAccept/bundle/resources/permissions/jobs/destroy_without_mgmtperms/without_permissions/DATABRICKS_BUNDLE_ENGINE=terraform🔄​f💚​R💚​R💚​R
🙈​TestAccept/bundle/resources/postgres_branches/basic🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S
🙈​TestAccept/bundle/resources/postgres_branches/recreate🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S
🙈​TestAccept/bundle/resources/postgres_branches/replace_existing🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S
🙈​TestAccept/bundle/resources/postgres_branches/update_protected🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S
🙈​TestAccept/bundle/resources/postgres_branches/without_branch_id🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S
🙈​TestAccept/bundle/resources/postgres_endpoints/basic🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S
🙈​TestAccept/bundle/resources/postgres_projects/update_display_name🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S
🙈​TestAccept/bundle/resources/synced_database_tables/basic🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S
🙈​TestAccept/bundle/resources/vector_search_endpoints/drift/recreated_same_name🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S
🙈​TestAccept/bundle/resources/vector_search_indexes/recreate/embedding_dimension🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S
❌​TestAccept/selftest/record_cloud/basic✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p❌​F
❌​TestAccept/selftest/record_cloud/basic/DATABRICKS_BUNDLE_ENGINE=direct✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p❌​F
❌​TestAccept/selftest/record_cloud/basic/DATABRICKS_BUNDLE_ENGINE=terraform✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p❌​F
❌​TestAccept/selftest/record_cloud/error✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p❌​F
❌​TestAccept/selftest/record_cloud/error/DATABRICKS_BUNDLE_ENGINE=direct✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p❌​F
❌​TestAccept/selftest/record_cloud/error/DATABRICKS_BUNDLE_ENGINE=terraform✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p❌​F
❌​TestAccept/selftest/record_cloud/pipeline-crud✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p❌​F
❌​TestAccept/selftest/record_cloud/pipeline-crud/DATABRICKS_BUNDLE_ENGINE=direct✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p❌​F
❌​TestAccept/selftest/record_cloud/pipeline-crud/DATABRICKS_BUNDLE_ENGINE=terraform✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p❌​F
❌​TestAccept/selftest/record_cloud/workspace-file-io✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p❌​F
❌​TestAccept/selftest/record_cloud/workspace-file-io/DATABRICKS_BUNDLE_ENGINE=direct✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p❌​F
❌​TestAccept/selftest/record_cloud/workspace-file-io/DATABRICKS_BUNDLE_ENGINE=terraform✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p❌​F
🙈​TestAccept/ssh/connection🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S
❌​TestDashboardAssumptions_WorkspaceImport✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p❌​F
❌​TestBundleInitErrorOnUnknownFields✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p❌​F
❌​TestBundleInitHelpers✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p❌​F
❌​TestAlertsCreateErrWhenNoArguments✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p❌​F
❌​TestApiGet✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p❌​F
❌​TestAuthDescribeSuccess✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p❌​F
❌​TestClustersGet✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p❌​F
❌​TestClustersList✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p❌​F
❌​TestFsCat✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p❌​F
❌​TestFsCat/dbfs✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p❌​F
❌​TestFsCatDoesNotSupportOutputModeJson✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p❌​F
❌​TestFsCatForDbfsInvalidScheme✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p❌​F
❌​TestFsCatOnADir✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p❌​F
❌​TestFsCatOnADir/dbfs✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p❌​F
❌​TestFsCatOnNonExistentFile✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p❌​F
❌​TestFsCatOnNonExistentFile/dbfs✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p❌​F
❌​TestFsCompletion✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p❌​F
❌​TestFsCpDir✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p❌​F
❌​TestFsCpDir/dbfs_to_dbfs✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p❌​F
❌​TestFsCpDir/dbfs_to_local✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p❌​F
❌​TestFsCpDir/dbfs_to_uc-volumes🙈​s🙈​s✅​p✅​p🙈​s🙈​s✅​p✅​p🙈​s❌​F
❌​TestFsCpDir/local_to_dbfs✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p❌​F
❌​TestFsCpDir/local_to_local✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p❌​F
❌​TestFsCpDirToDirFileNotOverwritten✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p❌​F
❌​TestFsCpDirToDirFileNotOverwritten/dbfs_to_dbfs✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p❌​F
❌​TestFsCpDirToDirFileNotOverwritten/dbfs_to_local✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p❌​F
❌​TestFsCpDirToDirFileNotOverwritten/dbfs_to_uc-volumes🙈​s🙈​s✅​p✅​p🙈​s🙈​s✅​p✅​p🙈​s❌​F
❌​TestFsCpDirToDirFileNotOverwritten/local_to_dbfs✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p❌​F
❌​TestFsCpDirToDirFileNotOverwritten/local_to_local✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p❌​F
❌​TestFsCpDirToDirWithOverwriteFlag✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p❌​F
❌​TestFsCpDirToDirWithOverwriteFlag/dbfs_to_dbfs✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p❌​F
❌​TestFsCpDirToDirWithOverwriteFlag/dbfs_to_local✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p❌​F
❌​TestFsCpDirToDirWithOverwriteFlag/dbfs_to_uc-volumes🙈​s🙈​s✅​p✅​p🙈​s🙈​s✅​p✅​p🙈​s❌​F
❌​TestFsCpDirToDirWithOverwriteFlag/local_to_dbfs✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p❌​F
❌​TestFsCpDirToDirWithOverwriteFlag/local_to_local✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p❌​F
❌​TestFsCpErrorsOnInvalidScheme✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p❌​F
❌​TestFsCpErrorsWhenSourceIsDirWithoutRecursiveFlag✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p❌​F
❌​TestFsCpErrorsWhenSourceIsDirWithoutRecursiveFlag/dbfs✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p❌​F
❌​TestFsCpFileToDir✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p❌​F
❌​TestFsCpFileToDir/dbfs_to_dbfs✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p❌​F
❌​TestFsCpFileToDir/dbfs_to_local✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p❌​F
❌​TestFsCpFileToDir/dbfs_to_uc-volumes🙈​s🙈​s✅​p✅​p🙈​s🙈​s✅​p✅​p🙈​s❌​F
❌​TestFsCpFileToDir/local_to_dbfs✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p❌​F
❌​TestFsCpFileToDir/local_to_local✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p❌​F
❌​TestFsCpFileToDirFileNotOverwritten✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p❌​F
❌​TestFsCpFileToDirFileNotOverwritten/dbfs_to_dbfs✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p❌​F
❌​TestFsCpFileToDirFileNotOverwritten/dbfs_to_local✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p❌​F
❌​TestFsCpFileToDirFileNotOverwritten/dbfs_to_uc-volumes🙈​s🙈​s✅​p✅​p🙈​s🙈​s✅​p✅​p🙈​s❌​F
❌​TestFsCpFileToDirFileNotOverwritten/local_to_dbfs✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p❌​F
❌​TestFsCpFileToDirFileNotOverwritten/local_to_local✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p❌​F
❌​TestFsCpFileToDirForWindowsPaths🙈​s✅​p🙈​s✅​p🙈​s✅​p🙈​s✅​p🙈​s❌​F
❌​TestFsCpFileToDirWithOverwriteFlag✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p❌​F
❌​TestFsCpFileToDirWithOverwriteFlag/dbfs_to_dbfs✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p❌​F
❌​TestFsCpFileToDirWithOverwriteFlag/dbfs_to_local✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p❌​F
❌​TestFsCpFileToDirWithOverwriteFlag/dbfs_to_uc-volumes🙈​s🙈​s✅​p✅​p🙈​s🙈​s✅​p✅​p🙈​s❌​F
❌​TestFsCpFileToDirWithOverwriteFlag/local_to_dbfs✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p❌​F
❌​TestFsCpFileToDirWithOverwriteFlag/local_to_local✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p❌​F
❌​TestFsCpFileToFile✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p❌​F
❌​TestFsCpFileToFile/dbfs_to_dbfs✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p❌​F
❌​TestFsCpFileToFile/dbfs_to_local✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p❌​F
❌​TestFsCpFileToFile/dbfs_to_uc-volumes🙈​s🙈​s✅​p✅​p🙈​s🙈​s✅​p✅​p🙈​s❌​F
❌​TestFsCpFileToFile/local_to_dbfs✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p❌​F
❌​TestFsCpFileToFile/local_to_local✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p❌​F
❌​TestFsCpFileToFileFileNotOverwritten✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p❌​F
❌​TestFsCpFileToFileFileNotOverwritten/dbfs_to_dbfs✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p❌​F
❌​TestFsCpFileToFileFileNotOverwritten/dbfs_to_local✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p❌​F
❌​TestFsCpFileToFileFileNotOverwritten/dbfs_to_uc-volumes🙈​s🙈​s✅​p✅​p🙈​s🙈​s✅​p✅​p🙈​s❌​F
❌​TestFsCpFileToFileFileNotOverwritten/local_to_dbfs✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p❌​F
❌​TestFsCpFileToFileFileNotOverwritten/local_to_local✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p❌​F
❌​TestFsCpFileToFileWithOverwriteFlag✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p❌​F
❌​TestFsCpFileToFileWithOverwriteFlag/dbfs_to_dbfs✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p❌​F
❌​TestFsCpFileToFileWithOverwriteFlag/dbfs_to_local✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p❌​F
❌​TestFsCpFileToFileWithOverwriteFlag/dbfs_to_uc-volumes🙈​s🙈​s✅​p✅​p🙈​s🙈​s✅​p✅​p🙈​s❌​F
❌​TestFsCpFileToFileWithOverwriteFlag/local_to_dbfs✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p❌​F
❌​TestFsCpFileToFileWithOverwriteFlag/local_to_local✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p❌​F
❌​TestFsCpFileToNonExistentDir✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p❌​F
❌​TestFsCpFileToNonExistentDir/dbfs_to_dbfs✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p❌​F
❌​TestFsCpFileToNonExistentDir/dbfs_to_local✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p❌​F
❌​TestFsCpFileToNonExistentDir/dbfs_to_uc-volumes🙈​s🙈​s✅​p✅​p🙈​s🙈​s✅​p✅​p🙈​s❌​F
❌​TestFsCpFileToNonExistentDir/local_to_dbfs✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p❌​F
❌​TestFsCpFileToNonExistentDir/local_to_local✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p❌​F
❌​TestFsCpFileToNonExistentDirWindowsPaths🙈​s✅​p🙈​s✅​p🙈​s✅​p🙈​s✅​p🙈​s❌​F
❌​TestFsCpSourceIsDirectoryButTargetIsFile✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p❌​F
❌​TestFsCpSourceIsDirectoryButTargetIsFile/dbfs_to_dbfs✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p❌​F
❌​TestFsCpSourceIsDirectoryButTargetIsFile/dbfs_to_local✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p❌​F
❌​TestFsCpSourceIsDirectoryButTargetIsFile/dbfs_to_uc-volumes🙈​s🙈​s✅​p✅​p🙈​s🙈​s✅​p✅​p🙈​s❌​F
❌​TestFsCpSourceIsDirectoryButTargetIsFile/local_to_dbfs✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p❌​F
❌​TestFsLs✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p❌​F
❌​TestFsLs/dbfs✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p❌​F
❌​TestFsLsForNonexistingDir✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p❌​F
❌​TestFsLsForNonexistingDir/dbfs✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p❌​F
❌​TestFsLsOnEmptyDir✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p❌​F
❌​TestFsLsOnEmptyDir/dbfs✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p❌​F
❌​TestFsLsOnFile✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p❌​F
❌​TestFsLsOnFile/dbfs✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p❌​F
❌​TestFsLsWithAbsolutePaths✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p❌​F
❌​TestFsLsWithAbsolutePaths/dbfs✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p❌​F
❌​TestFsLsWithoutScheme✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p❌​F
❌​TestFsMkdir✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p❌​F
❌​TestFsMkdir/dbfs✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p❌​F
❌​TestFsMkdirCreatesIntermediateDirectories✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p❌​F
❌​TestFsMkdirCreatesIntermediateDirectories/dbfs✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p❌​F
❌​TestFsMkdirWhenDirectoryAlreadyExists✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p❌​F
❌​TestFsMkdirWhenDirectoryAlreadyExists/dbfs✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p❌​F
❌​TestFsMkdirWhenFileExistsAtPath✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p❌​F
❌​TestFsMkdirWhenFileExistsAtPath/dbfs✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p❌​F
❌​TestFsRmDirRecursively✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p❌​F
❌​TestFsRmDirRecursively/dbfs✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p❌​F
❌​TestFsRmEmptyDir✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p❌​F
❌​TestFsRmEmptyDir/dbfs✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p❌​F
❌​TestFsRmFile✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p❌​F
❌​TestFsRmFile/dbfs✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p❌​F
❌​TestFsRmForNonExistentFile✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p❌​F
❌​TestFsRmForNonExistentFile/dbfs✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p❌​F
❌​TestFsRmNonEmptyDirectory✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p❌​F
❌​TestFsRmNonEmptyDirectory/dbfs✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p❌​F
❌​TestSecretsPutSecretBytesValue✅​p✅​p🙈​s🙈​s✅​p✅​p✅​p✅​p✅​p❌​F
❌​TestSecretsPutSecretStringValue✅​p✅​p🙈​s🙈​s✅​p✅​p✅​p✅​p✅​p❌​F
❌​TestSyncEnsureRemotePathIsUsableIfRepoDoesntExist✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p❌​F❌​F
❌​TestSyncEnsureRemotePathIsUsableIfRepoExists✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p❌​F❌​F
❌​TestSyncEnsureRemotePathIsUsableInWorkspace✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p❌​F❌​F
❌​TestSyncFullFileSync✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p❌​F
❌​TestSyncIncrementalFileOverwritesFolder✅​p🔄​f✅​p✅​p✅​p✅​p✅​p✅​p✅​p❌​F
❌​TestSyncIncrementalFileSync✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p❌​F
❌​TestSyncIncrementalSyncFileToPythonNotebook✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p❌​F
❌​TestSyncIncrementalSyncPythonNotebookDelete✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p❌​F❌​F
❌​TestSyncIncrementalSyncPythonNotebookToFile✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p❌​F
❌​TestSyncNestedFolderDoesntFailOnNonEmptyDirectory✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p❌​F
❌​TestSyncNestedFolderSync✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p❌​F
❌​TestSyncNestedSpacePlusAndHashAreEscapedSync✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p❌​F
❌​TestExport✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p❌​F❌​F
❌​TestExportDir✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p❌​F
❌​TestExportDirDoesNotOverwrite✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p❌​F
❌​TestExportDirWithOverwriteFlag✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p❌​F
❌​TestExportWithFileFlag✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p❌​F❌​F
Top 4 slowest tests (at least 2 minutes):
durationenvtestname
2:42azure windowsTestAccept
2:35azure-ucws windowsTestAccept
2:35aws windowsTestAccept
2:33aws-ucws windowsTestAccept
(56 table rows omitted to keep the report under 60000 bytes)

deco-sdk-taggingBot added a commit that referenced this pull request Jul 2, 2026
## Release v1.6.0
### CLI
* `ssh connect` now accepts a `--base-environment` flag to run a serverless session on a custom base environment. It takes an `env.yaml` path, a `workspace-base-environments/...` resource ID, or a base environment display name, and is rejected together with `--environment-version` or `--cluster` ([#5706](#5706)).
* `databricks aitools install` is now plugin-first: it installs the Databricks plugin through each agent's own CLI (Claude Code, Codex, GitHub Copilot) instead of copying raw skill files. Agents without a plugin (OpenCode, Antigravity) still get skill files, and Cursor prints the `/add-plugin databricks` step. Use `--skills-only` to force raw skill files for every agent, or `--path <dir>` to write skills to a directory ([#5738](#5738)).
* `databricks labs list` now only shows projects that can be installed ([#5560](#5560)).
### Bundles
* direct: Fixed persistent drift on `model_serving_endpoints` caused by the `traffic_config` field ([#5708](#5708)).
* direct: Fix spurious update when `apply_policy_default_values: true` is set on job task, for-each-task, or job cluster new_cluster ([#5731](#5731)). Also fix spurious updates for for-each-task clusters due to missing backend defaults for `data_security_mode`, `node_type_id`, `driver_node_type_id`, `driver_instance_pool_id`, `enable_elastic_disk`, and `enable_local_disk_encryption`.
* direct: Cluster resize now falls back to regular update if resize fails due to `INVALID_STATE` ([#5716](#5716)).
* `bundle generate dashboard` now honors the `--key` flag when naming the generated resource, and rejects combining `--existing-path`, `--existing-id`, and `--resource` instead of silently ignoring all but one ([#5492](#5492)).
* Fixed `bundle deployment migrate` failing on `model_serving_endpoints`/`database_instances` with permissions (regression since v1.5.0) ([#5775](#5775)).
* After a terraform deploy, the CLI now dry-runs a migration to the direct engine (writing nothing locally or remotely) and reports the outcome via telemetry, warning if the migration could not be completed ([#5797](#5797)).
### Dependency updates
* Bump `github.com/databricks/databricks-sdk-go` from v0.147.0 to v0.152.0 ([#5773](#5773)).
* Bump Terraform provider from v1.118.0 to v1.120.0 ([#5792](#5792)).
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@denik@eng-dev-ecosystem-bot@janniklasrose