Skip to content

Add lifecycle.bind to adopt existing workspace resources at deploy time - #7366

Draft
janniklasrose wants to merge 21 commits into
mainfrom
janniklasrose/declarative-bind
Draft

janniklasrose wants to merge 21 commits into
mainfrom
janniklasrose/declarative-bind

Conversation

@janniklasrose

@janniklasrose janniklasrose commented Nov 4, 2026 •

Copy link
Copy Markdown
Member

Changes

Adds lifecycle.bind to adopt existing workspace resources through two deployment phases: commit the bindings to remote state, then apply ordinary resource changes. For example:

resources:
  jobs:
    existing:
      name: my job
      lifecycle:
        bind:
          id: "12345"

bundle plan previews both phases without committing state. JSON plan format 3 has separate bind and plan maps, and bundle deploy --plan executes both. DMS records binding and resource changes in separate versions.

The bind block guards against missing resources, duplicate/conflicting IDs, creation, recreation, and ID-changing updates. Apply rechecks these constraints for saved plans. Removing the block preserves ownership; removing the resource or running bundle destroy can delete it. Imperative bind/unbind remain available, with notices explaining their interaction with the block.

Why

Adoption changes deployment state and must survive a later planning or apply failure. Separating it from resource actions gives retries durable ownership and keeps ordinary updates/resizes in the existing deployment engine.

Tests

  • Bind acceptance suite passes locally and on AWS, Azure, and GCP. Coverage includes saved plans, selection/dependencies, missing resources between phases, recreation after planning, and separate DMS versions in shadow and authoritative modes.
  • Full Go unit suite, 530 Python tests, type checks, docs build, code generation, formatting, checks, and lint pass.
  • Full local acceptance retains unrelated failures reproduced on pre-change commit 1424db5d125049547a3ab3fd8417252292074b14: completion, MLOps Stacks, Git metadata snapshots, and Python source-location snapshots. An intermittent migration upload-count mismatch passes on rerun.
  • Fixed Git Bash path conversion in the block-removal test identified by the Windows cloud runs; Windows CI will verify the change after push.

Original implementation by Isaac; review, fixes, and two-phase implementation by Codex.

janniklasrose and others added 17 commits November 4, 2026 22:28
Squash of the commits on PR #4630 (declarative-import), adapted to the
current main: the terraform engine is gone, so bind runs on the only engine
and the terraform gating is dropped; bind actions are wired into the
per-resource deploy output, plan.CountActions and the deployment history
operation types.

Config shape at this point: targets.<name>.bind.<type>.<name>.id. The
following commits move it under the resource lifecycle block.

Co-authored-by: Shreyas Goenka <shreyas.goenka@databricks.com>
Co-authored-by: Isaac <no-reply@databricks.com>
A bind block whose resource is not in the resources section was only caught
at plan time, by looking the key up in the plan map. State-only keys are in
that map as delete entries, so removing a bound resource from config while
keeping its bind block passed validation and 'bundle deploy' deleted the
bound workspace resource. The agreed behaviour is that delete protection
applies for as long as the bind block remains.

Move the check into ValidateBindResources (initialize phase): it needs only
config, so 'bundle validate' now reports it, and a delete can no longer be
planned for a key that still has a bind block.

Co-authored-by: Isaac <no-reply@databricks.com>
When a bound resource (in state, bind block present) no longer exists in the
workspace, the in-state plan path mapped the 404 to a create. The deploy then
created a replacement under a new ID, and every following plan failed with
'already bound to a different ID' until the user edited the bind block.

A bind block pins the resource to one ID, so report the deletion and let the
user decide: remove the block to create a new resource.

Co-authored-by: Isaac <no-reply@databricks.com>
A bind block outside targets was dropped as an unknown field with only a
warning, and the deploy then created the resources it named instead of
binding the existing ones. Fail config loading with a pointer to
targets.<target>.bind instead.

Co-authored-by: Isaac <no-reply@databricks.com>
SelectTarget keeps the selected target as a typed snapshot and drops the
targets section from the config tree, so ${var.*} in a bind ID was never
interpolated: the plan tried to read a job with the literal ID
'${var.job_id}'. The generated schema already advertises the variable
pattern for this field.

Add a mutator that resolves bundle, workspace and variable references in
the target's bind IDs after the regular variable resolution, sharing the
${var.x} shorthand rewrite with it.

Co-authored-by: Isaac <no-reply@databricks.com>
- Scope the state ID collision check to the bind's own resource type: IDs
  are only unique per type, so a job and an experiment may share one.
- Resolve ${resources.<key>.id} references to a resource being bound from
  the bind block instead of deferring them to after apply; the ID is known.
- Reuse the remote state read at plan time in Bind, so dependents such as
  permissions no longer trigger a second read of the bound resource.
- Reword the persistent recreate guard for resources already in state: they
  are bound, not being bound, and 'make this a bind-only operation' does not
  apply. Drop the trailing newline from the error text.
- Mirror the in-state DoUpdate check in first-time bind planning so a
  resource without DoUpdate fails at plan time, not at apply time.
- Return a status from handleBindPlan instead of reading the shared error
  flag, which is racy under parallel planning.

Co-authored-by: Isaac <no-reply@databricks.com>
Bind is state-less: nothing records that a resource was just unbound, so a
bind block still in config re-adopts it on the next deploy. Say so when
'bundle deployment unbind' runs for a key that has a bind block in the
selected target.

The new pure-bind test also pins the re-bind round trip itself, the pure
'bind' action (the first deploy of a job is always a bind_and_update because
the bundle sets deployment metadata on it), and the single remote read of a
pure bind.

Co-authored-by: Isaac <no-reply@databricks.com>
The command only converts an existing terraform state into a direct state
now that the terraform engine is gone; it no longer plans anything, and
'bundle deploy' already migrates automatically with bind blocks present.
Rejecting bind blocks here only forced users to remove and re-add them.

Also note at the remote-sync call site why it plans without bind blocks.

Co-authored-by: Isaac <no-reply@databricks.com>
- int-id: an unquoted (integer) ID, as written in the design doc, binds.
- dev-mode: development mode transforms (rename, paused schedule, tags)
  apply to the adopted resource and are visible in the plan.
- block-removed: removing the bind block is the opt-out; the same immutable
  change then plans a recreate.
- rebind-different-id: a bind block for a resource already in state must
  carry the state ID.

Co-authored-by: Isaac <no-reply@databricks.com>
Spell out in the schema descriptions what a bind block does on the first
deploy (adopt, and update if the config differs, including target mode
transforms), what it guards while it remains (delete, recreate), and what
it does not (bundle destroy; no marker in state). The regenerated schema
also picks up main's current variable pattern for the bind definitions.

Co-authored-by: Isaac <no-reply@databricks.com>
…inter

Co-authored-by: Isaac <no-reply@databricks.com>
Bind becomes a lifecycle setting of the resource it adopts:

    resources:
      jobs:
        my_job:
          lifecycle:
            bind:
              id: "12345"

with per-target IDs set through the usual target override of the resource.
This replaces the target-level 'bind' block (design decision DD2 reversed).

The block now lives on the resource, so a whole class of misplacements
cannot happen: a bind for an undefined resource, a root-level or target-level
misplacement that silently created a duplicate, and a stale block whose
resource was removed. Variable references, diagnostic locations and target
overrides come from the regular config pipeline, which removes the dedicated
resolver and validator and the typed target snapshot they worked around.
CalculatePlan derives the bind IDs from the config root again.

Semantics follow prevent_destroy: the guard against recreating the bound
resource holds while the block is in config; removing the resource removes
the block with it and the deploy deletes the resource, which the
removed-from-config test pins. Duplicate-ID detection is now scoped per
resource type, matching the state collision check.

Tests: configs moved to the new shape; orphaned-bind, invalid-resource-type,
bind-permissions and top-level-bind are gone (not expressible); new
target-override test; errors now point at resources.<type>.<name>.lifecycle.bind.id
with file locations.

Co-authored-by: Isaac <no-reply@databricks.com>
Co-authored-by: Isaac <no-reply@databricks.com>
… test isolation

- Regenerate the PyDABs models: Lifecycle gains bind (validate-generated).
- List lifecycle.bind as a non-state field for the resources whose state keeps
  a lifecycle sub-struct (apps, clusters, sql_warehouses, job_runs), like
  prevent_destroy and depends_on (TestInputSubset).
- Give every deploying bind test a per-run bundle name. The deployment-history
  variants and the OS runners run concurrently against one workspace, so a
  fixed name shared the root path and failed with 'Failed to acquire
  deployment lock' or with the other variant's state.
- bind-and-resize: create the cluster with the instance pool only; the cloud
  API rejects node_type_id together with instance_pool_id.
- dev-mode: assert only the planned new values; a real workspace reports
  schedule.pause_status: UNPAUSED where the test server omits it.

Co-authored-by: Isaac <no-reply@databricks.com>
Co-authored-by: Isaac <no-reply@databricks.com>
Git Bash on Windows rewrites a leading-slash argument as a Windows path
('C:/Program Files/Git/old/storage/path'), so update_file.py did not find the
value and the test failed on every Windows cloud runner. Match the path
without its leading slash instead.

Co-authored-by: Isaac <no-reply@databricks.com>
data_quality_monitors and materialization_sets pick up lifecycle.bind in the
reference schema, the required-field validation and the PyDABs models.

Co-authored-by: Isaac <no-reply@databricks.com>
Co-authored-by: Isaac <no-reply@databricks.com>
@github-actions

github-actions Bot commented Nov 4, 2026 •

Copy link
Copy Markdown
Contributor

Commit: 1af55cb2c | Workflow run

Regression test report

Selected 20 changed tests (limit=20, 10 not selected)

40 tests: regression=40 unreleased=0 coverage=0 failing=0
test branch main (119ba53) latest (v1.24.0)
TestAccept/bundle/deploy/bind/basic/DMS= ✅ ❌ ❌
TestAccept/bundle/deploy/bind/basic/DMS=true ✅ ❌ ❌
TestAccept/bundle/deploy/bind/bind-and-resize/DMS= ✅ ❌ ❌
TestAccept/bundle/deploy/bind/bind-and-resize/DMS=true ✅ ❌ ❌
TestAccept/bundle/deploy/bind/bind-and-update/DMS= ✅ ❌ ❌
TestAccept/bundle/deploy/bind/bind-and-update/DMS=true ✅ ❌ ❌
TestAccept/bundle/deploy/bind/block-removed/DMS= ✅ ❌ ❌
TestAccept/bundle/deploy/bind/block-removed/DMS=true ✅ ❌ ❌
TestAccept/bundle/deploy/bind/delete-and-bind-conflict/DMS= ✅ ❌ ❌
TestAccept/bundle/deploy/bind/delete-and-bind-conflict/DMS=true ✅ ❌ ❌
TestAccept/bundle/deploy/bind/destroy-allowed/DMS= ✅ ❌ ❌
TestAccept/bundle/deploy/bind/destroy-allowed/DMS=true ✅ ❌ ❌
TestAccept/bundle/deploy/bind/dev-mode/DMS= ✅ ❌ ❌
TestAccept/bundle/deploy/bind/dev-mode/DMS=true ✅ ❌ ❌
TestAccept/bundle/deploy/bind/duplicate-bind-id-config/DMS= ✅ ❌ ❌
TestAccept/bundle/deploy/bind/duplicate-bind-id-config/DMS=true ✅ ❌ ❌
TestAccept/bundle/deploy/bind/duplicate-bind-id/DMS= ✅ ❌ ❌
TestAccept/bundle/deploy/bind/duplicate-bind-id/DMS=true ✅ ❌ ❌
TestAccept/bundle/deploy/bind/gone-in-state/DMS= ✅ ❌ ❌
TestAccept/bundle/deploy/bind/gone-in-state/DMS=true ✅ ❌ ❌
TestAccept/bundle/deploy/bind/id-collision-different-type/DMS= ✅ ❌ ❌
TestAccept/bundle/deploy/bind/id-collision-different-type/DMS=true ✅ ❌ ❌
TestAccept/bundle/deploy/bind/int-id/DMS= ✅ ❌ ❌
TestAccept/bundle/deploy/bind/int-id/DMS=true ✅ ❌ ❌
TestAccept/bundle/deploy/bind/missing-after-bind/DMS= ✅ ❌ ❌
TestAccept/bundle/deploy/bind/missing-after-bind/DMS=true ✅ ❌ ❌
TestAccept/bundle/deploy/bind/pure-bind/DMS= ✅ ❌ ❌
TestAccept/bundle/deploy/bind/pure-bind/DMS=true ✅ ❌ ❌
TestAccept/bundle/deploy/bind/rebind-different-id/DMS= ✅ ❌ ❌
TestAccept/bundle/deploy/bind/rebind-different-id/DMS=true ✅ ❌ ❌
TestAccept/bundle/deploy/bind/recorded-phases/DMS=true/MODE=authoritative ✅ ❌ ❌
TestAccept/bundle/deploy/bind/recorded-phases/DMS=true/MODE=shadow ✅ ❌ ❌
TestAccept/bundle/deploy/bind/recreate-blocked-in-state/DMS= ✅ ❌ ❌
TestAccept/bundle/deploy/bind/recreate-blocked-in-state/DMS=true ✅ ❌ ❌
TestAccept/bundle/deploy/bind/recreate-blocked/DMS= ✅ ❌ ❌
TestAccept/bundle/deploy/bind/recreate-blocked/DMS=true ✅ ❌ ❌
TestAccept/bundle/deploy/bind/ref-to-bound/DMS= ✅ ❌ ❌
TestAccept/bundle/deploy/bind/ref-to-bound/DMS=true ✅ ❌ ❌
TestAccept/bundle/deploy/bind/removed-from-config/DMS= ✅ ❌ ❌
TestAccept/bundle/deploy/bind/removed-from-config/DMS=true ✅ ❌ ❌
TestAccept/bundle/deploy/bind/basic/DMS=: branch ✅ | main (119ba53) ❌ | latest (v1.24.0) ❌

main (119ba53):

acceptance_test.go:1345: Diff:
        --- bundle/deploy/bind/basic/output.txt
        +++ /tmp/TestAcceptbundledeploybindbasicDMS=4032180828/002/output.txt
        @@ -1,20 +1,32 @@
        +Warning: unknown field: bind
        +  at resources.experiments.foo.lifecycle
        +  in databricks.yml:9:9
         
        +
         >>> [CLI] bundle plan
        -Bind:
        -  experiments.foo (id: [NEW_EXPERIMENT_ID])
        +Warning: unknown field: bind
        +  at resources.experiments.foo.lifecycle
        +  in databricks.yml:9:9
         
        -Deploy:
        -  No changes
        +create experiments.foo
         
        -Plan: 0 to add, 0 to change, 0 to delete, 1 unchanged, 1 to bind
        +Plan: 1 to add, 0 to change, 0 to delete, 0 unchanged
         
         >>> [CLI] bundle deploy --auto-approve
        +Warning: unknown field: bind
        +  at resources.experiments.foo.lifecycle
        +  in databricks.yml:9:9
        +
         Uploading bundle files to /Workspace/Users/[USERNAME]/.bundle/test-bind-basic-[UNIQUE_NAME]/default/files...
        -Bound experiments.foo
        +Created experiments.foo
         Files: 1 uploaded, 0 deleted
        -Resources: 0 created, 0 changed, 0 deleted, 1 unchanged, 1 bound
        +Resources: 1 created, 0 changed, 0 deleted, 0 unchanged
         
         >>> [CLI] bundle plan
        +Warning: unknown field: bind
        +  at resources.experiments.foo.lifecycle
        +  in databricks.yml:9:9
        +
         Plan: 0 to add, 0 to change, 0 to delete, 1 unchanged
         
         >>> print_state.py
        @@ -25,18 +27,13 @@
          "serial": 1,
          "state": {
           "resources.experiments.foo": {
        -   "__id__": "[NEW_EXPERIMENT_ID]",
        +   "__id__": "8793965207682212785",
            "state": {
             "name": "/Shared/test-bind-basic-[UNIQUE_NAME]"
            }
           }
          }
         }
        +contains error: '[NEW_EXPERIMENT_ID]' not found in the output.
         
        ->>> [CLI] bundle destroy --auto-approve
        -The following resources will be deleted:
        -  delete resources.experiments.foo
        -
        -All files and directories at the following location will be deleted: /Workspace/Users/[USERNAME]/.bundle/test-bind-basic-[UNIQUE_NAME]/default
        -
        -Destroy: 1 deleted
        +Exit code: 1

latest (v1.24.0):

acceptance_test.go:1345: Diff:
        --- bundle/deploy/bind/basic/output.txt
        +++ /tmp/TestAcceptbundledeploybindbasicDMS=1071453409/002/output.txt
        @@ -1,20 +1,32 @@
        +Warning: unknown field: bind
        +  at resources.experiments.foo.lifecycle
        +  in databricks.yml:9:9
         
        +
         >>> [CLI] bundle plan
        -Bind:
        -  experiments.foo (id: [NEW_EXPERIMENT_ID])
        +Warning: unknown field: bind
        +  at resources.experiments.foo.lifecycle
        +  in databricks.yml:9:9
         
        -Deploy:
        -  No changes
        +create experiments.foo
         
        -Plan: 0 to add, 0 to change, 0 to delete, 1 unchanged, 1 to bind
        +Plan: 1 to add, 0 to change, 0 to delete, 0 unchanged
         
         >>> [CLI] bundle deploy --auto-approve
        +Warning: unknown field: bind
        +  at resources.experiments.foo.lifecycle
        +  in databricks.yml:9:9
        +
         Uploading bundle files to /Workspace/Users/[USERNAME]/.bundle/test-bind-basic-[UNIQUE_NAME]/default/files...
        -Bound experiments.foo
        +Created experiments.foo
         Files: 1 uploaded, 0 deleted
        -Resources: 0 created, 0 changed, 0 deleted, 1 unchanged, 1 bound
        +Resources: 1 created, 0 changed, 0 deleted, 0 unchanged
         
         >>> [CLI] bundle plan
        +Warning: unknown field: bind
        +  at resources.experiments.foo.lifecycle
        +  in databricks.yml:9:9
        +
         Plan: 0 to add, 0 to change, 0 to delete, 1 unchanged
         
         >>> print_state.py
        @@ -25,18 +27,13 @@
          "serial": 1,
          "state": {
           "resources.experiments.foo": {
        -   "__id__": "[NEW_EXPERIMENT_ID]",
        +   "__id__": "8793965225558163839",
            "state": {
             "name": "/Shared/test-bind-basic-[UNIQUE_NAME]"
            }
           }
          }
         }
        +contains error: '[NEW_EXPERIMENT_ID]' not found in the output.
         
        ->>> [CLI] bundle destroy --auto-approve
        -The following resources will be deleted:
        -  delete resources.experiments.foo
        -
        -All files and directories at the following location will be deleted: /Workspace/Users/[USERNAME]/.bundle/test-bind-basic-[UNIQUE_NAME]/default
        -
        -Destroy: 1 deleted
        +Exit code: 1
TestAccept/bundle/deploy/bind/basic/DMS=true: branch ✅ | main (119ba53) ❌ | latest (v1.24.0) ❌

main (119ba53):

acceptance_test.go:1345: Diff:
        --- bundle/deploy/bind/basic/output.txt
        +++ /tmp/TestAcceptbundledeploybindbasicDMS=true2101161509/002/output.txt
        @@ -1,20 +1,32 @@
        +Warning: unknown field: bind
        +  at resources.experiments.foo.lifecycle
        +  in databricks.yml:9:9
         
        +
         >>> [CLI] bundle plan
        -Bind:
        -  experiments.foo (id: [NEW_EXPERIMENT_ID])
        +Warning: unknown field: bind
        +  at resources.experiments.foo.lifecycle
        +  in databricks.yml:9:9
         
        -Deploy:
        -  No changes
        +create experiments.foo
         
        -Plan: 0 to add, 0 to change, 0 to delete, 1 unchanged, 1 to bind
        +Plan: 1 to add, 0 to change, 0 to delete, 0 unchanged
         
         >>> [CLI] bundle deploy --auto-approve
        +Warning: unknown field: bind
        +  at resources.experiments.foo.lifecycle
        +  in databricks.yml:9:9
        +
         Uploading bundle files to /Workspace/Users/[USERNAME]/.bundle/test-bind-basic-[UNIQUE_NAME]/default/files...
        -Bound experiments.foo
        +Created experiments.foo
         Files: 1 uploaded, 0 deleted
        -Resources: 0 created, 0 changed, 0 deleted, 1 unchanged, 1 bound
        +Resources: 1 created, 0 changed, 0 deleted, 0 unchanged
         
         >>> [CLI] bundle plan
        +Warning: unknown field: bind
        +  at resources.experiments.foo.lifecycle
        +  in databricks.yml:9:9
        +
         Plan: 0 to add, 0 to change, 0 to delete, 1 unchanged
         
         >>> print_state.py
        @@ -25,18 +27,13 @@
          "serial": 1,
          "state": {
           "resources.experiments.foo": {
        -   "__id__": "[NEW_EXPERIMENT_ID]",
        +   "__id__": "8793965208353038830",
            "state": {
             "name": "/Shared/test-bind-basic-[UNIQUE_NAME]"
            }
           }
          }
         }
        +contains error: '[NEW_EXPERIMENT_ID]' not found in the output.
         
        ->>> [CLI] bundle destroy --auto-approve
        -The following resources will be deleted:
        -  delete resources.experiments.foo
        -
        -All files and directories at the following location will be deleted: /Workspace/Users/[USERNAME]/.bundle/test-bind-basic-[UNIQUE_NAME]/default
        -
        -Destroy: 1 deleted
        +Exit code: 1

latest (v1.24.0):

acceptance_test.go:1345: Diff:
        --- bundle/deploy/bind/basic/output.txt
        +++ /tmp/TestAcceptbundledeploybindbasicDMS=true2442341270/002/output.txt
        @@ -1,20 +1,32 @@
        +Warning: unknown field: bind
        +  at resources.experiments.foo.lifecycle
        +  in databricks.yml:9:9
         
        +
         >>> [CLI] bundle plan
        -Bind:
        -  experiments.foo (id: [NEW_EXPERIMENT_ID])
        +Warning: unknown field: bind
        +  at resources.experiments.foo.lifecycle
        +  in databricks.yml:9:9
         
        -Deploy:
        -  No changes
        +create experiments.foo
         
        -Plan: 0 to add, 0 to change, 0 to delete, 1 unchanged, 1 to bind
        +Plan: 1 to add, 0 to change, 0 to delete, 0 unchanged
         
         >>> [CLI] bundle deploy --auto-approve
        +Warning: unknown field: bind
        +  at resources.experiments.foo.lifecycle
        +  in databricks.yml:9:9
        +
         Uploading bundle files to /Workspace/Users/[USERNAME]/.bundle/test-bind-basic-[UNIQUE_NAME]/default/files...
        -Bound experiments.foo
        +Created experiments.foo
         Files: 1 uploaded, 0 deleted
        -Resources: 0 created, 0 changed, 0 deleted, 1 unchanged, 1 bound
        +Resources: 1 created, 0 changed, 0 deleted, 0 unchanged
         
         >>> [CLI] bundle plan
        +Warning: unknown field: bind
        +  at resources.experiments.foo.lifecycle
        +  in databricks.yml:9:9
        +
         Plan: 0 to add, 0 to change, 0 to delete, 1 unchanged
         
         >>> print_state.py
        @@ -25,18 +27,13 @@
          "serial": 1,
          "state": {
           "resources.experiments.foo": {
        -   "__id__": "[NEW_EXPERIMENT_ID]",
        +   "__id__": "8793965226780209161",
            "state": {
             "name": "/Shared/test-bind-basic-[UNIQUE_NAME]"
            }
           }
          }
         }
        +contains error: '[NEW_EXPERIMENT_ID]' not found in the output.
         
        ->>> [CLI] bundle destroy --auto-approve
        -The following resources will be deleted:
        -  delete resources.experiments.foo
        -
        -All files and directories at the following location will be deleted: /Workspace/Users/[USERNAME]/.bundle/test-bind-basic-[UNIQUE_NAME]/default
        -
        -Destroy: 1 deleted
        +Exit code: 1
TestAccept/bundle/deploy/bind/bind-and-resize/DMS=: branch ✅ | main (119ba53) ❌ | latest (v1.24.0) ❌

main (119ba53):

acceptance_test.go:1345: Diff:
        --- bundle/deploy/bind/bind-and-resize/output.txt
        +++ /tmp/TestAcceptbundledeploybindbind-and-resizeDMS=2205286524/002/output.txt
        @@ -1,43 +1,58 @@
        +Warning: unknown field: bind
        +  at resources.clusters.test_cluster.lifecycle
        +  in databricks.yml:22:9
         
        +Warning: unknown field: bind
        +  at resources.clusters.test_cluster.lifecycle
        +  in databricks.yml:22:9
        +
        +
         === Existing cluster has 2 workers; bundle configuration requests 3
         >>> [CLI] clusters get [CLUSTER_ID]
        +Warning: unknown field: bind
        +  at resources.clusters.test_cluster.lifecycle
        +  in databricks.yml:22:9
        +
         json.num_workers = 2;
         
         >>> [CLI] bundle plan
        -Bind:
        -  clusters.test_cluster (id: [CLUSTER_ID])
        +Warning: unknown field: bind
        +  at resources.clusters.test_cluster.lifecycle
        +  in databricks.yml:22:9
         
        -Deploy:
        -  resize clusters.test_cluster
        +create clusters.test_cluster
         
        -Plan: 0 to add, 1 to change, 0 to delete, 0 unchanged, 1 to bind
        +Plan: 1 to add, 0 to change, 0 to delete, 0 unchanged
         
         >>> [CLI] bundle deploy --auto-approve
        +Warning: unknown field: bind
        +  at resources.clusters.test_cluster.lifecycle
        +  in databricks.yml:22:9
        +
         Uploading bundle files to /Workspace/Users/[USERNAME]/.bundle/[UNIQUE_NAME]/files...
        -Bound clusters.test_cluster
        -Resized clusters.test_cluster
        +Created clusters.test_cluster
         Files: 2 uploaded, 0 deleted
        -Resources: 0 created, 1 changed, 0 deleted, 0 unchanged, 1 bound
        +Resources: 1 created, 0 changed, 0 deleted, 0 unchanged
         
         >>> print_requests.py //clusters/resize //clusters/edit
        -{
        -  "method": "POST",
        -  "path": "/api/2.1/clusters/resize",
        -  "body": {
        -    "cluster_id": "[CLUSTER_ID]",
        -    "num_workers": 3
        -  }
        -}
         
         === Cluster should have new num_workers
         
         >>> [CLI] clusters get [CLUSTER_ID]
        +Warning: unknown field: bind
        +  at resources.clusters.test_cluster.lifecycle
        +  in databricks.yml:22:9
        +
         {
           "cluster_name": "test-cluster-[UNIQUE_NAME]",
        -  "num_workers": 3
        +  "num_workers": 2
         }
         
         >>> [CLI] bundle destroy --auto-approve
        +Warning: unknown field: bind
        +  at resources.clusters.test_cluster.lifecycle
        +  in databricks.yml:22:9
        +
         The following resources will be deleted:
           delete resources.clusters.test_cluster
         
        
    acceptance_test.go:1123: 
        LOG.create.json: {
        LOG.create.json:   "node_type_id": "i3.xlarge",
        LOG.create.json:   "aws_attributes": {
        LOG.create.json:     "availability": "ON_DEMAND",
        LOG.create.json:     "zone_id": "auto"
        LOG.create.json:   },
        LOG.create.json:   "cluster_name": "test-cluster-efpeepagbjeyxhdmeh225a2sfi",
        LOG.create.json:   "spark_version": "13.3.x-snapshot-scala2.12",
        LOG.create.json:   "num_workers": 2,
        LOG.create.json:   "autotermination_minutes": 60
        LOG.create.json: }
    acceptance_test.go:1123: 
        LOG.wait: {
        LOG.wait:   "autotermination_minutes": 60,
        LOG.wait:   "aws_attributes": {
        LOG.wait:     "availability": "ON_DEMAND",
        LOG.wait:     "zone_id": "auto"
        LOG.wait:   },
        LOG.wait:   "cluster_id": "7a0a70c6-0ad1-5c92-7a0a-70c60ad15dd1",
        LOG.wait:   "cluster_name": "test-cluster-efpeepagbjeyxhdmeh225a2sfi",
        LOG.wait:   "driver_node_type_id": "i3.xlarge",
        LOG.wait:   "enable_elastic_disk": false,
        LOG.wait:   "node_type_id": "i3.xlarge",
        LOG.wait:   "num_workers": 2,
        LOG.wait:   "spark_version": "13.3.x-snapshot-scala2.12",
        LOG.wait:   "state": "RUNNING"
        LOG.wait: }

latest (v1.24.0):

acceptance_test.go:1345: Diff:
        --- bundle/deploy/bind/bind-and-resize/output.txt
        +++ /tmp/TestAcceptbundledeploybindbind-and-resizeDMS=4118515422/002/output.txt
        @@ -1,43 +1,58 @@
        +Warning: unknown field: bind
        +  at resources.clusters.test_cluster.lifecycle
        +  in databricks.yml:22:9
         
        +Warning: unknown field: bind
        +  at resources.clusters.test_cluster.lifecycle
        +  in databricks.yml:22:9
        +
        +
         === Existing cluster has 2 workers; bundle configuration requests 3
         >>> [CLI] clusters get [CLUSTER_ID]
        +Warning: unknown field: bind
        +  at resources.clusters.test_cluster.lifecycle
        +  in databricks.yml:22:9
        +
         json.num_workers = 2;
         
         >>> [CLI] bundle plan
        -Bind:
        -  clusters.test_cluster (id: [CLUSTER_ID])
        +Warning: unknown field: bind
        +  at resources.clusters.test_cluster.lifecycle
        +  in databricks.yml:22:9
         
        -Deploy:
        -  resize clusters.test_cluster
        +create clusters.test_cluster
         
        -Plan: 0 to add, 1 to change, 0 to delete, 0 unchanged, 1 to bind
        +Plan: 1 to add, 0 to change, 0 to delete, 0 unchanged
         
         >>> [CLI] bundle deploy --auto-approve
        +Warning: unknown field: bind
        +  at resources.clusters.test_cluster.lifecycle
        +  in databricks.yml:22:9
        +
         Uploading bundle files to /Workspace/Users/[USERNAME]/.bundle/[UNIQUE_NAME]/files...
        -Bound clusters.test_cluster
        -Resized clusters.test_cluster
        +Created clusters.test_cluster
         Files: 2 uploaded, 0 deleted
        -Resources: 0 created, 1 changed, 0 deleted, 0 unchanged, 1 bound
        +Resources: 1 created, 0 changed, 0 deleted, 0 unchanged
         
         >>> print_requests.py //clusters/resize //clusters/edit
        -{
        -  "method": "POST",
        -  "path": "/api/2.1/clusters/resize",
        -  "body": {
        -    "cluster_id": "[CLUSTER_ID]",
        -    "num_workers": 3
        -  }
        -}
         
         === Cluster should have new num_workers
         
         >>> [CLI] clusters get [CLUSTER_ID]
        +Warning: unknown field: bind
        +  at resources.clusters.test_cluster.lifecycle
        +  in databricks.yml:22:9
        +
         {
           "cluster_name": "test-cluster-[UNIQUE_NAME]",
        -  "num_workers": 3
        +  "num_workers": 2
         }
         
         >>> [CLI] bundle destroy --auto-approve
        +Warning: unknown field: bind
        +  at resources.clusters.test_cluster.lifecycle
        +  in databricks.yml:22:9
        +
         The following resources will be deleted:
           delete resources.clusters.test_cluster
         
        
    acceptance_test.go:1123: 
        LOG.create.json: {
        LOG.create.json:   "node_type_id": "i3.xlarge",
        LOG.create.json:   "aws_attributes": {
        LOG.create.json:     "availability": "ON_DEMAND",
        LOG.create.json:     "zone_id": "auto"
        LOG.create.json:   },
        LOG.create.json:   "cluster_name": "test-cluster-6ajkcovupfbjpbs2shv2l3z55q",
        LOG.create.json:   "spark_version": "13.3.x-snapshot-scala2.12",
        LOG.create.json:   "num_workers": 2,
        LOG.create.json:   "autotermination_minutes": 60
        LOG.create.json: }
    acceptance_test.go:1123: 
        LOG.wait: {
        LOG.wait:   "autotermination_minutes": 60,
        LOG.wait:   "aws_attributes": {
        LOG.wait:     "availability": "ON_DEMAND",
        LOG.wait:     "zone_id": "auto"
        LOG.wait:   },
        LOG.wait:   "cluster_id": "7a0a70ca-b20c-5a5e-7a0a-70cab20c5b7d",
        LOG.wait:   "cluster_name": "test-cluster-6ajkcovupfbjpbs2shv2l3z55q",
        LOG.wait:   "driver_node_type_id": "i3.xlarge",
        LOG.wait:   "enable_elastic_disk": false,
        LOG.wait:   "node_type_id": "i3.xlarge",
        LOG.wait:   "num_workers": 2,
        LOG.wait:   "spark_version": "13.3.x-snapshot-scala2.12",
        LOG.wait:   "state": "RUNNING"
        LOG.wait: }
TestAccept/bundle/deploy/bind/bind-and-resize/DMS=true: branch ✅ | main (119ba53) ❌ | latest (v1.24.0) ❌

main (119ba53):

acceptance_test.go:1345: Diff:
        --- bundle/deploy/bind/bind-and-resize/output.txt
        +++ /tmp/TestAcceptbundledeploybindbind-and-resizeDMS=true2939494788/002/output.txt
        @@ -1,43 +1,58 @@
        +Warning: unknown field: bind
        +  at resources.clusters.test_cluster.lifecycle
        +  in databricks.yml:22:9
         
        +Warning: unknown field: bind
        +  at resources.clusters.test_cluster.lifecycle
        +  in databricks.yml:22:9
        +
        +
         === Existing cluster has 2 workers; bundle configuration requests 3
         >>> [CLI] clusters get [CLUSTER_ID]
        +Warning: unknown field: bind
        +  at resources.clusters.test_cluster.lifecycle
        +  in databricks.yml:22:9
        +
         json.num_workers = 2;
         
         >>> [CLI] bundle plan
        -Bind:
        -  clusters.test_cluster (id: [CLUSTER_ID])
        +Warning: unknown field: bind
        +  at resources.clusters.test_cluster.lifecycle
        +  in databricks.yml:22:9
         
        -Deploy:
        -  resize clusters.test_cluster
        +create clusters.test_cluster
         
        -Plan: 0 to add, 1 to change, 0 to delete, 0 unchanged, 1 to bind
        +Plan: 1 to add, 0 to change, 0 to delete, 0 unchanged
         
         >>> [CLI] bundle deploy --auto-approve
        +Warning: unknown field: bind
        +  at resources.clusters.test_cluster.lifecycle
        +  in databricks.yml:22:9
        +
         Uploading bundle files to /Workspace/Users/[USERNAME]/.bundle/[UNIQUE_NAME]/files...
        -Bound clusters.test_cluster
        -Resized clusters.test_cluster
        +Created clusters.test_cluster
         Files: 2 uploaded, 0 deleted
        -Resources: 0 created, 1 changed, 0 deleted, 0 unchanged, 1 bound
        +Resources: 1 created, 0 changed, 0 deleted, 0 unchanged
         
         >>> print_requests.py //clusters/resize //clusters/edit
        -{
        -  "method": "POST",
        -  "path": "/api/2.1/clusters/resize",
        -  "body": {
        -    "cluster_id": "[CLUSTER_ID]",
        -    "num_workers": 3
        -  }
        -}
         
         === Cluster should have new num_workers
         
         >>> [CLI] clusters get [CLUSTER_ID]
        +Warning: unknown field: bind
        +  at resources.clusters.test_cluster.lifecycle
        +  in databricks.yml:22:9
        +
         {
           "cluster_name": "test-cluster-[UNIQUE_NAME]",
        -  "num_workers": 3
        +  "num_workers": 2
         }
         
         >>> [CLI] bundle destroy --auto-approve
        +Warning: unknown field: bind
        +  at resources.clusters.test_cluster.lifecycle
        +  in databricks.yml:22:9
        +
         The following resources will be deleted:
           delete resources.clusters.test_cluster
         
        
    acceptance_test.go:1123: 
        LOG.create.json: {
        LOG.create.json:   "node_type_id": "i3.xlarge",
        LOG.create.json:   "aws_attributes": {
        LOG.create.json:     "availability": "ON_DEMAND",
        LOG.create.json:     "zone_id": "auto"
        LOG.create.json:   },
        LOG.create.json:   "cluster_name": "test-cluster-f75jns645fcdrjf6cllvlxdlay",
        LOG.create.json:   "spark_version": "13.3.x-snapshot-scala2.12",
        LOG.create.json:   "num_workers": 2,
        LOG.create.json:   "autotermination_minutes": 60
        LOG.create.json: }
    acceptance_test.go:1123: 
        LOG.wait: {
        LOG.wait:   "autotermination_minutes": 60,
        LOG.wait:   "aws_attributes": {
        LOG.wait:     "availability": "ON_DEMAND",
        LOG.wait:     "zone_id": "auto"
        LOG.wait:   },
        LOG.wait:   "cluster_id": "7a0a70c6-2acf-71ff-7a0a-70c62acf735b",
        LOG.wait:   "cluster_name": "test-cluster-f75jns645fcdrjf6cllvlxdlay",
        LOG.wait:   "driver_node_type_id": "i3.xlarge",
        LOG.wait:   "enable_elastic_disk": false,
        LOG.wait:   "node_type_id": "i3.xlarge",
        LOG.wait:   "num_workers": 2,
        LOG.wait:   "spark_version": "13.3.x-snapshot-scala2.12",
        LOG.wait:   "state": "RUNNING"
        LOG.wait: }

latest (v1.24.0):

acceptance_test.go:1345: Diff:
        --- bundle/deploy/bind/bind-and-resize/output.txt
        +++ /tmp/TestAcceptbundledeploybindbind-and-resizeDMS=true1363548146/002/output.txt
        @@ -1,43 +1,58 @@
        +Warning: unknown field: bind
        +  at resources.clusters.test_cluster.lifecycle
        +  in databricks.yml:22:9
         
        +Warning: unknown field: bind
        +  at resources.clusters.test_cluster.lifecycle
        +  in databricks.yml:22:9
        +
        +
         === Existing cluster has 2 workers; bundle configuration requests 3
         >>> [CLI] clusters get [CLUSTER_ID]
        +Warning: unknown field: bind
        +  at resources.clusters.test_cluster.lifecycle
        +  in databricks.yml:22:9
        +
         json.num_workers = 2;
         
         >>> [CLI] bundle plan
        -Bind:
        -  clusters.test_cluster (id: [CLUSTER_ID])
        +Warning: unknown field: bind
        +  at resources.clusters.test_cluster.lifecycle
        +  in databricks.yml:22:9
         
        -Deploy:
        -  resize clusters.test_cluster
        +create clusters.test_cluster
         
        -Plan: 0 to add, 1 to change, 0 to delete, 0 unchanged, 1 to bind
        +Plan: 1 to add, 0 to change, 0 to delete, 0 unchanged
         
         >>> [CLI] bundle deploy --auto-approve
        +Warning: unknown field: bind
        +  at resources.clusters.test_cluster.lifecycle
        +  in databricks.yml:22:9
        +
         Uploading bundle files to /Workspace/Users/[USERNAME]/.bundle/[UNIQUE_NAME]/files...
        -Bound clusters.test_cluster
        -Resized clusters.test_cluster
        +Created clusters.test_cluster
         Files: 2 uploaded, 0 deleted
        -Resources: 0 created, 1 changed, 0 deleted, 0 unchanged, 1 bound
        +Resources: 1 created, 0 changed, 0 deleted, 0 unchanged
         
         >>> print_requests.py //clusters/resize //clusters/edit
        -{
        -  "method": "POST",
        -  "path": "/api/2.1/clusters/resize",
        -  "body": {
        -    "cluster_id": "[CLUSTER_ID]",
        -    "num_workers": 3
        -  }
        -}
         
         === Cluster should have new num_workers
         
         >>> [CLI] clusters get [CLUSTER_ID]
        +Warning: unknown field: bind
        +  at resources.clusters.test_cluster.lifecycle
        +  in databricks.yml:22:9
        +
         {
           "cluster_name": "test-cluster-[UNIQUE_NAME]",
        -  "num_workers": 3
        +  "num_workers": 2
         }
         
         >>> [CLI] bundle destroy --auto-approve
        +Warning: unknown field: bind
        +  at resources.clusters.test_cluster.lifecycle
        +  in databricks.yml:22:9
        +
         The following resources will be deleted:
           delete resources.clusters.test_cluster
         
        
    acceptance_test.go:1123: 
        LOG.create.json: {
        LOG.create.json:   "node_type_id": "i3.xlarge",
        LOG.create.json:   "aws_attributes": {
        LOG.create.json:     "availability": "ON_DEMAND",
        LOG.create.json:     "zone_id": "auto"
        LOG.create.json:   },
        LOG.create.json:   "cluster_name": "test-cluster-wrcqc7xyxjc2xoy2ijpyyd4dfu",
        LOG.create.json:   "spark_version": "13.3.x-snapshot-scala2.12",
        LOG.create.json:   "num_workers": 2,
        LOG.create.json:   "autotermination_minutes": 60
        LOG.create.json: }
    acceptance_test.go:1123: 
        LOG.wait: {
        LOG.wait:   "autotermination_minutes": 60,
        LOG.wait:   "aws_attributes": {
        LOG.wait:     "availability": "ON_DEMAND",
        LOG.wait:     "zone_id": "auto"
        LOG.wait:   },
        LOG.wait:   "cluster_id": "7a0a70ca-c3dc-5a98-7a0a-70cac3dc5bdb",
        LOG.wait:   "cluster_name": "test-cluster-wrcqc7xyxjc2xoy2ijpyyd4dfu",
        LOG.wait:   "driver_node_type_id": "i3.xlarge",
        LOG.wait:   "enable_elastic_disk": false,
        LOG.wait:   "node_type_id": "i3.xlarge",
        LOG.wait:   "num_workers": 2,
        LOG.wait:   "spark_version": "13.3.x-snapshot-scala2.12",
        LOG.wait:   "state": "RUNNING"
        LOG.wait: }
FAIL
TestAccept/bundle/deploy/bind/bind-and-update/DMS=: branch ✅ | main (119ba53) ❌ | latest (v1.24.0) ❌

main (119ba53):

acceptance_test.go:1345: Diff:
        --- bundle/deploy/bind/bind-and-update/output.txt
        +++ /tmp/TestAcceptbundledeploybindbind-and-updateDMS=2840474634/002/output.txt
        @@ -1,38 +1,65 @@
        +Warning: unknown field: bind
        +  at resources.jobs.foo.lifecycle
        +  in databricks.yml:18:9
         
        +
         >>> [CLI] bundle plan
        -Bind:
        -  jobs.foo (id: [NEW_JOB_ID])
        +Warning: unknown field: bind
        +  at resources.jobs.foo.lifecycle
        +  in databricks.yml:18:9
         
        -Deploy:
        -  update jobs.foo
        +create jobs.foo
         
        -Plan: 0 to add, 1 to change, 0 to delete, 0 unchanged, 1 to bind
        +Plan: 1 to add, 0 to change, 0 to delete, 0 unchanged
         
         >>> [CLI] bundle deploy --auto-approve
        +Warning: unknown field: bind
        +  at resources.jobs.foo.lifecycle
        +  in databricks.yml:18:9
        +
         Uploading bundle files to /Workspace/Users/[USERNAME]/.bundle/test-bind-update-[UNIQUE_NAME]/default/files...
        -Bound jobs.foo
        -Updated jobs.foo
        +Created jobs.foo
         Files: 2 uploaded, 0 deleted
        -Resources: 0 created, 1 changed, 0 deleted, 0 unchanged, 1 bound
        +Resources: 1 created, 0 changed, 0 deleted, 0 unchanged
         
         >>> [CLI] jobs get [NEW_JOB_ID]
        -updated-job-name
        +Warning: unknown field: bind
        +  at resources.jobs.foo.lifecycle
        +  in databricks.yml:18:9
         
        +original-job-name
        +
         >>> [CLI] bundle plan
        +Warning: unknown field: bind
        +  at resources.jobs.foo.lifecycle
        +  in databricks.yml:18:9
        +
         update jobs.foo
         
         Plan: 0 to add, 1 to change, 0 to delete, 0 unchanged
         
         >>> [CLI] bundle deploy --auto-approve
        +Warning: unknown field: bind
        +  at resources.jobs.foo.lifecycle
        +  in databricks.yml:18:9
        +
         Uploading bundle files to /Workspace/Users/[USERNAME]/.bundle/test-bind-update-[UNIQUE_NAME]/default/files...
         Updated jobs.foo
         Files: 1 uploaded, 0 deleted
         Resources: 0 created, 1 changed, 0 deleted, 0 unchanged
         
         >>> [CLI] jobs get [NEW_JOB_ID]
        -second-update-name
        +Warning: unknown field: bind
        +  at resources.jobs.foo.lifecycle
        +  in databricks.yml:18:9
         
        +original-job-name
        +
         >>> [CLI] bundle destroy --auto-approve
        +Warning: unknown field: bind
        +  at resources.jobs.foo.lifecycle
        +  in databricks.yml:18:9
        +
         The following resources will be deleted:
           delete resources.jobs.foo

latest (v1.24.0): same output as main (119ba53)

TestAccept/bundle/deploy/bind/bind-and-update/DMS=true: branch ✅ | main (119ba53) ❌ | latest (v1.24.0) ❌

main (119ba53):

acceptance_test.go:1345: Diff:
        --- bundle/deploy/bind/bind-and-update/output.txt
        +++ /tmp/TestAcceptbundledeploybindbind-and-updateDMS=true171449979/002/output.txt
        @@ -1,38 +1,65 @@
        +Warning: unknown field: bind
        +  at resources.jobs.foo.lifecycle
        +  in databricks.yml:18:9
         
        +
         >>> [CLI] bundle plan
        -Bind:
        -  jobs.foo (id: [NEW_JOB_ID])
        +Warning: unknown field: bind
        +  at resources.jobs.foo.lifecycle
        +  in databricks.yml:18:9
         
        -Deploy:
        -  update jobs.foo
        +create jobs.foo
         
        -Plan: 0 to add, 1 to change, 0 to delete, 0 unchanged, 1 to bind
        +Plan: 1 to add, 0 to change, 0 to delete, 0 unchanged
         
         >>> [CLI] bundle deploy --auto-approve
        +Warning: unknown field: bind
        +  at resources.jobs.foo.lifecycle
        +  in databricks.yml:18:9
        +
         Uploading bundle files to /Workspace/Users/[USERNAME]/.bundle/test-bind-update-[UNIQUE_NAME]/default/files...
        -Bound jobs.foo
        -Updated jobs.foo
        +Created jobs.foo
         Files: 2 uploaded, 0 deleted
        -Resources: 0 created, 1 changed, 0 deleted, 0 unchanged, 1 bound
        +Resources: 1 created, 0 changed, 0 deleted, 0 unchanged
         
         >>> [CLI] jobs get [NEW_JOB_ID]
        -updated-job-name
        +Warning: unknown field: bind
        +  at resources.jobs.foo.lifecycle
        +  in databricks.yml:18:9
         
        +original-job-name
        +
         >>> [CLI] bundle plan
        +Warning: unknown field: bind
        +  at resources.jobs.foo.lifecycle
        +  in databricks.yml:18:9
        +
         update jobs.foo
         
         Plan: 0 to add, 1 to change, 0 to delete, 0 unchanged
         
         >>> [CLI] bundle deploy --auto-approve
        +Warning: unknown field: bind
        +  at resources.jobs.foo.lifecycle
        +  in databricks.yml:18:9
        +
         Uploading bundle files to /Workspace/Users/[USERNAME]/.bundle/test-bind-update-[UNIQUE_NAME]/default/files...
         Updated jobs.foo
         Files: 1 uploaded, 0 deleted
         Resources: 0 created, 1 changed, 0 deleted, 0 unchanged
         
         >>> [CLI] jobs get [NEW_JOB_ID]
        -second-update-name
        +Warning: unknown field: bind
        +  at resources.jobs.foo.lifecycle
        +  in databricks.yml:18:9
         
        +original-job-name
        +
         >>> [CLI] bundle destroy --auto-approve
        +Warning: unknown field: bind
        +  at resources.jobs.foo.lifecycle
        +  in databricks.yml:18:9
        +
         The following resources will be deleted:
           delete resources.jobs.foo
         
        
FAIL

latest (v1.24.0):

acceptance_test.go:1345: Diff:
        --- bundle/deploy/bind/bind-and-update/output.txt
        +++ /tmp/TestAcceptbundledeploybindbind-and-updateDMS=true2685161777/002/output.txt
        @@ -1,38 +1,65 @@
        +Warning: unknown field: bind
        +  at resources.jobs.foo.lifecycle
        +  in databricks.yml:18:9
         
        +
         >>> [CLI] bundle plan
        -Bind:
        -  jobs.foo (id: [NEW_JOB_ID])
        +Warning: unknown field: bind
        +  at resources.jobs.foo.lifecycle
        +  in databricks.yml:18:9
         
        -Deploy:
        -  update jobs.foo
        +create jobs.foo
         
        -Plan: 0 to add, 1 to change, 0 to delete, 0 unchanged, 1 to bind
        +Plan: 1 to add, 0 to change, 0 to delete, 0 unchanged
         
         >>> [CLI] bundle deploy --auto-approve
        +Warning: unknown field: bind
        +  at resources.jobs.foo.lifecycle
        +  in databricks.yml:18:9
        +
         Uploading bundle files to /Workspace/Users/[USERNAME]/.bundle/test-bind-update-[UNIQUE_NAME]/default/files...
        -Bound jobs.foo
        -Updated jobs.foo
        +Created jobs.foo
         Files: 2 uploaded, 0 deleted
        -Resources: 0 created, 1 changed, 0 deleted, 0 unchanged, 1 bound
        +Resources: 1 created, 0 changed, 0 deleted, 0 unchanged
         
         >>> [CLI] jobs get [NEW_JOB_ID]
        -updated-job-name
        +Warning: unknown field: bind
        +  at resources.jobs.foo.lifecycle
        +  in databricks.yml:18:9
         
        +original-job-name
        +
         >>> [CLI] bundle plan
        +Warning: unknown field: bind
        +  at resources.jobs.foo.lifecycle
        +  in databricks.yml:18:9
        +
         update jobs.foo
         
         Plan: 0 to add, 1 to change, 0 to delete, 0 unchanged
         
         >>> [CLI] bundle deploy --auto-approve
        +Warning: unknown field: bind
        +  at resources.jobs.foo.lifecycle
        +  in databricks.yml:18:9
        +
         Uploading bundle files to /Workspace/Users/[USERNAME]/.bundle/test-bind-update-[UNIQUE_NAME]/default/files...
         Updated jobs.foo
         Files: 1 uploaded, 0 deleted
         Resources: 0 created, 1 changed, 0 deleted, 0 unchanged
         
         >>> [CLI] jobs get [NEW_JOB_ID]
        -second-update-name
        +Warning: unknown field: bind
        +  at resources.jobs.foo.lifecycle
        +  in databricks.yml:18:9
         
        +original-job-name
        +
         >>> [CLI] bundle destroy --auto-approve
        +Warning: unknown field: bind
        +  at resources.jobs.foo.lifecycle
        +  in databricks.yml:18:9
        +
         The following resources will be deleted:
           delete resources.jobs.foo
TestAccept/bundle/deploy/bind/block-removed/DMS=: branch ✅ | main (119ba53) ❌ | latest (v1.24.0) ❌

main (119ba53):

acceptance_test.go:1345: Diff:
        --- bundle/deploy/bind/block-removed/output.txt
        +++ /tmp/TestAcceptbundledeploybindblock-removedDMS=2354600246/002/output.txt
        @@ -1,10 +1,17 @@
        +Warning: unknown field: bind
        +  at resources.pipelines.foo.lifecycle
        +  in databricks.yml:13:9
         
        +
         >>> [CLI] bundle deploy --auto-approve
        +Warning: unknown field: bind
        +  at resources.pipelines.foo.lifecycle
        +  in databricks.yml:13:9
        +
         Uploading bundle files to /Workspace/Users/[USERNAME]/.bundle/test-bind-block-removed-[UNIQUE_NAME]/default/files...
        -Bound pipelines.foo
        -Updated pipelines.foo
        +Created pipelines.foo
         Files: 3 uploaded, 0 deleted
        -Resources: 0 created, 1 changed, 0 deleted, 0 unchanged, 1 bound
        +Resources: 1 created, 0 changed, 0 deleted, 0 unchanged
         
         === Removing only the bind block is a no-op
         >>> [CLI] bundle plan
        @@ -16,22 +19,7 @@
         Resources: 0 created, 0 changed, 0 deleted, 1 unchanged
         
         >>> print_state.py
        -json.state.resources.pipelines.foo.__id__ = "[NEW_PIPELINE_ID]";
        +json.state.resources.pipelines.foo.__id__ = "[UUID]";
        +contains error: '[NEW_PIPELINE_ID]' not found in the output.
         
        -=== Without the bind block, a storage change plans a recreate
        ->>> [CLI] bundle plan
        -recreate pipelines.foo
        -
        -Plan: 1 to add, 0 to change, 1 to delete, 0 unchanged
        -
        ->>> [CLI] bundle destroy --auto-approve
        -The following resources will be deleted:
        -  delete resources.pipelines.foo
        -
        -This action will result in the deletion of the following Lakeflow Spark Declarative Pipelines along with the
        -Streaming Tables (STs) and Materialized Views (MVs) managed by them. Set 'cascade_on_destroy: false' on a pipeline to retain datasets on pipeline deletion:
        -  delete resources.pipelines.foo
        -
        -All files and directories at the following location will be deleted: /Workspace/Users/[USERNAME]/.bundle/test-bind-block-removed-[UNIQUE_NAME]/default
        -
        -Destroy: 1 deleted
        +Exit code: 1

latest (v1.24.0): same output as main (119ba53)

TestAccept/bundle/deploy/bind/block-removed/DMS=true: branch ✅ | main (119ba53) ❌ | latest (v1.24.0) ❌

main (119ba53):

acceptance_test.go:1345: Diff:
        --- bundle/deploy/bind/block-removed/output.txt
        +++ /tmp/TestAcceptbundledeploybindblock-removedDMS=true1771703146/002/output.txt
        @@ -1,10 +1,17 @@
        +Warning: unknown field: bind
        +  at resources.pipelines.foo.lifecycle
        +  in databricks.yml:13:9
         
        +
         >>> [CLI] bundle deploy --auto-approve
        +Warning: unknown field: bind
        +  at resources.pipelines.foo.lifecycle
        +  in databricks.yml:13:9
        +
         Uploading bundle files to /Workspace/Users/[USERNAME]/.bundle/test-bind-block-removed-[UNIQUE_NAME]/default/files...
        -Bound pipelines.foo
        -Updated pipelines.foo
        +Created pipelines.foo
         Files: 3 uploaded, 0 deleted
        -Resources: 0 created, 1 changed, 0 deleted, 0 unchanged, 1 bound
        +Resources: 1 created, 0 changed, 0 deleted, 0 unchanged
         
         === Removing only the bind block is a no-op
         >>> [CLI] bundle plan
        @@ -16,22 +19,7 @@
         Resources: 0 created, 0 changed, 0 deleted, 1 unchanged
         
         >>> print_state.py
        -json.state.resources.pipelines.foo.__id__ = "[NEW_PIPELINE_ID]";
        +json.state.resources.pipelines.foo.__id__ = "[UUID]";
        +contains error: '[NEW_PIPELINE_ID]' not found in the output.
         
        -=== Without the bind block, a storage change plans a recreate
        ->>> [CLI] bundle plan
        -recreate pipelines.foo
        -
        -Plan: 1 to add, 0 to change, 1 to delete, 0 unchanged
        -
        ->>> [CLI] bundle destroy --auto-approve
        -The following resources will be deleted:
        -  delete resources.pipelines.foo
        -
        -This action will result in the deletion of the following Lakeflow Spark Declarative Pipelines along with the
        -Streaming Tables (STs) and Materialized Views (MVs) managed by them. Set 'cascade_on_destroy: false' on a pipeline to retain datasets on pipeline deletion:
        -  delete resources.pipelines.foo
        -
        -All files and directories at the following location will be deleted: /Workspace/Users/[USERNAME]/.bundle/test-bind-block-removed-[UNIQUE_NAME]/default
        -
        -Destroy: 1 deleted
        +Exit code: 1

latest (v1.24.0): same output as main (119ba53)

TestAccept/bundle/deploy/bind/delete-and-bind-conflict/DMS=: branch ✅ | main (119ba53) ❌ | latest (v1.24.0) ❌

main (119ba53):

acceptance_test.go:1345: 
        	Error Trace:	/home/runner/work/cli/cli/libs/testdiff/testdiff.go:22
        	            				/home/runner/work/cli/cli/acceptance/acceptance_test.go:1345
        	            				/home/runner/work/cli/cli/acceptance/acceptance_test.go:1086
        	            				/home/runner/work/cli/cli/acceptance/acceptance_test.go:660
        	Error:      	Not equal: 
        	            	expected: "\n>>> [CLI] bundle deploy --auto-approve\nUploading bundle files to /Workspace/Users/[USERNAME]/.bundle/test-bind-delete-conflict-[UNIQUE_NAME]/default/files...\nCreated jobs.foo\nFiles: 3 uploaded, 0 deleted\nResources: 1 created, 0 changed, 0 deleted, 0 unchanged\n\n>>> musterr [CLI] bundle plan\nError: resources.jobs.bar has the same lifecycle.bind ID \"[FOO_ID]\" as existing resource \"resources.jobs.foo\"; remove lifecycle.bind or the conflicting resource\n  at resources.jobs.bar.lifecycle.bind.id\n  in databricks.yml:19:15\n\nError: bind validation failed\n\n\n>>> [CLI] bundle destroy --auto-approve\nThe following resources will be deleted:\n  delete resources.jobs.foo\n\nAll files and directories at the following location will be deleted: /Workspace/Users/[USERNAME]/.bundle/test-bind-delete-conflict-[UNIQUE_NAME]/default\n\nDestroy: 1 deleted\n"
        	            	actual  : "\n>>> [CLI] bundle deploy --auto-approve\nUploading bundle files to /Workspace/Users/[USERNAME]/.bundle/test-bind-delete-conflict-[UNIQUE_NAME]/default/files...\nCreated jobs.foo\nFiles: 3 uploaded, 0 deleted\nResources: 1 created, 0 changed, 0 deleted, 0 unchanged\n\n>>> musterr [CLI] bundle plan\nWarning: unknown field: bind\n  at resources.jobs.bar.lifecycle\n  in databricks.yml:18:9\n\ncreate jobs.bar\ndelete jobs.foo\n\nPlan: 1 to add, 0 to change, 1 to delete, 0 unchanged\n\nUnexpected success\n\nExit code: 1\n"
        	            	
        	            	Diff:
        	            	--- Expected
        	            	+++ Actual
        	            	@@ -8,16 +8,14 @@
        	            	 >>> musterr [CLI] bundle plan
        	            	-Error: resources.jobs.bar has the same lifecycle.bind ID "[FOO_ID]" as existing resource "resources.jobs.foo"; remove lifecycle.bind or the conflicting resource
        	            	-  at resources.jobs.bar.lifecycle.bind.id
        	            	-  in databricks.yml:19:15
        	            	+Warning: unknown field: bind
        	            	+  at resources.jobs.bar.lifecycle
        	            	+  in databricks.yml:18:9
        	            	 
        	            	-Error: bind validation failed
        	            	+create jobs.bar
        	            	+delete jobs.foo
        	            	 
        	            	+Plan: 1 to add, 0 to change, 1 to delete, 0 unchanged
        	            	 
        	            	->>> [CLI] bundle destroy --auto-approve
        	            	-The following resources will be deleted:
        	            	-  delete resources.jobs.foo
        	            	+Unexpected success
        	            	 
        	            	-All files and directories at the following location will be deleted: /Workspace/Users/[USERNAME]/.bundle/test-bind-delete-conflict-[UNIQUE_NAME]/default
        	            	+Exit code: 1
        	            	 
        	            	-Destroy: 1 deleted
        	            	-
        	Test:       	TestAccept/bundle/deploy/bind/delete-and-bind-conflict/DMS=
        	Messages:   	bundle/deploy/bind/delete-and-bind-conflict/output.txt vs /tmp/TestAcceptbundledeploybinddelete-and-bind-conflictDMS=2122166945/002/output.txt

latest (v1.24.0): same output as main (119ba53)

TestAccept/bundle/deploy/bind/delete-and-bind-conflict/DMS=true: branch ✅ | main (119ba53) ❌ | latest (v1.24.0) ❌

main (119ba53):

acceptance_test.go:1345: 
        	Error Trace:	/home/runner/work/cli/cli/libs/testdiff/testdiff.go:22
        	            				/home/runner/work/cli/cli/acceptance/acceptance_test.go:1345
        	            				/home/runner/work/cli/cli/acceptance/acceptance_test.go:1086
        	            				/home/runner/work/cli/cli/acceptance/acceptance_test.go:660
        	Error:      	Not equal: 
        	            	expected: "\n>>> [CLI] bundle deploy --auto-approve\nUploading bundle files to /Workspace/Users/[USERNAME]/.bundle/test-bind-delete-conflict-[UNIQUE_NAME]/default/files...\nCreated jobs.foo\nFiles: 3 uploaded, 0 deleted\nResources: 1 created, 0 changed, 0 deleted, 0 unchanged\n\n>>> musterr [CLI] bundle plan\nError: resources.jobs.bar has the same lifecycle.bind ID \"[FOO_ID]\" as existing resource \"resources.jobs.foo\"; remove lifecycle.bind or the conflicting resource\n  at resources.jobs.bar.lifecycle.bind.id\n  in databricks.yml:19:15\n\nError: bind validation failed\n\n\n>>> [CLI] bundle destroy --auto-approve\nThe following resources will be deleted:\n  delete resources.jobs.foo\n\nAll files and directories at the following location will be deleted: /Workspace/Users/[USERNAME]/.bundle/test-bind-delete-conflict-[UNIQUE_NAME]/default\n\nDestroy: 1 deleted\n"
        	            	actual  : "\n>>> [CLI] bundle deploy --auto-approve\nUploading bundle files to /Workspace/Users/[USERNAME]/.bundle/test-bind-delete-conflict-[UNIQUE_NAME]/default/files...\nCreated jobs.foo\nFiles: 3 uploaded, 0 deleted\nResources: 1 created, 0 changed, 0 deleted, 0 unchanged\n\n>>> musterr [CLI] bundle plan\nWarning: unknown field: bind\n  at resources.jobs.bar.lifecycle\n  in databricks.yml:18:9\n\ncreate jobs.bar\ndelete jobs.foo\n\nPlan: 1 to add, 0 to change, 1 to delete, 0 unchanged\n\nUnexpected success\n\nExit code: 1\n"
        	            	
        	            	Diff:
        	            	--- Expected
        	            	+++ Actual
        	            	@@ -8,16 +8,14 @@
        	            	 >>> musterr [CLI] bundle plan
        	            	-Error: resources.jobs.bar has the same lifecycle.bind ID "[FOO_ID]" as existing resource "resources.jobs.foo"; remove lifecycle.bind or the conflicting resource
        	            	-  at resources.jobs.bar.lifecycle.bind.id
        	            	-  in databricks.yml:19:15
        	            	+Warning: unknown field: bind
        	            	+  at resources.jobs.bar.lifecycle
        	            	+  in databricks.yml:18:9
        	            	 
        	            	-Error: bind validation failed
        	            	+create jobs.bar
        	            	+delete jobs.foo
        	            	 
        	            	+Plan: 1 to add, 0 to change, 1 to delete, 0 unchanged
        	            	 
        	            	->>> [CLI] bundle destroy --auto-approve
        	            	-The following resources will be deleted:
        	            	-  delete resources.jobs.foo
        	            	+Unexpected success
        	            	 
        	            	-All files and directories at the following location will be deleted: /Workspace/Users/[USERNAME]/.bundle/test-bind-delete-conflict-[UNIQUE_NAME]/default
        	            	+Exit code: 1
        	            	 
        	            	-Destroy: 1 deleted
        	            	-
        	Test:       	TestAccept/bundle/deploy/bind/delete-and-bind-conflict/DMS=true
        	Messages:   	bundle/deploy/bind/delete-and-bind-conflict/output.txt vs /tmp/TestAcceptbundledeploybinddelete-and-bind-conflictDMS=true3624703700/002/output.txt

latest (v1.24.0): same output as main (119ba53)

TestAccept/bundle/deploy/bind/destroy-allowed/DMS=: branch ✅ | main (119ba53) ❌ | latest (v1.24.0) ❌

main (119ba53):

acceptance_test.go:1345: 
        	Error Trace:	/home/runner/work/cli/cli/libs/testdiff/testdiff.go:22
        	            				/home/runner/work/cli/cli/acceptance/acceptance_test.go:1345
        	            				/home/runner/work/cli/cli/acceptance/acceptance_test.go:1086
        	            				/home/runner/work/cli/cli/acceptance/acceptance_test.go:660
        	Error:      	Not equal: 
        	            	expected: "\n>>> [CLI] bundle deploy --auto-approve\nUploading bundle files to /Workspace/Users/[USERNAME]/.bundle/test-bind-destroy-allowed-[UNIQUE_NAME]/default/files...\nBound jobs.foo\nUpdated jobs.foo\nFiles: 2 uploaded, 0 deleted\nResources: 0 created, 1 changed, 0 deleted, 0 unchanged, 1 bound\n\n>>> [CLI] bundle destroy --auto-approve\nThe following resources will be deleted:\n  delete resources.jobs.foo\n\nAll files and directories at the following location will be deleted: /Workspace/Users/[USERNAME]/.bundle/test-bind-destroy-allowed-[UNIQUE_NAME]/default\n\nDestroy: 1 deleted\n"
        	            	actual  : "Warning: unknown field: bind\n  at resources.jobs.foo.lifecycle\n  in databricks.yml:18:9\n\n\n>>> [CLI] bundle deploy --auto-approve\nWarning: unknown field: bind\n  at resources.jobs.foo.lifecycle\n  in databricks.yml:18:9\n\nUploading bundle files to /Workspace/Users/[USERNAME]/.bundle/test-bind-destroy-allowed-[UNIQUE_NAME]/default/files...\nCreated jobs.foo\nFiles: 2 uploaded, 0 deleted\nResources: 1 created, 0 changed, 0 deleted, 0 unchanged\n\n>>> [CLI] bundle destroy --auto-approve\nWarning: unknown field: bind\n  at resources.jobs.foo.lifecycle\n  in databricks.yml:18:9\n\nThe following resources will be deleted:\n  delete resources.jobs.foo\n\nAll files and directories at the following location will be deleted: /Workspace/Users/[USERNAME]/.bundle/test-bind-destroy-allowed-[UNIQUE_NAME]/default\n\nDestroy: 1 deleted\n"
        	            	
        	            	Diff:
        	            	--- Expected
        	            	+++ Actual
        	            	@@ -1,10 +1,21 @@
        	            	+Warning: unknown field: bind
        	            	+  at resources.jobs.foo.lifecycle
        	            	+  in databricks.yml:18:9
        	            	+
        	            	 
        	            	 >>> [CLI] bundle deploy --auto-approve
        	            	+Warning: unknown field: bind
        	            	+  at resources.jobs.foo.lifecycle
        	            	+  in databricks.yml:18:9
        	            	+
        	            	 Uploading bundle files to /Workspace/Users/[USERNAME]/.bundle/test-bind-destroy-allowed-[UNIQUE_NAME]/default/files...
        	            	-Bound jobs.foo
        	            	-Updated jobs.foo
        	            	+Created jobs.foo
        	            	 Files: 2 uploaded, 0 deleted
        	            	-Resources: 0 created, 1 changed, 0 deleted, 0 unchanged, 1 bound
        	            	+Resources: 1 created, 0 changed, 0 deleted, 0 unchanged
        	            	 
        	            	 >>> [CLI] bundle destroy --auto-approve
        	            	+Warning: unknown field: bind
        	            	+  at resources.jobs.foo.lifecycle
        	            	+  in databricks.yml:18:9
        	            	+
        	            	 The following resources will be deleted:
        	Test:       	TestAccept/bundle/deploy/bind/destroy-allowed/DMS=
        	Messages:   	bundle/deploy/bind/destroy-allowed/output.txt vs /tmp/TestAcceptbundledeploybinddestroy-allowedDMS=3720689706/002/output.txt

latest (v1.24.0): same output as main (119ba53)

TestAccept/bundle/deploy/bind/destroy-allowed/DMS=true: branch ✅ | main (119ba53) ❌ | latest (v1.24.0) ❌

main (119ba53):

acceptance_test.go:1345: 
        	Error Trace:	/home/runner/work/cli/cli/libs/testdiff/testdiff.go:22
        	            				/home/runner/work/cli/cli/acceptance/acceptance_test.go:1345
        	            				/home/runner/work/cli/cli/acceptance/acceptance_test.go:1086
        	            				/home/runner/work/cli/cli/acceptance/acceptance_test.go:660
        	Error:      	Not equal: 
        	            	expected: "\n>>> [CLI] bundle deploy --auto-approve\nUploading bundle files to /Workspace/Users/[USERNAME]/.bundle/test-bind-destroy-allowed-[UNIQUE_NAME]/default/files...\nBound jobs.foo\nUpdated jobs.foo\nFiles: 2 uploaded, 0 deleted\nResources: 0 created, 1 changed, 0 deleted, 0 unchanged, 1 bound\n\n>>> [CLI] bundle destroy --auto-approve\nThe following resources will be deleted:\n  delete resources.jobs.foo\n\nAll files and directories at the following location will be deleted: /Workspace/Users/[USERNAME]/.bundle/test-bind-destroy-allowed-[UNIQUE_NAME]/default\n\nDestroy: 1 deleted\n"
        	            	actual  : "Warning: unknown field: bind\n  at resources.jobs.foo.lifecycle\n  in databricks.yml:18:9\n\n\n>>> [CLI] bundle deploy --auto-approve\nWarning: unknown field: bind\n  at resources.jobs.foo.lifecycle\n  in databricks.yml:18:9\n\nUploading bundle files to /Workspace/Users/[USERNAME]/.bundle/test-bind-destroy-allowed-[UNIQUE_NAME]/default/files...\nCreated jobs.foo\nFiles: 2 uploaded, 0 deleted\nResources: 1 created, 0 changed, 0 deleted, 0 unchanged\n\n>>> [CLI] bundle destroy --auto-approve\nWarning: unknown field: bind\n  at resources.jobs.foo.lifecycle\n  in databricks.yml:18:9\n\nThe following resources will be deleted:\n  delete resources.jobs.foo\n\nAll files and directories at the following location will be deleted: /Workspace/Users/[USERNAME]/.bundle/test-bind-destroy-allowed-[UNIQUE_NAME]/default\n\nDestroy: 1 deleted\n"
        	            	
        	            	Diff:
        	            	--- Expected
        	            	+++ Actual
        	            	@@ -1,10 +1,21 @@
        	            	+Warning: unknown field: bind
        	            	+  at resources.jobs.foo.lifecycle
        	            	+  in databricks.yml:18:9
        	            	+
        	            	 
        	            	 >>> [CLI] bundle deploy --auto-approve
        	            	+Warning: unknown field: bind
        	            	+  at resources.jobs.foo.lifecycle
        	            	+  in databricks.yml:18:9
        	            	+
        	            	 Uploading bundle files to /Workspace/Users/[USERNAME]/.bundle/test-bind-destroy-allowed-[UNIQUE_NAME]/default/files...
        	            	-Bound jobs.foo
        	            	-Updated jobs.foo
        	            	+Created jobs.foo
        	            	 Files: 2 uploaded, 0 deleted
        	            	-Resources: 0 created, 1 changed, 0 deleted, 0 unchanged, 1 bound
        	            	+Resources: 1 created, 0 changed, 0 deleted, 0 unchanged
        	            	 
        	            	 >>> [CLI] bundle destroy --auto-approve
        	            	+Warning: unknown field: bind
        	            	+  at resources.jobs.foo.lifecycle
        	            	+  in databricks.yml:18:9
        	            	+
        	            	 The following resources will be deleted:
        	Test:       	TestAccept/bundle/deploy/bind/destroy-allowed/DMS=true
        	Messages:   	bundle/deploy/bind/destroy-allowed/output.txt vs /tmp/TestAcceptbundledeploybinddestroy-allowedDMS=true3056761513/002/output.txt

latest (v1.24.0): same output as main (119ba53)

28 more failure details omitted, see the full report in the run.

@eng-dev-ecosystem-bot

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

Copy link
Copy Markdown
Collaborator

✅ Integration test report

Commit: 1af55cb

Run: 42211037217

Env ✅​pass 🙈​skip Time
✅​ aws linux-2core-8gb 340 22 9:33
✅​ aws-windows-latest-4core-16gb 342 20 7:31
✅​ azure linux-2core-8gb 339 22 5:48
✅​ azure-windows-latest-4core-16gb 341 20 8:07
✅​ gcp linux-2core-8gb 340 22 6:36
✅​ gcp-windows-latest-4core-16gb 342 20 7:36
Top 10 slowest tests (at least 2 minutes):
duration env testname
6:45 aws linux-2core-8gb TestAccept/bundle/deploy/bind/bind-and-resize/DMS=
6:26 aws linux-2core-8gb TestAccept/bundle/deploy/bind/bind-and-resize/DMS=true
3:20 gcp-windows-latest-4core-16gb TestAccept
3:14 azure-windows-latest-4core-16gb TestAccept
3:11 gcp linux-2core-8gb TestAccept/bundle/deploy/bind/bind-and-resize/DMS=
3:10 aws-windows-latest-4core-16gb TestAccept
2:18 gcp-windows-latest-4core-16gb TestAccept/bundle/deploy/bind/bind-and-resize/DMS=
2:12 gcp linux-2core-8gb TestAccept/bundle/deploy/bind/bind-and-resize/DMS=true
2:10 gcp-windows-latest-4core-16gb TestAccept/bundle/deploy/bind/bind-and-resize/DMS=true
2:07 aws-windows-latest-4core-16gb TestAccept/bundle/deploy/bind/bind-and-resize/DMS=

Comment thread bundle/deployplan/action.go Resolved
Comment thread bundle/deployplan/action.go Resolved
Comment thread bundle/deployplan/action.go Resolved
Comment thread bundle/phases/bind.go Resolved
Comment thread .nextchanges/bundles/4630.md Resolved
@janniklasrose

Copy link
Copy Markdown
Member Author

Pushed the review fixes in 6edb41a6ea.

  • Both P1s are fixed: pure bind now uses the shared state sanitization/compaction path, and bound-parent stable outputs resolve before deployment instead of spuriously recreating dependents. Regression tests fail against the original implementation and pass with these fixes.
  • Addressed the actionable review comments: imperative-bind notice, shorter diagnostics/changelog, action contracts, a first-deploy pure-bind example, block-removal no-op coverage, and variable IDs supplied via --var.
  • Kept Python generator/formatting work out of scope; that is covered by #7375.
  • Evidence for the Skip qualification: the normal apply caller excludes Skip, and the other call site is deletion-only. I documented the formatter's applied-action precondition and tested all applied actions rather than adding an unreachable output branch.
  • Cloud resize passes on AWS, Azure, and GCP in both deployment-state modes. All other bind scenarios passed on AWS; changed non-compute scenarios also passed on Azure/GCP.
  • task fmt, task checks, task lint, all 12,952 unit tests, and the local bind/imperative-bind acceptance suites pass. The full local acceptance task still fails only in the unrelated cmd/completion test with exit 141; reproduced with the original PR implementation, so left out of scope.

From a Codex review.

This branch has not been deployed

No deployments
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.

2 participants