Skip to content
Open
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
9 changes: 9 additions & 0 deletions acceptance/bundle/lifecycle/started/databricks.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
bundle:
name: test_lifecycle_started

resources:
jobs:
my_job:
name: my_job
lifecycle:
started: true
5 changes: 5 additions & 0 deletions acceptance/bundle/lifecycle/started/out.test.toml

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

7 changes: 7 additions & 0 deletions acceptance/bundle/lifecycle/started/output.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
Warning: unknown field: started
at resources.jobs.my_job.lifecycle
in databricks.yml:9:9

create jobs.my_job

Plan: 1 to add, 0 to change, 0 to delete, 0 unchanged
1 change: 1 addition & 0 deletions acceptance/bundle/lifecycle/started/script
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
errcode $CLI bundle plan
7 changes: 7 additions & 0 deletions acceptance/bundle/lifecycle/started/test.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
Local = true
Cloud = false

Ignore = [".databricks"]

[EnvMatrix]
DATABRICKS_BUNDLE_ENGINE = ["direct"]
45 changes: 27 additions & 18 deletions acceptance/bundle/refschema/out.fields.txt
Original file line number Diff line number Diff line change
Expand Up @@ -100,14 +100,14 @@ resources.apps.*.compute_status *apps.ComputeStatus ALL
resources.apps.*.compute_status.active_instances int ALL
resources.apps.*.compute_status.message string ALL
resources.apps.*.compute_status.state apps.ComputeState ALL
resources.apps.*.config *resources.AppConfig INPUT
resources.apps.*.config.command []string INPUT
resources.apps.*.config.command[*] string INPUT
resources.apps.*.config.env []resources.AppEnvVar INPUT
resources.apps.*.config.env[*] resources.AppEnvVar INPUT
resources.apps.*.config.env[*].name string INPUT
resources.apps.*.config.env[*].value string INPUT
resources.apps.*.config.env[*].value_from string INPUT
resources.apps.*.config *resources.AppConfig INPUT STATE
resources.apps.*.config.command []string INPUT STATE
resources.apps.*.config.command[*] string INPUT STATE
resources.apps.*.config.env []resources.AppEnvVar INPUT STATE
resources.apps.*.config.env[*] resources.AppEnvVar INPUT STATE
resources.apps.*.config.env[*].name string INPUT STATE
resources.apps.*.config.env[*].value string INPUT STATE
resources.apps.*.config.env[*].value_from string INPUT STATE
resources.apps.*.create_time string ALL
resources.apps.*.creator string ALL
resources.apps.*.default_source_code_path string ALL
Expand All @@ -119,18 +119,20 @@ resources.apps.*.effective_user_api_scopes[*] string ALL
resources.apps.*.git_repository *apps.GitRepository ALL
resources.apps.*.git_repository.provider string ALL
resources.apps.*.git_repository.url string ALL
resources.apps.*.git_source *apps.GitSource INPUT
resources.apps.*.git_source.branch string INPUT
resources.apps.*.git_source.commit string INPUT
resources.apps.*.git_source.git_repository *apps.GitRepository INPUT
resources.apps.*.git_source.git_repository.provider string INPUT
resources.apps.*.git_source.git_repository.url string INPUT
resources.apps.*.git_source.resolved_commit string INPUT
resources.apps.*.git_source.source_code_path string INPUT
resources.apps.*.git_source.tag string INPUT
resources.apps.*.git_source *apps.GitSource INPUT STATE
resources.apps.*.git_source.branch string INPUT STATE
resources.apps.*.git_source.commit string INPUT STATE
resources.apps.*.git_source.git_repository *apps.GitRepository INPUT STATE
resources.apps.*.git_source.git_repository.provider string INPUT STATE
resources.apps.*.git_source.git_repository.url string INPUT STATE
resources.apps.*.git_source.resolved_commit string INPUT STATE
resources.apps.*.git_source.source_code_path string INPUT STATE
resources.apps.*.git_source.tag string INPUT STATE
resources.apps.*.id string ALL
resources.apps.*.lifecycle resources.Lifecycle INPUT
resources.apps.*.lifecycle resources.LifecycleWithStarted INPUT
resources.apps.*.lifecycle.prevent_destroy bool INPUT
resources.apps.*.lifecycle.started *bool INPUT
resources.apps.*.modified_status string INPUT
resources.apps.*.name string ALL
resources.apps.*.oauth2_app_client_id string ALL
Expand Down Expand Up @@ -206,8 +208,9 @@ resources.apps.*.resources[*].uc_securable.securable_type apps.AppResourceUcSecu
resources.apps.*.service_principal_client_id string ALL
resources.apps.*.service_principal_id int64 ALL
resources.apps.*.service_principal_name string ALL
resources.apps.*.source_code_path string INPUT
resources.apps.*.source_code_path string INPUT STATE
resources.apps.*.space string ALL
resources.apps.*.started bool STATE
resources.apps.*.update_time string ALL
resources.apps.*.updater string ALL
resources.apps.*.url string ALL
Expand Down Expand Up @@ -386,7 +389,9 @@ resources.clusters.*.kind compute.Kind ALL
resources.clusters.*.last_restarted_time int64 REMOTE
resources.clusters.*.last_state_loss_time int64 REMOTE
resources.clusters.*.lifecycle resources.Lifecycle INPUT
resources.clusters.*.lifecycle resources.LifecycleWithStarted INPUT
resources.clusters.*.lifecycle.prevent_destroy bool INPUT
resources.clusters.*.lifecycle.started *bool INPUT
resources.clusters.*.modified_status string INPUT
resources.clusters.*.node_type_id string ALL
resources.clusters.*.num_workers int ALL
Expand Down Expand Up @@ -517,6 +522,7 @@ resources.clusters.*.spec.workload_type.clients.notebooks bool REMOTE
resources.clusters.*.ssh_public_keys []string ALL
resources.clusters.*.ssh_public_keys[*] string ALL
resources.clusters.*.start_time int64 REMOTE
resources.clusters.*.started bool STATE
resources.clusters.*.state compute.State REMOTE
resources.clusters.*.state_message string REMOTE
resources.clusters.*.terminated_time int64 REMOTE
Expand Down Expand Up @@ -2860,7 +2866,9 @@ resources.sql_warehouses.*.id string INPUT REMOTE
resources.sql_warehouses.*.instance_profile_arn string ALL
resources.sql_warehouses.*.jdbc_url string REMOTE
resources.sql_warehouses.*.lifecycle resources.Lifecycle INPUT
resources.sql_warehouses.*.lifecycle resources.LifecycleWithStarted INPUT
resources.sql_warehouses.*.lifecycle.prevent_destroy bool INPUT
resources.sql_warehouses.*.lifecycle.started *bool INPUT
resources.sql_warehouses.*.max_num_clusters int ALL
resources.sql_warehouses.*.min_num_clusters int ALL
resources.sql_warehouses.*.modified_status string INPUT
Expand All @@ -2879,6 +2887,7 @@ resources.sql_warehouses.*.permissions[*].level resources.SqlWarehousePermission
resources.sql_warehouses.*.permissions[*].service_principal_name string INPUT
resources.sql_warehouses.*.permissions[*].user_name string INPUT
resources.sql_warehouses.*.spot_instance_policy sql.SpotInstancePolicy ALL
resources.sql_warehouses.*.started bool STATE
resources.sql_warehouses.*.state sql.State REMOTE
resources.sql_warehouses.*.tags *sql.EndpointTags ALL
resources.sql_warehouses.*.tags.custom_tags []sql.EndpointTagPair ALL
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
print("Hello world!")
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
bundle:
name: lifecycle-started-$UNIQUE_NAME

resources:
apps:
myapp:
name: $UNIQUE_NAME
description: my_app_description
source_code_path: ./app
lifecycle:
started: true
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@

>>> errcode [CLI] bundle deploy
Uploading bundle files to /Workspace/Users/[USERNAME]/.bundle/lifecycle-started-[UNIQUE_NAME]/default/files...
Deploying resources...
Updating deployment state...
Deployment complete!

>>> jq select(.method == "POST" and .path == "/api/2.0/apps") out.requests.txt
{
"method": "POST",
"path": "/api/2.0/apps",
"body": {
"description": "my_app_description",
"name": "[UNIQUE_NAME]"
}
}

>>> errcode [CLI] apps get [UNIQUE_NAME]
"ACTIVE"

>>> errcode [CLI] bundle deploy
Uploading bundle files to /Workspace/Users/[USERNAME]/.bundle/lifecycle-started-[UNIQUE_NAME]/default/files...
Deploying resources...
✓ Deployment succeeded.
Updating deployment state...
Deployment complete!

>>> jq select(.method == "POST" and (.path | endswith("/deployments"))) out.requests.txt
{
"method": "POST",
"path": "/api/2.0/apps/[UNIQUE_NAME]/deployments",
"body": {
"mode": "SNAPSHOT",
"source_code_path": "/Workspace/Users/[USERNAME]/.bundle/lifecycle-started-[UNIQUE_NAME]/default/files/app"
}
}

>>> errcode [CLI] apps stop [UNIQUE_NAME]
"STOPPED"

>>> errcode [CLI] bundle deploy
Uploading bundle files to /Workspace/Users/[USERNAME]/.bundle/lifecycle-started-[UNIQUE_NAME]/default/files...
Deploying resources...
Updating deployment state...
Deployment complete!

>>> jq select(.method == "POST" and (.path | endswith("/deployments"))) out.requests.txt

>>> errcode [CLI] apps get [UNIQUE_NAME]
"STOPPED"

>>> errcode [CLI] bundle deploy
Uploading bundle files to /Workspace/Users/[USERNAME]/.bundle/lifecycle-started-[UNIQUE_NAME]/default/files...
Deploying resources...
✓ Deployment succeeded.
Updating deployment state...
Deployment complete!

>>> jq select(.method == "POST" and (.path | (endswith("/start") or endswith("/deployments")))) out.requests.txt
{
"method": "POST",
"path": "/api/2.0/apps/[UNIQUE_NAME]/start",
"body": {}
}
{
"method": "POST",
"path": "/api/2.0/apps/[UNIQUE_NAME]/deployments",
"body": {
"mode": "SNAPSHOT",
"source_code_path": "/Workspace/Users/[USERNAME]/.bundle/lifecycle-started-[UNIQUE_NAME]/default/files/app"
}
}

>>> errcode [CLI] apps get [UNIQUE_NAME]
"ACTIVE"
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@

>>> errcode [CLI] bundle deploy
Error: lifecycle.started is only supported in direct deployment mode
in databricks.yml:11:18


Exit code: 1

>>> jq select(.method == "POST" and .path == "/api/2.0/apps") out.requests.txt

>>> errcode [CLI] apps get [UNIQUE_NAME]
Error: Resource apps.App not found: [UNIQUE_NAME]

Exit code: 1

>>> errcode [CLI] bundle deploy
Error: lifecycle.started is only supported in direct deployment mode
in databricks.yml:11:18


Exit code: 1

>>> jq select(.method == "POST" and (.path | endswith("/deployments"))) out.requests.txt

>>> errcode [CLI] apps stop [UNIQUE_NAME]
Error: Not Found

Exit code: 1

>>> errcode [CLI] bundle deploy
Uploading bundle files to /Workspace/Users/[USERNAME]/.bundle/lifecycle-started-[UNIQUE_NAME]/default/files...
Deploying resources...
Updating deployment state...
Deployment complete!

>>> jq select(.method == "POST" and (.path | endswith("/deployments"))) out.requests.txt

>>> errcode [CLI] apps get [UNIQUE_NAME]
"ACTIVE"

>>> errcode [CLI] bundle deploy
Error: lifecycle.started is only supported in direct deployment mode
in databricks.yml:11:18


Exit code: 1

>>> jq select(.method == "POST" and (.path | (endswith("/start") or endswith("/deployments")))) out.requests.txt

>>> errcode [CLI] apps get [UNIQUE_NAME]
"ACTIVE"
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@

>>> [CLI] bundle destroy --auto-approve
The following resources will be deleted:
delete resources.apps.myapp

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

Deleting files...
Destroy complete!
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@

>>> [CLI] bundle destroy --auto-approve
The following resources will be deleted:
delete resources.apps.myapp

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

Deleting files...
Destroy complete!

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

10 changes: 10 additions & 0 deletions acceptance/bundle/resources/apps/lifecycle-started/output.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@

>>> update_file.py databricks.yml my_app_description MY_APP_DESCRIPTION

>>> update_file.py databricks.yml started: true started: false

>>> update_file.py databricks.yml MY_APP_DESCRIPTION MY_APP_DESCRIPTION_2

>>> update_file.py databricks.yml started: false started: true

>>> update_file.py databricks.yml MY_APP_DESCRIPTION_2 MY_APP_DESCRIPTION_3
32 changes: 32 additions & 0 deletions acceptance/bundle/resources/apps/lifecycle-started/script
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
envsubst < databricks.yml.tmpl > databricks.yml

cleanup() {
trace $CLI bundle destroy --auto-approve &> out.destroy.$DATABRICKS_BUNDLE_ENGINE.txt
rm -f out.requests.txt
}
trap cleanup EXIT

{ trace errcode $CLI bundle deploy; } &> out.deploy.$DATABRICKS_BUNDLE_ENGINE.txt
{ trace jq 'select(.method == "POST" and .path == "/api/2.0/apps")' out.requests.txt; } >> out.deploy.$DATABRICKS_BUNDLE_ENGINE.txt 2>&1
rm -f out.requests.txt
{ trace errcode $CLI apps get $UNIQUE_NAME | jq '.compute_status.state'; } >> out.deploy.$DATABRICKS_BUNDLE_ENGINE.txt 2>&1 || true

trace update_file.py databricks.yml my_app_description MY_APP_DESCRIPTION
{ trace errcode $CLI bundle deploy; } >> out.deploy.$DATABRICKS_BUNDLE_ENGINE.txt 2>&1
{ trace jq 'select(.method == "POST" and (.path | endswith("/deployments")))' out.requests.txt; } >> out.deploy.$DATABRICKS_BUNDLE_ENGINE.txt 2>&1
rm -f out.requests.txt
{ trace errcode $CLI apps stop $UNIQUE_NAME | jq '.compute_status.state'; } >> out.deploy.$DATABRICKS_BUNDLE_ENGINE.txt 2>&1 || true

trace update_file.py databricks.yml "started: true" "started: false"
trace update_file.py databricks.yml MY_APP_DESCRIPTION MY_APP_DESCRIPTION_2
{ trace errcode $CLI bundle deploy; } >> out.deploy.$DATABRICKS_BUNDLE_ENGINE.txt 2>&1
{ trace jq 'select(.method == "POST" and (.path | endswith("/deployments")))' out.requests.txt; } >> out.deploy.$DATABRICKS_BUNDLE_ENGINE.txt 2>&1
rm -f out.requests.txt
{ trace errcode $CLI apps get $UNIQUE_NAME | jq '.compute_status.state'; } >> out.deploy.$DATABRICKS_BUNDLE_ENGINE.txt 2>&1 || true

trace update_file.py databricks.yml "started: false" "started: true"
trace update_file.py databricks.yml MY_APP_DESCRIPTION_2 MY_APP_DESCRIPTION_3
{ trace errcode $CLI bundle deploy; } >> out.deploy.$DATABRICKS_BUNDLE_ENGINE.txt 2>&1
{ trace jq 'select(.method == "POST" and (.path | (endswith("/start") or endswith("/deployments"))))' out.requests.txt; } >> out.deploy.$DATABRICKS_BUNDLE_ENGINE.txt 2>&1
rm -f out.requests.txt
{ trace errcode $CLI apps get $UNIQUE_NAME | jq '.compute_status.state'; } >> out.deploy.$DATABRICKS_BUNDLE_ENGINE.txt 2>&1 || true
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
Local = true
Cloud = true
RecordRequests = true

Ignore = [".databricks", "databricks.yml"]

[EnvMatrix]
DATABRICKS_BUNDLE_ENGINE = ["direct", "terraform"]
Loading
Loading