Skip to content

bundle: Add postgres_roles resource#5467

Merged
janniklasrose merged 25 commits into
mainfrom
postgres-roles
Jun 16, 2026
Merged

bundle: Add postgres_roles resource#5467
janniklasrose merged 25 commits into
mainfrom
postgres-roles

Conversation

@janniklasrose

@janniklasrose janniklasrose commented Jun 8, 2026

Copy link
Copy Markdown
Contributor

Changes

Add postgres_roles (Lakebase Postgres Roles) as a bundle resource for both the direct and Terraform engines: config type, direct-engine CRUD, Terraform converter, JSON schema, test-server handlers, and tests.

  • parent, role_id, and the spec fields postgres_role / auth_method / identity_type are recreate-only; attributes / membership_roles update in place.
  • RemapState keeps the spec empty (GET returns only status, which rolls up server/parent defaults) and relies on ignore_remote_changes, matching the sibling Postgres resources.

Tests

  • Unit: Terraform converter, test-server role CRUD + update_mask handling, the update-mask helper, state-load, bind-support, and field coverage (type_test).
  • Acceptance: basic, update, recreate, recreate-postgres-role, plus inherited-role-conflict / inherited-role-bind documenting inherited-role behavior.
  • Cloud: full suite passes on aws-prod-ucws against real Lakebase (both engines).

This pull request and its description were written by Isaac, an AI coding agent.

pietern and others added 9 commits May 19, 2026 11:23
Adds DAB support for Lakebase Postgres roles, mirroring the existing
postgres_databases resource. The state holds role_id and parent
separately (so bundle variable references resolve), and RemapState
recovers role_id from remote.Name via a local strings.TrimPrefix —
no shared parser helper. recreate_on_changes fires on either field
since both are part of the immutable hierarchical name.

Also fixes collectUpdatePathsWithPrefix to drop a parent path when a
more specific child path is present; the real Postgres API rejects an
update_mask that contains both (e.g. spec.attributes plus
spec.attributes.createdb), expecting all sibling fields when the
parent is named.

Tested end-to-end against AWS prod (basic, recreate, update, bind) as
well as the invariant suite.

Co-authored-by: Isaac
Two follow-ups to the postgres_roles resource:

- Regenerate required-field validation so role_id is required alongside
  parent, matching the JSON schema (jsonschema.json already lists both
  under required). Without this, bundle validate accepted a role config
  missing role_id and the failure only surfaced during deploy.
- In PostgresRole.Exists, recognize 404 via apierr.IsMissing and return
  (false, nil) so bundle deployment bind reports the user-friendly
  "postgres_role ... is not found" path instead of a generic fetch
  error.

Co-authored-by: Isaac
Missed alongside required_fields in the previous commit. Same
generator run, just the second output file.

Co-authored-by: Isaac
Previously logged "does not exist" for any GetRole error, including
transient failures, before checking apierr.IsMissing. Flip the order
so the debug message only fires when the role is genuinely absent.

Co-authored-by: Isaac
The SDK's RoleRoleStatus already carries role_id; use it directly
instead of stripping the "<parent>/roles/" prefix from remote.Name.
Matches the catalog convention (Status.CatalogId) and avoids a
local string parse.

Co-authored-by: Isaac
# Conflicts:
#	NEXT_CHANGELOG.md
#	acceptance/bundle/invariant/continue_293/out.test.toml
#	acceptance/bundle/invariant/migrate/out.test.toml
#	acceptance/bundle/invariant/no_drift/out.test.toml
#	acceptance/bundle/invariant/test.toml
#	acceptance/bundle/refschema/out.fields.txt
#	bundle/config/mutator/resourcemutator/apply_bundle_permissions_test.go
#	bundle/config/mutator/resourcemutator/apply_target_mode_test.go
#	bundle/config/mutator/resourcemutator/run_as_test.go
#	bundle/config/resources.go
#	bundle/config/resources_test.go
#	bundle/deploy/terraform/interpolate.go
#	bundle/deploy/terraform/pkg.go
#	bundle/deploy/terraform/util.go
#	bundle/direct/dresources/all.go
#	bundle/direct/dresources/apitypes.generated.yml
#	bundle/direct/dresources/apitypes.yml
#	bundle/direct/dresources/resources.generated.yml
#	bundle/direct/dresources/util.go
#	bundle/internal/schema/annotations.yml
#	bundle/internal/validation/generated/enum_fields.go
#	bundle/internal/validation/generated/required_fields.go
#	bundle/schema/jsonschema.json
#	bundle/schema/jsonschema_for_docs.json
#	bundle/statemgmt/state_load_test.go
#	libs/testserver/fake_workspace.go
#	libs/testserver/handlers.go
#	libs/testserver/postgres.go
…ate-only

Live testing showed the PATCH update_mask only accepts spec.attributes
and spec.membership_roles; the backend rejects spec.postgres_role,
spec.auth_method, and spec.identity_type with 400 INVALID_PARAMETER_VALUE
"Unknown field path in update_mask". Without declaring these as
recreate_on_changes:

- direct engine: deploy fails on PATCH and re-plan loops on the same
  "1 to change" forever
- terraform engine: silently no-ops the change (state records new value,
  remote keeps old, GET returns no spec → invisible divergence)

These spec fields aren't marked immutable in the OpenAPI definition,
so the generator can't pick them up — declare them in the manual
resources.yml until upstream is fixed.

Adds an acceptance test that toggles postgres_role and confirms the
plan recreates instead of patching. Restricted to the direct engine
because the terraform provider still treats the field as updateable
and would silently diverge from the bundle.

Co-authored-by: Isaac
@eng-dev-ecosystem-bot

eng-dev-ecosystem-bot commented Jun 8, 2026

Copy link
Copy Markdown
Collaborator

Integration test report

Commit: 935a4cf

Run: 27622525865

Env 🟨​KNOWN 🔄​flaky 💚​RECOVERED 🙈​SKIP ✅​pass 🙈​skip Time
🟨​ aws linux 1 4 2 15 264 989 7:32
🟨​ aws windows 7 15 266 987 10:32
💚​ aws-ucws linux 7 15 360 903 6:24
💚​ aws-ucws windows 7 15 362 901 9:29
💚​ azure linux 1 17 267 987 6:05
💚​ azure windows 1 17 269 985 8:34
💚​ azure-ucws linux 1 17 365 899 7:35
💚​ azure-ucws windows 1 17 367 897 9:45
💚​ gcp linux 1 17 263 990 6:36
💚​ gcp windows 1 17 265 988 8:50
22 interesting tests: 15 SKIP, 7 KNOWN
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 💚​R 🟨​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 💚​R 🟨​K 💚​R 💚​R 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S
🟨​ TestAccept/bundle/resources/permissions/jobs/destroy_without_mgmtperms/with_permissions/DATABRICKS_BUNDLE_ENGINE=direct 🔄​f 🟨​K 💚​R 💚​R
🟨​ TestAccept/bundle/resources/permissions/jobs/destroy_without_mgmtperms/with_permissions/DATABRICKS_BUNDLE_ENGINE=terraform 🔄​f 🟨​K 💚​R 💚​R
🟨​ TestAccept/bundle/resources/permissions/jobs/destroy_without_mgmtperms/without_permissions 🔄​f 🟨​K 💚​R 💚​R 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S
🟨​ TestAccept/bundle/resources/permissions/jobs/destroy_without_mgmtperms/without_permissions/DATABRICKS_BUNDLE_ENGINE=direct 🔄​f 🟨​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_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/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/basic 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S
🙈​ TestAccept/bundle/resources/vector_search_indexes/grants/select 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S
🙈​ TestAccept/ssh/connection 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S
Top 24 slowest tests (at least 2 minutes):
duration env testname
5:15 gcp windows TestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=terraform
4:42 gcp linux TestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=direct
4:18 gcp linux TestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=terraform
4:05 gcp windows TestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=direct
3:38 aws windows TestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=terraform
3:21 aws linux TestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=direct
3:15 azure-ucws windows TestAccept
3:15 azure windows TestAccept
3:15 gcp windows TestAccept
3:10 azure windows TestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=direct
3:07 aws-ucws windows TestAccept
3:05 azure-ucws windows TestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=terraform
2:58 azure-ucws windows TestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=direct
2:55 aws-ucws windows TestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=terraform
2:55 aws linux TestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=terraform
2:53 azure linux TestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=terraform
2:51 azure-ucws linux TestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=terraform
2:43 azure windows TestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=terraform
2:39 azure linux TestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=direct
2:39 aws-ucws linux TestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=terraform
2:36 aws-ucws windows TestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=direct
2:34 aws-ucws linux TestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=direct
2:26 azure-ucws linux TestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=direct
2:25 aws windows TestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=direct

Comment thread NEXT_CHANGELOG.md Outdated
Comment thread NEXT_CHANGELOG.md Outdated
Comment thread bundle/direct/dresources/postgres_role.go Outdated
Comment thread bundle/direct/dresources/postgres_role.go
Comment thread bundle/direct/dresources/util.go Outdated
Comment thread bundle/direct/dresources/resources.yml
Remove three entries that were resurrected by a changelog-rotation merge
(#5349/#5364, #5370, #4995); they already shipped and live in CHANGELOG.md.
Drop the '(preview)' tag from the Postgres role entry and link this PR.

Co-authored-by: Isaac
…d helper

Revert collectUpdatePathsWithPrefix to its original form so the widely-used
helper (also called by postgres branches/endpoints/projects) is unchanged, and
add a dedicated collectLeafUpdatePathsWithPrefix used only by postgres roles.

The role PATCH endpoint rejects an update_mask listing both a struct and one of
its sub-fields, so {attributes, attributes.createdb} must collapse to the leaf.
The new helper also sorts its output so the generated update_mask is stable
across map-iteration order. Add unit tests covering the collapse, sorting, and
non-update filtering.

Co-authored-by: Isaac
GET returns the role configuration under Status, not Spec (Spec is nil on read).
The previous RemapState zeroed the spec fields and claimed remote drift could not
be detected, which is inaccurate: RoleRoleStatus echoes postgres_role, auth_method,
identity_type, attributes, membership_roles and role_id. Map those back onto the
flattened state so the snapshot reflects the live role.

The spec fields stay ignore_remote_changes (spec:input_only), so the plan remains
a no-op; the regenerated direct plan output just records the now-visible remote
values instead of dropping them.

Co-authored-by: Isaac
The fake role update applied the whole request spec regardless of update_mask,
so it could not model partial updates. Read the update_mask query parameter and
apply only the named spec fields onto the existing status, preserving the rest;
an empty mask updates everything, matching the API ("if unspecified, all fields
will be updated when possible").

Add a unit test asserting a field absent from update_mask is preserved even when
the request body carries a new value for it.

Co-authored-by: Isaac
Comment thread NEXT_CHANGELOG.md
@janniklasrose janniklasrose requested a review from pietern June 9, 2026 12:41
@janniklasrose janniklasrose marked this pull request as ready for review June 9, 2026 12:41
@janniklasrose janniklasrose changed the title [WIP] postgres roles bundle: Add postgres_roles resource Jun 9, 2026
Add a local-only acceptance test that reproduces what happens when a bundle
declares a Postgres role that already exists on the branch — the situation a
child branch lands in, since it inherits the parent's roles at creation.

The testserver does not model branch role inheritance, so the precondition is
staged with deploy + 'bundle deployment unbind': the role then exists on the
branch but is untracked, and the next deploy plans to create it and fails. The
Badness note records the real-Lakebase behavior verified on dogfood (HTTP 400
'role with that name already exists') and the two testserver fidelity gaps
(no role inheritance on branch create; duplicate create returns 409 instead of
400). The supported fix is 'bundle deployment bind'.

Co-authored-by: Isaac
The real Lakebase API rejects creating a role that already exists with HTTP 400
BAD_REQUEST ('role with that name already exists'), not 409 — verified on
dogfood. Match it so the conflict a bundle hits on an inherited/pre-existing
role looks identical locally and on cloud. Add a testserver unit test for it.

Reframe the inherited-role-conflict Badness around the product decision: the
4xx-on-existing-role is the intended interim behavior; until a replace_existing
flag lets a bundle take explicit ownership, 'bundle deployment bind' is the
supported escape hatch.

Co-authored-by: Isaac
Companion to inherited-role-conflict. Stages the same pre-existing-role state
(deploy + unbind), then uses 'bundle deployment bind' to take explicit
ownership; the subsequent deploy manages the role instead of trying to create
it and succeeds. This is the supported way to adopt an inherited role until a
replace_existing flag lands.

Co-authored-by: Isaac
Comment thread bundle/direct/dresources/type_test.go Outdated
"auth_method",
"identity_type",
"membership_roles",
"postgres_role",

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.

Why is this not needed for the other postgres resources?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

other resources don't return spec, updated comment

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.

This also doesn't return the spec.

The difference is a custom remote type that embeds the spec type in the remote type to ensure the shapes match. The spec is not returned today but will be returned in a couple of weeks. The spec is still annotated input_only, so they're all ignored for drift detection right now. When they become I/O, the annotation will be dropped, they'll be removed from resources.generated.yml and drift detection will work as usual. You can check out makePostgresBranchRemote for ex.

Comment thread bundle/direct/dresources/util.go
Comment thread libs/testserver/postgres.go
Comment thread bundle/direct/dresources/resources.yml
Comment thread bundle/direct/dresources/postgres_role.go Outdated
Resolve conflicts:
- NEXT_CHANGELOG.md: keep main's v1.4.0 Bundles entries, re-add the Postgres
  role line, drop the already-released #5452 entry.
- bundle/schema/jsonschema_for_docs.json: regenerated from the merged sources.

Regenerate schema artifacts (jsonschema.json, annotations_openapi*.yml) and
register postgres_roles in the workspaceurls noURL allowlist that main's new
TestBundleResourcePluralNamesResolveInWorkspaceURLs requires.

Co-authored-by: Isaac
Address review feedback: the old comment cited spec.attributes.createdb as if the
logic masked that leaf, but it collapses nested paths to their top-level spec field
and applies the whole field. State that plainly, and record the verified real-backend
behavior (dogfood 2026-06-16: update_mask=spec.attributes.createdb masks at the leaf
and preserves sibling attributes; identical to the collapse for the direct engine's
full-spec request bodies).

Co-authored-by: Isaac
Revert the status->spec mapping: GET returns the role config under Status, which
rolls up server-side and parent-inherited defaults mixed with the spec, so mapping
it back produces drift that is often unresolvable. Leave the spec empty and rely on
ignore_remote_changes, matching how the other postgres resources handle it; revisit
once the backend echoes the spec intent back on GET. Regenerate the update plan
outputs accordingly.

Also explain in type_test why postgres_roles needs knownMissingInRemoteType entries
that the sibling resources don't: roles' DoRead returns the raw postgres.Role (spec
nested under .Spec/.Status) rather than a custom *Remote type that embeds the spec,
which is the deliberate consequence of not synthesizing a spec from status.

Co-authored-by: Isaac
Comment thread bundle/direct/dresources/util.go
Comment thread bundle/direct/dresources/type_test.go Outdated
"auth_method",
"identity_type",
"membership_roles",
"postgres_role",

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.

This also doesn't return the spec.

The difference is a custom remote type that embeds the spec type in the remote type to ensure the shapes match. The spec is not returned today but will be returned in a couple of weeks. The spec is still annotated input_only, so they're all ignored for drift detection right now. When they become I/O, the annotation will be dropped, they'll be removed from resources.generated.yml and drift detection will work as usual. You can check out makePostgresBranchRemote for ex.

Comment thread bundle/direct/dresources/postgres_role.go Outdated
Successfully bound postgres_role with an id 'projects/test-project/branches/main/roles/test-role'
Run 'bundle deploy' to deploy changes to your workspace

>>> [CLI] bundle summary

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

this doesn't really show bind was successful, because it looks the same as after unbind

title "Deploy project, branch, and role"
trace $CLI bundle deploy

title "Unbind the role: it now exists on the branch but is no longer tracked by the bundle"

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

better: teach test server inheritance, then

  • add branch A with role "test-role" on A
  • deploy
  • add branch B off branch A, with role "test-role" on B
  • deploy - conflict

@janniklasrose janniklasrose added this pull request to the merge queue Jun 16, 2026
Merged via the queue into main with commit 6a7a04a Jun 16, 2026
25 checks passed
@janniklasrose janniklasrose deleted the postgres-roles branch June 16, 2026 15:06
@eng-dev-ecosystem-bot

Copy link
Copy Markdown
Collaborator

Integration test report

Commit: 6a7a04a

Run: 27627364964

Env 💥​PANIC ❌​FAIL 🟨​KNOWN 🤯​MISS 🔄​flaky 💚​RECOVERED 🙈​SKIP ✅​pass 🙈​skip Time
🟨​ aws linux 7 15 545 925 69:44
🔄​ aws windows 3 6 15 509 935 79:57
💥​ aws-ucws linux 1 25 253 35 2 666 745 120:00
💥​ aws-ucws windows 1 24 1 229 30 2 646 760 120:05
❌​ azure linux 6 1 10 17 538 921 352:57
❌​ azure windows 14 1 17 506 931 112:31
💥​ azure-ucws linux 1 23 249 8 12 629 757 120:00
❌​ azure-ucws windows 14 213 8 12 626 772 120:05
❌​ gcp linux 4 1 17 532 929 299:12
❌​ gcp windows 4 1 4 17 494 939 282:34
424 interesting tests: 340 MISS, 42 FAIL, 29 RECOVERED, 8 KNOWN, 3 PANIC, 2 SKIP
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 🔄​f 🤯​M 🤯​M 🟨​K 🟨​K 🤯​M 🤯​M 🟨​K 🟨​K
🤯​ TestAccept/bundle/apps/job_permissions 🙈​s 🙈​s 🤯​M 🤯​M 🙈​s 🙈​s 🤯​M 🤯​M 🙈​s 🙈​s
🤯​ TestAccept/bundle/apps/job_permissions/DATABRICKS_BUNDLE_ENGINE=direct 🤯​M 🤯​M 🤯​M 🤯​M
🤯​ TestAccept/bundle/apps/job_permissions/DATABRICKS_BUNDLE_ENGINE=terraform 🤯​M 🤯​M 🤯​M 🤯​M
🤯​ TestAccept/bundle/artifacts/artifact_path_with_volume/volume_doesnot_exist 🙈​s 🙈​s 🤯​M 🤯​M 🙈​s 🙈​s 🤯​M 🤯​M 🙈​s 🙈​s
🤯​ TestAccept/bundle/artifacts/artifact_path_with_volume/volume_doesnot_exist/DATABRICKS_BUNDLE_ENGINE=direct 🤯​M 🤯​M 🤯​M 🤯​M
🤯​ TestAccept/bundle/artifacts/artifact_path_with_volume/volume_doesnot_exist/DATABRICKS_BUNDLE_ENGINE=terraform 🤯​M 🤯​M 🤯​M 🤯​M
🤯​ TestAccept/bundle/artifacts/artifact_path_with_volume/volume_not_deployed 🙈​s 🙈​s 🤯​M 🤯​M 🙈​s 🙈​s 🤯​M 🤯​M 🙈​s 🙈​s
🤯​ TestAccept/bundle/artifacts/artifact_path_with_volume/volume_not_deployed/DATABRICKS_BUNDLE_ENGINE=direct 🤯​M 🤯​M 🤯​M 🤯​M
🤯​ TestAccept/bundle/artifacts/artifact_path_with_volume/volume_not_deployed/DATABRICKS_BUNDLE_ENGINE=terraform 🤯​M 🤯​M 🤯​M 🤯​M
🤯​ TestAccept/bundle/config-remote-sync/cli_defaults ✅​p 🙈​s 🤯​M 🙈​s ✅​p 🙈​s 🤯​M 🙈​s ✅​p 🙈​s
🤯​ TestAccept/bundle/config-remote-sync/cli_defaults/DATABRICKS_BUNDLE_ENGINE=direct ✅​p 🤯​M ✅​p 🤯​M ✅​p
🤯​ TestAccept/bundle/config-remote-sync/cli_defaults/DATABRICKS_BUNDLE_ENGINE=terraform ✅​p 🤯​M ✅​p 🤯​M ✅​p
🤯​ TestAccept/bundle/config-remote-sync/config_edits ✅​p 🙈​s 🤯​M 🙈​s ✅​p 🙈​s 🤯​M 🙈​s ✅​p 🙈​s
🤯​ TestAccept/bundle/config-remote-sync/config_edits/DATABRICKS_BUNDLE_ENGINE=direct ✅​p 🤯​M ✅​p 🤯​M ✅​p
🤯​ TestAccept/bundle/config-remote-sync/config_edits/DATABRICKS_BUNDLE_ENGINE=terraform ✅​p 🤯​M ✅​p 🤯​M ✅​p
🤯​ TestAccept/bundle/config-remote-sync/dashboard_etag ✅​p 🙈​s 🤯​M 🙈​s ✅​p 🙈​s 🤯​M 🙈​s ✅​p 🙈​s
🤯​ TestAccept/bundle/config-remote-sync/dashboard_etag/DATABRICKS_BUNDLE_ENGINE=direct ✅​p 🤯​M ✅​p 🤯​M ✅​p
🤯​ TestAccept/bundle/config-remote-sync/dashboard_etag/DATABRICKS_BUNDLE_ENGINE=terraform ✅​p 🤯​M ✅​p 🤯​M ✅​p
🤯​ TestAccept/bundle/config-remote-sync/flushed_cache ✅​p 🙈​s 🤯​M 🙈​s ✅​p 🙈​s 🤯​M 🙈​s ✅​p 🙈​s
🤯​ TestAccept/bundle/config-remote-sync/flushed_cache/DATABRICKS_BUNDLE_ENGINE=direct ✅​p 🤯​M ✅​p 🤯​M ✅​p
🤯​ TestAccept/bundle/config-remote-sync/flushed_cache/DATABRICKS_BUNDLE_ENGINE=terraform ✅​p 🤯​M ✅​p 🤯​M ✅​p
🤯​ TestAccept/bundle/config-remote-sync/formatting_preserved ✅​p 🙈​s 🤯​M 🙈​s ✅​p 🙈​s 🤯​M 🙈​s ✅​p 🙈​s
🤯​ TestAccept/bundle/config-remote-sync/formatting_preserved/DATABRICKS_BUNDLE_ENGINE=direct ✅​p 🤯​M ✅​p 🤯​M ✅​p
🤯​ TestAccept/bundle/config-remote-sync/formatting_preserved/DATABRICKS_BUNDLE_ENGINE=terraform ✅​p 🤯​M ✅​p 🤯​M ✅​p
🤯​ TestAccept/bundle/config-remote-sync/job_fields 🙈​s 🙈​s 🤯​M 🙈​s 🙈​s 🙈​s 🤯​M 🙈​s 🙈​s 🙈​s
🤯​ TestAccept/bundle/config-remote-sync/job_fields/DATABRICKS_BUNDLE_ENGINE=direct 🤯​M 🤯​M
🤯​ TestAccept/bundle/config-remote-sync/job_fields/DATABRICKS_BUNDLE_ENGINE=terraform 🤯​M 🤯​M
🤯​ TestAccept/bundle/config-remote-sync/job_multiple_tasks ✅​p 🙈​s 🤯​M 🙈​s ✅​p 🙈​s 🤯​M 🙈​s ✅​p 🙈​s
🤯​ TestAccept/bundle/config-remote-sync/job_multiple_tasks/DATABRICKS_BUNDLE_ENGINE=direct ✅​p 🤯​M ✅​p 🤯​M ✅​p
🤯​ TestAccept/bundle/config-remote-sync/job_multiple_tasks/DATABRICKS_BUNDLE_ENGINE=terraform ✅​p 🤯​M ✅​p 🤯​M ✅​p
🤯​ TestAccept/bundle/config-remote-sync/job_params_variables 🙈​s 🙈​s 🤯​M 🙈​s 🙈​s 🙈​s 🤯​M 🙈​s 🙈​s 🙈​s
🤯​ TestAccept/bundle/config-remote-sync/job_params_variables/DATABRICKS_BUNDLE_ENGINE=direct 🤯​M 🤯​M
🤯​ TestAccept/bundle/config-remote-sync/job_params_variables/DATABRICKS_BUNDLE_ENGINE=terraform 🤯​M 🤯​M
🤯​ TestAccept/bundle/config-remote-sync/job_pipeline_task ✅​p 🙈​s 🤯​M 🙈​s ✅​p 🙈​s 🤯​M 🙈​s ✅​p 🙈​s
🤯​ TestAccept/bundle/config-remote-sync/job_pipeline_task/DATABRICKS_BUNDLE_ENGINE=direct ✅​p 🤯​M ✅​p 🤯​M ✅​p
🤯​ TestAccept/bundle/config-remote-sync/job_pipeline_task/DATABRICKS_BUNDLE_ENGINE=terraform ✅​p 🤯​M ✅​p 🤯​M ✅​p
🤯​ TestAccept/bundle/config-remote-sync/multiple_files ✅​p 🙈​s 🤯​M 🙈​s ✅​p 🙈​s 🤯​M 🙈​s ✅​p 🙈​s
🤯​ TestAccept/bundle/config-remote-sync/multiple_files/DATABRICKS_BUNDLE_ENGINE=direct ✅​p 🤯​M ✅​p 🤯​M ✅​p
🤯​ TestAccept/bundle/config-remote-sync/multiple_files/DATABRICKS_BUNDLE_ENGINE=terraform ✅​p 🤯​M ✅​p 🤯​M ✅​p
🤯​ TestAccept/bundle/config-remote-sync/multiple_resources 🙈​s 🙈​s 🤯​M 🙈​s 🙈​s 🙈​s 🤯​M 🙈​s 🙈​s 🙈​s
🤯​ TestAccept/bundle/config-remote-sync/multiple_resources/DATABRICKS_BUNDLE_ENGINE=direct 🤯​M 🤯​M
🤯​ TestAccept/bundle/config-remote-sync/multiple_resources/DATABRICKS_BUNDLE_ENGINE=terraform 🤯​M 🤯​M
🤯​ TestAccept/bundle/config-remote-sync/output_json ✅​p 🙈​s 🤯​M 🙈​s ✅​p 🙈​s 🤯​M 🙈​s ✅​p 🙈​s
🤯​ TestAccept/bundle/config-remote-sync/output_json/DATABRICKS_BUNDLE_ENGINE=direct ✅​p 🤯​M ✅​p 🤯​M ✅​p
🤯​ TestAccept/bundle/config-remote-sync/output_json/DATABRICKS_BUNDLE_ENGINE=terraform ✅​p 🤯​M ✅​p 🤯​M ✅​p
🤯​ TestAccept/bundle/config-remote-sync/output_no_changes ✅​p 🙈​s 🤯​M 🙈​s ✅​p 🙈​s 🤯​M 🙈​s ✅​p 🙈​s
🤯​ TestAccept/bundle/config-remote-sync/output_no_changes/DATABRICKS_BUNDLE_ENGINE=direct ✅​p 🤯​M ✅​p 🤯​M ✅​p
🤯​ TestAccept/bundle/config-remote-sync/output_no_changes/DATABRICKS_BUNDLE_ENGINE=terraform ✅​p 🤯​M ✅​p 🤯​M ✅​p
🤯​ TestAccept/bundle/config-remote-sync/pipeline_fields 🙈​s 🙈​s 🤯​M 🙈​s 🙈​s 🙈​s 🤯​M 🙈​s 🙈​s 🙈​s
🤯​ TestAccept/bundle/config-remote-sync/pipeline_fields/DATABRICKS_BUNDLE_ENGINE=direct 🤯​M 🤯​M
🤯​ TestAccept/bundle/config-remote-sync/pipeline_fields/DATABRICKS_BUNDLE_ENGINE=terraform 🤯​M 🤯​M
🤯​ TestAccept/bundle/config-remote-sync/resolve_variables 🙈​s 🙈​s 🤯​M 🙈​s 🙈​s 🙈​s 🤯​M 🙈​s 🙈​s 🙈​s
🤯​ TestAccept/bundle/config-remote-sync/resolve_variables/DATABRICKS_BUNDLE_ENGINE=direct 🤯​M 🤯​M
🤯​ TestAccept/bundle/config-remote-sync/resolve_variables/DATABRICKS_BUNDLE_ENGINE=terraform 🤯​M 🤯​M
🤯​ TestAccept/bundle/config-remote-sync/target_override ✅​p 🙈​s 🤯​M 🙈​s ✅​p 🙈​s 🤯​M 🙈​s ✅​p 🙈​s
🤯​ TestAccept/bundle/config-remote-sync/target_override/DATABRICKS_BUNDLE_ENGINE=direct ✅​p 🤯​M ✅​p 🤯​M ✅​p
🤯​ TestAccept/bundle/config-remote-sync/target_override/DATABRICKS_BUNDLE_ENGINE=terraform ✅​p 🤯​M ✅​p 🤯​M ✅​p
🤯​ TestAccept/bundle/config-remote-sync/task_rename_revert ✅​p 🙈​s 🤯​M 🙈​s ✅​p 🙈​s 🤯​M 🙈​s ✅​p 🙈​s
🤯​ TestAccept/bundle/config-remote-sync/task_rename_revert/DATABRICKS_BUNDLE_ENGINE=direct ✅​p 🤯​M ✅​p 🤯​M ✅​p
🤯​ TestAccept/bundle/config-remote-sync/task_rename_revert/DATABRICKS_BUNDLE_ENGINE=terraform ✅​p 🤯​M ✅​p 🤯​M ✅​p
🤯​ TestAccept/bundle/deploy/empty-bundle ✅​p ✅​p 🤯​M 🤯​M ✅​p ✅​p 🤯​M 🤯​M ✅​p ✅​p
🤯​ TestAccept/bundle/deploy/empty-bundle/DATABRICKS_BUNDLE_ENABLE_EXPERIMENTAL_YAML_SYNC=/DATABRICKS_BUNDLE_ENGINE=direct ✅​p ✅​p 🤯​M 🤯​M ✅​p ✅​p 🤯​M 🤯​M ✅​p ✅​p
🤯​ TestAccept/bundle/deploy/empty-bundle/DATABRICKS_BUNDLE_ENABLE_EXPERIMENTAL_YAML_SYNC=/DATABRICKS_BUNDLE_ENGINE=terraform ✅​p ✅​p 🤯​M 🤯​M ✅​p ✅​p 🤯​M 🤯​M ✅​p ✅​p
🤯​ TestAccept/bundle/deploy/empty-bundle/DATABRICKS_BUNDLE_ENABLE_EXPERIMENTAL_YAML_SYNC=true/DATABRICKS_BUNDLE_ENGINE=direct ✅​p ✅​p 🤯​M 🤯​M ✅​p ✅​p 🤯​M 🤯​M ✅​p ✅​p
🤯​ TestAccept/bundle/deploy/empty-bundle/DATABRICKS_BUNDLE_ENABLE_EXPERIMENTAL_YAML_SYNC=true/DATABRICKS_BUNDLE_ENGINE=terraform ✅​p ✅​p 🤯​M 🤯​M ✅​p ✅​p 🤯​M 🤯​M ✅​p ✅​p
🤯​ TestAccept/bundle/deploy/files/no-snapshot-sync ✅​p ✅​p 🤯​M 🤯​M ✅​p ✅​p 🤯​M 🤯​M ✅​p ✅​p
🤯​ TestAccept/bundle/deploy/files/no-snapshot-sync/DATABRICKS_BUNDLE_ENGINE=direct ✅​p ✅​p 🤯​M 🤯​M ✅​p ✅​p 🤯​M 🤯​M ✅​p ✅​p
🤯​ TestAccept/bundle/deploy/files/no-snapshot-sync/DATABRICKS_BUNDLE_ENGINE=terraform ✅​p ✅​p 🤯​M 🤯​M ✅​p ✅​p 🤯​M 🤯​M ✅​p ✅​p
🤯​ TestAccept/bundle/deploy/mlops-stacks ✅​p ✅​p 🤯​M 🤯​M ✅​p ✅​p 🤯​M 🤯​M ✅​p ✅​p
🤯​ TestAccept/bundle/deploy/mlops-stacks/DATABRICKS_BUNDLE_ENGINE=direct ✅​p ✅​p 🤯​M 🤯​M ✅​p ✅​p 🤯​M 🤯​M ✅​p ✅​p
🤯​ TestAccept/bundle/deploy/mlops-stacks/DATABRICKS_BUNDLE_ENGINE=terraform ✅​p ✅​p 🤯​M 🤯​M ✅​p ✅​p 🤯​M 🤯​M ✅​p ✅​p
🤯​ TestAccept/bundle/deploy/snapshot-comparison ✅​p ✅​p 🤯​M 🤯​M ✅​p ✅​p 🤯​M 🤯​M ✅​p ✅​p
🤯​ TestAccept/bundle/deploy/snapshot-comparison/DATABRICKS_BUNDLE_ENGINE=terraform ✅​p ✅​p 🤯​M 🤯​M ✅​p ✅​p 🤯​M 🤯​M ✅​p ✅​p
🤯​ TestAccept/bundle/deploy/spark-jar-task ✅​p ✅​p 🤯​M 🤯​M ✅​p ✅​p 🤯​M 🤯​M ✅​p ✅​p
🤯​ TestAccept/bundle/deploy/spark-jar-task/DATABRICKS_BUNDLE_ENGINE=direct ✅​p ✅​p 🤯​M 🤯​M ✅​p ✅​p 🤯​M 🤯​M ✅​p ✅​p
🤯​ TestAccept/bundle/deploy/spark-jar-task/DATABRICKS_BUNDLE_ENGINE=terraform ✅​p ✅​p 🤯​M 🤯​M ✅​p ✅​p 🤯​M 🤯​M ✅​p ✅​p
🤯​ TestAccept/bundle/deployment/bind/alert 🙈​s 🙈​s 🙈​s 🙈​s ✅​p ✅​p 🤯​M 🤯​M ✅​p ✅​p
🤯​ TestAccept/bundle/deployment/bind/alert/DATABRICKS_BUNDLE_ENGINE=direct ✅​p ✅​p 🤯​M 🤯​M ✅​p ✅​p
🤯​ TestAccept/bundle/deployment/bind/alert/DATABRICKS_BUNDLE_ENGINE=terraform ✅​p ✅​p 🤯​M 🤯​M ✅​p ✅​p
🤯​ TestAccept/bundle/deployment/bind/catalog 🙈​s 🙈​s 🤯​M 🤯​M 🙈​s 🙈​s 🤯​M 🤯​M 🙈​s 🙈​s
🤯​ TestAccept/bundle/deployment/bind/catalog/DATABRICKS_BUNDLE_ENGINE=direct 🤯​M 🤯​M 🤯​M 🤯​M
🤯​ TestAccept/bundle/deployment/bind/cluster ✅​p ✅​p 🤯​M 🤯​M ✅​p ✅​p 🤯​M 🤯​M ✅​p ✅​p
🤯​ TestAccept/bundle/deployment/bind/cluster/DATABRICKS_BUNDLE_ENGINE=direct ✅​p ✅​p 🤯​M 🤯​M ✅​p ✅​p 🤯​M 🤯​M ✅​p ✅​p
🤯​ TestAccept/bundle/deployment/bind/cluster/DATABRICKS_BUNDLE_ENGINE=terraform ✅​p ✅​p 🤯​M 🤯​M ✅​p ✅​p 🤯​M 🤯​M ✅​p ✅​p
🤯​ TestAccept/bundle/deployment/bind/dashboard ✅​p ✅​p 🤯​M 🤯​M ✅​p ✅​p 🤯​M 🤯​M ✅​p ✅​p
🤯​ TestAccept/bundle/deployment/bind/dashboard/DATABRICKS_BUNDLE_ENGINE=direct ✅​p ✅​p 🤯​M 🤯​M ✅​p ✅​p 🤯​M 🤯​M ✅​p ✅​p
🤯​ TestAccept/bundle/deployment/bind/dashboard/DATABRICKS_BUNDLE_ENGINE=terraform ✅​p ✅​p 🤯​M 🤯​M ✅​p ✅​p 🤯​M 🤯​M ✅​p ✅​p
🤯​ TestAccept/bundle/deployment/bind/dashboard/recreation ✅​p ✅​p 🤯​M 🤯​M ✅​p ✅​p 🤯​M 🤯​M ✅​p ✅​p
🤯​ TestAccept/bundle/deployment/bind/dashboard/recreation/DATABRICKS_BUNDLE_ENGINE=direct ✅​p ✅​p 🤯​M 🤯​M ✅​p ✅​p 🤯​M 🤯​M ✅​p ✅​p
🤯​ TestAccept/bundle/deployment/bind/dashboard/recreation/DATABRICKS_BUNDLE_ENGINE=terraform ✅​p ✅​p 🤯​M 🤯​M ✅​p ✅​p 🤯​M 🤯​M ✅​p ✅​p
🤯​ TestAccept/bundle/deployment/bind/experiment ✅​p ✅​p 🤯​M 🤯​M ✅​p ✅​p 🤯​M 🤯​M ✅​p ✅​p
🤯​ TestAccept/bundle/deployment/bind/experiment/DATABRICKS_BUNDLE_ENGINE=direct ✅​p ✅​p 🤯​M 🤯​M ✅​p ✅​p 🤯​M 🤯​M ✅​p ✅​p
🤯​ TestAccept/bundle/deployment/bind/experiment/DATABRICKS_BUNDLE_ENGINE=terraform ✅​p ✅​p 🤯​M 🤯​M ✅​p ✅​p 🤯​M 🤯​M ✅​p ✅​p
🤯​ TestAccept/bundle/deployment/bind/job/generate-and-bind ✅​p ✅​p 🤯​M 🤯​M ✅​p ✅​p 🤯​M 🤯​M ✅​p ✅​p
🤯​ TestAccept/bundle/deployment/bind/job/generate-and-bind/DATABRICKS_BUNDLE_ENGINE=direct ✅​p ✅​p 🤯​M 🤯​M ✅​p ✅​p 🤯​M 🤯​M ✅​p ✅​p
🤯​ TestAccept/bundle/deployment/bind/job/generate-and-bind/DATABRICKS_BUNDLE_ENGINE=terraform ✅​p ✅​p 🤯​M 🤯​M ✅​p ✅​p 🤯​M 🤯​M ✅​p ✅​p
🤯​ TestAccept/bundle/deployment/bind/job/job-abort-bind ✅​p ✅​p 🤯​M 🤯​M ✅​p ✅​p 🤯​M 🤯​M ✅​p ✅​p
🤯​ TestAccept/bundle/deployment/bind/job/job-abort-bind/DATABRICKS_BUNDLE_ENGINE=direct ✅​p ✅​p 🤯​M 🤯​M ✅​p ✅​p 🤯​M 🤯​M ✅​p ✅​p
🤯​ TestAccept/bundle/deployment/bind/job/job-abort-bind/DATABRICKS_BUNDLE_ENGINE=terraform ✅​p ✅​p 🤯​M 🤯​M ✅​p ✅​p 🤯​M 🤯​M ✅​p ✅​p
🤯​ TestAccept/bundle/deployment/bind/job/job-spark-python-task ✅​p ✅​p 🤯​M 🤯​M ✅​p ✅​p 🤯​M 🤯​M ✅​p ✅​p
🤯​ TestAccept/bundle/deployment/bind/job/job-spark-python-task/DATABRICKS_BUNDLE_ENGINE=direct ✅​p ✅​p 🤯​M 🤯​M ✅​p ✅​p 🤯​M 🤯​M ✅​p ✅​p
🤯​ TestAccept/bundle/deployment/bind/job/job-spark-python-task/DATABRICKS_BUNDLE_ENGINE=terraform ✅​p ✅​p 🤯​M 🤯​M ✅​p ✅​p 🤯​M 🤯​M ✅​p ✅​p
🤯​ TestAccept/bundle/deployment/bind/model-serving-endpoint ✅​p ✅​p 🤯​M 🤯​M ✅​p ✅​p 🤯​M 🤯​M ✅​p ✅​p
🤯​ TestAccept/bundle/deployment/bind/model-serving-endpoint/DATABRICKS_BUNDLE_ENGINE=direct ✅​p ✅​p 🤯​M 🤯​M ✅​p ✅​p 🤯​M 🤯​M ✅​p ✅​p
🤯​ TestAccept/bundle/deployment/bind/model-serving-endpoint/DATABRICKS_BUNDLE_ENGINE=terraform ✅​p ✅​p 🤯​M 🤯​M ✅​p ✅​p 🤯​M 🤯​M ✅​p ✅​p
🤯​ TestAccept/bundle/deployment/bind/pipelines/recreate ✅​p 🔄​f 🤯​M 🤯​M ✅​p ✅​p 🤯​M 🤯​M ✅​p ✅​p
🤯​ TestAccept/bundle/deployment/bind/pipelines/recreate/DATABRICKS_BUNDLE_ENGINE=direct ✅​p 🔄​f 🤯​M 🤯​M ✅​p ✅​p 🤯​M 🤯​M ✅​p ✅​p
🤯​ TestAccept/bundle/deployment/bind/pipelines/recreate/DATABRICKS_BUNDLE_ENGINE=terraform ✅​p ✅​p 🤯​M 🤯​M ✅​p ✅​p 🤯​M 🤯​M ✅​p ✅​p
🤯​ TestAccept/bundle/deployment/bind/registered-model 🙈​s 🙈​s 🤯​M 🤯​M 🙈​s 🙈​s 🤯​M 🤯​M 🙈​s 🙈​s
🤯​ TestAccept/bundle/deployment/bind/registered-model/DATABRICKS_BUNDLE_ENGINE=direct 🤯​M 🤯​M 🤯​M 🤯​M
🤯​ TestAccept/bundle/deployment/bind/registered-model/DATABRICKS_BUNDLE_ENGINE=terraform 🤯​M 🤯​M 🤯​M 🤯​M
🤯​ TestAccept/bundle/deployment/bind/schema 🙈​s 🙈​s 🤯​M ✅​p 🙈​s 🙈​s 🤯​M 🤯​M 🙈​s 🙈​s
🤯​ TestAccept/bundle/deployment/bind/schema/DATABRICKS_BUNDLE_ENGINE=direct 🤯​M ✅​p 🤯​M 🤯​M
🤯​ TestAccept/bundle/deployment/bind/schema/DATABRICKS_BUNDLE_ENGINE=terraform 🤯​M ✅​p 🤯​M 🤯​M
🤯​ TestAccept/bundle/deployment/bind/secret-scope 🙈​s 🙈​s 🤯​M 🤯​M 🙈​s 🙈​s 🤯​M 🤯​M 🙈​s 🙈​s
🤯​ TestAccept/bundle/deployment/bind/secret-scope/DATABRICKS_BUNDLE_ENGINE=direct 🤯​M 🤯​M 🤯​M 🤯​M
🤯​ TestAccept/bundle/deployment/bind/secret-scope/DATABRICKS_BUNDLE_ENGINE=terraform 🤯​M 🤯​M 🤯​M 🤯​M
🤯​ TestAccept/bundle/deployment/bind/vector_search_endpoint 🙈​s 🙈​s 🤯​M 🤯​M 🙈​s 🙈​s 🤯​M 🤯​M 🙈​s 🙈​s
🤯​ TestAccept/bundle/deployment/bind/vector_search_endpoint/DATABRICKS_BUNDLE_ENGINE=direct 🤯​M 🤯​M 🤯​M 🤯​M
🤯​ TestAccept/bundle/deployment/bind/vector_search_index 🙈​s 🙈​s 🤯​M 🤯​M 🙈​s 🙈​s 🤯​M 🤯​M 🙈​s 🙈​s
🤯​ TestAccept/bundle/deployment/bind/vector_search_index/DATABRICKS_BUNDLE_ENGINE=direct 🤯​M 🤯​M 🤯​M 🤯​M
🤯​ TestAccept/bundle/deployment/bind/volume 🙈​s 🙈​s 🤯​M 🤯​M 🙈​s 🙈​s ✅​p 🤯​M 🙈​s 🙈​s
🤯​ TestAccept/bundle/deployment/bind/volume/DATABRICKS_BUNDLE_ENGINE=direct 🤯​M 🤯​M ✅​p 🤯​M
🤯​ TestAccept/bundle/deployment/bind/volume/DATABRICKS_BUNDLE_ENGINE=terraform 🤯​M 🤯​M ✅​p 🤯​M
🤯​ TestAccept/bundle/deployment/unbind/grants 🙈​s 🙈​s 🤯​M 🤯​M 🙈​s 🙈​s 🤯​M 🤯​M 🙈​s 🙈​s
🤯​ TestAccept/bundle/deployment/unbind/grants/DATABRICKS_BUNDLE_ENGINE=direct 🤯​M 🤯​M 🤯​M 🤯​M
🤯​ TestAccept/bundle/deployment/unbind/grants/DATABRICKS_BUNDLE_ENGINE=terraform 🤯​M 🤯​M 🤯​M 🤯​M
🤯​ TestAccept/bundle/deployment/unbind/permissions ✅​p ✅​p 🤯​M 🤯​M ✅​p ✅​p 🤯​M 🤯​M ✅​p ✅​p
🤯​ TestAccept/bundle/deployment/unbind/permissions/DATABRICKS_BUNDLE_ENGINE=direct ✅​p ✅​p 🤯​M 🤯​M ✅​p ✅​p 🤯​M 🤯​M ✅​p ✅​p
🤯​ TestAccept/bundle/deployment/unbind/permissions/DATABRICKS_BUNDLE_ENGINE=terraform ✅​p ✅​p 🤯​M 🤯​M ✅​p ✅​p 🤯​M 🤯​M ✅​p ✅​p
🤯​ TestAccept/bundle/destroy/jobs-and-pipeline ✅​p ✅​p 🤯​M 🤯​M ✅​p ✅​p 🤯​M 🤯​M ✅​p 🔄​f
🤯​ TestAccept/bundle/destroy/jobs-and-pipeline/DATABRICKS_BUNDLE_ENGINE=direct ✅​p ✅​p 🤯​M 🤯​M ✅​p ✅​p 🤯​M 🤯​M ✅​p 🔄​f
🤯​ TestAccept/bundle/destroy/jobs-and-pipeline/DATABRICKS_BUNDLE_ENGINE=terraform ✅​p ✅​p 🤯​M 🤯​M ✅​p ✅​p 🤯​M 🤯​M ✅​p ✅​p
🤯​ TestAccept/bundle/generate/alert ✅​p ✅​p 🤯​M 🤯​M ✅​p ✅​p 🤯​M 🤯​M ✅​p ✅​p
🤯​ TestAccept/bundle/generate/alert/DATABRICKS_BUNDLE_ENGINE=direct ✅​p ✅​p 🤯​M 🤯​M ✅​p ✅​p 🤯​M 🤯​M ✅​p ✅​p
🤯​ TestAccept/bundle/generate/alert/DATABRICKS_BUNDLE_ENGINE=terraform ✅​p ✅​p 🤯​M 🤯​M ✅​p ✅​p 🤯​M 🤯​M ✅​p ✅​p
🤯​ TestAccept/bundle/generate/auto-bind ✅​p ✅​p 🤯​M 🤯​M ✅​p ✅​p 🤯​M 🤯​M ✅​p ✅​p
🤯​ TestAccept/bundle/generate/auto-bind/DATABRICKS_BUNDLE_ENGINE=terraform ✅​p ✅​p 🤯​M 🤯​M ✅​p ✅​p 🤯​M 🤯​M ✅​p ✅​p
Top 50 slowest tests (at least 2 minutes):
duration env testname
29:49 aws-ucws linux TestAccept/bundle/resources/vector_search_indexes/basic/DATABRICKS_BUNDLE_ENGINE=direct
28:30 azure-ucws windows TestAccept/bundle/resources/vector_search_indexes/grants/select/DATABRICKS_BUNDLE_ENGINE=direct
28:22 aws-ucws windows TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=vector_search_index.yml.tmpl
27:24 azure-ucws windows TestAccept/bundle/resources/vector_search_indexes/recreate/embedding_dimension/DATABRICKS_BUNDLE_ENGINE=direct
27:05 aws linux TestAccept/bundle/resources/sql_warehouses/lifecycle-started/DATABRICKS_BUNDLE_ENGINE=direct
26:57 aws-ucws windows TestAccept/bundle/resources/vector_search_indexes/recreate/embedding_dimension/DATABRICKS_BUNDLE_ENGINE=direct
24:55 aws-ucws windows TestAccept/bundle/resources/vector_search_indexes/grants/select/DATABRICKS_BUNDLE_ENGINE=direct
24:48 aws-ucws linux TestAccept/bundle/resources/vector_search_indexes/recreate/embedding_dimension/DATABRICKS_BUNDLE_ENGINE=direct
24:28 aws-ucws windows TestAccept/bundle/resources/vector_search_indexes/basic/DATABRICKS_BUNDLE_ENGINE=direct
23:07 aws-ucws linux TestAccept/bundle/resources/vector_search_indexes/grants/select/DATABRICKS_BUNDLE_ENGINE=direct
22:44 azure-ucws windows TestAccept/bundle/resources/vector_search_indexes/basic/DATABRICKS_BUNDLE_ENGINE=direct
20:31 gcp windows TestAccept/bundle/integration_whl/interactive_single_user/DATABRICKS_BUNDLE_ENGINE=terraform
19:36 azure-ucws windows TestAccept/bundle/resources/permissions/factcheck/DATABRICKS_BUNDLE_ENGINE=terraform
18:52 azure-ucws linux TestAccept/bundle/resources/vector_search_indexes/recreate/embedding_dimension/DATABRICKS_BUNDLE_ENGINE=direct
18:23 azure-ucws linux TestAccept/bundle/resources/vector_search_indexes/basic/DATABRICKS_BUNDLE_ENGINE=direct
14:32 azure-ucws linux TestAccept/bundle/resources/vector_search_indexes/grants/select/DATABRICKS_BUNDLE_ENGINE=direct
14:29 azure-ucws linux TestAccept/bundle/resources/clusters/deploy/simple/DATABRICKS_BUNDLE_ENGINE=direct
14:02 gcp linux TestAccept/bundle/integration_whl/interactive_single_user/DATABRICKS_BUNDLE_ENGINE=terraform
13:43 gcp linux TestAccept/bundle/resources/apps/lifecycle-started/DATABRICKS_BUNDLE_ENGINE=direct
13:28 aws windows TestAccept/bundle/resources/sql_warehouses/lifecycle-started-toggle/DATABRICKS_BUNDLE_ENGINE=direct
13:03 aws windows TestAccept/bundle/resources/sql_warehouses/lifecycle-started/DATABRICKS_BUNDLE_ENGINE=direct
12:58 aws-ucws windows TestAccept/bundle/resources/sql_warehouses/lifecycle-started/DATABRICKS_BUNDLE_ENGINE=direct
12:14 gcp windows TestAccept/bundle/resources/apps/lifecycle-started/DATABRICKS_BUNDLE_ENGINE=direct
12:08 aws windows TestAccept/bundle/integration_whl/interactive_single_user/DATABRICKS_BUNDLE_ENGINE=terraform
11:33 azure-ucws linux TestAccept/bundle/resources/clusters/deploy/data_security_mode/DATABRICKS_BUNDLE_ENGINE=direct
11:28 gcp linux TestAccept/bundle/integration_whl/interactive_cluster_dynamic_version/DATABRICKS_BUNDLE_ENGINE=terraform/DATA_SECURITY_MODE=SINGLE_USER
11:11 gcp linux TestAccept/bundle/integration_whl/interactive_cluster/DATABRICKS_BUNDLE_ENGINE=terraform
11:06 aws windows TestAccept/bundle/resources/clusters/lifecycle-started/DATABRICKS_BUNDLE_ENGINE=direct
10:54 aws-ucws linux TestAccept/bundle/resources/sql_warehouses/lifecycle-started/DATABRICKS_BUNDLE_ENGINE=direct
10:51 gcp windows TestAccept/bundle/resources/clusters/deploy/local_ssd_count/DATABRICKS_BUNDLE_ENGINE=direct
10:48 aws linux TestAccept/bundle/integration_whl/interactive_single_user/DATABRICKS_BUNDLE_ENGINE=terraform
10:39 gcp linux TestAccept/bundle/integration_whl/interactive_cluster_dynamic_version/DATABRICKS_BUNDLE_ENGINE=direct/DATA_SECURITY_MODE=SINGLE_USER
10:36 gcp windows TestAccept/bundle/integration_whl/interactive_cluster/DATABRICKS_BUNDLE_ENGINE=terraform
10:29 azure windows TestAccept/bundle/resources/clusters/deploy/update-after-create/DATABRICKS_BUNDLE_ENGINE=terraform
10:25 gcp windows TestAccept/bundle/integration_whl/interactive_cluster_dynamic_version/DATABRICKS_BUNDLE_ENGINE=direct/DATA_SECURITY_MODE=USER_ISOLATION
10:21 azure windows TestAccept/bundle/integration_whl/base/DATABRICKS_BUNDLE_ENGINE=direct
9:52 gcp linux TestAccept/bundle/integration_whl/interactive_cluster_dynamic_version/DATABRICKS_BUNDLE_ENGINE=direct/DATA_SECURITY_MODE=USER_ISOLATION
9:40 azure linux TestAccept/bundle/integration_whl/interactive_cluster/DATABRICKS_BUNDLE_ENGINE=terraform
9:36 azure linux TestAccept/bundle/integration_whl/interactive_cluster_dynamic_version/DATABRICKS_BUNDLE_ENGINE=terraform/DATA_SECURITY_MODE=SINGLE_USER
9:31 azure linux TestAccept/bundle/integration_whl/interactive_cluster_dynamic_version/DATABRICKS_BUNDLE_ENGINE=direct/DATA_SECURITY_MODE=USER_ISOLATION
9:27 gcp windows TestAccept/bundle/integration_whl/interactive_cluster/DATABRICKS_BUNDLE_ENGINE=direct
9:19 gcp windows TestAccept/bundle/run/app-with-job/DATABRICKS_BUNDLE_ENGINE=direct
9:07 aws-ucws windows TestAccept/bundle/resources/apps/lifecycle-started/DATABRICKS_BUNDLE_ENGINE=direct
9:04 gcp windows TestAccept/bundle/integration_whl/interactive_cluster_dynamic_version/DATABRICKS_BUNDLE_ENGINE=direct/DATA_SECURITY_MODE=SINGLE_USER
8:50 gcp windows TestAccept/bundle/run/app-with-job/DATABRICKS_BUNDLE_ENGINE=terraform
8:49 aws windows TestAccept/bundle/integration_whl/interactive_cluster_dynamic_version/DATABRICKS_BUNDLE_ENGINE=terraform/DATA_SECURITY_MODE=USER_ISOLATION
8:45 aws linux TestAccept/bundle/integration_whl/interactive_cluster_dynamic_version/DATABRICKS_BUNDLE_ENGINE=terraform/DATA_SECURITY_MODE=USER_ISOLATION
8:31 gcp linux TestAccept/bundle/run/app-with-job/DATABRICKS_BUNDLE_ENGINE=terraform
8:28 azure linux TestAccept/bundle/integration_whl/interactive_single_user/DATABRICKS_BUNDLE_ENGINE=direct
8:26 azure windows TestAccept/bundle/integration_whl/interactive_cluster_dynamic_version/DATABRICKS_BUNDLE_ENGINE=direct/DATA_SECURITY_MODE=USER_ISOLATION
(285 table rows omitted to keep the report under 60000 bytes)

pietern added a commit that referenced this pull request Jun 17, 2026
Conflicts came from two origin/main changes landing on top of the
annotation-storage overhaul:

- #5611 (launch stage as the single preview source of truth) refactored
  the same codegen the branch rewrote. Resolved parser.go to keep the
  branch's in-memory annotation.File (SetSelf/SetField, no overrides
  file I/O) while adopting #5611's typed clijson.LaunchStage,
  ParseLaunchStage validation, and stageErr accumulation; dropped the
  now-removed Preview field and previewFromLaunchStage. annotations.go,
  descriptor.go, preview.go and extension.go auto-merged into the same
  shape.
- #5467 (postgres_roles resource) added entries to the old multi-file
  annotations. Reproduced its manual descriptions for the PostgresRole
  fields in the new tree-format annotations.yml (the embedded RoleRoleSpec
  is flattened inline, so these can't be derived from cli.json); the
  RoleAttributes/RoleAuthMethod/etc. openapi docs regenerate in memory.

The deleted annotations_openapi*.yml stay deleted.

Verified: jsonschema.json and jsonschema_for_docs.json regenerate
byte-identical to origin/main, annotations.yml is byte-idempotent, and
go test ./bundle/internal/schema/... ./internal/clijson/... plus the
refschema acceptance test pass.

Co-authored-by: Isaac
pietern added a commit that referenced this pull request Jun 17, 2026
Resolve conflicts from main's #5467 (postgres_roles resource) landing while this
branch developed postgres_databases on the earlier role pattern:

- postgres_role.go: take main's #5467 version (PostgresRoleRemote drift
  detection, collectLeafUpdatePathsWithPrefix); drop the branch's superseded
  PostgresRoleState marshaler and its unit test.
- Remove duplicate postgres_roles registrations from the add/add merge across
  resources.go, all.go, pkg.go, interpolate.go, fake_workspace.go, the
  testserver role handlers, and several test fixtures.
- Apply main's role refinements to postgres_databases: leaf update-mask paths,
  testserver update_mask honoring (applyDatabaseSpecMask), and 400-on-duplicate
  create, with parallel testserver tests.
- Regenerate apitypes/resources/refschema/schema artifacts; merge NEXT_CHANGELOG.

Co-authored-by: Isaac
pietern added a commit that referenced this pull request Jun 17, 2026
…ermissions fixture

Cross-checking against the postgres_roles PR (#5467) surfaced two misses for
postgres_databases:

- deployment/bind: ~20 resources (incl. postgres_role) have a deployment/bind
  acceptance test, but postgres_database had none. Add one mirroring the role
  test (bind -> summary -> unbind -> summary, both engines).
- apply_bundle_permissions_test.go: the unsupportedResources slice listed
  "postgres_roles" twice — a slice-element add/add artifact from the earlier
  merge that compiles cleanly so build/test didn't catch it. Deduplicated.

Other role-PR changes were already present for databases (config methods, the
tfdyn converter, generated schema/validation/apitypes/resources, testserver
handlers, mutator fixtures). Role-only items correctly have no database analog:
enum_fields/annotation type-entries (the database spec has only scalar fields),
and the inherited-role / recreate-postgres-role tests (role-specific semantics).

Co-authored-by: Isaac
deco-sdk-tagging Bot added a commit that referenced this pull request Jun 17, 2026
## Release v1.4.0

### CLI
* Improved error messages for `ssh connect`: when an SSH connection attempt fails, the client now fetches and prints the server's recent error logs ([#5555](#5555)).
* Increase the SSH server startup timeout from 10 to 45 minutes when a GPU accelerator is requested via `databricks ssh connect --accelerator` ([#5569](#5569)).
* Fix authentication falling back to the default profile in `.databrickscfg` when a host is already configured via the environment (e.g. `DATABRICKS_HOST` with `DATABRICKS_TOKEN`) ([#5616](#5616)).
* ssh: fix opening remote environment in Cursor, which previously hung on default-extension install and never opened the editor ([#5619](#5619)).
* Improve the error shown when `databricks labs install` cannot find a project's `labs.yml`: the message now explains that either the requested version does not exist or the project is not installable with the CLI, and links to the repository ([#5559](#5559)).

### Bundles
* Remove API enum values and types that are still in development from the `databricks-bundles` Python package; these were never accepted by the backend ([#5484](#5484)).
* direct: Fix resolving a resource reference that is used more than once within the same field ([#5558](#5558)).
* Bundle variable references now accept Unicode letters in path segments (e.g. `${var.变量}`). ([#5532](#5532))
* Ignore remote changes for vector search direct_access_index_spec.schema_json to prevent drift when the backend normalizes the schema ([#5481](#5481)).
* Remove hidden, never-functional `--existing-dashboard-id`, `--existing-dashboard-path`, `--existing-alert-id`, and `--existing-genie-space-id` alias flags from `bundle generate`; use the documented `--existing-id` / `--existing-path` flags instead ([#5591](#5591)).
* engine/direct: Fix WAL corruption after two consecutive failed deploys ([#5606](#5606)).
* engine/direct: Don't open the deployment state WAL when a deploy's plan fails ([#5607](#5607)).
* Ignore unity catalog managed schema property defaults to avoid unnecessary drift ([#5195](#5195)).
* Add `postgres_roles` and `postgres_databases` resources to create Postgres roles and databases on a Lakebase branch ([#5467](#5467), [#5627](#5627)).
* direct: Stop spurious recreate/rename on redeploy when the backend normalizes a resource's name-based ID (e.g. Unity Catalog lowercasing a schema or volume name) ([#5599](#5599)).
* Fix the generated pipeline README to suggest `databricks bundle run <pipeline> --refresh <table>` for running a single transformation; the previously documented `--select` flag is not supported by `bundle run` ([#5252](#5252)).
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.

3 participants