Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
19 commits
Select commit Hold shift + click to select a range
6c80f23
experimental/air: scaffold AI runtime CLI command package
riddhibhagwat-db Jun 11, 2026
059bd61
experimental/air: rename `status` subcommand to `get`
riddhibhagwat-db Jun 12, 2026
235f1bd
experimental/air: disambiguate JOB_RUN_ID, hide --review, add -i alias
riddhibhagwat-db Jun 16, 2026
8a97e0f
Merge branch 'main' into air-integration-m0
riddhibhagwat-db Jun 16, 2026
e04b698
Merge branch 'main' into air-integration-m0
riddhibhagwat-db Jun 16, 2026
31121ad
experimental/air: implement the `air get` command
riddhibhagwat-db Jun 14, 2026
3883791
experimental/air: rename stale TestBuildStatusData to TestBuildGetData
riddhibhagwat-db Jun 14, 2026
472a1fe
experimental/air: apply testifylint fixes in get/format tests
riddhibhagwat-db Jun 14, 2026
0ab1008
experimental/air: print `air get` training config to stdout
riddhibhagwat-db Jun 16, 2026
2615cd7
experimental/air: report latest-attempt timing and round duration
riddhibhagwat-db Jun 16, 2026
d3bb64b
experimental/air: link MLflow output to the latest attempt
riddhibhagwat-db Jun 16, 2026
3deceab
experimental/air: render JSON error envelopes and align `air get` JSO…
riddhibhagwat-db Jun 16, 2026
9072c29
experimental/air: restore last-attempt timing for `air get`
riddhibhagwat-db Jun 17, 2026
fddbdfd
experimental/air: fix `air get` MLflow link request
riddhibhagwat-db Jun 17, 2026
a69e0d3
experimental/air: rename `air get` to `air get run` and match Python …
riddhibhagwat-db Jun 17, 2026
15e0f13
experimental/air: make invalid JOB_RUN_ID errors non-retryable
riddhibhagwat-db Jun 17, 2026
301d9e1
Merge branch 'air-cli' into air-integration-m1-1
riddhibhagwat-db Jun 17, 2026
630cd91
experimental/air: regenerate air get golden output for updated timest…
riddhibhagwat-db Jun 17, 2026
7095d43
experimental/air: rename the get run dashboard label to "Job Link"
riddhibhagwat-db Jun 18, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions acceptance/experimental/air/get/out.test.toml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

52 changes: 52 additions & 0 deletions acceptance/experimental/air/get/output.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@

=== get (text)
>>> [CLI] experimental air get run 123
Job Link: [DATABRICKS_URL]/jobs/runs/123?o=[NUMID]

Run ID: 123
Status: SUCCESS
Submitted: 2023-11-14 22:13 UTC
Retries: 0
Duration: 12s
Experiment: my-exp
MLflow Run: my-run
User: user@example.com
Accelerators: 8x H100

=== get (json)
>>> [CLI] experimental air get run 123 -o json
{
"v": 1,
"ts": "[TIMESTAMP]",
"data": {
"run_id": "123",
"status": "SUCCESS",
"started_at": "[TIMESTAMP]",
"duration_seconds": 12,
"attempt_number": 0,
"experiment_name": "my-exp",
"dashboard_url": "[DATABRICKS_URL]/jobs/runs/123?o=[NUMID]",
"mlflow_url": "[DATABRICKS_URL]/ml/experiments/exp1/runs/run1/artifacts/logs/node_0"
}
}

=== invalid run id
>>> [CLI] experimental air get run notanumber
Error: invalid JOB_RUN_ID "notanumber": must be a positive integer

Exit code: 1

=== invalid run id (json)
>>> [CLI] experimental air get run notanumber -o json
{
"v": 1,
"ts": "[TIMESTAMP]",
"error": {
"code": "INVALID_ARGS",
"kind": "PERMANENT",
"message": "invalid JOB_RUN_ID \"notanumber\": must be a positive integer",
"retryable": false
}
}

Exit code: 1
11 changes: 11 additions & 0 deletions acceptance/experimental/air/get/script
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
title "get (text)"
trace $CLI experimental air get run 123

title "get (json)"
trace $CLI experimental air get run 123 -o json

title "invalid run id"
errcode trace $CLI experimental air get run notanumber

title "invalid run id (json)"
errcode trace $CLI experimental air get run notanumber -o json
47 changes: 47 additions & 0 deletions acceptance/experimental/air/get/test.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
# This command does not deploy a bundle, so no engine matrix is needed.
[EnvMatrix]
DATABRICKS_BUNDLE_ENGINE = []

# The SDK occasionally probes host reachability with a HEAD request; stub it so
# the test is deterministic.
[[Server]]
Pattern = "HEAD /"
Response.Body = ''

# A single GenAI-compute run with an experiment, GPUs, and a creator.
[[Server]]
Pattern = "GET /api/2.2/jobs/runs/get"
Response.Body = '''
{
"run_id": 123,
"run_page_url": "https://my-workspace.cloud.databricks.test/jobs/runs/123",
"creator_user_name": "user@example.com",
"start_time": 1700000000000,
"end_time": 1700000012000,
"state": {"life_cycle_state": "TERMINATED", "result_state": "SUCCESS"},
"tasks": [
{
"task_key": "train",
"attempt_number": 0,
"gen_ai_compute_task": {
"mlflow_experiment_name": "/Users/user@example.com/my-exp",
"compute": {"gpu_type": "GPU_8xH100", "num_gpus": 8}
}
}
]
}
'''

# MLflow identifiers for the deep-link (runs/get-output is not modeled by the typed SDK).
[[Server]]
Pattern = "GET /api/2.2/jobs/runs/get-output"
Response.Body = '''
{"gen_ai_compute_output": {"run_info": {"mlflow_experiment_id": "exp1", "mlflow_run_id": "run1"}}}
'''

# The MLflow Run cell shows the run's name, fetched from the MLflow REST API.
[[Server]]
Pattern = "GET /api/2.0/mlflow/runs/get"
Response.Body = '''
{"run": {"info": {"run_name": "my-run"}}}
'''
2 changes: 1 addition & 1 deletion acceptance/experimental/air/help/output.txt
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ Usage:

Available Commands:
cancel Cancel one or more runs
get Show details for a run
get Show details for a specific resource
list List recent runs
logs Stream or fetch logs for a run
register-image Mirror a Docker image into the workspace registry
Expand Down
6 changes: 0 additions & 6 deletions acceptance/experimental/air/unimplemented/output.txt
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,6 @@ Error: `air run` is not implemented yet

Exit code: 1

=== get
>>> [CLI] experimental air get 123
Error: `air get` is not implemented yet

Exit code: 1

=== list
>>> [CLI] experimental air list
Error: `air list` is not implemented yet
Expand Down
3 changes: 0 additions & 3 deletions acceptance/experimental/air/unimplemented/script
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,6 @@
title "run"
errcode trace $CLI experimental air run

title "get"
errcode trace $CLI experimental air get 123

title "list"
errcode trace $CLI experimental air list

Expand Down
Loading
Loading