Skip to content

Re-key permissions when their parent's ID changes - #7361

Merged
denik merged 5 commits into
mainfrom
denik/permissions-rekey
Nov 5, 2026
Merged

denik merged 5 commits into
mainfrom
denik/permissions-rekey

Conversation

@denik

@denik denik commented Nov 4, 2026

Copy link
Copy Markdown
Contributor

Changes

Permissions are keyed by their parent's object ID (/pipelines/<id>). When the parent was recreated under a new ID (a pipeline storage change, an app or model rename, a dashboard parent_path change, a serving endpoint replaced out of band, ...), the permissions were applied to the new object, but their state kept the old ID. The permissions API still answers for the deleted object, so every later bundle plan proposed the permissions again and never converged (verified on AWS).

Same fix as grants in #7345: object_id is an updatable_id_fields entry in a shared configs/permissions.yml, and DoUpdateWithID records the new ID. Secret scope ACLs have their own state and keep secret_scopes.permissions.yml; a resource type's own file now replaces the shared one instead of conflicting with it.

Tests

  • New permissions/pipelines/recreate (Cloud = true, passing locally and on AWS): the first commit records the stale ID and the endless plan, the fix commit flips it to a no-op.
  • model_serving_endpoints/drift/recreated_same_name had this bug recorded as Badness; it now converges. Passes on AWS.
  • model_serving_endpoints/basic: the permissions entry is planned as update_id instead of update.

This pull request and its description were written by Isaac.

@github-actions github-actions Bot added the DABs DABs related issues label Nov 4, 2026
@github-actions

github-actions Bot commented Nov 4, 2026 •

Copy link
Copy Markdown
Contributor

Commit: efab0cdc9 | Workflow run

Regression test report

Selected 4 changed tests (limit=20, 0 not selected)

7 tests: regression=7 unreleased=0 coverage=0 failing=0
test branch main (5c0ab45) latest (v1.24.0)
TestAccept/bundle/resources/model_serving_endpoints/basic/DMS= ✅ ❌ ❌
TestAccept/bundle/resources/model_serving_endpoints/basic/DMS=true ✅ ❌ ❌
TestAccept/bundle/resources/model_serving_endpoints/drift/recreated_same_name/DMS= ✅ ❌ ❌
TestAccept/bundle/resources/model_serving_endpoints/drift/recreated_same_name/DMS=true ✅ ❌ ❌
TestAccept/bundle/resources/permissions/pipelines/recreate/DMS= ✅ ❌ ❌
TestAccept/bundle/resources/permissions/pipelines/recreate/DMS=true ✅ ❌ ❌
TestAccept/bundle/state/permission_level_migration/DMS= ✅ ❌ ❌
TestAccept/bundle/resources/model_serving_endpoints/basic/DMS=: branch ✅ | main (5c0ab45) ❌ | latest (v1.24.0) ❌

main (5c0ab45):

acceptance_test.go:1345: Diff:
        --- bundle/resources/model_serving_endpoints/basic/out.second-plan.txt
        +++ /tmp/TestAcceptbundleresourcesmodel_serving_endpointsbasicDMS=296549845/001/out.second-plan.txt
        @@ -31,7 +31,7 @@
         json.plan.resources.model_serving_endpoints.my_endpoint.changes.route_optimized.remote = false;
         json.plan.resources.model_serving_endpoints.my_endpoint.permissions.depends_on[0].node = "resources.model_serving_endpoints.my_endpoint";
         json.plan.resources.model_serving_endpoints.my_endpoint.permissions.depends_on[0].label = "${resources.model_serving_endpoints.my_endpoint.endpoint_id}";
        -json.plan.resources.model_serving_endpoints.my_endpoint.permissions.action = "update_id";
        +json.plan.resources.model_serving_endpoints.my_endpoint.permissions.action = "update";
         json.plan.resources.model_serving_endpoints.my_endpoint.permissions.new_state.value.object_id = "";
         json.plan.resources.model_serving_endpoints.my_endpoint.permissions.new_state.value.__embed__[0].level = "CAN_MANAGE";
         json.plan.resources.model_serving_endpoints.my_endpoint.permissions.new_state.value.__embed__[0].service_principal_name = "[USERNAME]";
        @@ -43,8 +43,7 @@
         json.plan.resources.model_serving_endpoints.my_endpoint.permissions.remote_state.__embed__[0].service_principal_name = "[USERNAME]";
         json.plan.resources.model_serving_endpoints.my_endpoint.permissions.remote_state.__embed__[1].level = "CAN_VIEW";
         json.plan.resources.model_serving_endpoints.my_endpoint.permissions.remote_state.__embed__[1].user_name = "deco-test-user@databricks.com";
        -json.plan.resources.model_serving_endpoints.my_endpoint.permissions.changes.object_id.action = "update_id";
        -json.plan.resources.model_serving_endpoints.my_endpoint.permissions.changes.object_id.reason = "id_changes";
        +json.plan.resources.model_serving_endpoints.my_endpoint.permissions.changes.object_id.action = "update";
         json.plan.resources.model_serving_endpoints.my_endpoint.permissions.changes.object_id.old = "/serving-endpoints/[ENDPOINT_ID_1]";
         json.plan.resources.model_serving_endpoints.my_endpoint.permissions.changes.object_id.new = "";
         json.plan.resources.model_serving_endpoints.my_endpoint.permissions.changes.object_id.remote = "/serving-endpoints/[ENDPOINT_ID_1]";

latest (v1.24.0): same output as main (5c0ab45)

TestAccept/bundle/resources/model_serving_endpoints/basic/DMS=true: branch ✅ | main (5c0ab45) ❌ | latest (v1.24.0) ❌

main (5c0ab45):

acceptance_test.go:1345: Diff:
        --- bundle/resources/model_serving_endpoints/basic/out.second-plan.txt
        +++ /tmp/TestAcceptbundleresourcesmodel_serving_endpointsbasicDMS=tr989270205/001/out.second-plan.txt
        @@ -31,7 +31,7 @@
         json.plan.resources.model_serving_endpoints.my_endpoint.changes.route_optimized.remote = false;
         json.plan.resources.model_serving_endpoints.my_endpoint.permissions.depends_on[0].node = "resources.model_serving_endpoints.my_endpoint";
         json.plan.resources.model_serving_endpoints.my_endpoint.permissions.depends_on[0].label = "${resources.model_serving_endpoints.my_endpoint.endpoint_id}";
        -json.plan.resources.model_serving_endpoints.my_endpoint.permissions.action = "update_id";
        +json.plan.resources.model_serving_endpoints.my_endpoint.permissions.action = "update";
         json.plan.resources.model_serving_endpoints.my_endpoint.permissions.new_state.value.object_id = "";
         json.plan.resources.model_serving_endpoints.my_endpoint.permissions.new_state.value.__embed__[0].level = "CAN_MANAGE";
         json.plan.resources.model_serving_endpoints.my_endpoint.permissions.new_state.value.__embed__[0].service_principal_name = "[USERNAME]";
        @@ -43,8 +43,7 @@
         json.plan.resources.model_serving_endpoints.my_endpoint.permissions.remote_state.__embed__[0].service_principal_name = "[USERNAME]";
         json.plan.resources.model_serving_endpoints.my_endpoint.permissions.remote_state.__embed__[1].level = "CAN_VIEW";
         json.plan.resources.model_serving_endpoints.my_endpoint.permissions.remote_state.__embed__[1].user_name = "deco-test-user@databricks.com";
        -json.plan.resources.model_serving_endpoints.my_endpoint.permissions.changes.object_id.action = "update_id";
        -json.plan.resources.model_serving_endpoints.my_endpoint.permissions.changes.object_id.reason = "id_changes";
        +json.plan.resources.model_serving_endpoints.my_endpoint.permissions.changes.object_id.action = "update";
         json.plan.resources.model_serving_endpoints.my_endpoint.permissions.changes.object_id.old = "/serving-endpoints/[ENDPOINT_ID_1]";
         json.plan.resources.model_serving_endpoints.my_endpoint.permissions.changes.object_id.new = "";
         json.plan.resources.model_serving_endpoints.my_endpoint.permissions.changes.object_id.remote = "/serving-endpoints/[ENDPOINT_ID_1]";

latest (v1.24.0): same output as main (5c0ab45)

TestAccept/bundle/resources/model_serving_endpoints/drift/recreated_same_name/DMS=: branch ✅ | main (5c0ab45) ❌ | latest (v1.24.0) ❌

main (5c0ab45):

acceptance_test.go:1345: Diff:
        --- bundle/resources/model_serving_endpoints/drift/recreated_same_name/output.txt
        +++ /tmp/TestAcceptbundleresourcesmodel_serving_endpointsdriftrecrea732985461/002/output.txt
        @@ -50,8 +50,10 @@
         
         === After deploy the permissions are recorded under the new endpoint id, so the plan is clean
         >>> [CLI] bundle plan
        -Plan: 0 to add, 0 to change, 0 to delete, 2 unchanged
        +update model_serving_endpoints.my_endpoint.permissions
         
        +Plan: 0 to add, 1 to change, 0 to delete, 1 unchanged
        +
         >>> [CLI] bundle destroy --auto-approve
         The following resources will be deleted:
           delete resources.model_serving_endpoints.my_endpoint

latest (v1.24.0): same output as main (5c0ab45)

TestAccept/bundle/resources/model_serving_endpoints/drift/recreated_same_name/DMS=true: branch ✅ | main (5c0ab45) ❌ | latest (v1.24.0) ❌

main (5c0ab45):

acceptance_test.go:1345: Diff:
        --- bundle/resources/model_serving_endpoints/drift/recreated_same_name/output.txt
        +++ /tmp/TestAcceptbundleresourcesmodel_serving_endpointsdriftrecrea212632855/002/output.txt
        @@ -50,8 +50,10 @@
         
         === After deploy the permissions are recorded under the new endpoint id, so the plan is clean
         >>> [CLI] bundle plan
        -Plan: 0 to add, 0 to change, 0 to delete, 2 unchanged
        +update model_serving_endpoints.my_endpoint.permissions
         
        +Plan: 0 to add, 1 to change, 0 to delete, 1 unchanged
        +
         >>> [CLI] bundle destroy --auto-approve
         The following resources will be deleted:
           delete resources.model_serving_endpoints.my_endpoint
        
FAIL

latest (v1.24.0): same output as main (5c0ab45)

TestAccept/bundle/resources/permissions/pipelines/recreate/DMS=: branch ✅ | main (5c0ab45) ❌ | latest (v1.24.0) ❌

main (5c0ab45):

acceptance_test.go:1345: Diff:
        --- bundle/resources/permissions/pipelines/recreate/output.txt
        +++ /tmp/TestAcceptbundleresourcespermissionspipelinesrecreateDMS=3799865130/002/output.txt
        @@ -37,8 +37,7 @@
         >>> [CLI] bundle plan --output json
         {
           "object_id": {
        -    "action": "update_id",
        -    "reason": "id_changes",
        +    "action": "update",
             "old": "/pipelines/[OLD_PIPELINE_ID]",
             "new": "",
             "remote": "/pipelines/[OLD_PIPELINE_ID]"
        @@ -79,11 +78,13 @@
         
         === The permissions are recorded under the new ID, so the next plan is a no-op
         >>> read_state.py pipelines foo.permissions id
        -pipelines foo.permissions id='/pipelines/[NEW_PIPELINE_ID]'
        +pipelines foo.permissions id='/pipelines/[OLD_PIPELINE_ID]'
         
         >>> [CLI] bundle plan
        -Plan: 0 to add, 0 to change, 0 to delete, 3 unchanged
        +update pipelines.foo.permissions
         
        +Plan: 0 to add, 1 to change, 0 to delete, 2 unchanged
        +
         >>> [CLI] bundle destroy --auto-approve
         The following resources will be deleted:
           delete resources.pipelines.foo
        
    acceptance_test.go:1123: LOG.destroy_requests:

latest (v1.24.0): same output as main (5c0ab45)

TestAccept/bundle/resources/permissions/pipelines/recreate/DMS=true: branch ✅ | main (5c0ab45) ❌ | latest (v1.24.0) ❌

main (5c0ab45):

acceptance_test.go:1345: Diff:
        --- bundle/resources/permissions/pipelines/recreate/output.txt
        +++ /tmp/TestAcceptbundleresourcespermissionspipelinesrecreateDMS=t1832580294/002/output.txt
        @@ -37,8 +37,7 @@
         >>> [CLI] bundle plan --output json
         {
           "object_id": {
        -    "action": "update_id",
        -    "reason": "id_changes",
        +    "action": "update",
             "old": "/pipelines/[OLD_PIPELINE_ID]",
             "new": "",
             "remote": "/pipelines/[OLD_PIPELINE_ID]"
        @@ -79,11 +78,13 @@
         
         === The permissions are recorded under the new ID, so the next plan is a no-op
         >>> read_state.py pipelines foo.permissions id
        -pipelines foo.permissions id='/pipelines/[NEW_PIPELINE_ID]'
        +pipelines foo.permissions id='/pipelines/[OLD_PIPELINE_ID]'
         
         >>> [CLI] bundle plan
        -Plan: 0 to add, 0 to change, 0 to delete, 3 unchanged
        +update pipelines.foo.permissions
         
        +Plan: 0 to add, 1 to change, 0 to delete, 2 unchanged
        +
         >>> [CLI] bundle destroy --auto-approve
         The following resources will be deleted:
           delete resources.pipelines.foo
        
    acceptance_test.go:1123: LOG.destroy_requests:

latest (v1.24.0): same output as main (5c0ab45)

TestAccept/bundle/state/permission_level_migration/DMS=: branch ✅ | main (5c0ab45) ❌ | latest (v1.24.0) ❌

main (5c0ab45):

acceptance_test.go:1345: Diff:
        --- bundle/state/permission_level_migration/output.txt
        +++ /tmp/TestAcceptbundlestatepermission_level_migrationDMS=3741881637/002/output.txt
        @@ -35,7 +35,7 @@
            }
           },
           "resources.jobs.my_job.permissions": {
        -   "__id__": "/jobs/[MY_JOB_ID]",
        +   "__id__": "/jobs/123",
            "state": {
             "object_id": "/jobs/[MY_JOB_ID]",
             "__embed__": [
        
    acceptance_test.go:1345: Diff:
        --- bundle/state/permission_level_migration/out.plan.direct.json
        +++ /tmp/TestAcceptbundlestatepermission_level_migrationDMS=3741881637/001/out.plan.direct.json
        @@ -29,7 +29,7 @@
                   "label": "${resources.jobs.my_job.id}"
                 }
               ],
        -      "action": "update_id",
        +      "action": "update",
               "new_state": {
                 "value": {
                   "object_id": "",
        @@ -79,8 +79,7 @@
                   ]
                 },
                 "object_id": {
        -          "action": "update_id",
        -          "reason": "id_changes",
        +          "action": "update",
                   "old": "/jobs/123",
                   "new": "",
                   "remote": "/jobs/123"

latest (v1.24.0): same output as main (5c0ab45)

@eng-dev-ecosystem-bot

eng-dev-ecosystem-bot commented Nov 4, 2026 •

Copy link
Copy Markdown
Collaborator

✅ Integration test report

Commit: efab0cd

Run: 42032908511

Env 🔄​flaky ✅​pass 🙈​skip Time
✅​ aws linux-2core-8gb 280 16 5:32
✅​ aws-windows-latest-4core-16gb 282 14 4:25
✅​ azure linux-2core-8gb 279 16 5:15
✅​ azure-windows-latest-4core-16gb 281 14 4:52
✅​ gcp linux-2core-8gb 280 16 5:30
🔄​ gcp-windows-latest-4core-16gb 2 280 14 5:00
Test Name gcp-windows-latest-4core-16gb
🔄​ TestFsCpDirToDirFileNotOverwritten 🔄​f
🔄​ TestFsCpDirToDirFileNotOverwritten/uc-volumes_to_dbfs 🔄​f
Top 3 slowest tests (at least 2 minutes):
duration env testname
3:07 aws-windows-latest-4core-16gb TestAccept
3:07 azure-windows-latest-4core-16gb TestAccept
3:06 gcp-windows-latest-4core-16gb TestAccept

@denik
denik marked this pull request as ready for review November 5, 2026 09:23
@denik
denik requested review from a team as code owners November 5, 2026 09:23
@denik
denik enabled stacked auto-merge November 5, 2026 10:38
denik and others added 5 commits November 5, 2026 14:01
Co-authored-by: Isaac <no-reply@databricks.com>
Permissions are keyed by their parent's object ID. When the parent was
recreated (or replaced out of band) under a new ID, the permissions were
applied to the new object but their state kept the old ID. The permissions
API still answers for the deleted object, so every later plan proposed them
again and never converged.

object_id is now an updatable ID field of every permissions type, via a shared
permissions.yml, and DoUpdateWithID records the new ID. A resource type's own
file (secret_scopes.permissions.yml) replaces the shared one.

Co-authored-by: Isaac <no-reply@databricks.com>
Co-authored-by: Isaac <no-reply@databricks.com>
Co-authored-by: Isaac <no-reply@databricks.com>
The seeded job 123 does not exist, so the deploy creates the job under a new
ID. The permissions were applied to it but their state kept /jobs/123; it is
now re-keyed to the new job.

Co-authored-by: Isaac <no-reply@databricks.com>
@denik
denik force-pushed the denik/permissions-rekey branch from 6687eaf to efab0cd Compare November 5, 2026 13:06

// DoUpdate calls https://docs.databricks.com/api/workspace/jobs/setjobpermissions.
func (r *ResourcePermissions) DoUpdate(ctx context.Context, _ string, newState *PermissionsState, _ *PlanEntry) (*PermissionsState, error) {
extractedType, extractedID, err := parsePermissionsID(newState.ObjectID)

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 don't we use the id argument here?

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.

If I remember correctly, these are equivalent.

@denik
denik added this pull request to the merge queue Nov 5, 2026
Merged via the queue into main with commit eb1328d Nov 5, 2026
28 checks passed
@denik
denik deleted the denik/permissions-rekey branch November 5, 2026 13:57
@eng-dev-ecosystem-bot

Copy link
Copy Markdown
Collaborator

❌ Integration test report

Commit: eb1328d

Run: 42040545782

Env ❌​FAIL 🔄​flaky ✅​pass 🙈​skip Time
❌​ aws linux-2core-8gb 29 1501 1258 339:57
❌​ aws-windows-latest-4core-16gb 40 1409 1285 335:22
🔄​ azure linux-2core-8gb 4 1363 1315 133:11
🔄​ azure-windows-latest-4core-16gb 6 1280 1342 155:46
🔄​ gcp linux-2core-8gb 10 1344 1320 169:27
🔄​ gcp-windows-latest-4core-16gb 8 1265 1347 175:52
70 interesting tests: 42 FAIL, 28 flaky
Test Name aws linux-2core-8gb aws-windows-latest-4core-16gb azure linux-2core-8gb azure-windows-latest-4core-16gb gcp linux-2core-8gb gcp-windows-latest-4core-16gb
❌​ TestAccept ❌​F ❌​F ✅​p ✅​p ✅​p ✅​p
❌​ TestAccept/bundle/deploy/spark-jar-task ❌​F ❌​F ✅​p ✅​p ✅​p ✅​p
❌​ TestAccept/bundle/deploy/spark-jar-task/DMS= ❌​F ❌​F ✅​p ✅​p ✅​p ✅​p
❌​ TestAccept/bundle/deploy/spark-jar-task/DMS=true ❌​F ❌​F ✅​p ✅​p ✅​p ✅​p
❌​ TestAccept/bundle/invariant/delete_idempotent ❌​F ❌​F ✅​p ✅​p ✅​p ✅​p
❌​ TestAccept/bundle/invariant/delete_idempotent/DMS=/INPUT_CONFIG=cluster.yml.tmpl/READPLAN= ❌​F ❌​F ✅​p ✅​p ✅​p ✅​p
❌​ TestAccept/bundle/invariant/delete_idempotent/DMS=/INPUT_CONFIG=cluster.yml.tmpl/READPLAN=1 ❌​F ❌​F ✅​p ✅​p ✅​p ✅​p
❌​ TestAccept/bundle/invariant/delete_idempotent/DMS=/INPUT_CONFIG=cluster_apply_policy_default_values.yml.tmpl/READPLAN= ❌​F ❌​F ✅​p ✅​p ✅​p ✅​p
❌​ TestAccept/bundle/invariant/delete_idempotent/DMS=/INPUT_CONFIG=cluster_apply_policy_default_values.yml.tmpl/READPLAN=1 ❌​F ❌​F ✅​p ✅​p ✅​p ✅​p
❌​ TestAccept/bundle/invariant/delete_idempotent/DMS=/INPUT_CONFIG=cluster_libraries.yml.tmpl/READPLAN= ❌​F ❌​F ✅​p ✅​p ✅​p ✅​p
❌​ TestAccept/bundle/invariant/delete_idempotent/DMS=/INPUT_CONFIG=cluster_libraries.yml.tmpl/READPLAN=1 ❌​F ❌​F ✅​p ✅​p ✅​p ✅​p
❌​ TestAccept/bundle/invariant/destroy_idempotent ❌​F ❌​F ✅​p ✅​p ✅​p ✅​p
❌​ TestAccept/bundle/invariant/destroy_idempotent/DMS=/INPUT_CONFIG=cluster.yml.tmpl/READPLAN= ❌​F ❌​F ✅​p ✅​p ✅​p ✅​p
❌​ TestAccept/bundle/invariant/destroy_idempotent/DMS=/INPUT_CONFIG=cluster.yml.tmpl/READPLAN=1 ❌​F ❌​F ✅​p ✅​p ✅​p ✅​p
❌​ TestAccept/bundle/invariant/destroy_idempotent/DMS=/INPUT_CONFIG=cluster_apply_policy_default_values.yml.tmpl/READPLAN= ❌​F ❌​F ✅​p ✅​p ✅​p ✅​p
❌​ TestAccept/bundle/invariant/destroy_idempotent/DMS=/INPUT_CONFIG=cluster_apply_policy_default_values.yml.tmpl/READPLAN=1 ❌​F ❌​F ✅​p ✅​p ✅​p ✅​p
❌​ TestAccept/bundle/invariant/destroy_idempotent/DMS=/INPUT_CONFIG=cluster_libraries.yml.tmpl/READPLAN= ❌​F ❌​F ✅​p ✅​p ✅​p ✅​p
❌​ TestAccept/bundle/invariant/destroy_idempotent/DMS=/INPUT_CONFIG=cluster_libraries.yml.tmpl/READPLAN=1 ❌​F ❌​F ✅​p ✅​p ✅​p ✅​p
❌​ TestAccept/bundle/invariant/no_drift ❌​F ❌​F ✅​p ✅​p ✅​p ✅​p
❌​ TestAccept/bundle/invariant/no_drift/DMS=/INPUT_CONFIG=cluster.yml.tmpl/READPLAN= ❌​F ❌​F ✅​p ✅​p ✅​p ✅​p
❌​ TestAccept/bundle/invariant/no_drift/DMS=/INPUT_CONFIG=cluster.yml.tmpl/READPLAN=1 ❌​F ❌​F ✅​p ✅​p ✅​p ✅​p
❌​ TestAccept/bundle/invariant/no_drift/DMS=/INPUT_CONFIG=cluster_apply_policy_default_values.yml.tmpl/READPLAN= ❌​F ❌​F ✅​p ✅​p ✅​p ✅​p
❌​ TestAccept/bundle/invariant/no_drift/DMS=/INPUT_CONFIG=cluster_apply_policy_default_values.yml.tmpl/READPLAN=1 ❌​F ❌​F ✅​p ✅​p ✅​p ✅​p
❌​ TestAccept/bundle/invariant/no_drift/DMS=/INPUT_CONFIG=cluster_libraries.yml.tmpl/READPLAN= ❌​F ❌​F ✅​p ✅​p ✅​p ✅​p
❌​ TestAccept/bundle/invariant/no_drift/DMS=/INPUT_CONFIG=cluster_libraries.yml.tmpl/READPLAN=1 ❌​F ❌​F ✅​p ✅​p ✅​p ✅​p
❌​ TestAccept/bundle/invariant/no_drift/DMS=true/INPUT_CONFIG=cluster.yml.tmpl/READPLAN= ✅​p ❌​F ✅​p ✅​p ✅​p ✅​p
❌​ TestAccept/bundle/invariant/no_drift/DMS=true/INPUT_CONFIG=cluster.yml.tmpl/READPLAN=1 ✅​p ❌​F ✅​p ✅​p ✅​p ✅​p
❌​ TestAccept/bundle/invariant/no_drift/DMS=true/INPUT_CONFIG=cluster_apply_policy_default_values.yml.tmpl/READPLAN= ❌​F ❌​F ✅​p ✅​p ✅​p ✅​p
❌​ TestAccept/bundle/invariant/no_drift/DMS=true/INPUT_CONFIG=cluster_apply_policy_default_values.yml.tmpl/READPLAN=1 ✅​p ❌​F ✅​p ✅​p ✅​p ✅​p
❌​ TestAccept/bundle/invariant/no_drift/DMS=true/INPUT_CONFIG=cluster_libraries.yml.tmpl/READPLAN= ❌​F ❌​F ✅​p ✅​p ✅​p ✅​p
❌​ TestAccept/bundle/invariant/no_drift/DMS=true/INPUT_CONFIG=cluster_libraries.yml.tmpl/READPLAN=1 ✅​p ❌​F ✅​p ✅​p ✅​p ✅​p
🔄​ TestAccept/bundle/resources/cluster_policies/out_of_band_change/DMS= ✅​p ✅​p ✅​p ✅​p ✅​p 🔄​f
🔄​ TestAccept/bundle/resources/cluster_policies/out_of_band_change/DMS=true ✅​p ✅​p ✅​p ✅​p ✅​p 🔄​f
❌​ TestAccept/bundle/resources/clusters/deploy/update-after-create ❌​F ✅​p ✅​p ✅​p ✅​p ✅​p
❌​ TestAccept/bundle/resources/clusters/deploy/update-after-create/DMS= ❌​F ✅​p ✅​p ✅​p ✅​p ✅​p
❌​ TestAccept/bundle/resources/clusters/lifecycle-started ✅​p ❌​F ✅​p ✅​p ✅​p ✅​p
❌​ TestAccept/bundle/resources/clusters/lifecycle-started-toggle ✅​p ❌​F ✅​p ✅​p ✅​p ✅​p
❌​ TestAccept/bundle/resources/clusters/lifecycle-started-toggle/DMS= ✅​p ❌​F ✅​p ✅​p ✅​p ✅​p
❌​ TestAccept/bundle/resources/clusters/lifecycle-started-toggle/DMS=true ✅​p ❌​F ✅​p ✅​p ✅​p ✅​p
❌​ TestAccept/bundle/resources/clusters/lifecycle-started/DMS= ✅​p ❌​F ✅​p ✅​p ✅​p ✅​p
❌​ TestAccept/bundle/resources/clusters/resize-terminated-fallback ✅​p ❌​F ✅​p ✅​p ✅​p ✅​p
❌​ TestAccept/bundle/resources/clusters/resize-terminated-fallback/DMS= ✅​p ❌​F ✅​p ✅​p ✅​p ✅​p
🔄​ TestAccept/bundle/resources/dashboards/nested-folders ✅​p ✅​p 🔄​f ✅​p ✅​p ✅​p
🔄​ TestAccept/bundle/resources/dashboards/nested-folders/DMS=/READPLAN=1 ✅​p ✅​p 🔄​f ✅​p ✅​p ✅​p
🔄​ TestAccept/bundle/resources/dashboards/simple_outside_bundle_root ✅​p ✅​p ✅​p 🔄​f ✅​p ✅​p
🔄​ TestAccept/bundle/resources/dashboards/simple_outside_bundle_root/DMS= ✅​p ✅​p ✅​p 🔄​f ✅​p ✅​p
🔄​ TestAccept/bundle/resources/dashboards/simple_syncroot/DMS= ✅​p ✅​p ✅​p 🔄​f ✅​p ✅​p
🔄​ TestAccept/bundle/resources/dashboards/simple_syncroot/DMS=true ✅​p ✅​p ✅​p 🔄​f ✅​p ✅​p
🔄​ TestAccept/bundle/resources/grants/schemas/remove_principal ✅​p ✅​p ✅​p ✅​p 🔄​f ✅​p
🔄​ TestAccept/bundle/resources/grants/schemas/remove_principal/DMS= ✅​p ✅​p ✅​p ✅​p 🔄​f ✅​p
🔄​ TestAccept/bundle/resources/grants/schemas/remove_principal_manage ✅​p ✅​p ✅​p ✅​p 🔄​f ✅​p
🔄​ TestAccept/bundle/resources/grants/schemas/remove_principal_manage/DMS= ✅​p ✅​p ✅​p ✅​p 🔄​f ✅​p
🔄​ TestAccept/bundle/resources/grants/volume_change_name/DMS= ✅​p ✅​p ✅​p ✅​p 🔄​f ✅​p
🔄​ TestAccept/bundle/resources/grants/volume_change_name/DMS=true ✅​p ✅​p ✅​p ✅​p 🔄​f ✅​p
🔄​ TestAccept/bundle/resources/grants/volumes/DMS= ✅​p ✅​p ✅​p ✅​p 🔄​f ✅​p
🔄​ TestAccept/bundle/resources/grants/volumes/DMS=true ✅​p ✅​p ✅​p ✅​p 🔄​f ✅​p
🔄​ TestAccept/bundle/resources/job_runs/failed_run/DMS= ✅​p ✅​p ✅​p ✅​p 🔄​f ✅​p
🔄​ TestAccept/bundle/resources/job_runs/failed_run/DMS=true ✅​p ✅​p ✅​p ✅​p 🔄​f ✅​p
🔄​ TestAccept/bundle/resources/jobs/fail-on-active-runs ✅​p ✅​p 🔄​f ✅​p ✅​p ✅​p
🔄​ TestAccept/bundle/resources/jobs/fail-on-active-runs/DMS=true ✅​p ✅​p 🔄​f ✅​p ✅​p ✅​p
🔄​ TestAccept/bundle/resources/pipelines/lakeflow-pipeline ✅​p ✅​p ✅​p ✅​p ✅​p 🔄​f
🔄​ TestAccept/bundle/resources/pipelines/lakeflow-pipeline/DMS= ✅​p ✅​p ✅​p ✅​p ✅​p 🔄​f
🔄​ TestAccept/bundle/resources/pipelines/recreate ✅​p ✅​p ✅​p ✅​p ✅​p 🔄​f
🔄​ TestAccept/bundle/resources/pipelines/recreate/DMS=true ✅​p ✅​p ✅​p ✅​p ✅​p 🔄​f
❌​ TestAccept/bundle/resources/postgres_synced_tables/recreate ✅​p ❌​F 🙈​s 🙈​s 🙈​s 🙈​s
❌​ TestAccept/bundle/resources/postgres_synced_tables/recreate/DMS=true ✅​p ❌​F
🔄​ TestAccept/bundle/select/deletion_saved_plan/DMS= ✅​p ✅​p ✅​p ✅​p ✅​p 🔄​f
🔄​ TestAccept/bundle/select/deletion_saved_plan/DMS=true ✅​p ✅​p ✅​p ✅​p ✅​p 🔄​f
🔄​ TestAccept/bundle/variables/lookup ✅​p ✅​p ✅​p 🔄​f ✅​p ✅​p
🔄​ TestAccept/bundle/variables/lookup/DMS=true ✅​p ✅​p ✅​p 🔄​f ✅​p ✅​p
Top 50 slowest tests (at least 2 minutes):
duration env testname
27:58 aws linux-2core-8gb TestAccept/bundle/resources/clusters/lifecycle-started/DMS=
23:20 aws linux-2core-8gb TestAccept/bundle/resources/clusters/lifecycle-started/DMS=true
23:19 aws-windows-latest-4core-16gb TestAccept/bundle/resources/clusters/lifecycle-started/DMS=true
16:01 aws linux-2core-8gb TestAccept/bundle/invariant/no_drift/DMS=true/INPUT_CONFIG=cluster.yml.tmpl/READPLAN=
13:14 aws linux-2core-8gb TestAccept/bundle/config-remote-sync/multiple_resources/DMS=
12:22 gcp linux-2core-8gb TestAccept/bundle/resources/clusters/lifecycle-started/DMS=
12:08 aws linux-2core-8gb TestAccept/bundle/config-remote-sync/multiple_resources/DMS=true
11:41 gcp-windows-latest-4core-16gb TestAccept/bundle/resources/apps/lifecycle-started/DMS=true
11:40 aws linux-2core-8gb TestAccept/bundle/resources/clusters/deploy/simple/DMS=
11:37 aws linux-2core-8gb TestAccept/bundle/resources/clusters/resize-terminated-fallback/DMS=true
11:26 aws linux-2core-8gb TestAccept/bundle/resources/clusters/lifecycle-started-toggle/DMS=
11:22 gcp-windows-latest-4core-16gb TestAccept/bundle/resources/clusters/lifecycle-started/DMS=true
11:21 aws linux-2core-8gb TestAccept/bundle/invariant/no_drift/DMS=true/INPUT_CONFIG=cluster_apply_policy_default_values.yml.tmpl/READPLAN=1
10:58 aws linux-2core-8gb TestAccept/bundle/resources/clusters/lifecycle-started-toggle/DMS=true
10:45 aws linux-2core-8gb TestAccept/bundle/invariant/no_drift/DMS=true/INPUT_CONFIG=cluster_libraries.yml.tmpl/READPLAN=1
10:31 aws-windows-latest-4core-16gb TestAccept/bundle/resources/clusters/deploy/data_security_mode/DMS=
10:24 gcp linux-2core-8gb TestAccept/bundle/resources/clusters/lifecycle-started-toggle/DMS=
10:08 aws linux-2core-8gb TestAccept/bundle/resources/apps/lifecycle-started/DMS=
9:58 aws-windows-latest-4core-16gb TestAccept/bundle/resources/apps/lifecycle-started/DMS=
9:39 aws linux-2core-8gb TestAccept/bundle/resources/clusters/deploy/simple/DMS=true
9:18 gcp-windows-latest-4core-16gb TestAccept/bundle/resources/apps/lifecycle-started/DMS=
9:15 azure linux-2core-8gb TestAccept/bundle/resources/apps/lifecycle-started/DMS=true
9:13 azure-windows-latest-4core-16gb TestAccept/bundle/resources/apps/lifecycle-started/DMS=true
8:57 gcp linux-2core-8gb TestAccept/bundle/resources/apps/lifecycle-started/DMS=
8:32 azure-windows-latest-4core-16gb TestAccept/bundle/resources/apps/lifecycle-started/DMS=
8:30 aws linux-2core-8gb TestAccept/bundle/resources/apps/lifecycle-started/DMS=true
8:30 aws-windows-latest-4core-16gb TestAccept/bundle/resources/apps/lifecycle-started/DMS=true
8:27 gcp-windows-latest-4core-16gb TestAccept/bundle/invariant/no_drift/DMS=true/INPUT_CONFIG=cluster_libraries.yml.tmpl/READPLAN=
8:10 gcp-windows-latest-4core-16gb TestAccept/bundle/resources/clusters/deploy/local_ssd_count/DMS=
7:44 gcp-windows-latest-4core-16gb TestAccept/bundle/invariant/no_drift/DMS=true/INPUT_CONFIG=cluster_apply_policy_default_values.yml.tmpl/READPLAN=1
7:34 gcp linux-2core-8gb TestAccept/bundle/resources/clusters/deploy/local_ssd_count/DMS=true
7:31 gcp-windows-latest-4core-16gb TestAccept/bundle/resources/clusters/deploy/local_ssd_count/DMS=true
7:30 gcp linux-2core-8gb TestAccept/bundle/resources/clusters/deploy/local_ssd_count/DMS=
7:26 aws linux-2core-8gb TestAccept/bundle/invariant/no_drift/DMS=true/INPUT_CONFIG=cluster.yml.tmpl/READPLAN=1
7:23 azure linux-2core-8gb TestAccept/bundle/resources/apps/lifecycle-started/DMS=
7:22 gcp linux-2core-8gb TestAccept/bundle/resources/apps/lifecycle-started/DMS=true
7:17 azure linux-2core-8gb TestAccept/bundle/resources/clusters/lifecycle-started/DMS=
7:11 aws-windows-latest-4core-16gb TestAccept/bundle/resources/clusters/resize-terminated-fallback/DMS=true
7:02 aws-windows-latest-4core-16gb TestAccept/bundle/resources/clusters/deploy/update-after-create/DMS=
6:51 gcp-windows-latest-4core-16gb TestAccept/bundle/resources/clusters/lifecycle-started/DMS=
6:43 aws linux-2core-8gb TestAccept/bundle/resources/clusters/deploy/data_security_mode/DMS=true
6:42 gcp linux-2core-8gb TestAccept/bundle/resources/clusters/lifecycle-started/DMS=true
6:41 aws linux-2core-8gb TestAccept/bundle/resources/clusters/deploy/update-after-create/DMS=true
6:31 gcp linux-2core-8gb TestAccept/bundle/config-remote-sync/multiple_resources/DMS=true
6:20 azure-windows-latest-4core-16gb TestAccept/bundle/resources/clusters/lifecycle-started/DMS=
6:04 gcp-windows-latest-4core-16gb TestFsCpFileToFileFileNotOverwritten/uc-volumes_to_local
5:59 aws linux-2core-8gb TestAccept/bundle/resources/clusters/deploy/data_security_mode/DMS=
5:57 gcp linux-2core-8gb TestAccept/bundle/config-remote-sync/multiple_resources/DMS=
5:53 azure linux-2core-8gb TestAccept/bundle/config-remote-sync/multiple_resources/DMS=true
5:40 gcp-windows-latest-4core-16gb TestAccept/bundle/invariant/no_drift/DMS=true/INPUT_CONFIG=cluster_libraries.yml.tmpl/READPLAN=1

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

DABs DABs related issues

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants