Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
25 commits
Select commit Hold shift + click to select a range
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
1 change: 1 addition & 0 deletions NEXT_CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
## Release v0.260.0

### Notable Changes
* Added support for creating SQL warehouses in DABs ([#3129](https://github.com/databricks/cli/pull/3129))

### Dependency updates
* Upgrade Go SDK to 0.75.0 ([#3256](https://github.com/databricks/cli/pull/3256))
Expand Down
12 changes: 12 additions & 0 deletions acceptance/bundle/deploy/sql_warehouse/databricks.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
bundle:
Comment thread
andrewnester marked this conversation as resolved.
name: test_sql_warehouse

resources:
sql_warehouses:
test_sql_warehouse:
name: sql_warehouse_name
cluster_size: X-Large
enable_serverless_compute: true
max_num_clusters: 1
min_num_clusters: 1
auto_stop_mins: 120
6 changes: 6 additions & 0 deletions acceptance/bundle/deploy/sql_warehouse/out.test.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
Local = true
Cloud = true
CloudSlow = true

[EnvMatrix]
DATABRICKS_CLI_DEPLOYMENT = ["terraform", "direct-exp"]
144 changes: 144 additions & 0 deletions acceptance/bundle/deploy/sql_warehouse/output.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,144 @@

>>> [CLI] bundle validate
Name: test_sql_warehouse
Target: default
Workspace:
User: [USERNAME]
Path: /Workspace/Users/[USERNAME]/.bundle/test_sql_warehouse/default

Validation OK!

>>> [CLI] bundle validate -o json
{
"test_sql_warehouse": {
"auto_stop_mins": 120,
"cluster_size": "X-Large",
"enable_photon": true,
"enable_serverless_compute": true,
"max_num_clusters": 1,
"min_num_clusters": 1,
"name": "sql_warehouse_name",
"permissions": [],
"spot_instance_policy": "COST_OPTIMIZED"
}
}

>>> [CLI] bundle summary
Name: test_sql_warehouse
Target: default
Workspace:
User: [USERNAME]
Path: /Workspace/Users/[USERNAME]/.bundle/test_sql_warehouse/default
Resources:
SQL Warehouses:
test_sql_warehouse:
Name: sql_warehouse_name
URL: (not deployed)

>>> [CLI] bundle deploy
Uploading bundle files to /Workspace/Users/[USERNAME]/.bundle/test_sql_warehouse/default/files...
Deploying resources...
Updating deployment state...
Deployment complete!

=== Verify the create request
>>> jq select(.method == "POST" and (.path | contains("/sql/warehouses"))) out.requests.txt
{
"method": "POST",
"path": "/api/2.0/sql/warehouses",
"body": {
"auto_stop_mins": 120,
"cluster_size": "X-Large",
"enable_photon": true,
"enable_serverless_compute": true,
"max_num_clusters": 1,
"min_num_clusters": 1,
"name": "sql_warehouse_name",
"spot_instance_policy": "COST_OPTIMIZED"
}
}

>>> [CLI] bundle summary
Name: test_sql_warehouse
Target: default
Workspace:
User: [USERNAME]
Path: /Workspace/Users/[USERNAME]/.bundle/test_sql_warehouse/default
Resources:
SQL Warehouses:
test_sql_warehouse:
Name: sql_warehouse_name
URL: [DATABRICKS_URL]/sql/warehouses/[UUID]?o=[NUMID]

=== Update the warehouse name
>>> update_file.py databricks.yml sql_warehouse_name sql_warehouse_name_2

>>> [CLI] bundle deploy
Uploading bundle files to /Workspace/Users/[USERNAME]/.bundle/test_sql_warehouse/default/files...
Deploying resources...
Updating deployment state...
Deployment complete!

=== Verify the update request
>>> jq select(.method == "POST" and (.path | contains("/sql/warehouses")) and (.body."name" == "sql_warehouse_name_2")) out.requests.txt
{
"method": "POST",
"path": "/api/2.0/sql/warehouses/[UUID]/edit",
"body": {
"auto_stop_mins": 120,
"cluster_size": "X-Large",
"enable_photon": true,
"enable_serverless_compute": true,
"max_num_clusters": 1,
"min_num_clusters": 1,
"name": "sql_warehouse_name_2",
"spot_instance_policy": "COST_OPTIMIZED"
}
}

>>> [CLI] bundle summary
Name: test_sql_warehouse
Target: default
Workspace:
User: [USERNAME]
Path: /Workspace/Users/[USERNAME]/.bundle/test_sql_warehouse/default
Resources:
SQL Warehouses:
test_sql_warehouse:
Name: sql_warehouse_name_2
URL: [DATABRICKS_URL]/sql/warehouses/[UUID]?o=[NUMID]

=== Destroy the warehouse
>>> [CLI] bundle destroy --auto-approve
The following resources will be deleted:
delete sql_warehouse test_sql_warehouse

All files and directories at the following location will be deleted: /Workspace/Users/[USERNAME]/.bundle/test_sql_warehouse/default

Deleting files...
Destroy complete!

=== Verify the destroy request
>>> jq select(.method == "DELETE" and (.path | contains("/sql/warehouses"))) out.requests.txt
{
"method": "DELETE",
"path": "/api/2.0/sql/warehouses/[UUID]"
}

>>> [CLI] bundle summary
Name: test_sql_warehouse
Target: default
Workspace:
User: [USERNAME]
Path: /Workspace/Users/[USERNAME]/.bundle/test_sql_warehouse/default
Resources:
SQL Warehouses:
test_sql_warehouse:
Name: sql_warehouse_name_2
URL: (not deployed)

>>> [CLI] bundle destroy --auto-approve
All files and directories at the following location will be deleted: /Workspace/Users/[USERNAME]/.bundle/test_sql_warehouse/default

Deleting files...
Destroy complete!
35 changes: 35 additions & 0 deletions acceptance/bundle/deploy/sql_warehouse/script
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
trace $CLI bundle validate
trace $CLI bundle validate -o json | jq ".resources.sql_warehouses"

trace $CLI bundle summary

cleanup() {
trace $CLI bundle destroy --auto-approve
rm out.requests.txt
}
trap cleanup EXIT
trace $CLI bundle deploy
Comment thread
andrewnester marked this conversation as resolved.

title "Verify the create request"
trace jq 'select(.method == "POST" and (.path | contains("/sql/warehouses")))' out.requests.txt

trace $CLI bundle summary

title "Update the warehouse name"
trace update_file.py databricks.yml sql_warehouse_name sql_warehouse_name_2
trace $CLI bundle deploy

title "Verify the update request"
trace jq 'select(.method == "POST" and (.path | contains("/sql/warehouses")) and (.body."name" == "sql_warehouse_name_2"))' out.requests.txt

trace $CLI bundle summary

title "Destroy the warehouse"
trace $CLI bundle destroy --auto-approve

title "Verify the destroy request"
trace jq 'select(.method == "DELETE" and (.path | contains("/sql/warehouses")))' out.requests.txt

trace $CLI bundle summary

rm out.requests.txt
9 changes: 9 additions & 0 deletions acceptance/bundle/deploy/sql_warehouse/test.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
Cloud = true
Local = true
CloudSlow = true
RecordRequests = true


Ignore = [
"databricks.yml",
]
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
resources:
sql_warehouses:
sql_warehouse1:
name: "DEFAULT Test SQL Warehouse"
cluster_size: X-Large
5 changes: 5 additions & 0 deletions acceptance/bundle/deployment/bind/sql_warehouse/out.test.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
Local = true
Cloud = false

[EnvMatrix]
DATABRICKS_CLI_DEPLOYMENT = ["terraform"]
31 changes: 31 additions & 0 deletions acceptance/bundle/deployment/bind/sql_warehouse/output.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@

>>> [CLI] bundle deployment bind sql_warehouse1 [SQL-WAREHOUSE-ID] --auto-approve
Updating deployment state...
Successfully bound sql_warehouse with an id '[SQL-WAREHOUSE-ID]'. Run 'bundle deploy' to deploy changes to your workspace

>>> [CLI] bundle summary
Name: test-bundle-$UNIQUE_NAME
Target: default
Workspace:
User: [USERNAME]
Path: /Workspace/Users/[USERNAME]/.bundle/test-bundle-$UNIQUE_NAME/default
Resources:
SQL Warehouses:
sql_warehouse1:
Name: DEFAULT Test SQL Warehouse
URL: [DATABRICKS_URL]/sql/warehouses/[SQL-WAREHOUSE-ID]?o=[NUMID]

>>> [CLI] bundle deployment unbind sql_warehouse1
Updating deployment state...

>>> [CLI] bundle summary
Name: test-bundle-$UNIQUE_NAME
Target: default
Workspace:
User: [USERNAME]
Path: /Workspace/Users/[USERNAME]/.bundle/test-bundle-$UNIQUE_NAME/default
Resources:
SQL Warehouses:
sql_warehouse1:
Name: DEFAULT Test SQL Warehouse
URL: (not deployed)
6 changes: 6 additions & 0 deletions acceptance/bundle/deployment/bind/sql_warehouse/script
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
SQL_WAREHOUSE_ID="0123-456789-warehouse0"
trace $CLI bundle deployment bind sql_warehouse1 "${SQL_WAREHOUSE_ID}" --auto-approve
trace $CLI bundle summary

trace $CLI bundle deployment unbind sql_warehouse1
trace $CLI bundle summary
49 changes: 49 additions & 0 deletions acceptance/bundle/deployment/bind/sql_warehouse/test.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
Local = true
Cloud = false
BundleConfigTarget = "databricks.yml"

Ignore = [
".databricks"
]

[[Repls]]
Old = "[0-9]{4}-[0-9]{6}-[0-9a-z]{10}"
New = "[SQL-WAREHOUSE-ID]"

[[Server]]
Pattern = "GET /api/2.0/sql/warehouses"
Response.Body = '''
{
"warehouses": [
{
"id": "0123-456789-warehouse0",
"name": "Test SQL Warehouse"
}
]
}
'''

[[Server]]
Pattern = "GET /api/2.0/sql/warehouses/{warehouse_id}"
Response.Body = '''
{
"warehouses": [
{
"id": "0123-456789-warehouse0",
"name": "Test SQL Warehouse"
}
]
}
'''

[[Server]]
Pattern = "GET /api/2.0/preview/sql/data_sources"
Response.Body = '''
[
{
"id": "0123-456789-datasource0",
"name": "Test Data Source",
"warehouse_id": "0123-456789-warehouse0"
}
]
'''
6 changes: 6 additions & 0 deletions acceptance/bundle/summary/modified_status/databricks.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,3 +11,9 @@ resources:
name: test-schema
catalog_name: main
comment: COMMENT1

sql_warehouses:
my_sql_warehouse:
name: test-sql-warehouse
cluster_size: X-Large
enable_serverless_compute: true
35 changes: 35 additions & 0 deletions acceptance/bundle/summary/modified_status/output.txt
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,19 @@
"modified_status": "created",
"name": "test-schema"
}
},
"sql_warehouses": {
"my_sql_warehouse": {
"auto_stop_mins": 120,
"cluster_size": "X-Large",
"enable_photon": true,
"enable_serverless_compute": true,
"max_num_clusters": 1,
"modified_status": "created",
"name": "test-sql-warehouse",
"permissions": [],
"spot_instance_policy": "COST_OPTIMIZED"
}
}
}

Expand Down Expand Up @@ -70,6 +83,20 @@ Deployment complete!
"name": "test-schema",
"url": "[DATABRICKS_URL]/explore/data/main/test-schema?o=[NUMID]"
}
},
"sql_warehouses": {
"my_sql_warehouse": {
"auto_stop_mins": 120,
"cluster_size": "X-Large",
"enable_photon": true,
"enable_serverless_compute": true,
"id": "[UUID]",
"max_num_clusters": 1,
"name": "test-sql-warehouse",
"permissions": [],
"spot_instance_policy": "COST_OPTIMIZED",
"url": "[DATABRICKS_URL]/sql/warehouses/[UUID]?o=[NUMID]"
}
}
}

Expand All @@ -89,13 +116,21 @@ Deployment complete!
"modified_status": "deleted",
"url": "[DATABRICKS_URL]/explore/data/main/test-schema?o=[NUMID]"
}
},
"sql_warehouses": {
"my_sql_warehouse": {
"id": "[UUID]",
"modified_status": "deleted",
"url": "[DATABRICKS_URL]/sql/warehouses/[UUID]?o=[NUMID]"
}
}
}

>>> [CLI] bundle destroy --auto-approve
The following resources will be deleted:
delete pipeline my_pipeline
delete schema my_schema
delete sql_warehouse my_sql_warehouse

All files and directories at the following location will be deleted: /Workspace/Users/[USERNAME]/.bundle/test-bundle/default

Expand Down
Loading
Loading