Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
Cloud = true
Local = true
CloudSlow = true
RecordRequests = true


Ignore = [
"databricks.yml",
]
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
resources:
sql_warehouses:
sql_warehouse1:
name: "DEFAULT Test SQL Warehouse"
cluster_size: X-Large
Original file line numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 DownExpand 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