Skip to content

Commit 9fda88f

Browse files
authored
Fix "bundle summary -o json" to render null values properly (#2990)
## Changes Render "bundle summary -o json" based on dynamic representation rather than static (same as "bundle validate -o json"). This was the behavior of summary command since it was added in https://github.com/databricks/cli/pull/1123/files#r2128154132 Found via this acceptance test that shows diff between validate and summary output: https://github.com/databricks/cli/pull/2989/files#r2128150583 ## Why Static representation is slightly broken because it does not set ForceSendFields properly and thus it cannot distinguish null vs zero values. ## Tests Existing tests.
1 parent 33786ec commit 9fda88f

4 files changed

Lines changed: 22 additions & 40 deletions

File tree

NEXT_CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,5 +9,6 @@
99
### CLI
1010

1111
### Bundles
12+
* Fix "bundle summary -o json" to render null values properly ([#2990](https://github.com/databricks/cli/pull/2990))
1213

1314
### API Changes

acceptance/bundle/python/restricted-execution/output.txt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22
=== Without DATABRICKS_BUNDLE_RESTRICTED_CODE_EXECUTION, all envs are accessible
33
>>> uv run [UV_ARGS] -q [CLI] bundle summary -o json
44
{
5-
"pydabs": {},
65
"python": {
76
"mutators": [
87
"mutators:read_envs"

acceptance/bundle/templates/default-python/integration_classic/output.txt

Lines changed: 20 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -60,47 +60,28 @@ Resources:
6060
+ "id": "[NUMID]",
6161
"job_clusters": [
6262
{
63-
@@ -60,5 +61,4 @@
64-
"data_security_mode": "SINGLE_USER",
65-
"node_type_id": "[NODE_TYPE_ID]",
66-
- "num_workers": 0,
67-
"spark_version": "15.4.x-scala2.12"
68-
}
69-
@@ -67,5 +67,4 @@
70-
"max_concurrent_runs": 4,
71-
"name": "[dev [USERNAME]] project_name_[UNIQUE_NAME]_job",
72-
- "permissions": [],
73-
"queue": {
74-
"enabled": true
75-
@@ -118,5 +117,6 @@
63+
@@ -118,5 +119,6 @@
7664
"unit": "DAYS"
7765
}
7866
- }
7967
+ },
8068
+ "url": "[DATABRICKS_URL]/jobs/[NUMID]"
8169
}
8270
},
83-
@@ -133,4 +133,5 @@
71+
@@ -133,4 +135,5 @@
8472
"development": true,
8573
"edition": "ADVANCED",
8674
+ "id": "[UUID]",
8775
"libraries": [
8876
{
89-
@@ -141,6 +142,6 @@
90-
],
77+
@@ -142,5 +145,6 @@
9178
"name": "[dev [USERNAME]] project_name_[UNIQUE_NAME]_pipeline",
92-
- "permissions": [],
79+
"permissions": [],
9380
- "schema": "project_name_[UNIQUE_NAME]_dev"
9481
+ "schema": "project_name_[UNIQUE_NAME]_dev",
9582
+ "url": "[DATABRICKS_URL]/pipelines/[UUID]"
9683
}
9784
}
98-
@@ -151,5 +152,4 @@
99-
]
100-
},
101-
- "targets": null,
102-
"workspace": {
103-
"artifact_path": "/Workspace/Users/[USERNAME]/.bundle/project_name_[UNIQUE_NAME]/dev/artifacts",
10485

10586
>>> [CLI] bundle destroy -t dev --auto-approve
10687
The following resources will be deleted:
@@ -278,14 +259,14 @@ Resources:
278259
>>> diff.py ../out.summary.dev.json ../out.summary.prod.json
279260
--- ../out.summary.dev.json
280261
+++ ../out.summary.prod.json
281-
@@ -14,15 +14,13 @@
262+
@@ -13,16 +13,11 @@
263+
},
282264
"bundle": {
283-
"deployment": {
265+
- "deployment": {
284266
- "lock": {
285267
- "enabled": false
286268
- }
287-
+ "lock": {}
288-
},
269+
- },
289270
- "environment": "dev",
290271
+ "environment": "prod",
291272
"git": {
@@ -298,7 +279,7 @@ Resources:
298279
+ "target": "prod",
299280
"terraform": {},
300281
"uuid": "[UUID]"
301-
@@ -32,13 +30,11 @@
282+
@@ -32,13 +27,10 @@
302283
"resources/project_name_[UNIQUE_NAME].pipeline.yml"
303284
],
304285
- "presets": {
@@ -316,45 +297,45 @@ Resources:
316297
+ "service_principal_name": "[USERNAME]"
317298
+ }
318299
+ ],
319-
+ "presets": {},
320300
"resources": {
321301
"jobs": {
322-
@@ -46,5 +42,5 @@
302+
@@ -46,5 +38,5 @@
323303
"deployment": {
324304
"kind": "BUNDLE",
325305
- "metadata_file_path": "/Workspace/Users/[USERNAME]/.bundle/project_name_[UNIQUE_NAME]/dev/state/metadata.json"
326306
+ "metadata_file_path": "/Workspace/Users/[USERNAME]/.bundle/project_name_[UNIQUE_NAME]/prod/state/metadata.json"
327307
},
328308
"edit_mode": "UI_LOCKED",
329-
@@ -65,11 +61,8 @@
309+
@@ -66,12 +58,9 @@
330310
}
331311
],
332312
- "max_concurrent_runs": 4,
333313
- "name": "[dev [USERNAME]] project_name_[UNIQUE_NAME]_job",
334314
+ "max_concurrent_runs": 1,
335315
+ "name": "project_name_[UNIQUE_NAME]_job",
316+
"permissions": [],
336317
"queue": {
337318
"enabled": true
338319
- },
339320
- "tags": {
340321
- "dev": "[USERNAME]"
341322
},
342323
"tasks": [
343-
@@ -77,5 +70,5 @@
324+
@@ -79,5 +68,5 @@
344325
"job_cluster_key": "job_cluster",
345326
"notebook_task": {
346327
- "notebook_path": "/Workspace/Users/[USERNAME]/.bundle/project_name_[UNIQUE_NAME]/dev/files/src/notebook"
347328
+ "notebook_path": "/Workspace/Users/[USERNAME]/.bundle/project_name_[UNIQUE_NAME]/prod/files/src/notebook"
348329
},
349330
"task_key": "notebook_task"
350-
@@ -112,5 +105,5 @@
331+
@@ -114,5 +103,5 @@
351332
],
352333
"trigger": {
353334
- "pause_status": "PAUSED",
354335
+ "pause_status": "UNPAUSED",
355336
"periodic": {
356337
"interval": 1,
357-
@@ -125,11 +118,10 @@
338+
@@ -127,11 +116,10 @@
358339
"channel": "CURRENT",
359340
"configuration": {
360341
- "bundle.sourcePath": "/Workspace/Users/[USERNAME]/.bundle/project_name_[UNIQUE_NAME]/dev/files/src"
@@ -368,7 +349,7 @@ Resources:
368349
- "development": true,
369350
"edition": "ADVANCED",
370351
"id": "[UUID]",
371-
@@ -137,10 +129,10 @@
352+
@@ -139,11 +127,11 @@
372353
{
373354
"notebook": {
374355
- "path": "/Workspace/Users/[USERNAME]/.bundle/project_name_[UNIQUE_NAME]/dev/files/src/dlt_pipeline"
@@ -377,13 +358,14 @@ Resources:
377358
}
378359
],
379360
- "name": "[dev [USERNAME]] project_name_[UNIQUE_NAME]_pipeline",
380-
- "schema": "project_name_[UNIQUE_NAME]_dev",
381361
+ "name": "project_name_[UNIQUE_NAME]_pipeline",
362+
"permissions": [],
363+
- "schema": "project_name_[UNIQUE_NAME]_dev",
382364
+ "schema": "project_name_[UNIQUE_NAME]_prod",
383365
"url": "[DATABRICKS_URL]/pipelines/[UUID]"
384366
}
385-
@@ -153,10 +145,10 @@
386-
},
367+
@@ -157,10 +145,10 @@
368+
"targets": null,
387369
"workspace": {
388370
- "artifact_path": "/Workspace/Users/[USERNAME]/.bundle/project_name_[UNIQUE_NAME]/dev/artifacts",
389371
- "file_path": "/Workspace/Users/[USERNAME]/.bundle/project_name_[UNIQUE_NAME]/dev/files",

cmd/bundle/summary.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ func newSummaryCommand() *cobra.Command {
8080
case flags.OutputText:
8181
return render.RenderSummary(ctx, cmd.OutOrStdout(), b)
8282
case flags.OutputJSON:
83-
buf, err := json.MarshalIndent(b.Config, "", " ")
83+
buf, err := json.MarshalIndent(b.Config.Value().AsAny(), "", " ")
8484
if err != nil {
8585
return err
8686
}

0 commit comments

Comments
 (0)