Skip to content

catalogs: support isolation_mode, enable_predictive_optimization, owner fields#4819

Draft
denik wants to merge 8 commits intomainfrom
denik/isolation_mode
Draft

catalogs: support isolation_mode, enable_predictive_optimization, owner fields#4819
denik wants to merge 8 commits intomainfrom
denik/isolation_mode

Conversation

@denik
Copy link
Contributor

@denik denik commented Mar 23, 2026

Changes

Support isolation_mode, enable_predictive_optimization, owner fields on catalogs.

Why

User expect to be able to set those, they are supported by API (just not the create endpoint).

Tests

New acceptance & invariant fields.

denik added 4 commits March 23, 2026 15:48
…owner support

Adds three update-only fields to the catalog resource:
- isolation_mode (ISOLATED/OPEN)
- enable_predictive_optimization (ENABLE/DISABLE/INHERIT)
- owner

Since these fields cannot be set during creation (not in CreateCatalog API),
DoCreate now calls a post-create update when any of them are non-empty.
DoUpdate/DoUpdateWithID are refactored to share an applyUpdate helper.

Adds acceptance tests:
- isolation-mode: verifies fields are applied on create and can be updated
- no-update-on-create: verifies no PATCH is called when these fields are absent

Co-authored-by: Isaac
Add owner to ignore_remote_changes for catalogs — the API automatically sets
it to the creator's username, causing drift when the user doesn't specify it.
This also fixes the pre-existing no_drift failure for catalog.yml.tmpl.

Add catalog_isolation_mode.yml.tmpl to the invariant test matrix to verify
that isolation_mode and enable_predictive_optimization produce no drift after
a successful deploy.

Co-authored-by: Isaac
…nges

Consistent with registered_models.owner — backend_defaults only suppresses
drift when the user has never set the field (old/new are nil), while
ignore_remote_changes suppresses drift even when user has explicitly set
owner and it gets changed externally.

Also exclude catalog_isolation_mode.yml.tmpl from migrate invariant test
since catalog resources only work with direct deployment mode (same reason
catalog.yml.tmpl is already excluded).

Co-authored-by: Isaac
Since this test only runs on direct mode, there's no need for a
per-engine filename. Use trace to embed the filtered catalog requests
inline in output.txt. Clean up out.requests.txt in the cleanup trap
in case the test fails before print_requests.py runs.

Co-authored-by: Isaac
@denik denik temporarily deployed to test-trigger-is March 23, 2026 15:58 — with GitHub Actions Inactive
@denik denik temporarily deployed to test-trigger-is March 23, 2026 16:02 — with GitHub Actions Inactive
@denik denik temporarily deployed to test-trigger-is March 23, 2026 16:09 — with GitHub Actions Inactive
@eng-dev-ecosystem-bot
Copy link
Collaborator

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

Commit: 20a5753

Run: 23478940907

Env 🟨​KNOWN 🔄​flaky 💚​RECOVERED 🙈​SKIP ✅​pass 🙈​skip Time
🟨​ aws linux 7 1 9 271 803 9:58
🟨​ aws windows 7 1 9 273 801 8:21
💚​ aws-ucws linux 8 9 369 718 8:03
🔄​ aws-ucws windows 3 7 9 369 716 5:42
💚​ azure linux 2 11 274 801 8:28
💚​ azure windows 2 11 276 799 5:42
💚​ azure-ucws linux 2 11 374 714 9:58
🔄​ azure-ucws windows 3 1 11 374 712 7:18
💚​ gcp linux 2 11 270 804 8:22
💚​ gcp windows 2 11 272 802 7:34
19 interesting tests: 9 SKIP, 7 KNOWN, 2 flaky, 1 RECOVERED
Test Name aws linux aws windows aws-ucws linux aws-ucws windows azure linux azure windows azure-ucws linux azure-ucws windows gcp linux gcp windows
🟨​ TestAccept 🟨​K 🟨​K 💚​R 🔄​f 💚​R 💚​R 💚​R 🔄​f 💚​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/connect-serverless-gpu 🙈​s 🙈​s ✅​p 🔄​f 🙈​s 🙈​s ✅​p 🔄​f 🙈​s 🙈​s
🔄​ TestAccept/ssh/connect-serverless-gpu/DATABRICKS_BUNDLE_ENGINE=direct ✅​p 🔄​f ✅​p 🔄​f
💚​ TestAccept/ssh/connection 💚​R 💚​R 💚​R 💚​R 💚​R 💚​R 💚​R 💚​R 💚​R 💚​R
Top 32 slowest tests (at least 2 minutes):
duration env testname
6:03 gcp windows TestAccept/ssh/connection/DATABRICKS_BUNDLE_ENGINE=direct
5:27 gcp linux TestAccept/ssh/connection/DATABRICKS_BUNDLE_ENGINE=direct
5:24 aws windows TestSecretsPutSecretStringValue
4:57 azure-ucws windows TestSecretsPutSecretStringValue
4:19 aws linux TestSecretsPutSecretStringValue
4:12 gcp linux TestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=direct
4:09 azure windows TestSecretsPutSecretStringValue
3:45 gcp windows TestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=terraform
3:39 azure-ucws windows TestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=direct
3:38 gcp windows TestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=direct
3:26 aws-ucws linux TestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=terraform
3:15 aws linux TestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=direct
3:15 azure linux TestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=terraform
3:15 azure-ucws windows TestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=terraform
3:14 gcp linux TestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=terraform
3:13 azure-ucws linux TestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=direct
3:12 aws windows TestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=direct
3:12 azure-ucws linux TestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=terraform
3:12 aws-ucws windows TestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=terraform
3:07 aws-ucws windows TestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=direct
2:48 aws linux TestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=terraform
2:46 aws windows TestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=terraform
2:38 aws-ucws linux TestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=direct
2:37 azure linux TestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=direct
2:26 azure linux TestSecretsPutSecretStringValue
2:16 azure windows TestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=terraform
2:14 aws windows TestAccept/ssh/connection/DATABRICKS_BUNDLE_ENGINE=direct
2:14 azure-ucws linux TestSecretsPutSecretStringValue
2:09 gcp windows TestSecretsPutSecretStringValue
2:06 azure windows TestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=direct
2:05 azure-ucws linux TestAccept/ssh/connect-serverless-gpu/DATABRICKS_BUNDLE_ENGINE=direct
2:05 aws-ucws linux TestAccept/ssh/connection/DATABRICKS_BUNDLE_ENGINE=direct

@denik denik temporarily deployed to test-trigger-is March 23, 2026 19:59 — with GitHub Actions Inactive
@denik denik temporarily deployed to test-trigger-is March 24, 2026 07:56 — with GitHub Actions Inactive
Sign up for free to 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.

2 participants