Skip to content

air: validate --dry-run against the workspace backend - #6934

Merged
caroline-db merged 3 commits into
mainfrom
air/dry-run-validation
Oct 7, 2026
Merged

caroline-db merged 3 commits into
mainfrom
air/dry-run-validation

Conversation

@caroline-db

@caroline-db caroline-db commented Oct 5, 2026 •

Copy link
Copy Markdown
Contributor

What did you change, and why?

  • Run workspace config:validate after local checks for air run --dry-run, using the prospective command path, request metadata, and effective idempotency token that submission would use.
  • Keep dry-run read-only, retry HTTP 429 or 503 at most once, and bound the validation request to 15 seconds.
  • Return backend field and caller errors directly, and return structured VALIDATION_UNAVAILABLE output when workspace validation cannot complete.
  • Preserve the existing retry and availability behavior for normal submission preflight.

Dry-run previously stopped after local validation and could miss workspace-enforced constraints.

How do you know it works?

  • Added unit coverage for successful validation, backend field errors, caller errors, exact retry counts, unavailable output, and hanging-request deadlines.
  • Added acceptance coverage for backend field errors during --dry-run.
  • Ran go test ./cmd/air ./libs/testserver.
  • Ran go test ./acceptance -run TestAccept/air/run-backend-error -tail -test.v.
  • Ran go vet ./cmd/air ./libs/testserver.

@github-actions github-actions Bot added the AIR Databricks AI Runtime CLI label Oct 5, 2026
@caroline-db
caroline-db force-pushed the air/dry-run-validation branch 3 times, most recently from 48bd037 to 2eff42e Compare October 6, 2026 01:50
@eng-dev-ecosystem-bot

eng-dev-ecosystem-bot commented Oct 6, 2026 •

Copy link
Copy Markdown
Collaborator

Integration test report

Commit: 792bb9e

Run: 37562359590

Env ✅​pass 🙈​skip Time
✅​ aws linux 276 19 5:36
✅​ aws windows 278 17 3:07
✅​ azure linux 275 19 5:09
✅​ azure windows 277 17 3:18
✅​ gcp linux 276 19 5:09
✅​ gcp windows 278 17 3:11
Top 6 slowest tests (at least 2 minutes):
duration env testname
4:17 aws linux TestAccept
3:53 azure linux TestAccept
3:50 gcp linux TestAccept
3:16 azure windows TestAccept
3:09 gcp windows TestAccept
3:05 aws windows TestAccept

@caroline-db
caroline-db force-pushed the air/dry-run-validation branch from 2eff42e to 019ba77 Compare October 6, 2026 02:26
@caroline-db
caroline-db force-pushed the air/dry-run-validation branch from 95959a1 to 7898562 Compare October 6, 2026 20:40
@caroline-db
caroline-db marked this pull request as ready for review October 6, 2026 20:41
@caroline-db
caroline-db requested review from a team as code owners October 6, 2026 20:41
@caroline-db
caroline-db requested review from janniklasrose and removed request for janniklasrose October 6, 2026 20:41
@caroline-db
caroline-db force-pushed the air/dry-run-validation branch from 7898562 to d88b4e1 Compare October 6, 2026 21:07
@caroline-db caroline-db changed the title air: validate dry runs against the workspace backend air: validate --dry-run against the workspace backend Oct 7, 2026
@caroline-db
caroline-db force-pushed the air/dry-run-validation branch from 429ff81 to 792bb9e Compare October 7, 2026 02:30
@caroline-db
caroline-db added this pull request to the merge queue Oct 7, 2026
Merged via the queue into main with commit ced3a80 Oct 7, 2026
26 checks passed
@caroline-db
caroline-db deleted the air/dry-run-validation branch October 7, 2026 02:56
deco-sdk-tagging Bot added a commit that referenced this pull request Oct 7, 2026
## Release v1.20.0

### Notable Changes

 * Remove the Terraform deployment engine. `bundle.engine: terraform` and `DATABRICKS_BUNDLE_ENGINE=terraform` now error, and a failed migration of existing Terraform state is reported as an error instead of falling back to Terraform. To keep deploying with Terraform, use Databricks CLI v1.19.x. ([#6888](#6888), [#6889](#6889))

### CLI

 * `databricks aitools install` now supports Kiro, installing Databricks agent skills into its skills directory. ([#6908](#6908))
 * Fixed `databricks api` corrupting integers larger than 2^53 (such as job and pipeline ids) — request bodies and responses now preserve them exactly. ([#6884](#6884))
 * Added `--auth-mode` and `--set <plugin>.<resourceKey>.authMode=obo|sp|both` to `databricks apps init` so AppKit resources can be accessed on behalf of the user, by the service principal, or both. The default stays service principal. ([#6886](#6886))
 * `databricks apps init` now requires a value for every field a service principal resource binding references, prompting for missing values in an interactive terminal and otherwise failing with the `--set` key to use, instead of creating a project with unset variables. ([#6903](#6903))
 * Add `databricks apps init --package-manager <npm|pnpm>` to select the package manager for Node.js templates. Infer the default quietly from template lockfiles and AppKit version, check prerequisites before creating files, and preserve template formatting and pnpm version pins. ([#6902](#6902))
 * Select npm or pnpm from `packageManager` declarations and lockfiles for `apps validate` and project validation during `apps deploy`. ([#6892](#6892))
 * Fix `auth docker host` reporting the credential helper as configured when its executable is missing from `PATH`. ([#6880](#6880))
 * Warn when the CLI binary was built more than 6 months ago and recommend updating. ([#6898](#6898))

### AI Runtime

 * Add an experimental rank-partitioned container images to AI Runtime jobs. ([#6841](#6841))
 * Support snapshot fields directly under `code_source` without requiring `type` or a nested `snapshot` block. ([#6927](#6927))
 * Map AIR priority and Unity Catalog image fields when converting run configurations to bundles. ([#6905](#6905))
 * Add workspace backend validation to `air run --dry-run`. ([#6934](#6934))

### Bundles

 * Warn that `bundle.terraform` is deprecated and has no effect since the Terraform deployment engine was removed. ([#6940](#6940))
 * Direct engine now detects and applies an explicitly configured zero-value boolean or float (e.g. `gcp_attributes.use_preemptible_executors: false`, `azure_attributes.spot_bid_max_price: 0`) added to a resource first deployed without the field, matching the existing handling of an explicit integer zero. ([#6882](#6882))
 * Fix `bundle deployment migrate` failing with "no such file or directory" when the Terraform state has no resources or the configuration no longer declares any of them. ([#6958](#6958))
 * `bundle run` and `pipelines run` now send the per-update `development` parameter for pipelines in development mode targets. Setting `development` on a pipeline is deprecated and now emits a warning; use `mode: development` instead. ([#6863](#6863))
 * Remove the hidden `bundle debug terraform` command. ([#6933](#6933))
 * Add support for `run_as.group_name` at the bundle and target levels for jobs and pipelines. ([#6676](#6676))
 * Fix recreating a secret scope that was deleted outside of the bundle with the direct deployment engine. ([#6970](#6970))
 * Accept title-case booleans (`True`/`False`, as rendered by Azure Pipelines) for boolean variables, and accept the same boolean strings (`yes`/`no`, `on`/`off`, ...) in Python bundles as in YAML. ([#6942](#6942))

### Dependency Updates

 * Bump `github.com/databricks/databricks-sdk-go` from v0.182.0 to v0.185.0. ([#6928](#6928))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

AIR Databricks AI Runtime CLI

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants