Skip to content

direct: grants: revoke removed principals + pass PlanEntry to DoUpdate - #4824

Merged
denik merged 23 commits into
mainfrom
denik/cursor-agent-test
Mar 26, 2026
Merged

direct: grants: revoke removed principals + pass PlanEntry to DoUpdate#4824
denik merged 23 commits into
mainfrom
denik/cursor-agent-test

Conversation

@denik

@denikdenik commented Mar 24, 2026

Copy link
Copy Markdown
Contributor

Changes

  • When a principal is removed from grants config, deploy now revokes their privileges instead of silently leaving them in place. This matches terraform behaviour.
  • DoUpdate interface changed to receive *PlanEntry instead of Changes, giving resources access to remote state directly.

Why

New behaviour matches terraform's. Grants API is incremental, it only replaces principals mentioned in the payload and leaves other one alone (instead of wiping them, which is the incorrect assumption previous impl was built upon).

Passing PlanEntry instead of just Changes simplifies grants update logic instead of parsing Changes paths like ([principal='bob'].privileges[0]), it compares desired state against PlanEntry.RemoteState. A few other resources had a need to view remote state as well, so it's generally useful.

Tests

  • New acceptance tests cover the remove-principal and out-of-band-principal drift scenarios.
  • gron.py got new option --noindex which prints array elements as element[] instead of element[1] which allows to ignore order differences.
  • Updates to testserver for grants & schemas to match AWS backend better to enable local+cloud test.

@denik
deniktemporarily deployed to test-trigger-is March 24, 2026 08:01 — with GitHub Actions Inactive
@eng-dev-ecosystem-bot

eng-dev-ecosystem-bot commented Mar 24, 2026

Copy link
Copy Markdown
Collaborator

Commit: b1224ce

Run: 23600382733

Env🟨​KNOWN💚​RECOVERED🙈​SKIP✅​pass🙈​skipTime
🟨​aws linux7102708047:08
🟨​aws windows7102728027:11
💚​aws-ucws linux7103667207:21
💚​aws-ucws windows7103687185:54
💚​azure linux1122738026:42
💚​azure windows1122758005:14
💚​azure-ucws linux1123717168:33
💚​azure-ucws windows1123737146:23
💚​gcp linux1122698055:31
💚​gcp windows1122718034:48
17 interesting tests: 10 SKIP, 7 KNOWN
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/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/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_endpoints/recreate🙈​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/ssh/connection🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S
Top 20 slowest tests (at least 2 minutes):
durationenvtestname
3:54azure-ucws linuxTestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=terraform
3:48gcp linuxTestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=terraform
3:44aws windowsTestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=direct
3:21azure-ucws windowsTestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=direct
3:17azure windowsTestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=direct
3:16aws windowsTestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=terraform
3:16aws linuxTestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=terraform
3:15azure-ucws linuxTestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=direct
3:14azure linuxTestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=direct
3:13aws-ucws windowsTestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=terraform
3:11gcp windowsTestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=terraform
3:10gcp linuxTestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=direct
3:09gcp windowsTestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=direct
2:58azure linuxTestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=terraform
2:51azure windowsTestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=terraform
2:44aws-ucws linuxTestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=terraform
2:43aws-ucws linuxTestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=direct
2:39aws linuxTestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=direct
2:33aws-ucws windowsTestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=direct
2:16azure-ucws windowsTestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=terraform

@denik
denikforce-pushed the denik/cursor-agent-test branch from 0f1452f to 302af46CompareMarch 24, 2026 12:00
@denik
deniktemporarily deployed to test-trigger-is March 24, 2026 12:02 — with GitHub Actions Inactive
@denik
deniktemporarily deployed to test-trigger-is March 24, 2026 12:11 — with GitHub Actions Inactive
@denik
deniktemporarily deployed to test-trigger-is March 24, 2026 12:43 — with GitHub Actions Inactive
@denik
deniktemporarily deployed to test-trigger-is March 24, 2026 13:08 — with GitHub Actions Inactive
@denikdenik changed the title WIP fix bug in grantsdirect: grants: revoke removed principals on deployMar 24, 2026
@denik
denik marked this pull request as ready for review March 24, 2026 13:47
@denikdenik changed the title direct: grants: revoke removed principals on deploydirect: grants: revoke removed principals + pass PlanEntry to DoUpdateMar 24, 2026
type (
Changes = deployplan.Changes
ChangeDesc = deployplan.ChangeDesc
PlanEntry = deployplan.PlanEntry

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.

Should have the PlanEntry change been a separate PR? Or is it necessary for permissions change?

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

It's needed by grants change. Originally I tried to parse Changes which is possible but makes everything more complex compared to parsing state directly.

schema.UpdatedAt = schema.CreatedAt
schema.CreatedBy = s.CurrentUser().UserName
schema.UpdatedBy = s.CurrentUser().UserName
schema.EffectivePredictiveOptimizationFlag = &catalog.EffectivePredictiveOptimizationFlag{

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.

Ah I see it's added here

@denik
denikforce-pushed the denik/cursor-agent-test branch 2 times, most recently from ea27988 to dc135abCompareMarch 26, 2026 11:54
@denik
deniktemporarily deployed to test-trigger-is March 26, 2026 11:55 — with GitHub Actions Inactive
@denik
denikforce-pushed the denik/cursor-agent-test branch from dc135ab to 9347f54CompareMarch 26, 2026 14:00
@denik
deniktemporarily deployed to test-trigger-is March 26, 2026 14:00 — with GitHub Actions Inactive
@denik
denik enabled auto-merge March 26, 2026 14:00
denik added 8 commits March 26, 2026 15:39
Cover the case where removing a schema grant principal should stay clean under Terraform but still reproduces the stale-principal drift in the direct engine. This gives us a local and cloud repro to validate the eventual fix.
Inline the principals and use a removable comment marker plus gron-based assertions so the acceptance script is easier to follow while preserving the Terraform-pass/direct-fail repro.
Record the second-plan output for the removed-principal regression test so Terraform convergence and direct-engine drift are asserted separately.
Read current grants during direct updates so principals removed from config are explicitly revoked. Normalize the removed-principal regression output so the acceptance test stays stable while proving convergence.
Let acceptance scripts ignore array ordering without extra shell plumbing. Use the new flag in the removed-principal grants regression to keep the output stable and simpler to read.
denik added 15 commits March 26, 2026 15:39
Keep the removed-principal grants regression easy to scan by inlining the gron noindex pipeline instead of routing through a shell helper.
Build direct grants updates from the planned keyed diffs so removed principals can be revoked without rereading current grants. This keeps the reconciliation path smaller while preserving the existing privilege update semantics.
Keep the planner-driven revoke fix but drop the extra helper extraction and constant moves so the file stays closer to its original shape.
Keep the grants fix focused by inlining tiny one-use helpers instead of carrying extra wrappers. This reduces review noise without changing the revoke behavior.
Capture the plan after a previously unseen principal is added outside the bundle so both engines record the resulting grants drift. Keep the regression stable on local testserver and cloud by normalizing the saved plan output.
Keep the out-of-band principal regression easy to read by storing the grants update request as a fixture instead of generating it inline in the script.
Record a second post-reconcile plan for the out-of-band principal grants regression so both engines show whether they converged after deploy. Align the fake schema metadata with cloud responses so the direct plan goldens stay stable without local-only filtering.
Skip unparseable grant change paths during reconciliation so an unexpected planner path does not fail an otherwise valid deploy, and reuse the update path for create. Align the schema unit expectation with the current fake schema payload so the direct resource suite stays green.
Record the clean remove_principal plans in shared test output and add a second deploy/plan pass so the grants revocation test proves the bundle stays reconciled after the first update.
Simplify grants update logic by giving DoUpdate access to the full
PlanEntry, which includes RemoteState. This replaces the previous
approach of parsing structured diff paths to discover removed
principals with a direct comparison against remote state.
Co-authored-by: Isaac
The privileges slice is freshly deserialized from JSON with no shared
backing array, so the defensive copy is unnecessary.
Co-authored-by: Isaac
The testserver now returns additional schema fields (metastore_id,
schema_id, enable_predictive_optimization) which updates golden
files in affected tests.
Co-authored-by: Isaac
@denik
denikforce-pushed the denik/cursor-agent-test branch from 9347f54 to b1224ceCompareMarch 26, 2026 14:39
@denik
deniktemporarily deployed to test-trigger-is March 26, 2026 14:40 — with GitHub Actions Inactive
@denik
denik disabled auto-merge March 26, 2026 14:49
@denik
denik merged commit 7498df4 into mainMar 26, 2026
18 checks passed
@denik
denik deleted the denik/cursor-agent-test branch March 26, 2026 14:49
@eng-dev-ecosystem-bot

Copy link
Copy Markdown
Collaborator

Commit: 7498df4

Run: 23600892483

Env💥​PANIC❌​FAIL🟨​KNOWN🤯​MISS🔄​flaky💚​RECOVERED🙈​SKIP✅​pass🙈​skipTime
❌​aws linux371050075753:22
❌​aws windows371047276552:36
💥​aws-ucws linux15280252715601120:00
💥​aws-ucws windows16419232738612120:00
❌​azure linux311250375559:25
❌​azure windows311247576352:06
❌​azure-ucws linux716311767606135:22
💥​azure-ucws windows1937311699615120:00
❌​gcp linux311248576357:20
❌​gcp windows311245777155:29
167 interesting tests: 115 MISS, 17 RECOVERED, 15 FAIL, 11 KNOWN, 4 flaky, 3 PANIC, 2 SKIP
Test Nameaws linuxaws windowsaws-ucws linuxaws-ucws windowsazure linuxazure windowsazure-ucws linuxazure-ucws windowsgcp linuxgcp windows
🟨​TestAccept🟨​K🟨​K🤯​M🤯​M🟨​K🟨​K🟨​K🤯​M🟨​K🟨​K
❌​TestAccept/bundle/apps/job_permissions❌​F❌​F🤯​M🤯​M❌​F❌​F🔄​f❌​F❌​F❌​F
❌​TestAccept/bundle/apps/job_permissions/DATABRICKS_BUNDLE_ENGINE=direct❌​F❌​F🤯​M🤯​M❌​F❌​F🔄​f❌​F❌​F❌​F
❌​TestAccept/bundle/apps/job_permissions/DATABRICKS_BUNDLE_ENGINE=terraform❌​F❌​F🤯​M🤯​M❌​F❌​F✅​p✅​p❌​F❌​F
🤯​TestAccept/bundle/artifacts/artifact_path_with_volume/volume_doesnot_exist🙈​s🙈​s🤯​M🤯​M🙈​s🙈​s✅​p✅​p🙈​s🙈​s
🤯​TestAccept/bundle/artifacts/artifact_path_with_volume/volume_doesnot_exist/DATABRICKS_BUNDLE_ENGINE=direct🤯​M🤯​M✅​p✅​p
🤯​TestAccept/bundle/artifacts/artifact_path_with_volume/volume_doesnot_exist/DATABRICKS_BUNDLE_ENGINE=terraform🤯​M🤯​M✅​p✅​p
🤯​TestAccept/bundle/artifacts/artifact_path_with_volume/volume_not_deployed🙈​s🙈​s🤯​M🤯​M🙈​s🙈​s✅​p✅​p🙈​s🙈​s
🤯​TestAccept/bundle/artifacts/artifact_path_with_volume/volume_not_deployed/DATABRICKS_BUNDLE_ENGINE=direct🤯​M🤯​M✅​p✅​p
🤯​TestAccept/bundle/artifacts/artifact_path_with_volume/volume_not_deployed/DATABRICKS_BUNDLE_ENGINE=terraform🤯​M🤯​M✅​p✅​p
🤯​TestAccept/bundle/config-remote-sync/cli_defaults✅​p🙈​s🤯​M🙈​s✅​p🙈​s✅​p🙈​s✅​p🙈​s
🤯​TestAccept/bundle/config-remote-sync/cli_defaults/DATABRICKS_BUNDLE_ENGINE=direct✅​p🤯​M✅​p✅​p✅​p
🤯​TestAccept/bundle/config-remote-sync/cli_defaults/DATABRICKS_BUNDLE_ENGINE=terraform✅​p🤯​M✅​p✅​p✅​p
🤯​TestAccept/bundle/config-remote-sync/config_edits✅​p🙈​s🤯​M🙈​s✅​p🙈​s✅​p🙈​s✅​p🙈​s
🤯​TestAccept/bundle/config-remote-sync/config_edits/DATABRICKS_BUNDLE_ENGINE=direct✅​p🤯​M✅​p✅​p✅​p
🤯​TestAccept/bundle/config-remote-sync/config_edits/DATABRICKS_BUNDLE_ENGINE=terraform✅​p🤯​M✅​p✅​p✅​p
🤯​TestAccept/bundle/config-remote-sync/flushed_cache✅​p🙈​s🤯​M🙈​s✅​p🙈​s✅​p🙈​s✅​p🙈​s
🤯​TestAccept/bundle/config-remote-sync/flushed_cache/DATABRICKS_BUNDLE_ENGINE=direct✅​p🤯​M✅​p✅​p✅​p
🤯​TestAccept/bundle/config-remote-sync/flushed_cache/DATABRICKS_BUNDLE_ENGINE=terraform✅​p🤯​M✅​p✅​p✅​p
🤯​TestAccept/bundle/config-remote-sync/formatting_preserved✅​p🙈​s🤯​M🙈​s✅​p🙈​s✅​p🙈​s✅​p🙈​s
🤯​TestAccept/bundle/config-remote-sync/formatting_preserved/DATABRICKS_BUNDLE_ENGINE=direct✅​p🤯​M✅​p✅​p✅​p
🤯​TestAccept/bundle/config-remote-sync/formatting_preserved/DATABRICKS_BUNDLE_ENGINE=terraform✅​p🤯​M✅​p✅​p✅​p
🤯​TestAccept/bundle/config-remote-sync/job_fields🙈​s🙈​s🤯​M🙈​s🙈​s🙈​s✅​p🙈​s🙈​s🙈​s
🤯​TestAccept/bundle/config-remote-sync/job_fields/DATABRICKS_BUNDLE_ENGINE=direct🤯​M✅​p
🤯​TestAccept/bundle/config-remote-sync/job_fields/DATABRICKS_BUNDLE_ENGINE=terraform🤯​M✅​p
🤯​TestAccept/bundle/config-remote-sync/job_multiple_tasks✅​p🙈​s🤯​M🙈​s✅​p🙈​s✅​p🙈​s✅​p🙈​s
🤯​TestAccept/bundle/config-remote-sync/job_multiple_tasks/DATABRICKS_BUNDLE_ENGINE=direct✅​p🤯​M✅​p✅​p✅​p
🤯​TestAccept/bundle/config-remote-sync/job_multiple_tasks/DATABRICKS_BUNDLE_ENGINE=terraform✅​p🤯​M✅​p✅​p✅​p
🤯​TestAccept/bundle/config-remote-sync/job_pipeline_task✅​p🙈​s🤯​M🙈​s✅​p🙈​s✅​p🙈​s✅​p🙈​s
🤯​TestAccept/bundle/config-remote-sync/job_pipeline_task/DATABRICKS_BUNDLE_ENGINE=terraform✅​p🤯​M✅​p✅​p✅​p
🤯​TestAccept/bundle/config-remote-sync/multiple_files✅​p🙈​s🤯​M🙈​s✅​p🙈​s✅​p🙈​s✅​p🙈​s
🤯​TestAccept/bundle/config-remote-sync/multiple_files/DATABRICKS_BUNDLE_ENGINE=direct✅​p🤯​M✅​p✅​p✅​p
🤯​TestAccept/bundle/config-remote-sync/multiple_files/DATABRICKS_BUNDLE_ENGINE=terraform✅​p🤯​M✅​p✅​p✅​p
🤯​TestAccept/bundle/config-remote-sync/multiple_resources🙈​s🙈​s🤯​M🙈​s🙈​s🙈​s✅​p🙈​s🙈​s🙈​s
🤯​TestAccept/bundle/config-remote-sync/multiple_resources/DATABRICKS_BUNDLE_ENGINE=direct🤯​M✅​p
🤯​TestAccept/bundle/config-remote-sync/multiple_resources/DATABRICKS_BUNDLE_ENGINE=terraform🤯​M✅​p
🤯​TestAccept/bundle/config-remote-sync/output_json✅​p🙈​s🤯​M🙈​s✅​p🙈​s✅​p🙈​s✅​p🙈​s
🤯​TestAccept/bundle/config-remote-sync/output_json/DATABRICKS_BUNDLE_ENGINE=direct✅​p🤯​M✅​p✅​p✅​p
🤯​TestAccept/bundle/config-remote-sync/output_json/DATABRICKS_BUNDLE_ENGINE=terraform✅​p🤯​M✅​p✅​p✅​p
🤯​TestAccept/bundle/config-remote-sync/output_no_changes✅​p🙈​s🤯​M🙈​s✅​p🙈​s✅​p🙈​s✅​p🙈​s
🤯​TestAccept/bundle/config-remote-sync/output_no_changes/DATABRICKS_BUNDLE_ENGINE=direct✅​p🤯​M✅​p✅​p✅​p
🤯​TestAccept/bundle/config-remote-sync/output_no_changes/DATABRICKS_BUNDLE_ENGINE=terraform✅​p🤯​M✅​p✅​p✅​p
🤯​TestAccept/bundle/config-remote-sync/pipeline_fields🙈​s🙈​s🤯​M🙈​s🙈​s🙈​s✅​p🙈​s🙈​s🙈​s
💥​TestAccept/bundle/config-remote-sync/pipeline_fields/DATABRICKS_BUNDLE_ENGINE=direct💥​P✅​p
🤯​TestAccept/bundle/config-remote-sync/pipeline_fields/DATABRICKS_BUNDLE_ENGINE=terraform🤯​M✅​p
🤯​TestAccept/bundle/config-remote-sync/target_override✅​p🙈​s🤯​M🙈​s✅​p🙈​s✅​p🙈​s✅​p🙈​s
🤯​TestAccept/bundle/config-remote-sync/target_override/DATABRICKS_BUNDLE_ENGINE=direct✅​p🤯​M✅​p✅​p✅​p
🤯​TestAccept/bundle/config-remote-sync/target_override/DATABRICKS_BUNDLE_ENGINE=terraform✅​p🤯​M✅​p✅​p✅​p
🤯​TestAccept/bundle/deploy/empty-bundle✅​p✅​p🤯​M✅​p✅​p✅​p✅​p✅​p✅​p✅​p
🤯​TestAccept/bundle/deploy/empty-bundle/DATABRICKS_BUNDLE_ENGINE=direct✅​p✅​p🤯​M✅​p✅​p✅​p✅​p✅​p✅​p✅​p
🤯​TestAccept/bundle/deploy/empty-bundle/DATABRICKS_BUNDLE_ENGINE=terraform✅​p✅​p🤯​M✅​p✅​p✅​p✅​p✅​p✅​p✅​p
🤯​TestAccept/bundle/deploy/files/no-snapshot-sync✅​p✅​p🤯​M✅​p✅​p✅​p✅​p✅​p✅​p✅​p
🤯​TestAccept/bundle/deploy/files/no-snapshot-sync/DATABRICKS_BUNDLE_ENGINE=direct✅​p✅​p🤯​M✅​p✅​p✅​p✅​p✅​p✅​p✅​p
❌​TestAccept/bundle/deploy/snapshot-comparison✅​p✅​p✅​p✅​p✅​p✅​p✅​p❌​F✅​p✅​p
❌​TestAccept/bundle/deploy/snapshot-comparison/DATABRICKS_BUNDLE_ENGINE=terraform✅​p✅​p✅​p✅​p✅​p✅​p✅​p❌​F✅​p✅​p
🔄​TestAccept/bundle/deployment/bind/pipelines/recreate✅​p✅​p✅​p✅​p✅​p✅​p🔄​f✅​p✅​p✅​p
🔄​TestAccept/bundle/deployment/bind/pipelines/recreate/DATABRICKS_BUNDLE_ENGINE=direct✅​p✅​p✅​p✅​p✅​p✅​p🔄​f✅​p✅​p✅​p
🤯​TestAccept/bundle/deployment/bind/schema🙈​s🙈​s✅​p🤯​M🙈​s🙈​s✅​p✅​p🙈​s🙈​s
🤯​TestAccept/bundle/deployment/bind/schema/DATABRICKS_BUNDLE_ENGINE=direct✅​p🤯​M✅​p✅​p
🤯​TestAccept/bundle/deployment/bind/schema/DATABRICKS_BUNDLE_ENGINE=terraform✅​p🤯​M✅​p✅​p
🤯​TestAccept/bundle/deployment/bind/secret-scope🙈​s🙈​s✅​p🤯​M🙈​s🙈​s✅​p✅​p🙈​s🙈​s
🤯​TestAccept/bundle/deployment/bind/secret-scope/DATABRICKS_BUNDLE_ENGINE=direct✅​p🤯​M✅​p✅​p
🤯​TestAccept/bundle/deployment/bind/secret-scope/DATABRICKS_BUNDLE_ENGINE=terraform✅​p🤯​M✅​p✅​p
🤯​TestAccept/bundle/deployment/bind/volume🙈​s🙈​s✅​p🤯​M🙈​s🙈​s✅​p✅​p🙈​s🙈​s
💥​TestAccept/bundle/deployment/bind/volume/DATABRICKS_BUNDLE_ENGINE=direct✅​p💥​P✅​p✅​p
❌​TestAccept/bundle/integration_whl/wrapper_custom_params✅​p✅​p❌​F❌​F✅​p✅​p✅​p✅​p🙈​s🙈​s
❌​TestAccept/bundle/integration_whl/wrapper_custom_params/DATABRICKS_BUNDLE_ENGINE=direct✅​p✅​p✅​p❌​F✅​p✅​p✅​p✅​p
❌​TestAccept/bundle/integration_whl/wrapper_custom_params/DATABRICKS_BUNDLE_ENGINE=terraform✅​p✅​p❌​F❌​F✅​p✅​p✅​p✅​p
🤯​TestAccept/bundle/invariant/no_drift🙈​s🙈​s🤯​M✅​p🙈​s🙈​s✅​p✅​p🙈​s🙈​s
🤯​TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=app.yml.tmpl🤯​M✅​p✅​p✅​p
🤯​TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=catalog.yml.tmpl🤯​M✅​p✅​p✅​p
🤯​TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=cluster.yml.tmpl🤯​M✅​p✅​p✅​p
🤯​TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=dashboard.yml.tmpl🤯​M✅​p✅​p✅​p
🤯​TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=database_catalog.yml.tmpl🤯​M✅​p✅​p✅​p
🤯​TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=database_instance.yml.tmpl🤯​M✅​p✅​p✅​p
🤯​TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=experiment.yml.tmpl🤯​M✅​p✅​p✅​p
🤯​TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job.yml.tmpl🤯​M✅​p✅​p✅​p
🤯​TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_cross_resource_ref.yml.tmpl🤯​M✅​p✅​p✅​p
🤯​TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_permission_ref.yml.tmpl🤯​M✅​p✅​p✅​p
🤯​TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_pydabs_1000_tasks.yml.tmpl🤯​M✅​p✅​p✅​p
🤯​TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_pydabs_10_tasks.yml.tmpl🤯​M✅​p✅​p✅​p
🤯​TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_with_permissions.yml.tmpl🤯​M✅​p✅​p✅​p
🤯​TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_with_task.yml.tmpl🤯​M✅​p✅​p✅​p
🤯​TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=model.yml.tmpl🤯​M✅​p✅​p✅​p
🤯​TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=model_serving_endpoint.yml.tmpl🤯​M✅​p✅​p✅​p
🤯​TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=pipeline.yml.tmpl🤯​M✅​p✅​p✅​p
🤯​TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=registered_model.yml.tmpl🤯​M✅​p✅​p✅​p
🤯​TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=schema.yml.tmpl🤯​M✅​p✅​p✅​p
🤯​TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=schema_grant_ref.yml.tmpl🤯​M✅​p✅​p✅​p
🤯​TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=schema_with_grants.yml.tmpl🤯​M✅​p✅​p✅​p
🤯​TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=secret_scope.yml.tmpl🤯​M✅​p✅​p✅​p
🤯​TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=secret_scope_default_backend_type.yml.tmpl🤯​M✅​p✅​p✅​p
🤯​TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=synced_database_table.yml.tmpl🤯​M✅​p✅​p✅​p
🤯​TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=volume.yml.tmpl🤯​M✅​p✅​p✅​p
🤯​TestAccept/bundle/resources/grants/registered_models🙈​s🙈​s✅​p✅​p🙈​s🙈​s✅​p🤯​M🙈​s🙈​s
🤯​TestAccept/bundle/resources/grants/registered_models/DATABRICKS_BUNDLE_ENGINE=direct✅​p✅​p✅​p🤯​M
🤯​TestAccept/bundle/resources/grants/registered_models/DATABRICKS_BUNDLE_ENGINE=terraform✅​p✅​p✅​p🤯​M
🤯​TestAccept/bundle/resources/grants/schemas/all_privileges🙈​s🙈​s✅​p✅​p🙈​s🙈​s✅​p🤯​M🙈​s🙈​s
🤯​TestAccept/bundle/resources/grants/schemas/all_privileges/DATABRICKS_BUNDLE_ENGINE=direct✅​p✅​p✅​p🤯​M
🤯​TestAccept/bundle/resources/grants/schemas/all_privileges/DATABRICKS_BUNDLE_ENGINE=terraform✅​p✅​p✅​p🤯​M
🤯​TestAccept/bundle/resources/grants/schemas/change_privilege🙈​s🙈​s✅​p✅​p🙈​s🙈​s✅​p🤯​M🙈​s🙈​s
🤯​TestAccept/bundle/resources/grants/schemas/change_privilege/DATABRICKS_BUNDLE_ENGINE=direct✅​p✅​p✅​p🤯​M
🤯​TestAccept/bundle/resources/grants/schemas/change_privilege/DATABRICKS_BUNDLE_ENGINE=terraform✅​p✅​p✅​p🤯​M
❌​TestAccept/bundle/resources/grants/schemas/duplicate_principals🙈​s🙈​s✅​p✅​p🙈​s🙈​s❌​F🤯​M🙈​s🙈​s
❌​TestAccept/bundle/resources/grants/schemas/duplicate_principals/DATABRICKS_BUNDLE_ENGINE=direct✅​p✅​p❌​F🤯​M
🤯​TestAccept/bundle/resources/grants/schemas/duplicate_principals/DATABRICKS_BUNDLE_ENGINE=terraform✅​p✅​p✅​p🤯​M
🤯​TestAccept/bundle/resources/grants/schemas/duplicate_privileges🙈​s🙈​s✅​p✅​p🙈​s🙈​s✅​p🤯​M🙈​s🙈​s
🤯​TestAccept/bundle/resources/grants/schemas/duplicate_privileges/DATABRICKS_BUNDLE_ENGINE=direct✅​p✅​p✅​p🤯​M
🤯​TestAccept/bundle/resources/grants/schemas/duplicate_privileges/DATABRICKS_BUNDLE_ENGINE=terraform✅​p✅​p✅​p🤯​M
🤯​TestAccept/bundle/resources/grants/schemas/empty_array🙈​s🙈​s✅​p✅​p🙈​s🙈​s✅​p🤯​M🙈​s🙈​s
🤯​TestAccept/bundle/resources/grants/schemas/empty_array/DATABRICKS_BUNDLE_ENGINE=direct✅​p✅​p✅​p🤯​M
🤯​TestAccept/bundle/resources/grants/schemas/empty_array/DATABRICKS_BUNDLE_ENGINE=terraform✅​p✅​p✅​p🤯​M
❌​TestAccept/bundle/resources/grants/schemas/out_of_band_principal🙈​s🙈​s✅​p✅​p🙈​s🙈​s❌​F❌​F🙈​s🙈​s
❌​TestAccept/bundle/resources/grants/schemas/out_of_band_principal/DATABRICKS_BUNDLE_ENGINE=direct✅​p✅​p❌​F❌​F
❌​TestAccept/bundle/resources/grants/schemas/remove_principal🙈​s🙈​s❌​F❌​F🙈​s🙈​s❌​F❌​F🙈​s🙈​s
❌​TestAccept/bundle/resources/grants/schemas/remove_principal/DATABRICKS_BUNDLE_ENGINE=direct❌​F❌​F❌​F❌​F
❌​TestAccept/bundle/resources/grants/schemas/remove_principal/DATABRICKS_BUNDLE_ENGINE=terraform❌​F❌​F❌​F❌​F
🤯​TestAccept/bundle/resources/jobs/shared-root-path✅​p✅​p✅​p✅​p✅​p✅​p✅​p🤯​M✅​p✅​p
🤯​TestAccept/bundle/resources/jobs/shared-root-path/DATABRICKS_BUNDLE_ENGINE=direct✅​p✅​p✅​p✅​p✅​p✅​p✅​p🤯​M✅​p✅​p
🤯​TestAccept/bundle/resources/jobs/shared-root-path/DATABRICKS_BUNDLE_ENGINE=terraform✅​p✅​p✅​p✅​p✅​p✅​p✅​p🤯​M✅​p✅​p
🤯​TestAccept/bundle/resources/model_serving_endpoints/basic🙈​s🙈​s✅​p✅​p🙈​s🙈​s✅​p🤯​M🙈​s🙈​s
🤯​TestAccept/bundle/resources/model_serving_endpoints/basic/DATABRICKS_BUNDLE_ENGINE=direct✅​p✅​p✅​p🤯​M
🤯​TestAccept/bundle/resources/model_serving_endpoints/basic/DATABRICKS_BUNDLE_ENGINE=terraform✅​p✅​p✅​p🤯​M
🤯​TestAccept/bundle/resources/model_serving_endpoints/running-endpoint🙈​s🙈​s✅​p✅​p🙈​s🙈​s✅​p🤯​M🙈​s🙈​s
🤯​TestAccept/bundle/resources/model_serving_endpoints/running-endpoint/DATABRICKS_BUNDLE_ENGINE=direct✅​p✅​p✅​p🤯​M
🤯​TestAccept/bundle/resources/model_serving_endpoints/running-endpoint/DATABRICKS_BUNDLE_ENGINE=terraform✅​p✅​p✅​p🤯​M
🤯​TestAccept/bundle/resources/models/basic✅​p✅​p✅​p✅​p✅​p✅​p✅​p🤯​M✅​p✅​p
🤯​TestAccept/bundle/resources/models/basic/DATABRICKS_BUNDLE_ENGINE=direct✅​p✅​p✅​p✅​p✅​p✅​p✅​p🤯​M✅​p✅​p
🤯​TestAccept/bundle/resources/models/basic/DATABRICKS_BUNDLE_ENGINE=terraform✅​p✅​p✅​p✅​p✅​p✅​p✅​p🤯​M✅​p✅​p
🙈​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/pipelines/update✅​p✅​p✅​p✅​p✅​p✅​p✅​p🤯​M✅​p✅​p
🤯​TestAccept/bundle/resources/pipelines/update/DATABRICKS_BUNDLE_ENGINE=direct✅​p✅​p✅​p✅​p✅​p✅​p✅​p🤯​M✅​p✅​p
💥​TestAccept/bundle/resources/pipelines/update/DATABRICKS_BUNDLE_ENGINE=terraform✅​p✅​p✅​p✅​p✅​p✅​p✅​p💥​P✅​p✅​p
🟨​TestAccept/bundle/resources/postgres_branches/basic🙈​S🙈​S💚​R🟨​K🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S
🟨​TestAccept/bundle/resources/postgres_branches/basic/DATABRICKS_BUNDLE_ENGINE=direct💚​R🟨​K
💚​TestAccept/bundle/resources/postgres_branches/basic/DATABRICKS_BUNDLE_ENGINE=terraform💚​R💚​R
💚​TestAccept/bundle/resources/postgres_branches/recreate🙈​S🙈​S💚​R💚​R🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S
💚​TestAccept/bundle/resources/postgres_branches/recreate/DATABRICKS_BUNDLE_ENGINE=direct💚​R💚​R
💚​TestAccept/bundle/resources/postgres_branches/recreate/DATABRICKS_BUNDLE_ENGINE=terraform💚​R💚​R
💚​TestAccept/bundle/resources/postgres_branches/update_protected🙈​S🙈​S💚​R💚​R🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S
💚​TestAccept/bundle/resources/postgres_branches/update_protected/DATABRICKS_BUNDLE_ENGINE=direct💚​R💚​R
💚​TestAccept/bundle/resources/postgres_branches/update_protected/DATABRICKS_BUNDLE_ENGINE=terraform💚​R💚​R
💚​TestAccept/bundle/resources/postgres_branches/without_branch_id🙈​S🙈​S💚​R💚​R🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S
💚​TestAccept/bundle/resources/postgres_branches/without_branch_id/DATABRICKS_BUNDLE_ENGINE=direct💚​R💚​R
💚​TestAccept/bundle/resources/postgres_branches/without_branch_id/DATABRICKS_BUNDLE_ENGINE=terraform💚​R💚​R
💚​TestAccept/bundle/resources/postgres_endpoints/basic🙈​S🙈​S💚​R💚​R🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S
💚​TestAccept/bundle/resources/postgres_endpoints/basic/DATABRICKS_BUNDLE_ENGINE=terraform💚​R💚​R
💚​TestAccept/bundle/resources/postgres_endpoints/recreate🙈​S🙈​S💚​R💚​R🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S
💚​TestAccept/bundle/resources/postgres_endpoints/recreate/DATABRICKS_BUNDLE_ENGINE=direct💚​R💚​R
🟨​TestAccept/bundle/resources/postgres_projects/update_display_name🙈​S🙈​S🟨​K🟨​K🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S
🟨​TestAccept/bundle/resources/postgres_projects/update_display_name/DATABRICKS_BUNDLE_ENGINE=terraform🟨​K🟨​K
🤯​TestAccept/bundle/resources/secret_scopes/basic✅​p✅​p✅​p✅​p✅​p✅​p✅​p🤯​M✅​p✅​p
🤯​TestAccept/bundle/resources/secret_scopes/basic/DATABRICKS_BUNDLE_ENGINE=direct✅​p✅​p✅​p✅​p✅​p✅​p✅​p🤯​M✅​p✅​p
💚​TestAccept/bundle/resources/synced_database_tables/basic🙈​S🙈​S💚​R💚​R🙈​S🙈​S💚​R💚​R🙈​S🙈​S
💚​TestAccept/bundle/resources/synced_database_tables/basic/DATABRICKS_BUNDLE_ENGINE=direct💚​R💚​R💚​R💚​R
💚​TestAccept/bundle/resources/synced_database_tables/basic/DATABRICKS_BUNDLE_ENGINE=terraform💚​R💚​R💚​R💚​R
🔄​TestAccept/bundle/templates/default-python/combinations/classic/DATABRICKS_BUNDLE_ENGINE=direct/DLT=yes/NBOOK=yes/PY=no/READPLAN=1✅​p✅​p✅​p✅​p✅​p✅​p🔄​f✅​p✅​p✅​p
🔄​TestAccept/bundle/templates/default-python/combinations/classic/DATABRICKS_BUNDLE_ENGINE=direct/DLT=yes/NBOOK=yes/PY=yes/READPLAN=1✅​p✅​p✅​p✅​p✅​p✅​p🔄​f✅​p✅​p✅​p
🙈​TestAccept/ssh/connection🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S
🤯​TestDbrAcceptance🙈​s🙈​s🤯​M🤯​M🙈​s🙈​s🙈​s🤯​M🙈​s🙈​s
🤯​TestInprocessMode🙈​s🙈​s🤯​M🤯​M🙈​s🙈​s🙈​s🤯​M🙈​s🙈​s
Top 50 slowest tests (at least 2 minutes):
durationenvtestname
17:02aws-ucws windowsTestAccept/bundle/integration_whl/base/DATABRICKS_BUNDLE_ENGINE=terraform
14:25aws-ucws windowsTestAccept/bundle/integration_whl/base/DATABRICKS_BUNDLE_ENGINE=direct
14:07aws-ucws linuxTestAccept/bundle/resources/model_serving_endpoints/running-endpoint/DATABRICKS_BUNDLE_ENGINE=terraform
14:02gcp linuxTestAccept/bundle/integration_whl/base/DATABRICKS_BUNDLE_ENGINE=terraform
13:20gcp linuxTestAccept/bundle/integration_whl/interactive_single_user/DATABRICKS_BUNDLE_ENGINE=terraform
12:05aws-ucws linuxTestAccept/bundle/resources/model_serving_endpoints/running-endpoint/DATABRICKS_BUNDLE_ENGINE=direct
11:46aws-ucws linuxTestAccept/bundle/integration_whl/interactive_single_user/DATABRICKS_BUNDLE_ENGINE=terraform
11:21aws-ucws linuxTestAccept/bundle/integration_whl/wrapper/DATABRICKS_BUNDLE_ENGINE=terraform
11:07gcp windowsTestAccept/bundle/integration_whl/interactive_cluster_dynamic_version/DATABRICKS_BUNDLE_ENGINE=terraform/DATA_SECURITY_MODE=SINGLE_USER
10:53gcp windowsTestAccept/bundle/integration_whl/interactive_single_user/DATABRICKS_BUNDLE_ENGINE=terraform
10:44aws linuxTestAccept/bundle/integration_whl/interactive_single_user/DATABRICKS_BUNDLE_ENGINE=terraform
10:42azure-ucws linuxTestAccept/bundle/integration_whl/interactive_cluster_dynamic_version/DATABRICKS_BUNDLE_ENGINE=direct/DATA_SECURITY_MODE=USER_ISOLATION
10:12azure linuxTestAccept/bundle/run/app-with-job/DATABRICKS_BUNDLE_ENGINE=direct
10:09gcp windowsTestAccept/bundle/integration_whl/interactive_cluster/DATABRICKS_BUNDLE_ENGINE=terraform
10:01aws-ucws linuxTestAccept/bundle/integration_whl/interactive_cluster_dynamic_version/DATABRICKS_BUNDLE_ENGINE=direct/DATA_SECURITY_MODE=SINGLE_USER
9:43aws-ucws linuxTestAccept/bundle/integration_whl/base/DATABRICKS_BUNDLE_ENGINE=terraform
9:36azure linuxTestAccept/bundle/integration_whl/interactive_single_user/DATABRICKS_BUNDLE_ENGINE=terraform
9:28azure-ucws windowsTestAccept/bundle/integration_whl/interactive_cluster_dynamic_version/DATABRICKS_BUNDLE_ENGINE=terraform/DATA_SECURITY_MODE=SINGLE_USER
9:26aws-ucws windowsTestAccept/bundle/integration_whl/interactive_cluster_dynamic_version/DATABRICKS_BUNDLE_ENGINE=terraform/DATA_SECURITY_MODE=USER_ISOLATION
9:25azure linuxTestAccept/bundle/run/app-with-job/DATABRICKS_BUNDLE_ENGINE=terraform
9:23aws-ucws windowsTestAccept/bundle/resources/model_serving_endpoints/running-endpoint/DATABRICKS_BUNDLE_ENGINE=terraform
9:18aws-ucws windowsTestSparkJarTaskDeployAndRunOnVolumes/Databricks_Runtime_15.4_LTS
9:15aws-ucws linuxTestAccept/bundle/integration_whl/interactive_cluster_dynamic_version/DATABRICKS_BUNDLE_ENGINE=direct/DATA_SECURITY_MODE=USER_ISOLATION
9:12aws linuxTestAccept/bundle/integration_whl/interactive_cluster_dynamic_version/DATABRICKS_BUNDLE_ENGINE=terraform/DATA_SECURITY_MODE=SINGLE_USER
9:05azure linuxTestAccept/bundle/resources/permissions/factcheck/DATABRICKS_BUNDLE_ENGINE=terraform
8:53gcp windowsTestAccept/bundle/integration_whl/custom_params/DATABRICKS_BUNDLE_ENGINE=direct
8:52aws-ucws linuxTestAccept/bundle/integration_whl/interactive_cluster/DATABRICKS_BUNDLE_ENGINE=terraform
8:44aws-ucws linuxTestAccept/bundle/integration_whl/base/DATABRICKS_BUNDLE_ENGINE=direct
8:41gcp linuxTestAccept/bundle/integration_whl/interactive_cluster/DATABRICKS_BUNDLE_ENGINE=direct
8:38azure windowsTestAccept/bundle/integration_whl/interactive_single_user/DATABRICKS_BUNDLE_ENGINE=terraform
8:35gcp windowsTestAccept/bundle/integration_whl/interactive_cluster_dynamic_version/DATABRICKS_BUNDLE_ENGINE=terraform/DATA_SECURITY_MODE=USER_ISOLATION
8:34gcp windowsTestAccept/bundle/run/app-with-job/DATABRICKS_BUNDLE_ENGINE=direct
8:34aws-ucws windowsTestSparkJarTaskDeployAndRunOnVolumes/Databricks_Runtime_14.3_LTS
8:33gcp linuxTestAccept/bundle/integration_whl/interactive_cluster_dynamic_version/DATABRICKS_BUNDLE_ENGINE=direct/DATA_SECURITY_MODE=USER_ISOLATION
8:33aws-ucws windowsTestAccept/bundle/integration_whl/interactive_cluster_dynamic_version/DATABRICKS_BUNDLE_ENGINE=terraform/DATA_SECURITY_MODE=SINGLE_USER
8:26aws-ucws windowsTestAccept/bundle/resources/model_serving_endpoints/running-endpoint/DATABRICKS_BUNDLE_ENGINE=direct
8:24azure-ucws windowsTestAccept/bundle/integration_whl/base/DATABRICKS_BUNDLE_ENGINE=terraform
8:22azure-ucws linuxTestAccept/bundle/integration_whl/base/DATABRICKS_BUNDLE_ENGINE=terraform
8:19azure-ucws linuxTestAccept/bundle/config-remote-sync/multiple_resources/DATABRICKS_BUNDLE_ENGINE=terraform
8:14aws linuxTestAccept/bundle/resources/permissions/factcheck/DATABRICKS_BUNDLE_ENGINE=terraform
8:09gcp linuxTestAccept/bundle/integration_whl/interactive_cluster/DATABRICKS_BUNDLE_ENGINE=terraform
8:08aws-ucws windowsTestAccept/bundle/integration_whl/interactive_single_user/DATABRICKS_BUNDLE_ENGINE=terraform
8:07gcp linuxTestAccept/bundle/run/app-with-job/DATABRICKS_BUNDLE_ENGINE=terraform
8:07gcp windowsTestAccept/bundle/integration_whl/interactive_cluster_dynamic_version/DATABRICKS_BUNDLE_ENGINE=direct/DATA_SECURITY_MODE=SINGLE_USER
8:04gcp linuxTestAccept/bundle/integration_whl/interactive_cluster_dynamic_version/DATABRICKS_BUNDLE_ENGINE=terraform/DATA_SECURITY_MODE=USER_ISOLATION
7:59gcp linuxTestAccept/bundle/integration_whl/base/DATABRICKS_BUNDLE_ENGINE=direct
7:56aws-ucws linuxTestSparkJarTaskDeployAndRunOnVolumes/Databricks_Runtime_15.4_LTS
7:54azure-ucws windowsTestAccept/bundle/integration_whl/interactive_cluster_dynamic_version/DATABRICKS_BUNDLE_ENGINE=direct/DATA_SECURITY_MODE=SINGLE_USER
7:46aws-ucws linuxTestAccept/bundle/integration_whl/interactive_cluster_dynamic_version/DATABRICKS_BUNDLE_ENGINE=terraform/DATA_SECURITY_MODE=SINGLE_USER
7:42aws linuxTestAccept/bundle/integration_whl/interactive_cluster_dynamic_version/DATABRICKS_BUNDLE_ENGINE=terraform/DATA_SECURITY_MODE=USER_ISOLATION

deco-sdk-taggingBot added a commit that referenced this pull request Apr 8, 2026
## Release v0.296.0
### Notable Changes
* Direct deployment engine for DABs is now in Public Preview. Documentation at [docs/direct.md](docs/direct.md).
### CLI
* Auth commands now error when --profile and --host conflict ([#4841](#4841))
* Add `--force-refresh` flag to `databricks auth token` to force a token refresh even when the cached token is still valid ([#4767](#4767))
### Bundles
* Deduplicate grant entries with duplicate principals or privileges during initialization ([#4801](#4801))
* Fix `bundle deployment bind` to always pull remote state before modifying ([#4892](#4892))
* engine/direct: Fix drift in grants resource due to privilege reordering ([#4794](#4794))
* engine/direct: Fix 400 error when deploying grants with ALL_PRIVILEGES ([#4801](#4801))
* engine/direct: Fix unwanted recreation of secret scopes when scope_backend_type is not set ([#4834](#4834))
* engine/direct: Fix bind and unbind for non-Terraform resources ([#4850](#4850))
* engine/direct: Fix deploying removed principals ([#4824](#4824))
* engine/direct: Fix secret scope permissions migration from Terraform to Direct engine ([#4866](#4866))
denik added a commit that referenced this pull request May 20, 2026
#4824)
## Changes
- When a principal is removed from grants config, deploy now revokes
their privileges instead of silently leaving them in place. This matches
terraform behaviour.
- `DoUpdate` interface changed to receive `*PlanEntry` instead of
`Changes`, giving resources access to remote state directly.
## Why
New behaviour matches terraform's. Grants API is incremental, it only
replaces principals mentioned in the payload and leaves other one alone
(instead of wiping them, which is the incorrect assumption previous impl
was built upon).
Passing PlanEntry instead of just Changes simplifies grants update logic
instead of parsing Changes paths like
(`[principal='bob'].privileges[0]`), it compares desired state against
`PlanEntry.RemoteState`. A few other resources had a need to view remote
state as well, so it's generally useful.
## Tests
- New acceptance tests cover the remove-principal and
out-of-band-principal drift scenarios.
- gron.py got new option --noindex which prints array elements as
`element[]` instead of `element[1]` which allows to ignore order
differences.
- Updates to testserver for grants & schemas to match AWS backend better
to enable local+cloud test.
denik pushed a commit that referenced this pull request May 20, 2026
## Release v0.296.0
### Notable Changes
* Direct deployment engine for DABs is now in Public Preview. Documentation at [docs/direct.md](docs/direct.md).
### CLI
* Auth commands now error when --profile and --host conflict ([#4841](#4841))
* Add `--force-refresh` flag to `databricks auth token` to force a token refresh even when the cached token is still valid ([#4767](#4767))
### Bundles
* Deduplicate grant entries with duplicate principals or privileges during initialization ([#4801](#4801))
* Fix `bundle deployment bind` to always pull remote state before modifying ([#4892](#4892))
* engine/direct: Fix drift in grants resource due to privilege reordering ([#4794](#4794))
* engine/direct: Fix 400 error when deploying grants with ALL_PRIVILEGES ([#4801](#4801))
* engine/direct: Fix unwanted recreation of secret scopes when scope_backend_type is not set ([#4834](#4834))
* engine/direct: Fix bind and unbind for non-Terraform resources ([#4850](#4850))
* engine/direct: Fix deploying removed principals ([#4824](#4824))
* engine/direct: Fix secret scope permissions migration from Terraform to Direct engine ([#4866](#4866))
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@andrewnester