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
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
=== Terraform removal is reported in JSON with exit 0
{
"status": "failed",
"error": "the Terraform deployment engine has been removed in Databricks CLI v1.20.0\n\nRemove the \"bundle.engine\" setting (or set it to \"direct\") to deploy with the direct engine; existing Terraform state is migrated automatically. To keep using Terraform, revert to Databricks CLI v1.19.x.\nSee https://docs.databricks.com/dev-tools/bundles/direct for details",
"error": "the Terraform deployment engine has been removed in Databricks CLI v1.20.0\n\nUnset the DATABRICKS_BUNDLE_ENGINE environment variable (or set it to \"direct\") to deploy with the direct engine; existing Terraform state is migrated automatically. To keep using Terraform, revert to Databricks CLI v1.19.x.\nSee https://docs.databricks.com/dev-tools/bundles/direct for details",
"files": null,
"changes": {}
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,5 +2,5 @@
>>> musterr [CLI] bundle deploy --plan plan.json
Error: the Terraform deployment engine has been removed in Databricks CLI v1.20.0

Remove the "bundle.engine" setting (or set it to "direct") to deploy with the direct engine; existing Terraform state is migrated automatically. To keep using Terraform, revert to Databricks CLI v1.19.x.
Unset the DATABRICKS_BUNDLE_ENGINE environment variable (or set it to "direct") to deploy with the direct engine; existing Terraform state is migrated automatically. To keep using Terraform, revert to Databricks CLI v1.19.x.
See https://docs.databricks.com/dev-tools/bundles/direct for details
Original file line number Diff line number Diff line change
Expand Up @@ -2,5 +2,5 @@
>>> musterr [CLI] bundle deploy
Error: the Terraform deployment engine has been removed in Databricks CLI v1.20.0

Remove the "bundle.engine" setting (or set it to "direct") to deploy with the direct engine; existing Terraform state is migrated automatically. To keep using Terraform, revert to Databricks CLI v1.19.x.
Unset the DATABRICKS_BUNDLE_ENGINE environment variable (or set it to "direct") to deploy with the direct engine; existing Terraform state is migrated automatically. To keep using Terraform, revert to Databricks CLI v1.19.x.
See https://docs.databricks.com/dev-tools/bundles/direct for details
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
Error: the Terraform deployment engine has been removed in Databricks CLI v1.20.0

Remove the "bundle.engine" setting (or set it to "direct") to deploy with the direct engine; existing Terraform state is migrated automatically. To keep using Terraform, revert to Databricks CLI v1.19.x.
Unset the DATABRICKS_BUNDLE_ENGINE environment variable (or set it to "direct") to deploy with the direct engine; existing Terraform state is migrated automatically. To keep using Terraform, revert to Databricks CLI v1.19.x.
See https://docs.databricks.com/dev-tools/bundles/direct for details

Name: test-bundle
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,12 @@
>>> musterr [CLI] bundle plan
Error: the Terraform deployment engine has been removed in Databricks CLI v1.20.0

Remove the "bundle.engine" setting (or set it to "direct") to deploy with the direct engine; existing Terraform state is migrated automatically. To keep using Terraform, revert to Databricks CLI v1.19.x.
Unset the DATABRICKS_BUNDLE_ENGINE environment variable (or set it to "direct") to deploy with the direct engine; existing Terraform state is migrated automatically. To keep using Terraform, revert to Databricks CLI v1.19.x.
See https://docs.databricks.com/dev-tools/bundles/direct for details

=== bundle deploy fails with lifecycle.started on terraform engine
>>> musterr [CLI] bundle deploy
Error: the Terraform deployment engine has been removed in Databricks CLI v1.20.0

Remove the "bundle.engine" setting (or set it to "direct") to deploy with the direct engine; existing Terraform state is migrated automatically. To keep using Terraform, revert to Databricks CLI v1.19.x.
Unset the DATABRICKS_BUNDLE_ENGINE environment variable (or set it to "direct") to deploy with the direct engine; existing Terraform state is migrated automatically. To keep using Terraform, revert to Databricks CLI v1.19.x.
See https://docs.databricks.com/dev-tools/bundles/direct for details
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,12 @@
>>> musterr [CLI] bundle plan
Error: the Terraform deployment engine has been removed in Databricks CLI v1.20.0

Remove the "bundle.engine" setting (or set it to "direct") to deploy with the direct engine; existing Terraform state is migrated automatically. To keep using Terraform, revert to Databricks CLI v1.19.x.
Unset the DATABRICKS_BUNDLE_ENGINE environment variable (or set it to "direct") to deploy with the direct engine; existing Terraform state is migrated automatically. To keep using Terraform, revert to Databricks CLI v1.19.x.
See https://docs.databricks.com/dev-tools/bundles/direct for details

=== bundle deploy fails with lifecycle.started on terraform engine
>>> musterr [CLI] bundle deploy
Error: the Terraform deployment engine has been removed in Databricks CLI v1.20.0

Remove the "bundle.engine" setting (or set it to "direct") to deploy with the direct engine; existing Terraform state is migrated automatically. To keep using Terraform, revert to Databricks CLI v1.19.x.
Unset the DATABRICKS_BUNDLE_ENGINE environment variable (or set it to "direct") to deploy with the direct engine; existing Terraform state is migrated automatically. To keep using Terraform, revert to Databricks CLI v1.19.x.
See https://docs.databricks.com/dev-tools/bundles/direct for details
Original file line number Diff line number Diff line change
Expand Up @@ -2,5 +2,5 @@
>>> musterr [CLI] bundle deploy
Error: the Terraform deployment engine has been removed in Databricks CLI v1.20.0

Remove the "bundle.engine" setting (or set it to "direct") to deploy with the direct engine; existing Terraform state is migrated automatically. To keep using Terraform, revert to Databricks CLI v1.19.x.
Unset the DATABRICKS_BUNDLE_ENGINE environment variable (or set it to "direct") to deploy with the direct engine; existing Terraform state is migrated automatically. To keep using Terraform, revert to Databricks CLI v1.19.x.
See https://docs.databricks.com/dev-tools/bundles/direct for details
Original file line number Diff line number Diff line change
Expand Up @@ -3,5 +3,5 @@
>>> musterr [CLI] bundle deploy --var secret_value=test-value
Error: the Terraform deployment engine has been removed in Databricks CLI v1.20.0

Remove the "bundle.engine" setting (or set it to "direct") to deploy with the direct engine; existing Terraform state is migrated automatically. To keep using Terraform, revert to Databricks CLI v1.19.x.
Unset the DATABRICKS_BUNDLE_ENGINE environment variable (or set it to "direct") to deploy with the direct engine; existing Terraform state is migrated automatically. To keep using Terraform, revert to Databricks CLI v1.19.x.
See https://docs.databricks.com/dev-tools/bundles/direct for details
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,12 @@
>>> musterr [CLI] bundle plan
Error: the Terraform deployment engine has been removed in Databricks CLI v1.20.0

Remove the "bundle.engine" setting (or set it to "direct") to deploy with the direct engine; existing Terraform state is migrated automatically. To keep using Terraform, revert to Databricks CLI v1.19.x.
Unset the DATABRICKS_BUNDLE_ENGINE environment variable (or set it to "direct") to deploy with the direct engine; existing Terraform state is migrated automatically. To keep using Terraform, revert to Databricks CLI v1.19.x.
See https://docs.databricks.com/dev-tools/bundles/direct for details

=== bundle deploy fails with lifecycle.started on terraform engine
>>> musterr [CLI] bundle deploy
Error: the Terraform deployment engine has been removed in Databricks CLI v1.20.0

Remove the "bundle.engine" setting (or set it to "direct") to deploy with the direct engine; existing Terraform state is migrated automatically. To keep using Terraform, revert to Databricks CLI v1.19.x.
Unset the DATABRICKS_BUNDLE_ENGINE environment variable (or set it to "direct") to deploy with the direct engine; existing Terraform state is migrated automatically. To keep using Terraform, revert to Databricks CLI v1.19.x.
See https://docs.databricks.com/dev-tools/bundles/direct for details
4 changes: 2 additions & 2 deletions acceptance/bundle/select/rejected/output.txt
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,11 @@
>>> musterr [CLI] bundle plan --select my_job
Error: the Terraform deployment engine has been removed in Databricks CLI v1.20.0

Remove the "bundle.engine" setting (or set it to "direct") to deploy with the direct engine; existing Terraform state is migrated automatically. To keep using Terraform, revert to Databricks CLI v1.19.x.
Unset the DATABRICKS_BUNDLE_ENGINE environment variable (or set it to "direct") to deploy with the direct engine; existing Terraform state is migrated automatically. To keep using Terraform, revert to Databricks CLI v1.19.x.
See https://docs.databricks.com/dev-tools/bundles/direct for details

>>> musterr [CLI] bundle deploy --select my_job
Error: the Terraform deployment engine has been removed in Databricks CLI v1.20.0

Remove the "bundle.engine" setting (or set it to "direct") to deploy with the direct engine; existing Terraform state is migrated automatically. To keep using Terraform, revert to Databricks CLI v1.19.x.
Unset the DATABRICKS_BUNDLE_ENGINE environment variable (or set it to "direct") to deploy with the direct engine; existing Terraform state is migrated automatically. To keep using Terraform, revert to Databricks CLI v1.19.x.
See https://docs.databricks.com/dev-tools/bundles/direct for details
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,11 @@
>>> musterr [CLI] bundle config-remote-sync
Error: the Terraform deployment engine has been removed in Databricks CLI v1.20.0

Remove the "bundle.engine" setting (or set it to "direct") to deploy with the direct engine; existing Terraform state is migrated automatically. To keep using Terraform, revert to Databricks CLI v1.19.x.
Unset the DATABRICKS_BUNDLE_ENGINE environment variable (or set it to "direct") to deploy with the direct engine; existing Terraform state is migrated automatically. To keep using Terraform, revert to Databricks CLI v1.19.x.
See https://docs.databricks.com/dev-tools/bundles/direct for details

>>> cat [OUTPUT_DIR]/out.requests.txt
{
"error_message": "the Terraform deployment engine has been removed in Databricks CLI v1.20.0\n\nRemove the \"bundle.engine\" setting (or set it to \"direct\") to deploy with the direct engine; existing Terraform state is migrated automatically. To keep using Terraform, revert to Databricks CLI v1.19.x.\nSee https://docs.databricks.com/dev-tools/bundles/direct for details",
"error_message": "the Terraform deployment engine has been removed in Databricks CLI v1.20.0\n\nUnset the DATABRICKS_BUNDLE_ENGINE environment variable (or set it to \"direct\") to deploy with the direct engine; existing Terraform state is migrated automatically. To keep using Terraform, revert to Databricks CLI v1.19.x.\nSee https://docs.databricks.com/dev-tools/bundles/direct for details",
"error_category": "BUNDLE_LOAD_FAILED"
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,13 @@
>>> errcode [CLI] bundle config-remote-sync -o json
{
"status": "failed",
"error": "the Terraform deployment engine has been removed in Databricks CLI v1.20.0\n\nRemove the \"bundle.engine\" setting (or set it to \"direct\") to deploy with the direct engine; existing Terraform state is migrated automatically. To keep using Terraform, revert to Databricks CLI v1.19.x.\nSee https://docs.databricks.com/dev-tools/bundles/direct for details",
"error": "the Terraform deployment engine has been removed in Databricks CLI v1.20.0\n\nUnset the DATABRICKS_BUNDLE_ENGINE environment variable (or set it to \"direct\") to deploy with the direct engine; existing Terraform state is migrated automatically. To keep using Terraform, revert to Databricks CLI v1.19.x.\nSee https://docs.databricks.com/dev-tools/bundles/direct for details",
"files": null,
"changes": {}
}

>>> cat [OUTPUT_DIR]/out.requests.txt
{
"error_message": "the Terraform deployment engine has been removed in Databricks CLI v1.20.0\n\nRemove the \"bundle.engine\" setting (or set it to \"direct\") to deploy with the direct engine; existing Terraform state is migrated automatically. To keep using Terraform, revert to Databricks CLI v1.19.x.\nSee https://docs.databricks.com/dev-tools/bundles/direct for details",
"error_message": "the Terraform deployment engine has been removed in Databricks CLI v1.20.0\n\nUnset the DATABRICKS_BUNDLE_ENGINE environment variable (or set it to \"direct\") to deploy with the direct engine; existing Terraform state is migrated automatically. To keep using Terraform, revert to Databricks CLI v1.19.x.\nSee https://docs.databricks.com/dev-tools/bundles/direct for details",
"error_category": "BUNDLE_LOAD_FAILED"
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,5 +2,5 @@
>>> musterr [CLI] bundle plan
Error: the Terraform deployment engine has been removed in Databricks CLI v1.20.0

Remove the "bundle.engine" setting (or set it to "direct") to deploy with the direct engine; existing Terraform state is migrated automatically. To keep using Terraform, revert to Databricks CLI v1.19.x.
Unset the DATABRICKS_BUNDLE_ENGINE environment variable (or set it to "direct") to deploy with the direct engine; existing Terraform state is migrated automatically. To keep using Terraform, revert to Databricks CLI v1.19.x.
See https://docs.databricks.com/dev-tools/bundles/direct for details
12 changes: 12 additions & 0 deletions acceptance/bundle/validate/engine-config-valid/output.txt
Original file line number Diff line number Diff line change
Expand Up @@ -19,3 +19,15 @@ Name: test-engine-config-valid
Target: terraform-target

Found 1 error

>>> musterr [CLI] bundle validate -t terraform-target
Error: the Terraform deployment engine has been removed in Databricks CLI v1.20.0
in databricks.yml:10:15

Remove the "bundle.engine" setting (or set it to "direct") to deploy with the direct engine; existing Terraform state is migrated automatically. To keep using Terraform, revert to Databricks CLI v1.19.x.
See https://docs.databricks.com/dev-tools/bundles/direct for details

Name: test-engine-config-valid
Target: terraform-target

Found 1 error
3 changes: 3 additions & 0 deletions acceptance/bundle/validate/engine-config-valid/script
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
trace $CLI bundle validate
# engine: terraform was removed in v1.20.0, so the terraform-target now fails validation.
trace musterr $CLI bundle validate -t terraform-target

# bundle.engine takes priority over the env var, so the error names the config setting even when both say terraform.
DATABRICKS_BUNDLE_ENGINE=terraform trace musterr $CLI bundle validate -t terraform-target
Original file line number Diff line number Diff line change
Expand Up @@ -3,5 +3,5 @@
>>> musterr [CLI] pipelines deploy
Error: the Terraform deployment engine has been removed in Databricks CLI v1.20.0

Remove the "bundle.engine" setting (or set it to "direct") to deploy with the direct engine; existing Terraform state is migrated automatically. To keep using Terraform, revert to Databricks CLI v1.19.x.
Unset the DATABRICKS_BUNDLE_ENGINE environment variable (or set it to "direct") to deploy with the direct engine; existing Terraform state is migrated automatically. To keep using Terraform, revert to Databricks CLI v1.19.x.
See https://docs.databricks.com/dev-tools/bundles/direct for details
27 changes: 18 additions & 9 deletions bundle/config/engine/engine.go
Original file line number Diff line number Diff line change
Expand Up @@ -21,17 +21,26 @@ const (
// for existing terraform deployments (whose state is migrated to it before the command runs).
const Default = EngineDirect

// TerraformRemovedMessage is the error text shown when a bundle pins the removed
// Terraform deployment engine, via bundle.engine or DATABRICKS_BUNDLE_ENGINE.
// "terraform" is still recognized as a value so we can point at this specific
// removal rather than reporting it as an unrecognized setting.
const TerraformRemovedMessage = TerraformRemovedSummary + "\n\n" + TerraformRemovedDetail

// TerraformRemovedSummary and TerraformRemovedDetail are the two parts of
// TerraformRemovedMessage, for callers that report it as a diagnostic.
// TerraformRemovedConfigMessage and TerraformRemovedEnvMessage are the error text
// shown when a bundle pins the removed Terraform deployment engine via
// bundle.engine or DATABRICKS_BUNDLE_ENGINE respectively. "terraform" is still
// recognized as a value so we can point at this specific removal rather than
// reporting it as an unrecognized setting.
const (
TerraformRemovedConfigMessage = TerraformRemovedSummary + "\n\n" + TerraformRemovedConfigDetail
TerraformRemovedEnvMessage = TerraformRemovedSummary + "\n\n" + TerraformRemovedEnvDetail
)

// TerraformRemovedSummary and TerraformRemovedConfigDetail are the two parts of
// TerraformRemovedConfigMessage, for callers that report it as a diagnostic.
const TerraformRemovedSummary = `the Terraform deployment engine has been removed in Databricks CLI v1.20.0`

const TerraformRemovedDetail = `Remove the "bundle.engine" setting (or set it to "direct") to deploy with the direct engine; existing Terraform state is migrated automatically. To keep using Terraform, revert to Databricks CLI v1.19.x.
const (
TerraformRemovedConfigDetail = `Remove the "bundle.engine" setting (or set it to "direct") to deploy with the direct engine; ` + terraformRemovedHint
TerraformRemovedEnvDetail = `Unset the ` + EnvVar + ` environment variable (or set it to "direct") to deploy with the direct engine; ` + terraformRemovedHint
)

const terraformRemovedHint = `existing Terraform state is migrated automatically. To keep using Terraform, revert to Databricks CLI v1.19.x.
See https://docs.databricks.com/dev-tools/bundles/direct for details`

// SourceDefault is the Source of an EngineSetting that neither the bundle config
Expand Down
2 changes: 1 addition & 1 deletion bundle/config/validate/validate_engine.go
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ func (v *validateEngine) Apply(_ context.Context, b *bundle.Bundle) diag.Diagnos
return diags.Append(diag.Diagnostic{
Severity: diag.Error,
Summary: engine.TerraformRemovedSummary,
Detail: engine.TerraformRemovedDetail,
Detail: engine.TerraformRemovedConfigDetail,
Locations: []dyn.Location{loc},
})
}
Expand Down
4 changes: 2 additions & 2 deletions cmd/bundle/utils/process.go
Original file line number Diff line number Diff line change
Expand Up @@ -563,7 +563,7 @@ func ResolveEngineSetting(ctx context.Context, b *bundle.Bundle) (engine.EngineS
return engine.EngineSetting{}, fmt.Errorf("invalid value %q for bundle.engine (expected %q)", configEngine, engine.EngineDirect)
}
if parsed == engine.EngineTerraform {
return engine.EngineSetting{}, errors.New(engine.TerraformRemovedMessage)
return engine.EngineSetting{}, errors.New(engine.TerraformRemovedConfigMessage)
}
source := "bundle.engine setting"
v := dyn.GetValue(b.Config.Value(), "bundle.engine")
Expand All @@ -579,7 +579,7 @@ func ResolveEngineSetting(ctx context.Context, b *bundle.Bundle) (engine.EngineS
return engine.EngineSetting{}, err
}
if envEngine == engine.EngineTerraform {
return engine.EngineSetting{}, errors.New(engine.TerraformRemovedMessage)
return engine.EngineSetting{}, errors.New(engine.TerraformRemovedEnvMessage)
}
if envEngine != engine.EngineNotSet {
return engine.EngineSetting{Type: envEngine, Source: engine.EnvVar + " environment variable"}, nil
Expand Down
15 changes: 15 additions & 0 deletions cmd/bundle/utils/resolve_engine_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -52,3 +52,18 @@ func TestResolveEngineSettingInvalidEnvVarIgnoredWhenConfigSet(t *testing.T) {
require.NoError(t, err)
assert.Equal(t, engine.EngineDirect, result.Type)
}

func TestResolveEngineSettingTerraformEnvVar(t *testing.T) {
ctx := env.Set(t.Context(), engine.EnvVar, "terraform")
b := &bundle.Bundle{Config: config.Root{}}
_, err := ResolveEngineSetting(ctx, b)
assert.EqualError(t, err, engine.TerraformRemovedEnvMessage)
}

func TestResolveEngineSettingTerraformConfig(t *testing.T) {
// The config takes priority, so it is the setting to remove even if the env var also says terraform.
ctx := env.Set(t.Context(), engine.EnvVar, "terraform")
b := &bundle.Bundle{Config: config.Root{Bundle: config.Bundle{Engine: engine.EngineTerraform}}}
_, err := ResolveEngineSetting(ctx, b)
assert.EqualError(t, err, engine.TerraformRemovedConfigMessage)
}
Loading