From 52e722830439249d2704cc849a304b5a4ee8e892 Mon Sep 17 00:00:00 2001 From: Denis Bilenko Date: Mon, 22 Jun 2026 16:08:43 +0200 Subject: [PATCH 01/25] Add hidden --local flag to bundle plan and deploy When passed, the plan is computed from the local state only: the per-resource remote read is skipped, so the remote state of resources is neither fetched nor considered. References that genuinely need a target's remote state (e.g. a remote-only field) fetch that target on demand, so $resources references still resolve. Direct engine only; rejected on terraform. Exercise it in the no_drift invariant via a LOCAL_DIFF matrix. Co-authored-by: Isaac --- acceptance/bundle/invariant/no_drift/script | 6 +- .../bundle/invariant/no_drift/test.toml | 16 +++ .../bundle/local/basic/databricks.yml.tmpl | 14 +++ acceptance/bundle/local/basic/out.test.toml | 3 + acceptance/bundle/local/basic/output.txt | 33 ++++++ acceptance/bundle/local/basic/script | 25 +++++ acceptance/bundle/local/basic/test.toml | 7 ++ .../bundle/local/rejected/databricks.yml | 7 ++ .../bundle/local/rejected/out.test.toml | 3 + acceptance/bundle/local/rejected/output.txt | 12 +++ acceptance/bundle/local/rejected/script | 3 + acceptance/bundle/local/rejected/test.toml | 2 + bundle/bundle.go | 4 + bundle/direct/bind.go | 4 +- bundle/direct/bundle_plan.go | 100 ++++++++++++++---- bundle/direct/pkg.go | 5 + bundle/metrics/metrics.go | 1 + bundle/phases/deploy.go | 2 +- bundle/phases/destroy.go | 2 +- cmd/bundle/config_remote_sync.go | 2 +- cmd/bundle/deploy.go | 4 + cmd/bundle/plan.go | 4 + cmd/bundle/utils/process.go | 10 ++ 23 files changed, 242 insertions(+), 27 deletions(-) create mode 100644 acceptance/bundle/local/basic/databricks.yml.tmpl create mode 100644 acceptance/bundle/local/basic/out.test.toml create mode 100644 acceptance/bundle/local/basic/output.txt create mode 100644 acceptance/bundle/local/basic/script create mode 100644 acceptance/bundle/local/basic/test.toml create mode 100644 acceptance/bundle/local/rejected/databricks.yml create mode 100644 acceptance/bundle/local/rejected/out.test.toml create mode 100644 acceptance/bundle/local/rejected/output.txt create mode 100644 acceptance/bundle/local/rejected/script create mode 100644 acceptance/bundle/local/rejected/test.toml diff --git a/acceptance/bundle/invariant/no_drift/script b/acceptance/bundle/invariant/no_drift/script index 481f64d9e74..3fbe62311dd 100644 --- a/acceptance/bundle/invariant/no_drift/script +++ b/acceptance/bundle/invariant/no_drift/script @@ -44,6 +44,8 @@ echo INPUT_CONFIG_OK # JSON plan asserts every action is "skip" -- a strict superset of the text # renderer's "Plan: 0 to add, 0 to change, 0 to delete" summary. -$CLI bundle plan -o json > LOG.planjson 2>LOG.planjson.err +# LOCAL_DIFF is either empty or "--local"; with --local the plan ignores the remote +# state of resources, so no drift means the local state saved by deploy matches config. +$CLI bundle plan $LOCAL_DIFF -o json > LOG.planjson 2>LOG.planjson.err cat LOG.planjson.err | contains.py '!panic' '!internal error' > /dev/null -verify_no_drift.py LOG.planjson +verify_no_drift.py LOG.planjson \ No newline at end of file diff --git a/acceptance/bundle/invariant/no_drift/test.toml b/acceptance/bundle/invariant/no_drift/test.toml index ff8a66c196e..9c192724693 100644 --- a/acceptance/bundle/invariant/no_drift/test.toml +++ b/acceptance/bundle/invariant/no_drift/test.toml @@ -1 +1,17 @@ EnvMatrix.READPLAN = ["", "1"] + +# Run every config twice: once planning normally and once with --local, which plans +# using only the local state. The no-drift invariant must hold either way: after a +# deploy the local state saved by the engine must already match the config. +EnvMatrix.LOCAL_DIFF = ["", "--local"] + +# The configs below show drift under --local and are excluded from that variant only. +# They still run in the normal (LOCAL_DIFF="") variant. + +# dashboard, genie_space and vector_search_index persist a remote-sourced value in +# state for drift detection (etag, endpoint_uuid) that the config never carries. +# A normal plan reconciles it against the freshly-read remote; --local has no remote +# to compare against, so the persisted value reads as drift. This is inherent to --local. +EnvMatrixExclude.no_dashboard_local = ["LOCAL_DIFF=--local", "INPUT_CONFIG=dashboard.yml.tmpl"] +EnvMatrixExclude.no_genie_space_local = ["LOCAL_DIFF=--local", "INPUT_CONFIG=genie_space.yml.tmpl"] +EnvMatrixExclude.no_vector_search_index_local = ["LOCAL_DIFF=--local", "INPUT_CONFIG=vector_search_index.yml.tmpl"] diff --git a/acceptance/bundle/local/basic/databricks.yml.tmpl b/acceptance/bundle/local/basic/databricks.yml.tmpl new file mode 100644 index 00000000000..40688ff660d --- /dev/null +++ b/acceptance/bundle/local/basic/databricks.yml.tmpl @@ -0,0 +1,14 @@ +bundle: + name: local-$UNIQUE_NAME + +resources: + jobs: + bar: + name: bar-$UNIQUE_NAME + + foo: + name: foo-$UNIQUE_NAME + tasks: + - task_key: run_bar + run_job_task: + job_id: ${resources.jobs.bar.id} diff --git a/acceptance/bundle/local/basic/out.test.toml b/acceptance/bundle/local/basic/out.test.toml new file mode 100644 index 00000000000..9cfad3fb0d5 --- /dev/null +++ b/acceptance/bundle/local/basic/out.test.toml @@ -0,0 +1,3 @@ +Local = true +Cloud = true +EnvMatrix.DATABRICKS_BUNDLE_ENGINE = ["direct"] diff --git a/acceptance/bundle/local/basic/output.txt b/acceptance/bundle/local/basic/output.txt new file mode 100644 index 00000000000..86835fa156d --- /dev/null +++ b/acceptance/bundle/local/basic/output.txt @@ -0,0 +1,33 @@ + +>>> [CLI] bundle deploy +Uploading bundle files to /Workspace/Users/[USERNAME]/.bundle/local-[UNIQUE_NAME]/default/files... +Deploying resources... +Updating deployment state... +Deployment complete! + +>>> [CLI] bundle plan --local +Plan: 0 to add, 0 to change, 0 to delete, 2 unchanged + +=== Job reads during 'bundle plan --local': + +>>> print_requests.py --get //jobs/get + +>>> [CLI] bundle deploy --local +Uploading bundle files to /Workspace/Users/[USERNAME]/.bundle/local-[UNIQUE_NAME]/default/files... +Deploying resources... +Updating deployment state... +Deployment complete! + +=== Telemetry: +local_used true + +=== Destroy +>>> [CLI] bundle destroy --auto-approve +The following resources will be deleted: + delete resources.jobs.bar + delete resources.jobs.foo + +All files and directories at the following location will be deleted: /Workspace/Users/[USERNAME]/.bundle/local-[UNIQUE_NAME]/default + +Deleting files... +Destroy complete! diff --git a/acceptance/bundle/local/basic/script b/acceptance/bundle/local/basic/script new file mode 100644 index 00000000000..58267f6cfd5 --- /dev/null +++ b/acceptance/bundle/local/basic/script @@ -0,0 +1,25 @@ +envsubst '$UNIQUE_NAME' < databricks.yml.tmpl > databricks.yml + +cleanup() { + title "Destroy" + trace $CLI bundle destroy --auto-approve + rm -f out.requests.txt +} +trap cleanup EXIT + +# Deploy both jobs so that they are recorded in the local state. foo references +# ${resources.jobs.bar.id}. +trace $CLI bundle deploy +rm -f out.requests.txt + +# A --local plan reports no drift without reading the remote state of the jobs: +# no GET is issued. The ${resources.jobs.bar.id} reference still resolves because +# it comes from the local state, not a remote read. +trace $CLI bundle plan --local +title "Job reads during 'bundle plan --local':\n" +trace print_requests.py --get //jobs/get + +# A --local deploy likewise does not read remote state up front and reports its use via telemetry. +trace $CLI bundle deploy --local +title "Telemetry:\n" +print_telemetry_bool_values | grep '^local_used ' diff --git a/acceptance/bundle/local/basic/test.toml b/acceptance/bundle/local/basic/test.toml new file mode 100644 index 00000000000..ebc3f807638 --- /dev/null +++ b/acceptance/bundle/local/basic/test.toml @@ -0,0 +1,7 @@ +Local = true +Cloud = true +RecordRequests = true +# --local skips the per-resource remote read, which only the direct engine performs. +EnvMatrix.DATABRICKS_BUNDLE_ENGINE = ["direct"] +# databricks.yml is generated at runtime from the template. +Ignore = [".databricks", ".gitignore", "databricks.yml"] diff --git a/acceptance/bundle/local/rejected/databricks.yml b/acceptance/bundle/local/rejected/databricks.yml new file mode 100644 index 00000000000..f3c9c652e4e --- /dev/null +++ b/acceptance/bundle/local/rejected/databricks.yml @@ -0,0 +1,7 @@ +bundle: + name: local-rejected + +resources: + jobs: + my_job: + name: my-job diff --git a/acceptance/bundle/local/rejected/out.test.toml b/acceptance/bundle/local/rejected/out.test.toml new file mode 100644 index 00000000000..65156e0457c --- /dev/null +++ b/acceptance/bundle/local/rejected/out.test.toml @@ -0,0 +1,3 @@ +Local = true +Cloud = false +EnvMatrix.DATABRICKS_BUNDLE_ENGINE = ["terraform"] diff --git a/acceptance/bundle/local/rejected/output.txt b/acceptance/bundle/local/rejected/output.txt new file mode 100644 index 00000000000..a51d51b27d3 --- /dev/null +++ b/acceptance/bundle/local/rejected/output.txt @@ -0,0 +1,12 @@ + +>>> [CLI] bundle plan --local +Error: --local is only supported with the direct engine. See https://docs.databricks.com/aws/en/dev-tools/bundles/direct + + +Exit code: 1 + +>>> [CLI] bundle deploy --local +Error: --local is only supported with the direct engine. See https://docs.databricks.com/aws/en/dev-tools/bundles/direct + + +Exit code: 1 diff --git a/acceptance/bundle/local/rejected/script b/acceptance/bundle/local/rejected/script new file mode 100644 index 00000000000..722f6ea3ae3 --- /dev/null +++ b/acceptance/bundle/local/rejected/script @@ -0,0 +1,3 @@ +# --local is only supported by the direct engine; both plan and deploy reject it. +errcode trace $CLI bundle plan --local +errcode trace $CLI bundle deploy --local diff --git a/acceptance/bundle/local/rejected/test.toml b/acceptance/bundle/local/rejected/test.toml new file mode 100644 index 00000000000..0772be31644 --- /dev/null +++ b/acceptance/bundle/local/rejected/test.toml @@ -0,0 +1,2 @@ +# --local is rejected on the terraform engine with an actionable error. +EnvMatrix.DATABRICKS_BUNDLE_ENGINE = ["terraform"] diff --git a/bundle/bundle.go b/bundle/bundle.go index 94f55389b26..60b9309468f 100644 --- a/bundle/bundle.go +++ b/bundle/bundle.go @@ -162,6 +162,10 @@ type Bundle struct { // When non-empty, only the specified resources are included in deployment. Select []string + // Local, when set via the --local flag, plans and deploys using only the local + // state. The remote state of resources is neither fetched nor considered. + Local bool + // SkipLocalFileValidation makes path translation tolerant of missing local files. // When set, TranslatePaths computes workspace paths without verifying files exist. // Used by config-remote-sync: a user may modify resource paths remotely (e.g., diff --git a/bundle/direct/bind.go b/bundle/direct/bind.go index 9760ce95666..fa55701e92c 100644 --- a/bundle/direct/bind.go +++ b/bundle/direct/bind.go @@ -114,7 +114,7 @@ func (b *DeploymentBundle) Bind(ctx context.Context, client *databricks.Workspac os.Remove(tmpStatePath) return nil, err } - plan, err := b.CalculatePlan(ctx, client, configRoot) + plan, err := b.CalculatePlan(ctx, client, configRoot, false) if err != nil { os.Remove(tmpStatePath) return nil, err @@ -170,7 +170,7 @@ func (b *DeploymentBundle) Bind(ctx context.Context, client *databricks.Workspac os.Remove(tmpStatePath) return nil, err } - plan, err = b.CalculatePlan(ctx, client, configRoot) + plan, err = b.CalculatePlan(ctx, client, configRoot, false) if _, ferr := b.StateDB.Finalize(ctx); ferr != nil { log.Warnf(ctx, "failed to finalize state: %v", ferr) } diff --git a/bundle/direct/bundle_plan.go b/bundle/direct/bundle_plan.go index 139012423ea..db5ca3b575c 100644 --- a/bundle/direct/bundle_plan.go +++ b/bundle/direct/bundle_plan.go @@ -116,8 +116,12 @@ func (b *DeploymentBundle) InitForApply(ctx context.Context, client *databricks. // CalculatePlan computes the deployment plan by comparing local config against remote state. // StateDB must already be open for read before calling this function. -func (b *DeploymentBundle) CalculatePlan(ctx context.Context, client *databricks.WorkspaceClient, configRoot *config.Root) (*deployplan.Plan, error) { +// +// When localOnly is true, the remote state of resources is neither fetched nor considered: +// the plan is computed solely from the difference between the saved local state and the config. +func (b *DeploymentBundle) CalculatePlan(ctx context.Context, client *databricks.WorkspaceClient, configRoot *config.Root, localOnly bool) (*deployplan.Plan, error) { b.StateDB.AssertOpenedForRead() + b.localOnly = localOnly err := b.init(client) if err != nil { @@ -178,6 +182,12 @@ func (b *DeploymentBundle) CalculatePlan(ctx context.Context, client *databricks return false } + if localOnly { + // The resource is being deleted because it is absent from config; + // its remote status is irrelevant, so skip the remote read. + return true + } + remoteState, err := retryOnTransient(ctx, func() (any, error) { return adapter.DoRead(ctx, id) }) @@ -237,15 +247,18 @@ func (b *DeploymentBundle) CalculatePlan(ctx context.Context, client *databricks return false } - remoteState, err := retryOnTransient(ctx, func() (any, error) { - return adapter.DoRead(ctx, dbentry.ID) - }) - if err != nil { - if apierr.IsMissing(err) { - remoteState = nil - } else { - logdiag.LogError(ctx, fmt.Errorf("%s: reading id=%q: %w", errorPrefix, dbentry.ID, err)) - return false + var remoteState any + if !localOnly { + remoteState, err = retryOnTransient(ctx, func() (any, error) { + return adapter.DoRead(ctx, dbentry.ID) + }) + if err != nil { + if apierr.IsMissing(err) { + remoteState = nil + } else { + logdiag.LogError(ctx, fmt.Errorf("%s: reading id=%q: %w", errorPrefix, dbentry.ID, err)) + return false + } } } @@ -283,17 +296,23 @@ func (b *DeploymentBundle) CalculatePlan(ctx context.Context, client *databricks return false } - if remoteState == nil { + if remoteState == nil && !localOnly { // Even if local action is "recreate" which is higher than "create", we should still pick "create" here // because we know remote does not exist. action = deployplan.Create } else { + // In local-only mode the action is derived purely from the local diff + // (saved state vs config); remote existence is not consulted. action = getMaxAction(entry.Changes) } - // Note, this unconditionally stores remoteState. However, it may updated post-deploy, so whether - // it can be used for variable resolution depends on several factors, see canReadRemoteCache in LookupReferencePreDeploy - b.RemoteStateCache.Store(resourceKey, remoteState) + // Note, remoteState may be updated post-deploy, so whether it can be used for + // variable resolution depends on several factors, see canReadRemoteCache in LookupReferencePreDeploy. + // In --local mode we skip the store entirely (remoteState is nil here): a reference that needs it + // fetches the target on demand via remoteStateForRef, which relies on the cache being absent. + if !localOnly { + b.RemoteStateCache.Store(resourceKey, remoteState) + } // Validate that resources without DoUpdate don't have update actions if action == deployplan.Update && !adapter.HasDoUpdate() { @@ -772,12 +791,14 @@ func (b *DeploymentBundle) LookupReferencePreDeploy(ctx context.Context, path *s if configValidErr != nil && remoteValidErr == nil { // The field is only present in remote state schema. if canReadRemoteCache { - remoteState, ok := b.RemoteStateCache.Load(targetResourceKey) + remoteState, ok, err := b.remoteStateForRef(ctx, targetResourceKey, adapter) + if err != nil { + return nil, err + } if ok { return structaccess.Get(remoteState, fieldPath) - } else { - return nil, fmt.Errorf("internal error: no entry in remote state cache for %q (remote-only)", targetResourceKey) } + return nil, fmt.Errorf("internal error: no entry in remote state cache for %q (remote-only)", targetResourceKey) } return nil, errDelayed } @@ -791,17 +812,56 @@ func (b *DeploymentBundle) LookupReferencePreDeploy(ctx context.Context, path *s } if canReadRemoteCache { - remoteState, ok := b.RemoteStateCache.Load(targetResourceKey) + remoteState, ok, err := b.remoteStateForRef(ctx, targetResourceKey, adapter) + if err != nil { + return nil, err + } if ok { return structaccess.Get(remoteState, fieldPath) - } else { - return nil, fmt.Errorf("internal error: no entry in remote state cache for %q", targetResourceKey) } + return nil, fmt.Errorf("internal error: no entry in remote state cache for %q", targetResourceKey) } return nil, errDelayed } +// remoteStateForRef returns the remote state of a referenced target resource for +// reference resolution. Normally the state was cached when the target was processed +// (targets precede their dependents in DAG order). In --local mode that proactive +// read is skipped, so fetch it on demand here: a reference to a remote-only field +// genuinely needs the remote state, so we ignore --local for that target. +// +// The bool reports whether a value is available. In non-local mode a cache miss +// returns (nil, false, nil) and the caller surfaces its own internal error. +func (b *DeploymentBundle) remoteStateForRef(ctx context.Context, targetResourceKey string, adapter *dresources.Adapter) (any, bool, error) { + if remoteState, ok := b.RemoteStateCache.Load(targetResourceKey); ok { + return remoteState, true, nil + } + + if !b.localOnly { + return nil, false, nil + } + + id := b.StateDB.GetResourceID(targetResourceKey) + if id == "" { + return nil, false, fmt.Errorf("internal error: no db entry for %q", targetResourceKey) + } + + remoteState, err := retryOnTransient(ctx, func() (any, error) { + return adapter.DoRead(ctx, id) + }) + if err != nil { + if apierr.IsMissing(err) { + remoteState = nil + } else { + return nil, false, fmt.Errorf("reading id=%q: %w", id, err) + } + } + + b.RemoteStateCache.Store(targetResourceKey, remoteState) + return remoteState, true, nil +} + // resolveReferences processes all references in entry.NewState.Refs. func (b *DeploymentBundle) resolveReferences(ctx context.Context, resourceKey string, entry *deployplan.PlanEntry, errorPrefix string, isPreDeploy bool) bool { sv, ok := b.StateCache.Load(resourceKey) diff --git a/bundle/direct/pkg.go b/bundle/direct/pkg.go index 48a9c5a2ff7..76e1abc0ddc 100644 --- a/bundle/direct/pkg.go +++ b/bundle/direct/pkg.go @@ -44,6 +44,11 @@ type DeploymentBundle struct { Plan *deployplan.Plan RemoteStateCache sync.Map StateCache structvar.Cache + + // localOnly is set by CalculatePlan when planning with --local: the per-resource + // remote read is skipped. A reference that genuinely needs a target's remote state + // fetches it on demand (see remoteStateForRef), so --local is ignored per resource. + localOnly bool } // SetRemoteState updates the remote state with type validation and marks as fresh. diff --git a/bundle/metrics/metrics.go b/bundle/metrics/metrics.go index 002adea1ddf..5fa0815fd53 100644 --- a/bundle/metrics/metrics.go +++ b/bundle/metrics/metrics.go @@ -10,6 +10,7 @@ const ( ClusterLifecycleStarted = "cluster_lifecycle_started" SqlWarehouseLifecycleStarted = "sql_warehouse_lifecycle_started" SelectUsed = "select_used" + LocalUsed = "local_used" // Outcome of the dry-run migration to the direct engine attempted after a // successful terraform deploy WHEN THE USER DID NOT OPT IN. Only recorded diff --git a/bundle/phases/deploy.go b/bundle/phases/deploy.go index f65e50a940e..d64996a9c8a 100644 --- a/bundle/phases/deploy.go +++ b/bundle/phases/deploy.go @@ -270,7 +270,7 @@ func Deploy(ctx context.Context, b *bundle.Bundle, outputHandler sync.OutputHand func RunPlan(ctx context.Context, b *bundle.Bundle, engine engine.EngineType) *deployplan.Plan { if engine.IsDirect() { - plan, err := b.DeploymentBundle.CalculatePlan(ctx, b.WorkspaceClient(ctx), &b.Config) + plan, err := b.DeploymentBundle.CalculatePlan(ctx, b.WorkspaceClient(ctx), &b.Config, b.Local) if err != nil { logdiag.LogError(ctx, err) return nil diff --git a/bundle/phases/destroy.go b/bundle/phases/destroy.go index 2496c7033ad..c6cbbc3bef9 100644 --- a/bundle/phases/destroy.go +++ b/bundle/phases/destroy.go @@ -155,7 +155,7 @@ func Destroy(ctx context.Context, b *bundle.Bundle, engine engine.EngineType) { var plan *deployplan.Plan if engine.IsDirect() { - plan, err = b.DeploymentBundle.CalculatePlan(ctx, b.WorkspaceClient(ctx), nil) + plan, err = b.DeploymentBundle.CalculatePlan(ctx, b.WorkspaceClient(ctx), nil, false) if err != nil { logdiag.LogError(ctx, err) return diff --git a/cmd/bundle/config_remote_sync.go b/cmd/bundle/config_remote_sync.go index e5231fef58a..8e62748bb74 100644 --- a/cmd/bundle/config_remote_sync.go +++ b/cmd/bundle/config_remote_sync.go @@ -87,7 +87,7 @@ Examples: return err } - plan, err := deployBundle.CalculatePlan(ctx, b.WorkspaceClient(ctx), &b.Config) + plan, err := deployBundle.CalculatePlan(ctx, b.WorkspaceClient(ctx), &b.Config, false) if err != nil { stats.ErrorCategory = protos.BundleConfigRemoteSyncErrorCategoryDetectChangesFailed return fmt.Errorf("failed to detect changes: %w", err) diff --git a/cmd/bundle/deploy.go b/cmd/bundle/deploy.go index 95776eb25f4..8286e9072e7 100644 --- a/cmd/bundle/deploy.go +++ b/cmd/bundle/deploy.go @@ -32,6 +32,7 @@ See https://docs.databricks.com/en/dev-tools/bundles/index.html for more informa var verbose bool var readPlanPath string var selectResources []string + var local bool cmd.Flags().BoolVar(&force, "force", false, "Force-override Git branch validation.") cmd.Flags().BoolVar(&forceLock, "force-lock", false, "Force acquisition of deployment lock.") cmd.Flags().BoolVar(&failOnActiveRuns, "fail-on-active-runs", false, "Fail if there are running jobs or pipelines in the deployment.") @@ -42,6 +43,8 @@ See https://docs.databricks.com/en/dev-tools/bundles/index.html for more informa cmd.Flags().BoolVar(&verbose, "verbose", false, "Enable verbose output.") cmd.Flags().StringVar(&readPlanPath, "plan", "", "Path to a JSON plan file to apply instead of planning (direct engine only).") cmd.Flags().StringSliceVar(&selectResources, "select", nil, "Deploy only the specified resource (e.g. 'my_job' or 'jobs.my_job'). Can be repeated or comma-separated.") + cmd.Flags().BoolVar(&local, "local", false, "Deploy using only the local state, without fetching the remote state of resources.") + cmd.Flags().MarkHidden("local") // Verbose flag currently only affects file sync output, it's used by the vscode extension cmd.Flags().MarkHidden("verbose") @@ -52,6 +55,7 @@ See https://docs.databricks.com/en/dev-tools/bundles/index.html for more informa b.Config.Bundle.Deployment.Lock.Force = forceLock b.AutoApprove = autoApprove b.Select = selectResources + b.Local = local if cmd.Flag("compute-id").Changed { b.Config.Bundle.ClusterId = clusterId diff --git a/cmd/bundle/plan.go b/cmd/bundle/plan.go index 20df8cb5f0f..952de22c8a1 100644 --- a/cmd/bundle/plan.go +++ b/cmd/bundle/plan.go @@ -29,11 +29,14 @@ It is useful for previewing changes before running 'bundle deploy'.`, var force bool var clusterId string var selectResources []string + var local bool cmd.Flags().BoolVar(&force, "force", false, "Force-override Git branch validation.") cmd.Flags().StringVar(&clusterId, "compute-id", "", "Override cluster in the deployment with the given compute ID.") cmd.Flags().StringVarP(&clusterId, "cluster-id", "c", "", "Override cluster in the deployment with the given cluster ID.") cmd.Flags().MarkDeprecated("compute-id", "use --cluster-id instead") cmd.Flags().StringSliceVar(&selectResources, "select", nil, "Plan only the specified resource (e.g. 'my_job' or 'jobs.my_job'). Can be repeated or comma-separated.") + cmd.Flags().BoolVar(&local, "local", false, "Plan using only the local state, without fetching the remote state of resources.") + cmd.Flags().MarkHidden("local") cmd.RunE = func(cmd *cobra.Command, args []string) error { opts := utils.ProcessOptions{ @@ -44,6 +47,7 @@ It is useful for previewing changes before running 'bundle deploy'.`, InitFunc: func(b *bundle.Bundle) { b.Config.Bundle.Force = force b.Select = selectResources + b.Local = local if cmd.Flag("compute-id").Changed { b.Config.Bundle.ClusterId = clusterId diff --git a/cmd/bundle/utils/process.go b/cmd/bundle/utils/process.go index e4f232605ce..346fd1d6ca0 100644 --- a/cmd/bundle/utils/process.go +++ b/cmd/bundle/utils/process.go @@ -15,6 +15,7 @@ import ( "github.com/databricks/cli/bundle/deployplan" "github.com/databricks/cli/bundle/direct" "github.com/databricks/cli/bundle/direct/dstate" + "github.com/databricks/cli/bundle/metrics" "github.com/databricks/cli/bundle/phases" "github.com/databricks/cli/bundle/statemgmt" "github.com/databricks/cli/cmd/root" @@ -207,6 +208,15 @@ func ProcessBundleRet(cmd *cobra.Command, opts ProcessOptions) (b *bundle.Bundle return b, stateDesc, root.ErrAlreadyPrinted } + // --local skips the per-resource remote read, which only the direct engine performs. + if b.Local { + if !stateDesc.Engine.IsDirect() { + logdiag.LogError(ctx, errors.New("--local is only supported with the direct engine. See https://docs.databricks.com/aws/en/dev-tools/bundles/direct")) + return b, stateDesc, root.ErrAlreadyPrinted + } + b.Metrics.SetBoolValue(metrics.LocalUsed, true) + } + // Open direct engine state once for all subsequent operations (ExportState, CalculatePlan, Apply, etc.) needDirectState := stateDesc.Engine.IsDirect() && (opts.InitIDs || opts.ErrorOnEmptyState || opts.Deploy || opts.ReadPlanPath != "" || opts.PreDeployChecks || opts.PostStateFunc != nil) if needDirectState { From 3e107bcaf7cc3ffce534d01834000733be4f3d9b Mon Sep 17 00:00:00 2001 From: Denis Bilenko Date: Mon, 22 Jun 2026 16:38:26 +0200 Subject: [PATCH 02/25] direct: surface on-demand remote reads in --local plan When --local resolves a reference that needs a target's remote-only field, it already fetches that target on demand. Copy those fetched states onto their plan entries (entry.RemoteState) so the plan shows what was actually read. Done in a single-threaded pass after the parallel walk: during the walk a target is fetched from a dependent's goroutine under the target's read lock, where writing its entry would race with sibling dependents. Co-authored-by: Isaac --- bundle/direct/bundle_plan.go | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/bundle/direct/bundle_plan.go b/bundle/direct/bundle_plan.go index db5ca3b575c..bcaedb9fea6 100644 --- a/bundle/direct/bundle_plan.go +++ b/bundle/direct/bundle_plan.go @@ -328,6 +328,23 @@ func (b *DeploymentBundle) CalculatePlan(ctx context.Context, client *databricks return nil, errors.New("planning failed") } + // In --local the main loop skips each resource's remote read, but reference + // resolution may still have fetched some targets on demand (remoteStateForRef + // stores them in RemoteStateCache). Surface those reads in the plan. This runs + // after the parallel walk so the write to entry.RemoteState is single-threaded: + // during the walk a target is fetched from a dependent's goroutine under the + // target's read lock, where writing its entry would race with sibling dependents. + if localOnly { + for key, entry := range plan.Plan { + if entry.RemoteState != nil { + continue + } + if remoteState, ok := b.RemoteStateCache.Load(key); ok { + entry.RemoteState = remoteState + } + } + } + for _, entry := range plan.Plan { if entry.Action == deployplan.Skip { entry.NewState = nil From 71cd7782613202387d45f4395386c8a8c2c7be9a Mon Sep 17 00:00:00 2001 From: Denis Bilenko Date: Tue, 23 Jun 2026 20:08:54 +0200 Subject: [PATCH 03/25] acc: also run selected resource plan/deploy with --local Add a LOCAL=["", "--local"] matrix to three resource tests (jobs/num_workers, schemas/update, volumes/change-name) so plan/deploy run both with and without --local. Deploy issues the same mutating requests either way (only GET reads differ, which print_requests.py excludes), so output is identical across variants. --local is excluded on terraform (rejected there) and not applied to `bundle plan -o json`, whose remote_state would diverge. Co-authored-by: Isaac --- .../bundle/resources/jobs/num_workers/script | 4 ++-- .../bundle/resources/jobs/num_workers/test.toml | 12 ++++++++++++ acceptance/bundle/resources/schemas/update/script | 6 +++--- .../bundle/resources/schemas/update/test.toml | 12 ++++++++++++ .../bundle/resources/volumes/change-name/script | 6 +++--- .../bundle/resources/volumes/change-name/test.toml | 14 ++++++++++++++ 6 files changed, 46 insertions(+), 8 deletions(-) create mode 100644 acceptance/bundle/resources/jobs/num_workers/test.toml create mode 100644 acceptance/bundle/resources/schemas/update/test.toml diff --git a/acceptance/bundle/resources/jobs/num_workers/script b/acceptance/bundle/resources/jobs/num_workers/script index 8e430e43063..45b9270143b 100644 --- a/acceptance/bundle/resources/jobs/num_workers/script +++ b/acceptance/bundle/resources/jobs/num_workers/script @@ -1,6 +1,6 @@ envsubst < databricks.yml.tmpl > databricks.yml -trace $CLI bundle deploy +trace $CLI bundle deploy $LOCAL trace print_requests.py //jobs -trace $CLI bundle plan +trace $CLI bundle plan $LOCAL rm out.requests.txt diff --git a/acceptance/bundle/resources/jobs/num_workers/test.toml b/acceptance/bundle/resources/jobs/num_workers/test.toml new file mode 100644 index 00000000000..8c3547c70b4 --- /dev/null +++ b/acceptance/bundle/resources/jobs/num_workers/test.toml @@ -0,0 +1,12 @@ +# Also run plan/deploy with --local (direct engine only; rejected on terraform). +# Deploy issues the same mutating requests with or without --local — only the +# remote reads (GETs, excluded from print_requests.py) differ — so the recorded +# output is identical across variants. The " --local" token is stripped from the +# command echo so the >>> lines match the non-local variant. +EnvMatrix.LOCAL = ["", "--local"] +EnvMatrixExclude.no_local_on_terraform = ["LOCAL=--local", "DATABRICKS_BUNDLE_ENGINE=terraform"] +EnvRepl.LOCAL = false + +[[Repls]] +Old = " --local" +New = "" diff --git a/acceptance/bundle/resources/schemas/update/script b/acceptance/bundle/resources/schemas/update/script index 733ed7eb9df..6bafac9ae6c 100644 --- a/acceptance/bundle/resources/schemas/update/script +++ b/acceptance/bundle/resources/schemas/update/script @@ -1,12 +1,12 @@ echo "*" > .gitignore -trace $CLI bundle deploy +trace $CLI bundle deploy $LOCAL trace print_requests.py //unity read_state.py schemas schema1 id name catalog_name comment title "Update comment and re-deploy" trace update_file.py databricks.yml COMMENT1 COMMENT2 -trace $CLI bundle deploy +trace $CLI bundle deploy $LOCAL # Why the first time request match for direct & terraform, the requests from second deploy no longer match: # Terraform also sends "enable_predictive_optimization": "INHERIT" which is remote value that it stored in the state. trace print_requests.py //unity | gron.py | grep -v enable_predictive_optimization @@ -14,7 +14,7 @@ read_state.py schemas schema1 id name catalog_name comment title "Restore comment to original value and re-deploy" trace update_file.py databricks.yml COMMENT2 COMMENT1 -trace $CLI bundle deploy +trace $CLI bundle deploy $LOCAL trace print_requests.py //unity | gron.py | grep -v enable_predictive_optimization read_state.py schemas schema1 id name catalog_name comment diff --git a/acceptance/bundle/resources/schemas/update/test.toml b/acceptance/bundle/resources/schemas/update/test.toml new file mode 100644 index 00000000000..8c3547c70b4 --- /dev/null +++ b/acceptance/bundle/resources/schemas/update/test.toml @@ -0,0 +1,12 @@ +# Also run plan/deploy with --local (direct engine only; rejected on terraform). +# Deploy issues the same mutating requests with or without --local — only the +# remote reads (GETs, excluded from print_requests.py) differ — so the recorded +# output is identical across variants. The " --local" token is stripped from the +# command echo so the >>> lines match the non-local variant. +EnvMatrix.LOCAL = ["", "--local"] +EnvMatrixExclude.no_local_on_terraform = ["LOCAL=--local", "DATABRICKS_BUNDLE_ENGINE=terraform"] +EnvRepl.LOCAL = false + +[[Repls]] +Old = " --local" +New = "" diff --git a/acceptance/bundle/resources/volumes/change-name/script b/acceptance/bundle/resources/volumes/change-name/script index ba4d63c4032..8c4b1289d61 100644 --- a/acceptance/bundle/resources/volumes/change-name/script +++ b/acceptance/bundle/resources/volumes/change-name/script @@ -1,4 +1,4 @@ -trace $CLI bundle deploy +trace $CLI bundle deploy $LOCAL trace print_requests.py //unity @@ -8,10 +8,10 @@ $CLI bundle summary -o json | jq .resources title "Update name" trace update_file.py databricks.yml myvolume mynewvolume -trace $CLI bundle plan +trace $CLI bundle plan $LOCAL # terraform marks this as "update", direct marks this as "update_with_id" $CLI bundle plan -o json > out.plan.$DATABRICKS_BUNDLE_ENGINE.json -trace $CLI bundle deploy +trace $CLI bundle deploy $LOCAL trace print_requests.py //unity trace $CLI volumes read main.myschema.mynewvolume diff --git a/acceptance/bundle/resources/volumes/change-name/test.toml b/acceptance/bundle/resources/volumes/change-name/test.toml index bd4b66fe75e..866e7b2f13c 100644 --- a/acceptance/bundle/resources/volumes/change-name/test.toml +++ b/acceptance/bundle/resources/volumes/change-name/test.toml @@ -1,3 +1,17 @@ Ignore = [ ".databricks", ] + +# Also run plan/deploy with --local (direct engine only; rejected on terraform). +# Deploy issues the same mutating requests with or without --local — only the +# remote reads (GETs, excluded from print_requests.py) differ — so the recorded +# output is identical across variants. The " --local" token is stripped from the +# command echo so the >>> lines match the non-local variant. Note: the JSON plan +# (`bundle plan -o json`) keeps no --local: its remote_state would differ. +EnvMatrix.LOCAL = ["", "--local"] +EnvMatrixExclude.no_local_on_terraform = ["LOCAL=--local", "DATABRICKS_BUNDLE_ENGINE=terraform"] +EnvRepl.LOCAL = false + +[[Repls]] +Old = " --local" +New = "" From f0ef0a33755e0cc29127682bd3c259bab27d8b4a Mon Sep 17 00:00:00 2001 From: Denis Bilenko Date: Wed, 24 Jun 2026 07:22:37 +0200 Subject: [PATCH 04/25] direct: record local_only in plan JSON; warn on deploy --plan A --local plan is computed without remote state, so a saved plan can miss out-of-band drift. Add a top-level local_only field (omitempty, so normal plans are unchanged) and warn when deploy --plan applies a local-only plan. Extend local/basic to record the JSON plan, showing local_only: true and the absence of remote_state. Co-authored-by: Isaac --- acceptance/bundle/local/basic/output.txt | 25 ++++++++++++++++++++++++ acceptance/bundle/local/basic/script | 6 ++++++ bundle/deployplan/plan.go | 16 ++++++++++----- bundle/direct/bundle_plan.go | 1 + cmd/bundle/utils/process.go | 3 +++ 5 files changed, 46 insertions(+), 5 deletions(-) diff --git a/acceptance/bundle/local/basic/output.txt b/acceptance/bundle/local/basic/output.txt index 86835fa156d..2058f51518f 100644 --- a/acceptance/bundle/local/basic/output.txt +++ b/acceptance/bundle/local/basic/output.txt @@ -12,6 +12,31 @@ Plan: 0 to add, 0 to change, 0 to delete, 2 unchanged >>> print_requests.py --get //jobs/get +=== Plan --local as JSON: + +>>> [CLI] bundle plan --local -o json +{ + "plan_version": 2, + "cli_version": "[DEV_VERSION]", + "lineage": "[UUID]", + "serial": 1, + "local_only": true, + "plan": { + "resources.jobs.bar": { + "action": "skip" + }, + "resources.jobs.foo": { + "depends_on": [ + { + "node": "resources.jobs.bar", + "label": "${resources.jobs.bar.id}" + } + ], + "action": "skip" + } + } +} + >>> [CLI] bundle deploy --local Uploading bundle files to /Workspace/Users/[USERNAME]/.bundle/local-[UNIQUE_NAME]/default/files... Deploying resources... diff --git a/acceptance/bundle/local/basic/script b/acceptance/bundle/local/basic/script index 58267f6cfd5..44cd6411b8d 100644 --- a/acceptance/bundle/local/basic/script +++ b/acceptance/bundle/local/basic/script @@ -19,6 +19,12 @@ trace $CLI bundle plan --local title "Job reads during 'bundle plan --local':\n" trace print_requests.py --get //jobs/get +# The JSON plan is self-describing: local_only is true and no entry carries +# remote_state (nothing was fetched), so deploy --plan can warn before applying it. +title "Plan --local as JSON:\n" +trace $CLI bundle plan --local -o json +rm -f out.requests.txt + # A --local deploy likewise does not read remote state up front and reports its use via telemetry. trace $CLI bundle deploy --local title "Telemetry:\n" diff --git a/bundle/deployplan/plan.go b/bundle/deployplan/plan.go index bb1b0d77bff..fe7eef64f9e 100644 --- a/bundle/deployplan/plan.go +++ b/bundle/deployplan/plan.go @@ -16,11 +16,17 @@ import ( const currentPlanVersion = 2 type Plan struct { - PlanVersion int `json:"plan_version,omitempty"` - CLIVersion string `json:"cli_version,omitempty"` - Lineage string `json:"lineage,omitempty"` - Serial int `json:"serial,omitempty"` - Plan map[string]*PlanEntry `json:"plan,omitzero"` + PlanVersion int `json:"plan_version,omitempty"` + CLIVersion string `json:"cli_version,omitempty"` + Lineage string `json:"lineage,omitempty"` + Serial int `json:"serial,omitempty"` + + // LocalOnly is set when the plan was computed with --local, i.e. without + // fetching the remote state of resources. Such a plan can miss out-of-band + // drift, so consumers like "deploy --plan" warn before applying it. + LocalOnly bool `json:"local_only,omitempty"` + + Plan map[string]*PlanEntry `json:"plan,omitzero"` mutex sync.Mutex `json:"-"` lockmap lockmap `json:"-"` diff --git a/bundle/direct/bundle_plan.go b/bundle/direct/bundle_plan.go index bcaedb9fea6..03396273770 100644 --- a/bundle/direct/bundle_plan.go +++ b/bundle/direct/bundle_plan.go @@ -133,6 +133,7 @@ func (b *DeploymentBundle) CalculatePlan(ctx context.Context, client *databricks return nil, fmt.Errorf("reading config: %w", err) } + plan.LocalOnly = localOnly b.Plan = plan g, err := makeGraph(plan) diff --git a/cmd/bundle/utils/process.go b/cmd/bundle/utils/process.go index 346fd1d6ca0..abafd8c6e0f 100644 --- a/cmd/bundle/utils/process.go +++ b/cmd/bundle/utils/process.go @@ -278,6 +278,9 @@ func ProcessBundleRet(cmd *cobra.Command, opts ProcessOptions) (b *bundle.Bundle if plan.CLIVersion != currentVersion { log.Warnf(ctx, "Plan was created with CLI version %s but current version is %s", plan.CLIVersion, currentVersion) } + if plan.LocalOnly { + log.Warnf(ctx, "Plan was created with --local and does not reflect the remote state of resources; applying it may miss out-of-band drift") + } // Validate that the plan's lineage and serial match the current state // This must happen before any file operations From ef14f86813df9d8ec2a987beca8d0db4df4ac0d9 Mon Sep 17 00:00:00 2001 From: Denis Bilenko Date: Thu, 2 Jul 2026 18:05:28 +0200 Subject: [PATCH 05/25] direct: simplify --local plumbing Drop the redundant b.localOnly field (remoteStateForRef reads b.Plan.LocalOnly, set before the walk), remove a dead nil-guard in the post-walk reconciliation loop (entries are always nil there in --local mode), and trim a duplicated comment. No behavior change. Also regenerate no_drift/out.test.toml for the merged LOCAL_DIFF matrix. Co-authored-by: Isaac --- bundle/direct/bundle_plan.go | 9 ++------- bundle/direct/pkg.go | 5 ----- 2 files changed, 2 insertions(+), 12 deletions(-) diff --git a/bundle/direct/bundle_plan.go b/bundle/direct/bundle_plan.go index 03396273770..d35e58dfdcd 100644 --- a/bundle/direct/bundle_plan.go +++ b/bundle/direct/bundle_plan.go @@ -121,7 +121,6 @@ func (b *DeploymentBundle) InitForApply(ctx context.Context, client *databricks. // the plan is computed solely from the difference between the saved local state and the config. func (b *DeploymentBundle) CalculatePlan(ctx context.Context, client *databricks.WorkspaceClient, configRoot *config.Root, localOnly bool) (*deployplan.Plan, error) { b.StateDB.AssertOpenedForRead() - b.localOnly = localOnly err := b.init(client) if err != nil { @@ -309,8 +308,7 @@ func (b *DeploymentBundle) CalculatePlan(ctx context.Context, client *databricks // Note, remoteState may be updated post-deploy, so whether it can be used for // variable resolution depends on several factors, see canReadRemoteCache in LookupReferencePreDeploy. - // In --local mode we skip the store entirely (remoteState is nil here): a reference that needs it - // fetches the target on demand via remoteStateForRef, which relies on the cache being absent. + // In --local mode the store is skipped so remoteStateForRef fetches on demand (it keys off cache absence). if !localOnly { b.RemoteStateCache.Store(resourceKey, remoteState) } @@ -337,9 +335,6 @@ func (b *DeploymentBundle) CalculatePlan(ctx context.Context, client *databricks // target's read lock, where writing its entry would race with sibling dependents. if localOnly { for key, entry := range plan.Plan { - if entry.RemoteState != nil { - continue - } if remoteState, ok := b.RemoteStateCache.Load(key); ok { entry.RemoteState = remoteState } @@ -856,7 +851,7 @@ func (b *DeploymentBundle) remoteStateForRef(ctx context.Context, targetResource return remoteState, true, nil } - if !b.localOnly { + if !b.Plan.LocalOnly { return nil, false, nil } diff --git a/bundle/direct/pkg.go b/bundle/direct/pkg.go index 76e1abc0ddc..48a9c5a2ff7 100644 --- a/bundle/direct/pkg.go +++ b/bundle/direct/pkg.go @@ -44,11 +44,6 @@ type DeploymentBundle struct { Plan *deployplan.Plan RemoteStateCache sync.Map StateCache structvar.Cache - - // localOnly is set by CalculatePlan when planning with --local: the per-resource - // remote read is skipped. A reference that genuinely needs a target's remote state - // fetches it on demand (see remoteStateForRef), so --local is ignored per resource. - localOnly bool } // SetRemoteState updates the remote state with type validation and marks as fresh. From 2186155aad42097a6db4a912d88af3c3c33dcfa4 Mon Sep 17 00:00:00 2001 From: Denis Bilenko Date: Mon, 6 Jul 2026 12:55:29 +0200 Subject: [PATCH 06/25] acc: also print requests after bundle plan/deploy --local -o json Co-authored-by: Isaac --- acceptance/bundle/local/basic/output.txt | 15 +++++++++++++++ acceptance/bundle/local/basic/script | 5 ++++- 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/acceptance/bundle/local/basic/output.txt b/acceptance/bundle/local/basic/output.txt index 2058f51518f..2f81cfbf5ea 100644 --- a/acceptance/bundle/local/basic/output.txt +++ b/acceptance/bundle/local/basic/output.txt @@ -37,12 +37,27 @@ Plan: 0 to add, 0 to change, 0 to delete, 2 unchanged } } +=== Job reads during 'bundle plan --local -o json': + +>>> print_requests.py --get //jobs/get + >>> [CLI] bundle deploy --local Uploading bundle files to /Workspace/Users/[USERNAME]/.bundle/local-[UNIQUE_NAME]/default/files... Deploying resources... Updating deployment state... Deployment complete! +=== Job reads during 'bundle deploy --local': + +>>> print_requests.py --get //jobs/get --keep +{ + "method": "GET", + "path": "/api/2.2/jobs/get", + "q": { + "job_id": "[NUMID]" + } +} + === Telemetry: local_used true diff --git a/acceptance/bundle/local/basic/script b/acceptance/bundle/local/basic/script index 44cd6411b8d..a276fcaf063 100644 --- a/acceptance/bundle/local/basic/script +++ b/acceptance/bundle/local/basic/script @@ -23,9 +23,12 @@ trace print_requests.py --get //jobs/get # remote_state (nothing was fetched), so deploy --plan can warn before applying it. title "Plan --local as JSON:\n" trace $CLI bundle plan --local -o json -rm -f out.requests.txt +title "Job reads during 'bundle plan --local -o json':\n" +trace print_requests.py --get //jobs/get # A --local deploy likewise does not read remote state up front and reports its use via telemetry. trace $CLI bundle deploy --local +title "Job reads during 'bundle deploy --local':\n" +trace print_requests.py --get //jobs/get --keep title "Telemetry:\n" print_telemetry_bool_values | grep '^local_used ' From 1811d266ae04cf7b5dcc8038072badd87fd9124f Mon Sep 17 00:00:00 2001 From: Denis Bilenko Date: Mon, 6 Jul 2026 13:00:41 +0200 Subject: [PATCH 07/25] # Regression Test Report MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Tested commit: 6b94feb7d acc: regenerate no_drift/out.test.toml with LOCAL_DIFF matrix entry | test | branch | main (de465e09b) | latest (v1.6.0) | | --- | --- | --- | --- | | TestAccept/bundle/local/basic/DATABRICKS_BUNDLE_ENGINE=direct | ✅ | ❌ | ❌ | | TestAccept/bundle/local/rejected/DATABRICKS_BUNDLE_ENGINE=terraform | ✅ | ❌ | ❌ | | TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=alert.yml.tmpl/LOCAL_DIFF=/READPLAN= | ✅ | ✅ | ✅ | | TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=alert.yml.tmpl/LOCAL_DIFF=/READPLAN=1 | ✅ | ✅ | ✅ | | TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=alert.yml.tmpl/LOCAL_DIFF=--local/READPLAN= | ✅ | ❌ | ❌ | | TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=alert.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 | ✅ | ❌ | ❌ | | TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=app.yml.tmpl/LOCAL_DIFF=/READPLAN= | ✅ | ✅ | ✅ | | TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=app.yml.tmpl/LOCAL_DIFF=/READPLAN=1 | ✅ | ✅ | ✅ | | TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=app.yml.tmpl/LOCAL_DIFF=--local/READPLAN= | ✅ | ❌ | ❌ | | TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=app.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 | ✅ | ❌ | ❌ | | TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=catalog.yml.tmpl/LOCAL_DIFF=/READPLAN= | ✅ | ✅ | ✅ | | TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=catalog.yml.tmpl/LOCAL_DIFF=/READPLAN=1 | ✅ | ✅ | ✅ | | TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=catalog.yml.tmpl/LOCAL_DIFF=--local/READPLAN= | ✅ | ❌ | ❌ | | TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=catalog.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 | ✅ | ❌ | ❌ | | TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=cluster.yml.tmpl/LOCAL_DIFF=/READPLAN= | ✅ | ✅ | ✅ | | TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=cluster.yml.tmpl/LOCAL_DIFF=/READPLAN=1 | ✅ | ✅ | ✅ | | TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=cluster.yml.tmpl/LOCAL_DIFF=--local/READPLAN= | ✅ | ❌ | ❌ | | TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=cluster.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 | ✅ | ❌ | ❌ | | TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=cluster_apply_policy_default_values.yml.tmpl/LOCAL_DIFF=/READPLAN= | ✅ | ✅ | ✅ | | TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=cluster_apply_policy_default_values.yml.tmpl/LOCAL_DIFF=/READPLAN=1 | ✅ | ✅ | ✅ | | TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=cluster_apply_policy_default_values.yml.tmpl/LOCAL_DIFF=--local/READPLAN= | ✅ | ❌ | ❌ | | TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=cluster_apply_policy_default_values.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 | ✅ | ❌ | ❌ | | TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=dashboard.yml.tmpl/LOCAL_DIFF=/READPLAN= | ✅ | ✅ | ✅ | | TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=dashboard.yml.tmpl/LOCAL_DIFF=/READPLAN=1 | ✅ | ✅ | ✅ | | TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_apply_policy_default_values_job_cluster.yml.tmpl/LOCAL_DIFF=/READPLAN= | ✅ | ✅ | ✅ | | TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_apply_policy_default_values_job_cluster.yml.tmpl/LOCAL_DIFF=/READPLAN=1 | ✅ | ✅ | ✅ | | TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_apply_policy_default_values_job_cluster.yml.tmpl/LOCAL_DIFF=--local/READPLAN= | ✅ | ❌ | ❌ | | TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_apply_policy_default_values_job_cluster.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 | ✅ | ❌ | ❌ | | TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_apply_policy_default_values_task_cluster.yml.tmpl/LOCAL_DIFF=/READPLAN= | ✅ | ✅ | ✅ | | TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_apply_policy_default_values_task_cluster.yml.tmpl/LOCAL_DIFF=/READPLAN=1 | ✅ | ✅ | ✅ | | TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_apply_policy_default_values_task_cluster.yml.tmpl/LOCAL_DIFF=--local/READPLAN= | ✅ | ❌ | ❌ | | TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_apply_policy_default_values_task_cluster.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 | ✅ | ❌ | ❌ | | TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_apply_policy_default_values_for_each_task.yml.tmpl/LOCAL_DIFF=/READPLAN= | ✅ | ✅ | ✅ | | TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_apply_policy_default_values_for_each_task.yml.tmpl/LOCAL_DIFF=/READPLAN=1 | ✅ | ✅ | ✅ | | TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_apply_policy_default_values_for_each_task.yml.tmpl/LOCAL_DIFF=--local/READPLAN= | ✅ | ❌ | ❌ | | TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_apply_policy_default_values_for_each_task.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 | ✅ | ❌ | ❌ | | TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=database_catalog.yml.tmpl/LOCAL_DIFF=/READPLAN= | ✅ | ✅ | ✅ | | TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=database_catalog.yml.tmpl/LOCAL_DIFF=/READPLAN=1 | ✅ | ✅ | ✅ | | TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=database_catalog.yml.tmpl/LOCAL_DIFF=--local/READPLAN= | ✅ | ❌ | ❌ | | TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=database_catalog.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 | ✅ | ❌ | ❌ | | TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=database_instance.yml.tmpl/LOCAL_DIFF=/READPLAN= | ✅ | ✅ | ✅ | | TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=database_instance.yml.tmpl/LOCAL_DIFF=/READPLAN=1 | ✅ | ✅ | ✅ | | TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=database_instance.yml.tmpl/LOCAL_DIFF=--local/READPLAN= | ✅ | ❌ | ❌ | | TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=database_instance.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 | ✅ | ❌ | ❌ | | TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=experiment.yml.tmpl/LOCAL_DIFF=/READPLAN= | ✅ | ✅ | ✅ | | TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=experiment.yml.tmpl/LOCAL_DIFF=/READPLAN=1 | ✅ | ✅ | ✅ | | TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=experiment.yml.tmpl/LOCAL_DIFF=--local/READPLAN= | ✅ | ❌ | ❌ | | TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=experiment.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 | ✅ | ❌ | ❌ | | TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=external_location.yml.tmpl/LOCAL_DIFF=/READPLAN= | ✅ | ✅ | ✅ | | TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=external_location.yml.tmpl/LOCAL_DIFF=/READPLAN=1 | ✅ | ✅ | ✅ | | TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=external_location.yml.tmpl/LOCAL_DIFF=--local/READPLAN= | ✅ | ❌ | ❌ | | TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=external_location.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 | ✅ | ❌ | ❌ | | TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=genie_space.yml.tmpl/LOCAL_DIFF=/READPLAN= | ✅ | ✅ | ✅ | | TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=genie_space.yml.tmpl/LOCAL_DIFF=/READPLAN=1 | ✅ | ✅ | ✅ | | TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job.yml.tmpl/LOCAL_DIFF=/READPLAN= | ✅ | ✅ | ✅ | | TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job.yml.tmpl/LOCAL_DIFF=/READPLAN=1 | ✅ | ✅ | ✅ | | TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job.yml.tmpl/LOCAL_DIFF=--local/READPLAN= | ✅ | ❌ | ❌ | | TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 | ✅ | ❌ | ❌ | | TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_pydabs_10_tasks.yml.tmpl/LOCAL_DIFF=/READPLAN= | ✅ | ✅ | ✅ | | TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_pydabs_10_tasks.yml.tmpl/LOCAL_DIFF=/READPLAN=1 | ✅ | ✅ | ✅ | | TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_pydabs_10_tasks.yml.tmpl/LOCAL_DIFF=--local/READPLAN= | ✅ | ❌ | ❌ | | TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_pydabs_10_tasks.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 | ✅ | ❌ | ❌ | | TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_pydabs_1000_tasks.yml.tmpl/LOCAL_DIFF=/READPLAN= | ✅ | ✅ | ✅ | | TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_pydabs_1000_tasks.yml.tmpl/LOCAL_DIFF=/READPLAN=1 | ✅ | ✅ | ✅ | | TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_pydabs_1000_tasks.yml.tmpl/LOCAL_DIFF=--local/READPLAN= | ✅ | ❌ | ❌ | | TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_pydabs_1000_tasks.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 | ✅ | ❌ | ❌ | | TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_cross_resource_ref.yml.tmpl/LOCAL_DIFF=/READPLAN= | ✅ | ✅ | ✅ | | TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_cross_resource_ref.yml.tmpl/LOCAL_DIFF=/READPLAN=1 | ✅ | ✅ | ✅ | | TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_cross_resource_ref.yml.tmpl/LOCAL_DIFF=--local/READPLAN= | ✅ | ❌ | ❌ | | TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_cross_resource_ref.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 | ✅ | ❌ | ❌ | | TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_permission_ref.yml.tmpl/LOCAL_DIFF=/READPLAN= | ✅ | ✅ | ✅ | | TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_permission_ref.yml.tmpl/LOCAL_DIFF=/READPLAN=1 | ✅ | ✅ | ✅ | | TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_permission_ref.yml.tmpl/LOCAL_DIFF=--local/READPLAN= | ✅ | ❌ | ❌ | | TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_permission_ref.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 | ✅ | ❌ | ❌ | | TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_run_job_ref.yml.tmpl/LOCAL_DIFF=/READPLAN= | ✅ | ✅ | ✅ | | TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_run_job_ref.yml.tmpl/LOCAL_DIFF=/READPLAN=1 | ✅ | ✅ | ✅ | | TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_run_job_ref.yml.tmpl/LOCAL_DIFF=--local/READPLAN= | ✅ | ❌ | ❌ | | TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_run_job_ref.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 | ✅ | ❌ | ❌ | | TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_with_depends_on.yml.tmpl/LOCAL_DIFF=/READPLAN= | ✅ | ✅ | ✅ | | TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_with_depends_on.yml.tmpl/LOCAL_DIFF=/READPLAN=1 | ✅ | ✅ | ✅ | | TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_with_depends_on.yml.tmpl/LOCAL_DIFF=--local/READPLAN= | ✅ | ❌ | ❌ | | TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_with_depends_on.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 | ✅ | ❌ | ❌ | | TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_with_task.yml.tmpl/LOCAL_DIFF=/READPLAN= | ✅ | ✅ | ✅ | | TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_with_task.yml.tmpl/LOCAL_DIFF=/READPLAN=1 | ✅ | ✅ | ✅ | | TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_with_task.yml.tmpl/LOCAL_DIFF=--local/READPLAN= | ✅ | ❌ | ❌ | | TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_with_task.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 | ✅ | ❌ | ❌ | | TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=model.yml.tmpl/LOCAL_DIFF=/READPLAN= | ✅ | ✅ | ✅ | | TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=model.yml.tmpl/LOCAL_DIFF=/READPLAN=1 | ✅ | ✅ | ✅ | | TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=model.yml.tmpl/LOCAL_DIFF=--local/READPLAN= | ✅ | ❌ | ❌ | | TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=model.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 | ✅ | ❌ | ❌ | | TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=model_with_permissions.yml.tmpl/LOCAL_DIFF=/READPLAN= | ✅ | ✅ | ✅ | | TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=model_with_permissions.yml.tmpl/LOCAL_DIFF=/READPLAN=1 | ✅ | ✅ | ✅ | | TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=model_with_permissions.yml.tmpl/LOCAL_DIFF=--local/READPLAN= | ✅ | ❌ | ❌ | | TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=model_with_permissions.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 | ✅ | ❌ | ❌ | | TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=model_serving_endpoint.yml.tmpl/LOCAL_DIFF=/READPLAN= | ✅ | ✅ | ✅ | | TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=model_serving_endpoint.yml.tmpl/LOCAL_DIFF=/READPLAN=1 | ✅ | ✅ | ✅ | | TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=model_serving_endpoint.yml.tmpl/LOCAL_DIFF=--local/READPLAN= | ✅ | ❌ | ❌ | | TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=model_serving_endpoint.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 | ✅ | ❌ | ❌ | | TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=pipeline.yml.tmpl/LOCAL_DIFF=/READPLAN= | ✅ | ✅ | ✅ | | TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=pipeline.yml.tmpl/LOCAL_DIFF=/READPLAN=1 | ✅ | ✅ | ✅ | | TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=pipeline.yml.tmpl/LOCAL_DIFF=--local/READPLAN= | ✅ | ❌ | ❌ | | TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=pipeline.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 | ✅ | ❌ | ❌ | | TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=pipeline_apply_policy_default_values.yml.tmpl/LOCAL_DIFF=/READPLAN= | ✅ | ✅ | ✅ | | TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=pipeline_apply_policy_default_values.yml.tmpl/LOCAL_DIFF=/READPLAN=1 | ✅ | ✅ | ✅ | | TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=pipeline_apply_policy_default_values.yml.tmpl/LOCAL_DIFF=--local/READPLAN= | ✅ | ❌ | ❌ | | TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=pipeline_apply_policy_default_values.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 | ✅ | ❌ | ❌ | | TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=pipeline_config_dots.yml.tmpl/LOCAL_DIFF=/READPLAN= | ✅ | ✅ | ✅ | | TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=pipeline_config_dots.yml.tmpl/LOCAL_DIFF=/READPLAN=1 | ✅ | ✅ | ✅ | | TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=pipeline_config_dots.yml.tmpl/LOCAL_DIFF=--local/READPLAN= | ✅ | ❌ | ❌ | | TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=pipeline_config_dots.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 | ✅ | ❌ | ❌ | | TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=postgres_branch.yml.tmpl/LOCAL_DIFF=/READPLAN= | ✅ | ✅ | ✅ | | TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=postgres_branch.yml.tmpl/LOCAL_DIFF=/READPLAN=1 | ✅ | ✅ | ✅ | | TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=postgres_branch.yml.tmpl/LOCAL_DIFF=--local/READPLAN= | ✅ | ❌ | ❌ | | TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=postgres_branch.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 | ✅ | ❌ | ❌ | | TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=postgres_catalog.yml.tmpl/LOCAL_DIFF=/READPLAN= | ✅ | ✅ | ✅ | | TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=postgres_catalog.yml.tmpl/LOCAL_DIFF=/READPLAN=1 | ✅ | ✅ | ✅ | | TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=postgres_catalog.yml.tmpl/LOCAL_DIFF=--local/READPLAN= | ✅ | ❌ | ❌ | | TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=postgres_catalog.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 | ✅ | ❌ | ❌ | | TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=postgres_database.yml.tmpl/LOCAL_DIFF=/READPLAN= | ✅ | ✅ | ✅ | | TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=postgres_database.yml.tmpl/LOCAL_DIFF=/READPLAN=1 | ✅ | ✅ | ✅ | | TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=postgres_database.yml.tmpl/LOCAL_DIFF=--local/READPLAN= | ✅ | ❌ | ❌ | | TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=postgres_database.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 | ✅ | ❌ | ❌ | | TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=postgres_endpoint.yml.tmpl/LOCAL_DIFF=/READPLAN= | ✅ | ✅ | ✅ | | TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=postgres_endpoint.yml.tmpl/LOCAL_DIFF=/READPLAN=1 | ✅ | ✅ | ✅ | | TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=postgres_endpoint.yml.tmpl/LOCAL_DIFF=--local/READPLAN= | ✅ | ❌ | ❌ | | TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=postgres_endpoint.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 | ✅ | ❌ | ❌ | | TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=postgres_project.yml.tmpl/LOCAL_DIFF=/READPLAN= | ✅ | ✅ | ✅ | | TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=postgres_project.yml.tmpl/LOCAL_DIFF=/READPLAN=1 | ✅ | ✅ | ✅ | | TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=postgres_project.yml.tmpl/LOCAL_DIFF=--local/READPLAN= | ✅ | ❌ | ❌ | | TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=postgres_project.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 | ✅ | ❌ | ❌ | | TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=postgres_role.yml.tmpl/LOCAL_DIFF=/READPLAN= | ✅ | ✅ | ✅ | | TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=postgres_role.yml.tmpl/LOCAL_DIFF=/READPLAN=1 | ✅ | ✅ | ✅ | | TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=postgres_role.yml.tmpl/LOCAL_DIFF=--local/READPLAN= | ✅ | ❌ | ❌ | | TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=postgres_role.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 | ✅ | ❌ | ❌ | | TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=postgres_synced_table.yml.tmpl/LOCAL_DIFF=/READPLAN= | ✅ | ✅ | ✅ | | TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=postgres_synced_table.yml.tmpl/LOCAL_DIFF=/READPLAN=1 | ✅ | ✅ | ✅ | | TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=postgres_synced_table.yml.tmpl/LOCAL_DIFF=--local/READPLAN= | ✅ | ❌ | ❌ | | TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=postgres_synced_table.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 | ✅ | ❌ | ❌ | | TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=registered_model.yml.tmpl/LOCAL_DIFF=/READPLAN= | ✅ | ✅ | ✅ | | TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=registered_model.yml.tmpl/LOCAL_DIFF=/READPLAN=1 | ✅ | ✅ | ✅ | | TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=registered_model.yml.tmpl/LOCAL_DIFF=--local/READPLAN= | ✅ | ❌ | ❌ | | TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=registered_model.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 | ✅ | ❌ | ❌ | | TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=schema.yml.tmpl/LOCAL_DIFF=/READPLAN= | ✅ | ✅ | ✅ | | TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=schema.yml.tmpl/LOCAL_DIFF=/READPLAN=1 | ✅ | ✅ | ✅ | | TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=schema.yml.tmpl/LOCAL_DIFF=--local/READPLAN= | ✅ | ❌ | ❌ | | TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=schema.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 | ✅ | ❌ | ❌ | | TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=schema_grant_ref.yml.tmpl/LOCAL_DIFF=/READPLAN= | ✅ | ✅ | ✅ | | TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=schema_grant_ref.yml.tmpl/LOCAL_DIFF=/READPLAN=1 | ✅ | ✅ | ✅ | | TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=schema_grant_ref.yml.tmpl/LOCAL_DIFF=--local/READPLAN= | ✅ | ❌ | ❌ | | TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=schema_grant_ref.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 | ✅ | ❌ | ❌ | | TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=schema_uppercase_name.yml.tmpl/LOCAL_DIFF=/READPLAN= | ✅ | ✅ | ✅ | | TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=schema_uppercase_name.yml.tmpl/LOCAL_DIFF=/READPLAN=1 | ✅ | ✅ | ✅ | | TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=schema_uppercase_name.yml.tmpl/LOCAL_DIFF=--local/READPLAN= | ✅ | ❌ | ❌ | | TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=schema_uppercase_name.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 | ✅ | ❌ | ❌ | | TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=secret_scope.yml.tmpl/LOCAL_DIFF=/READPLAN= | ✅ | ✅ | ✅ | | TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=secret_scope.yml.tmpl/LOCAL_DIFF=/READPLAN=1 | ✅ | ✅ | ✅ | | TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=secret_scope.yml.tmpl/LOCAL_DIFF=--local/READPLAN= | ✅ | ❌ | ❌ | | TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=secret_scope.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 | ✅ | ❌ | ❌ | | TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=secret_scope_default_backend_type.yml.tmpl/LOCAL_DIFF=/READPLAN= | ✅ | ✅ | ✅ | | TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=secret_scope_default_backend_type.yml.tmpl/LOCAL_DIFF=/READPLAN=1 | ✅ | ✅ | ✅ | | TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=secret_scope_default_backend_type.yml.tmpl/LOCAL_DIFF=--local/READPLAN= | ✅ | ❌ | ❌ | | TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=secret_scope_default_backend_type.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 | ✅ | ❌ | ❌ | | TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=sql_warehouse.yml.tmpl/LOCAL_DIFF=/READPLAN= | ✅ | ✅ | ✅ | | TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=sql_warehouse.yml.tmpl/LOCAL_DIFF=/READPLAN=1 | ✅ | ✅ | ✅ | | TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=sql_warehouse.yml.tmpl/LOCAL_DIFF=--local/READPLAN= | ✅ | ❌ | ❌ | | TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=sql_warehouse.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 | ✅ | ❌ | ❌ | | TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=synced_database_table.yml.tmpl/LOCAL_DIFF=/READPLAN= | ✅ | ✅ | ✅ | | TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=synced_database_table.yml.tmpl/LOCAL_DIFF=/READPLAN=1 | ✅ | ✅ | ✅ | | TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=synced_database_table.yml.tmpl/LOCAL_DIFF=--local/READPLAN= | ✅ | ❌ | ❌ | | TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=synced_database_table.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 | ✅ | ❌ | ❌ | | TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=vector_search_endpoint.yml.tmpl/LOCAL_DIFF=/READPLAN= | ✅ | ✅ | ✅ | | TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=vector_search_endpoint.yml.tmpl/LOCAL_DIFF=/READPLAN=1 | ✅ | ✅ | ✅ | | TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=vector_search_endpoint.yml.tmpl/LOCAL_DIFF=--local/READPLAN= | ✅ | ❌ | ❌ | | TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=vector_search_endpoint.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 | ✅ | ❌ | ❌ | | TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=vector_search_index.yml.tmpl/LOCAL_DIFF=/READPLAN= | ✅ | ✅ | ✅ | | TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=vector_search_index.yml.tmpl/LOCAL_DIFF=/READPLAN=1 | ✅ | ✅ | ✅ | | TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=volume.yml.tmpl/LOCAL_DIFF=/READPLAN= | ✅ | ✅ | ✅ | | TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=volume.yml.tmpl/LOCAL_DIFF=/READPLAN=1 | ✅ | ✅ | ✅ | | TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=volume.yml.tmpl/LOCAL_DIFF=--local/READPLAN= | ✅ | ❌ | ❌ | | TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=volume.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 | ✅ | ❌ | ❌ | | TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=volume_external.yml.tmpl/LOCAL_DIFF=/READPLAN= | ✅ | ✅ | ✅ | | TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=volume_external.yml.tmpl/LOCAL_DIFF=/READPLAN=1 | ✅ | ✅ | ✅ | | TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=volume_external.yml.tmpl/LOCAL_DIFF=--local/READPLAN= | ✅ | ❌ | ❌ | | TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=volume_external.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 | ✅ | ❌ | ❌ | | TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=volume_uppercase_name.yml.tmpl/LOCAL_DIFF=/READPLAN= | ✅ | ✅ | ✅ | | TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=volume_uppercase_name.yml.tmpl/LOCAL_DIFF=/READPLAN=1 | ✅ | ✅ | ✅ | | TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=volume_uppercase_name.yml.tmpl/LOCAL_DIFF=--local/READPLAN= | ✅ | ❌ | ❌ | | TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=volume_uppercase_name.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 | ✅ | ❌ | ❌ | | TestAccept/bundle/resources/jobs/num_workers/DATABRICKS_BUNDLE_ENGINE=terraform/LOCAL= | ✅ | ✅ | ✅ | | TestAccept/bundle/resources/jobs/num_workers/DATABRICKS_BUNDLE_ENGINE=direct/LOCAL= | ✅ | ✅ | ✅ | | TestAccept/bundle/resources/jobs/num_workers/DATABRICKS_BUNDLE_ENGINE=direct/LOCAL=--local | ✅ | ❌ | ❌ | | TestAccept/bundle/resources/schemas/update/DATABRICKS_BUNDLE_ENGINE=terraform/LOCAL= | ✅ | ✅ | ✅ | | TestAccept/bundle/resources/schemas/update/DATABRICKS_BUNDLE_ENGINE=direct/LOCAL= | ✅ | ✅ | ✅ | | TestAccept/bundle/resources/schemas/update/DATABRICKS_BUNDLE_ENGINE=direct/LOCAL=--local | ✅ | ❌ | ❌ | | TestAccept/bundle/resources/volumes/change-name/DATABRICKS_BUNDLE_ENGINE=terraform/LOCAL= | ✅ | ✅ | ❌ | | TestAccept/bundle/resources/volumes/change-name/DATABRICKS_BUNDLE_ENGINE=direct/LOCAL= | ✅ | ✅ | ❌ | | TestAccept/bundle/resources/volumes/change-name/DATABRICKS_BUNDLE_ENGINE=direct/LOCAL=--local | ✅ | ❌ | ❌ |
TestAccept/bundle/local/basic/DATABRICKS_BUNDLE_ENGINE=direct ✅ | main (de465e09b) ❌ | latest (v1.6.0) ❌ **main (de465e09b):** ``` === RUN TestAccept/bundle/local/basic/DATABRICKS_BUNDLE_ENGINE=direct === PAUSE TestAccept/bundle/local/basic/DATABRICKS_BUNDLE_ENGINE=direct === CONT TestAccept/bundle/local/basic/DATABRICKS_BUNDLE_ENGINE=direct acceptance_test.go:1083: Diff: --- bundle/local/basic/output.txt +++ /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/TestAcceptbundlelocalbasicDATABRICKS_BUNDLE_ENGINE=direct2985499174/001/output.txt @@ -6,46 +6,25 @@ Deployment complete! >>> [CLI] bundle plan --local -Plan: 0 to add, 0 to change, 0 to delete, 2 unchanged +Error: unknown flag: --local -=== Job reads during 'bundle plan --local': +Usage: + databricks bundle plan [flags] ->>> print_requests.py --get //jobs/get +Flags: + -c, --cluster-id string Override cluster in the deployment with the given cluster ID. + --force Force-override Git branch validation. + -h, --help help for plan + --select strings Plan only the specified resource (e.g. 'my_job' or 'jobs.my_job'). Can be repeated or comma-separated. -=== Plan --local as JSON: +Global Flags: + --debug enable debug logging + -o, --output type output type: text or json (default text) + -p, --profile string ~/.databrickscfg profile + -t, --target string bundle target to use (if applicable) + --var strings set values for variables defined in bundle config. Example: --var="foo=bar" ->>> [CLI] bundle plan --local -o json -{ - "plan_version": 2, - "cli_version": "[DEV_VERSION]", - "lineage": "[UUID]", - "serial": 1, - "local_only": true, - "plan": { - "resources.jobs.bar": { - "action": "skip" - }, - "resources.jobs.foo": { - "depends_on": [ - { - "node": "resources.jobs.bar", - "label": "${resources.jobs.bar.id}" - } - ], - "action": "skip" - } - } -} ->>> [CLI] bundle deploy --local -Uploading bundle files to /Workspace/Users/[USERNAME]/.bundle/local-[UNIQUE_NAME]/default/files... -Deploying resources... -Updating deployment state... -Deployment complete! - -=== Telemetry: -local_used true - === Destroy >>> [CLI] bundle destroy --auto-approve The following resources will be deleted: @@ -56,3 +30,5 @@ Deleting files... Destroy complete! + +Exit code: 1 --- FAIL: TestAccept/bundle/local/basic/DATABRICKS_BUNDLE_ENGINE=direct (1.07s) ``` **latest (v1.6.0):** ``` === RUN TestAccept/bundle/local/basic/DATABRICKS_BUNDLE_ENGINE=direct === PAUSE TestAccept/bundle/local/basic/DATABRICKS_BUNDLE_ENGINE=direct === CONT TestAccept/bundle/local/basic/DATABRICKS_BUNDLE_ENGINE=direct acceptance_test.go:1083: Diff: --- bundle/local/basic/output.txt +++ /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/TestAcceptbundlelocalbasicDATABRICKS_BUNDLE_ENGINE=direct798157468/001/output.txt @@ -6,46 +6,25 @@ Deployment complete! >>> [CLI] bundle plan --local -Plan: 0 to add, 0 to change, 0 to delete, 2 unchanged +Error: unknown flag: --local -=== Job reads during 'bundle plan --local': +Usage: + databricks bundle plan [flags] ->>> print_requests.py --get //jobs/get +Flags: + -c, --cluster-id string Override cluster in the deployment with the given cluster ID. + --force Force-override Git branch validation. + -h, --help help for plan + --select strings Plan only the specified resource (e.g. 'my_job' or 'jobs.my_job'). Can be repeated or comma-separated. -=== Plan --local as JSON: +Global Flags: + --debug enable debug logging + -o, --output type output type: text or json (default text) + -p, --profile string ~/.databrickscfg profile + -t, --target string bundle target to use (if applicable) + --var strings set values for variables defined in bundle config. Example: --var="foo=bar" ->>> [CLI] bundle plan --local -o json -{ - "plan_version": 2, - "cli_version": "[DEV_VERSION]", - "lineage": "[UUID]", - "serial": 1, - "local_only": true, - "plan": { - "resources.jobs.bar": { - "action": "skip" - }, - "resources.jobs.foo": { - "depends_on": [ - { - "node": "resources.jobs.bar", - "label": "${resources.jobs.bar.id}" - } - ], - "action": "skip" - } - } -} ->>> [CLI] bundle deploy --local -Uploading bundle files to /Workspace/Users/[USERNAME]/.bundle/local-[UNIQUE_NAME]/default/files... -Deploying resources... -Updating deployment state... -Deployment complete! - -=== Telemetry: -local_used true - === Destroy >>> [CLI] bundle destroy --auto-approve The following resources will be deleted: @@ -56,3 +30,5 @@ Deleting files... Destroy complete! + +Exit code: 1 --- FAIL: TestAccept/bundle/local/basic/DATABRICKS_BUNDLE_ENGINE=direct (0.77s) ```
TestAccept/bundle/local/rejected/DATABRICKS_BUNDLE_ENGINE=terraform ✅ | main (de465e09b) ❌ | latest (v1.6.0) ❌ **main (de465e09b):** ``` === RUN TestAccept/bundle/local/rejected/DATABRICKS_BUNDLE_ENGINE=terraform === PAUSE TestAccept/bundle/local/rejected/DATABRICKS_BUNDLE_ENGINE=terraform === CONT TestAccept/bundle/local/rejected/DATABRICKS_BUNDLE_ENGINE=terraform acceptance_test.go:1083: Diff: --- bundle/local/rejected/output.txt +++ /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/TestAcceptbundlelocalrejectedDATABRICKS_BUNDLE_ENGINE=terraf1530229415/001/output.txt @@ -1,12 +1,48 @@ >>> [CLI] bundle plan --local -Error: --local is only supported with the direct engine. See https://docs.databricks.com/aws/en/dev-tools/bundles/direct +Error: unknown flag: --local +Usage: + databricks bundle plan [flags] +Flags: + -c, --cluster-id string Override cluster in the deployment with the given cluster ID. + --force Force-override Git branch validation. + -h, --help help for plan + --select strings Plan only the specified resource (e.g. 'my_job' or 'jobs.my_job'). Can be repeated or comma-separated. + +Global Flags: + --debug enable debug logging + -o, --output type output type: text or json (default text) + -p, --profile string ~/.databrickscfg profile + -t, --target string bundle target to use (if applicable) + --var strings set values for variables defined in bundle config. Example: --var="foo=bar" + + Exit code: 1 >>> [CLI] bundle deploy --local -Error: --local is only supported with the direct engine. See https://docs.databricks.com/aws/en/dev-tools/bundles/direct +Error: unknown flag: --local +Usage: + databricks bundle deploy [flags] +Flags: + --auto-approve Skip interactive approvals that might be required for deployment. + -c, --cluster-id string Override cluster in the deployment with the given cluster ID. + --fail-on-active-runs Fail if there are running jobs or pipelines in the deployment. + --force Force-override Git branch validation. + --force-lock Force acquisition of deployment lock. + -h, --help help for deploy + --plan string Path to a JSON plan file to apply instead of planning (direct engine only). + --select strings Deploy only the specified resource (e.g. 'my_job' or 'jobs.my_job'). Can be repeated or comma-separated. + +Global Flags: + --debug enable debug logging + -o, --output type output type: text or json (default text) + -p, --profile string ~/.databrickscfg profile + -t, --target string bundle target to use (if applicable) + --var strings set values for variables defined in bundle config. Example: --var="foo=bar" + + Exit code: 1 --- FAIL: TestAccept/bundle/local/rejected/DATABRICKS_BUNDLE_ENGINE=terraform (0.05s) ``` **latest (v1.6.0):** ``` === RUN TestAccept/bundle/local/rejected/DATABRICKS_BUNDLE_ENGINE=terraform === PAUSE TestAccept/bundle/local/rejected/DATABRICKS_BUNDLE_ENGINE=terraform === CONT TestAccept/bundle/local/rejected/DATABRICKS_BUNDLE_ENGINE=terraform acceptance_test.go:1083: Diff: --- bundle/local/rejected/output.txt +++ /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/TestAcceptbundlelocalrejectedDATABRICKS_BUNDLE_ENGINE=terraf2105928878/001/output.txt @@ -1,12 +1,48 @@ >>> [CLI] bundle plan --local -Error: --local is only supported with the direct engine. See https://docs.databricks.com/aws/en/dev-tools/bundles/direct +Error: unknown flag: --local +Usage: + databricks bundle plan [flags] +Flags: + -c, --cluster-id string Override cluster in the deployment with the given cluster ID. + --force Force-override Git branch validation. + -h, --help help for plan + --select strings Plan only the specified resource (e.g. 'my_job' or 'jobs.my_job'). Can be repeated or comma-separated. + +Global Flags: + --debug enable debug logging + -o, --output type output type: text or json (default text) + -p, --profile string ~/.databrickscfg profile + -t, --target string bundle target to use (if applicable) + --var strings set values for variables defined in bundle config. Example: --var="foo=bar" + + Exit code: 1 >>> [CLI] bundle deploy --local -Error: --local is only supported with the direct engine. See https://docs.databricks.com/aws/en/dev-tools/bundles/direct +Error: unknown flag: --local +Usage: + databricks bundle deploy [flags] +Flags: + --auto-approve Skip interactive approvals that might be required for deployment. + -c, --cluster-id string Override cluster in the deployment with the given cluster ID. + --fail-on-active-runs Fail if there are running jobs or pipelines in the deployment. + --force Force-override Git branch validation. + --force-lock Force acquisition of deployment lock. + -h, --help help for deploy + --plan string Path to a JSON plan file to apply instead of planning (direct engine only). + --select strings Deploy only the specified resource (e.g. 'my_job' or 'jobs.my_job'). Can be repeated or comma-separated. + +Global Flags: + --debug enable debug logging + -o, --output type output type: text or json (default text) + -p, --profile string ~/.databrickscfg profile + -t, --target string bundle target to use (if applicable) + --var strings set values for variables defined in bundle config. Example: --var="foo=bar" + + Exit code: 1 --- FAIL: TestAccept/bundle/local/rejected/DATABRICKS_BUNDLE_ENGINE=terraform (0.06s) ```
TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=alert.yml.tmpl/LOCAL_DIFF=--local/READPLAN= ✅ | main (de465e09b) ❌ | latest (v1.6.0) ❌ **main (de465e09b):** ``` === RUN TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=alert.yml.tmpl/LOCAL_DIFF=--local/READPLAN= === PAUSE TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=alert.yml.tmpl/LOCAL_DIFF=--local/READPLAN= === CONT TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=alert.yml.tmpl/LOCAL_DIFF=--local/READPLAN= acceptance_test.go:1083: Error Trace: /Users/denis.bilenko/work/cli-trees/local-only/libs/testdiff/testdiff.go:22 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:1083 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:915 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:515 Error: Not equal: expected: "INPUT_CONFIG_OK\n" actual : "INPUT_CONFIG_OK\n\nExit code: 1\n" Diff: --- Expected +++ Actual @@ -2 +2,3 @@ +Exit code: 1 + Test: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=alert.yml.tmpl/LOCAL_DIFF=--local/READPLAN= Messages: bundle/invariant/no_drift/output.txt vs /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/TestAcceptbundleinvariantno_driftDATABRICKS_BUNDLE_ENGINE=di3172530878/001/output.txt acceptance_test.go:942: LOG.config: bundle: LOG.config: name: test-bundle-3qcizlrz6zeqlokrmg4s54rgne LOG.config: LOG.config: resources: LOG.config: alerts: LOG.config: foo: LOG.config: warehouse_id: 8ec9edc1-db0c-40df-af8d-7580020fe61e LOG.config: display_name: test-alert-3qcizlrz6zeqlokrmg4s54rgne LOG.config: file_path: ./alert.dbalert.json LOG.config: permissions: LOG.config: - level: CAN_MANAGE LOG.config: group_name: users acceptance_test.go:942: LOG.cp: acceptance_test.go:942: LOG.deploy: LOG.deploy: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle deploy LOG.deploy: Uploading bundle files to /Workspace/Users/tester@databricks.com/.bundle/test-bundle-3qcizlrz6zeqlokrmg4s54rgne/default/files... LOG.deploy: Deploying resources... LOG.deploy: Updating deployment state... LOG.deploy: Deployment complete! acceptance_test.go:942: LOG.destroy: LOG.destroy: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle destroy --auto-approve LOG.destroy: The following resources will be deleted: LOG.destroy: delete resources.alerts.foo LOG.destroy: LOG.destroy: All files and directories at the following location will be deleted: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-3qcizlrz6zeqlokrmg4s54rgne/default LOG.destroy: LOG.destroy: Deleting files... LOG.destroy: Destroy complete! acceptance_test.go:942: LOG.planjson: acceptance_test.go:942: LOG.validate: LOG.validate: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle validate LOG.validate: Name: test-bundle-3qcizlrz6zeqlokrmg4s54rgne LOG.validate: Target: default LOG.validate: Workspace: LOG.validate: User: tester@databricks.com LOG.validate: Path: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-3qcizlrz6zeqlokrmg4s54rgne/default LOG.validate: LOG.validate: Validation OK! --- FAIL: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=alert.yml.tmpl/LOCAL_DIFF=--local/READPLAN= (0.38s) ``` **latest (v1.6.0):** ``` === RUN TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=alert.yml.tmpl/LOCAL_DIFF=--local/READPLAN= === PAUSE TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=alert.yml.tmpl/LOCAL_DIFF=--local/READPLAN= === CONT TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=alert.yml.tmpl/LOCAL_DIFF=--local/READPLAN= acceptance_test.go:1083: Error Trace: /Users/denis.bilenko/work/cli-trees/local-only/libs/testdiff/testdiff.go:22 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:1083 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:915 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:515 Error: Not equal: expected: "INPUT_CONFIG_OK\n" actual : "INPUT_CONFIG_OK\n\nExit code: 1\n" Diff: --- Expected +++ Actual @@ -2 +2,3 @@ +Exit code: 1 + Test: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=alert.yml.tmpl/LOCAL_DIFF=--local/READPLAN= Messages: bundle/invariant/no_drift/output.txt vs /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/TestAcceptbundleinvariantno_driftDATABRICKS_BUNDLE_ENGINE=di2526780256/001/output.txt acceptance_test.go:942: LOG.config: bundle: LOG.config: name: test-bundle-q74yvfo34ffezmspxodeoenate LOG.config: LOG.config: resources: LOG.config: alerts: LOG.config: foo: LOG.config: warehouse_id: 8ec9edc1-db0c-40df-af8d-7580020fe61e LOG.config: display_name: test-alert-q74yvfo34ffezmspxodeoenate LOG.config: file_path: ./alert.dbalert.json LOG.config: permissions: LOG.config: - level: CAN_MANAGE LOG.config: group_name: users acceptance_test.go:942: LOG.cp: acceptance_test.go:942: LOG.deploy: LOG.deploy: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle deploy LOG.deploy: Uploading bundle files to /Workspace/Users/tester@databricks.com/.bundle/test-bundle-q74yvfo34ffezmspxodeoenate/default/files... LOG.deploy: Deploying resources... LOG.deploy: Updating deployment state... LOG.deploy: Deployment complete! acceptance_test.go:942: LOG.destroy: LOG.destroy: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle destroy --auto-approve LOG.destroy: The following resources will be deleted: LOG.destroy: delete resources.alerts.foo LOG.destroy: LOG.destroy: All files and directories at the following location will be deleted: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-q74yvfo34ffezmspxodeoenate/default LOG.destroy: LOG.destroy: Deleting files... LOG.destroy: Destroy complete! acceptance_test.go:942: LOG.planjson: acceptance_test.go:942: LOG.validate: LOG.validate: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle validate LOG.validate: Name: test-bundle-q74yvfo34ffezmspxodeoenate LOG.validate: Target: default LOG.validate: Workspace: LOG.validate: User: tester@databricks.com LOG.validate: Path: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-q74yvfo34ffezmspxodeoenate/default LOG.validate: LOG.validate: Validation OK! --- FAIL: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=alert.yml.tmpl/LOCAL_DIFF=--local/READPLAN= (0.32s) ```
TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=alert.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 ✅ | main (de465e09b) ❌ | latest (v1.6.0) ❌ **main (de465e09b):** ``` === RUN TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=alert.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 === PAUSE TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=alert.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 === CONT TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=alert.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 acceptance_test.go:1083: Error Trace: /Users/denis.bilenko/work/cli-trees/local-only/libs/testdiff/testdiff.go:22 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:1083 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:915 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:515 Error: Not equal: expected: "INPUT_CONFIG_OK\n" actual : "INPUT_CONFIG_OK\n\nExit code: 1\n" Diff: --- Expected +++ Actual @@ -2 +2,3 @@ +Exit code: 1 + Test: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=alert.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 Messages: bundle/invariant/no_drift/output.txt vs /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/TestAcceptbundleinvariantno_driftDATABRICKS_BUNDLE_ENGINE=di1652478110/001/output.txt acceptance_test.go:942: LOG.config: bundle: LOG.config: name: test-bundle-yjzfni652vbtvi5ymltuu4jisu LOG.config: LOG.config: resources: LOG.config: alerts: LOG.config: foo: LOG.config: warehouse_id: 8ec9edc1-db0c-40df-af8d-7580020fe61e LOG.config: display_name: test-alert-yjzfni652vbtvi5ymltuu4jisu LOG.config: file_path: ./alert.dbalert.json LOG.config: permissions: LOG.config: - level: CAN_MANAGE LOG.config: group_name: users acceptance_test.go:942: LOG.cp: acceptance_test.go:942: LOG.deploy: LOG.deploy: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle deploy --plan plan.json LOG.deploy: Uploading bundle files to /Workspace/Users/tester@databricks.com/.bundle/test-bundle-yjzfni652vbtvi5ymltuu4jisu/default/files... LOG.deploy: Deploying resources... LOG.deploy: Updating deployment state... LOG.deploy: Deployment complete! acceptance_test.go:942: LOG.destroy: LOG.destroy: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle destroy --auto-approve LOG.destroy: The following resources will be deleted: LOG.destroy: delete resources.alerts.foo LOG.destroy: LOG.destroy: All files and directories at the following location will be deleted: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-yjzfni652vbtvi5ymltuu4jisu/default LOG.destroy: LOG.destroy: Deleting files... LOG.destroy: Destroy complete! acceptance_test.go:942: LOG.planjson: acceptance_test.go:942: LOG.validate: LOG.validate: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle validate LOG.validate: Name: test-bundle-yjzfni652vbtvi5ymltuu4jisu LOG.validate: Target: default LOG.validate: Workspace: LOG.validate: User: tester@databricks.com LOG.validate: Path: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-yjzfni652vbtvi5ymltuu4jisu/default LOG.validate: LOG.validate: Validation OK! --- FAIL: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=alert.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 (0.32s) ``` **latest (v1.6.0):** ``` === RUN TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=alert.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 === PAUSE TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=alert.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 === CONT TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=alert.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 acceptance_test.go:1083: Error Trace: /Users/denis.bilenko/work/cli-trees/local-only/libs/testdiff/testdiff.go:22 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:1083 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:915 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:515 Error: Not equal: expected: "INPUT_CONFIG_OK\n" actual : "INPUT_CONFIG_OK\n\nExit code: 1\n" Diff: --- Expected +++ Actual @@ -2 +2,3 @@ +Exit code: 1 + Test: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=alert.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 Messages: bundle/invariant/no_drift/output.txt vs /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/TestAcceptbundleinvariantno_driftDATABRICKS_BUNDLE_ENGINE=di1892342805/001/output.txt acceptance_test.go:942: LOG.config: bundle: LOG.config: name: test-bundle-ly7ipbof5naa5eogrk43vhpxay LOG.config: LOG.config: resources: LOG.config: alerts: LOG.config: foo: LOG.config: warehouse_id: 8ec9edc1-db0c-40df-af8d-7580020fe61e LOG.config: display_name: test-alert-ly7ipbof5naa5eogrk43vhpxay LOG.config: file_path: ./alert.dbalert.json LOG.config: permissions: LOG.config: - level: CAN_MANAGE LOG.config: group_name: users acceptance_test.go:942: LOG.cp: acceptance_test.go:942: LOG.deploy: LOG.deploy: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle deploy --plan plan.json LOG.deploy: Uploading bundle files to /Workspace/Users/tester@databricks.com/.bundle/test-bundle-ly7ipbof5naa5eogrk43vhpxay/default/files... LOG.deploy: Deploying resources... LOG.deploy: Updating deployment state... LOG.deploy: Deployment complete! acceptance_test.go:942: LOG.destroy: LOG.destroy: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle destroy --auto-approve LOG.destroy: The following resources will be deleted: LOG.destroy: delete resources.alerts.foo LOG.destroy: LOG.destroy: All files and directories at the following location will be deleted: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-ly7ipbof5naa5eogrk43vhpxay/default LOG.destroy: LOG.destroy: Deleting files... LOG.destroy: Destroy complete! acceptance_test.go:942: LOG.planjson: acceptance_test.go:942: LOG.validate: LOG.validate: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle validate LOG.validate: Name: test-bundle-ly7ipbof5naa5eogrk43vhpxay LOG.validate: Target: default LOG.validate: Workspace: LOG.validate: User: tester@databricks.com LOG.validate: Path: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-ly7ipbof5naa5eogrk43vhpxay/default LOG.validate: LOG.validate: Validation OK! --- FAIL: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=alert.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 (0.32s) ```
TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=app.yml.tmpl/LOCAL_DIFF=--local/READPLAN= ✅ | main (de465e09b) ❌ | latest (v1.6.0) ❌ **main (de465e09b):** ``` === RUN TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=app.yml.tmpl/LOCAL_DIFF=--local/READPLAN= === PAUSE TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=app.yml.tmpl/LOCAL_DIFF=--local/READPLAN= === CONT TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=app.yml.tmpl/LOCAL_DIFF=--local/READPLAN= acceptance_test.go:1083: Error Trace: /Users/denis.bilenko/work/cli-trees/local-only/libs/testdiff/testdiff.go:22 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:1083 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:915 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:515 Error: Not equal: expected: "INPUT_CONFIG_OK\n" actual : "INPUT_CONFIG_OK\n\nExit code: 1\n" Diff: --- Expected +++ Actual @@ -2 +2,3 @@ +Exit code: 1 + Test: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=app.yml.tmpl/LOCAL_DIFF=--local/READPLAN= Messages: bundle/invariant/no_drift/output.txt vs /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/TestAcceptbundleinvariantno_driftDATABRICKS_BUNDLE_ENGINE=di1994182820/001/output.txt acceptance_test.go:942: LOG.config: bundle: LOG.config: name: test-bundle-42b7orzkifflve5iq6gr7qgpnu LOG.config: LOG.config: resources: LOG.config: apps: LOG.config: foo: LOG.config: name: app-42b7orzkifflve5iq6gr7qgpnu LOG.config: source_code_path: ./app LOG.config: permissions: LOG.config: - level: CAN_USE LOG.config: group_name: users acceptance_test.go:942: LOG.cp: acceptance_test.go:942: LOG.deploy: LOG.deploy: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle deploy LOG.deploy: Uploading bundle files to /Workspace/Users/tester@databricks.com/.bundle/test-bundle-42b7orzkifflve5iq6gr7qgpnu/default/files... LOG.deploy: Deploying resources... LOG.deploy: Updating deployment state... LOG.deploy: Deployment complete! acceptance_test.go:942: LOG.destroy: LOG.destroy: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle destroy --auto-approve LOG.destroy: The following resources will be deleted: LOG.destroy: delete resources.apps.foo LOG.destroy: LOG.destroy: All files and directories at the following location will be deleted: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-42b7orzkifflve5iq6gr7qgpnu/default LOG.destroy: LOG.destroy: Deleting files... LOG.destroy: Destroy complete! acceptance_test.go:942: LOG.planjson: acceptance_test.go:942: LOG.validate: LOG.validate: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle validate LOG.validate: Name: test-bundle-42b7orzkifflve5iq6gr7qgpnu LOG.validate: Target: default LOG.validate: Workspace: LOG.validate: User: tester@databricks.com LOG.validate: Path: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-42b7orzkifflve5iq6gr7qgpnu/default LOG.validate: LOG.validate: Validation OK! --- FAIL: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=app.yml.tmpl/LOCAL_DIFF=--local/READPLAN= (0.32s) ``` **latest (v1.6.0):** ``` === RUN TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=app.yml.tmpl/LOCAL_DIFF=--local/READPLAN= === PAUSE TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=app.yml.tmpl/LOCAL_DIFF=--local/READPLAN= === CONT TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=app.yml.tmpl/LOCAL_DIFF=--local/READPLAN= acceptance_test.go:1083: Error Trace: /Users/denis.bilenko/work/cli-trees/local-only/libs/testdiff/testdiff.go:22 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:1083 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:915 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:515 Error: Not equal: expected: "INPUT_CONFIG_OK\n" actual : "INPUT_CONFIG_OK\n\nExit code: 1\n" Diff: --- Expected +++ Actual @@ -2 +2,3 @@ +Exit code: 1 + Test: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=app.yml.tmpl/LOCAL_DIFF=--local/READPLAN= Messages: bundle/invariant/no_drift/output.txt vs /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/TestAcceptbundleinvariantno_driftDATABRICKS_BUNDLE_ENGINE=di992411277/001/output.txt acceptance_test.go:942: LOG.config: bundle: LOG.config: name: test-bundle-7x3klhk2kbh5bkkycjc7dkzeme LOG.config: LOG.config: resources: LOG.config: apps: LOG.config: foo: LOG.config: name: app-7x3klhk2kbh5bkkycjc7dkzeme LOG.config: source_code_path: ./app LOG.config: permissions: LOG.config: - level: CAN_USE LOG.config: group_name: users acceptance_test.go:942: LOG.cp: acceptance_test.go:942: LOG.deploy: LOG.deploy: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle deploy LOG.deploy: Uploading bundle files to /Workspace/Users/tester@databricks.com/.bundle/test-bundle-7x3klhk2kbh5bkkycjc7dkzeme/default/files... LOG.deploy: Deploying resources... LOG.deploy: Updating deployment state... LOG.deploy: Deployment complete! acceptance_test.go:942: LOG.destroy: LOG.destroy: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle destroy --auto-approve LOG.destroy: The following resources will be deleted: LOG.destroy: delete resources.apps.foo LOG.destroy: LOG.destroy: All files and directories at the following location will be deleted: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-7x3klhk2kbh5bkkycjc7dkzeme/default LOG.destroy: LOG.destroy: Deleting files... LOG.destroy: Destroy complete! acceptance_test.go:942: LOG.planjson: acceptance_test.go:942: LOG.validate: LOG.validate: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle validate LOG.validate: Name: test-bundle-7x3klhk2kbh5bkkycjc7dkzeme LOG.validate: Target: default LOG.validate: Workspace: LOG.validate: User: tester@databricks.com LOG.validate: Path: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-7x3klhk2kbh5bkkycjc7dkzeme/default LOG.validate: LOG.validate: Validation OK! --- FAIL: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=app.yml.tmpl/LOCAL_DIFF=--local/READPLAN= (0.32s) ```
TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=app.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 ✅ | main (de465e09b) ❌ | latest (v1.6.0) ❌ **main (de465e09b):** ``` === RUN TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=app.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 === PAUSE TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=app.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 === CONT TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=app.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 acceptance_test.go:1083: Error Trace: /Users/denis.bilenko/work/cli-trees/local-only/libs/testdiff/testdiff.go:22 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:1083 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:915 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:515 Error: Not equal: expected: "INPUT_CONFIG_OK\n" actual : "INPUT_CONFIG_OK\n\nExit code: 1\n" Diff: --- Expected +++ Actual @@ -2 +2,3 @@ +Exit code: 1 + Test: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=app.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 Messages: bundle/invariant/no_drift/output.txt vs /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/TestAcceptbundleinvariantno_driftDATABRICKS_BUNDLE_ENGINE=di421775028/001/output.txt acceptance_test.go:942: LOG.config: bundle: LOG.config: name: test-bundle-bdquzbtgwfdwtgalzf45qqnyha LOG.config: LOG.config: resources: LOG.config: apps: LOG.config: foo: LOG.config: name: app-bdquzbtgwfdwtgalzf45qqnyha LOG.config: source_code_path: ./app LOG.config: permissions: LOG.config: - level: CAN_USE LOG.config: group_name: users acceptance_test.go:942: LOG.cp: acceptance_test.go:942: LOG.deploy: LOG.deploy: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle deploy --plan plan.json LOG.deploy: Uploading bundle files to /Workspace/Users/tester@databricks.com/.bundle/test-bundle-bdquzbtgwfdwtgalzf45qqnyha/default/files... LOG.deploy: Deploying resources... LOG.deploy: Updating deployment state... LOG.deploy: Deployment complete! acceptance_test.go:942: LOG.destroy: LOG.destroy: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle destroy --auto-approve LOG.destroy: The following resources will be deleted: LOG.destroy: delete resources.apps.foo LOG.destroy: LOG.destroy: All files and directories at the following location will be deleted: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-bdquzbtgwfdwtgalzf45qqnyha/default LOG.destroy: LOG.destroy: Deleting files... LOG.destroy: Destroy complete! acceptance_test.go:942: LOG.planjson: acceptance_test.go:942: LOG.validate: LOG.validate: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle validate LOG.validate: Name: test-bundle-bdquzbtgwfdwtgalzf45qqnyha LOG.validate: Target: default LOG.validate: Workspace: LOG.validate: User: tester@databricks.com LOG.validate: Path: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-bdquzbtgwfdwtgalzf45qqnyha/default LOG.validate: LOG.validate: Validation OK! --- FAIL: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=app.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 (0.30s) ``` **latest (v1.6.0):** ``` === RUN TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=app.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 === PAUSE TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=app.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 === CONT TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=app.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 acceptance_test.go:1083: Error Trace: /Users/denis.bilenko/work/cli-trees/local-only/libs/testdiff/testdiff.go:22 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:1083 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:915 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:515 Error: Not equal: expected: "INPUT_CONFIG_OK\n" actual : "INPUT_CONFIG_OK\n\nExit code: 1\n" Diff: --- Expected +++ Actual @@ -2 +2,3 @@ +Exit code: 1 + Test: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=app.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 Messages: bundle/invariant/no_drift/output.txt vs /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/TestAcceptbundleinvariantno_driftDATABRICKS_BUNDLE_ENGINE=di3059634360/001/output.txt acceptance_test.go:942: LOG.config: bundle: LOG.config: name: test-bundle-vxetol7whrge7eyof4veqbqcci LOG.config: LOG.config: resources: LOG.config: apps: LOG.config: foo: LOG.config: name: app-vxetol7whrge7eyof4veqbqcci LOG.config: source_code_path: ./app LOG.config: permissions: LOG.config: - level: CAN_USE LOG.config: group_name: users acceptance_test.go:942: LOG.cp: acceptance_test.go:942: LOG.deploy: LOG.deploy: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle deploy --plan plan.json LOG.deploy: Uploading bundle files to /Workspace/Users/tester@databricks.com/.bundle/test-bundle-vxetol7whrge7eyof4veqbqcci/default/files... LOG.deploy: Deploying resources... LOG.deploy: Updating deployment state... LOG.deploy: Deployment complete! acceptance_test.go:942: LOG.destroy: LOG.destroy: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle destroy --auto-approve LOG.destroy: The following resources will be deleted: LOG.destroy: delete resources.apps.foo LOG.destroy: LOG.destroy: All files and directories at the following location will be deleted: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-vxetol7whrge7eyof4veqbqcci/default LOG.destroy: LOG.destroy: Deleting files... LOG.destroy: Destroy complete! acceptance_test.go:942: LOG.planjson: acceptance_test.go:942: LOG.validate: LOG.validate: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle validate LOG.validate: Name: test-bundle-vxetol7whrge7eyof4veqbqcci LOG.validate: Target: default LOG.validate: Workspace: LOG.validate: User: tester@databricks.com LOG.validate: Path: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-vxetol7whrge7eyof4veqbqcci/default LOG.validate: LOG.validate: Validation OK! --- FAIL: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=app.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 (0.33s) ```
TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=catalog.yml.tmpl/LOCAL_DIFF=--local/READPLAN= ✅ | main (de465e09b) ❌ | latest (v1.6.0) ❌ **main (de465e09b):** ``` === RUN TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=catalog.yml.tmpl/LOCAL_DIFF=--local/READPLAN= === PAUSE TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=catalog.yml.tmpl/LOCAL_DIFF=--local/READPLAN= === CONT TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=catalog.yml.tmpl/LOCAL_DIFF=--local/READPLAN= acceptance_test.go:1083: Error Trace: /Users/denis.bilenko/work/cli-trees/local-only/libs/testdiff/testdiff.go:22 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:1083 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:915 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:515 Error: Not equal: expected: "INPUT_CONFIG_OK\n" actual : "INPUT_CONFIG_OK\n\nExit code: 1\n" Diff: --- Expected +++ Actual @@ -2 +2,3 @@ +Exit code: 1 + Test: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=catalog.yml.tmpl/LOCAL_DIFF=--local/READPLAN= Messages: bundle/invariant/no_drift/output.txt vs /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/TestAcceptbundleinvariantno_driftDATABRICKS_BUNDLE_ENGINE=di2611949550/001/output.txt acceptance_test.go:942: LOG.config: bundle: LOG.config: name: test-bundle-ofeap3lv2bbcbp2twxnnyjbt2i LOG.config: LOG.config: resources: LOG.config: catalogs: LOG.config: foo: LOG.config: name: test-catalog-ofeap3lv2bbcbp2twxnnyjbt2i LOG.config: comment: This is a test catalog LOG.config: grants: LOG.config: - principal: account users LOG.config: privileges: LOG.config: - USE_CATALOG acceptance_test.go:942: LOG.cp: acceptance_test.go:942: LOG.deploy: LOG.deploy: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle deploy LOG.deploy: Uploading bundle files to /Workspace/Users/tester@databricks.com/.bundle/test-bundle-ofeap3lv2bbcbp2twxnnyjbt2i/default/files... LOG.deploy: Deploying resources... LOG.deploy: Updating deployment state... LOG.deploy: Deployment complete! acceptance_test.go:942: LOG.destroy: LOG.destroy: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle destroy --auto-approve LOG.destroy: The following resources will be deleted: LOG.destroy: delete resources.catalogs.foo LOG.destroy: LOG.destroy: All files and directories at the following location will be deleted: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-ofeap3lv2bbcbp2twxnnyjbt2i/default LOG.destroy: LOG.destroy: Deleting files... LOG.destroy: Destroy complete! acceptance_test.go:942: LOG.planjson: acceptance_test.go:942: LOG.validate: LOG.validate: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle validate LOG.validate: Name: test-bundle-ofeap3lv2bbcbp2twxnnyjbt2i LOG.validate: Target: default LOG.validate: Workspace: LOG.validate: User: tester@databricks.com LOG.validate: Path: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-ofeap3lv2bbcbp2twxnnyjbt2i/default LOG.validate: LOG.validate: Validation OK! --- FAIL: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=catalog.yml.tmpl/LOCAL_DIFF=--local/READPLAN= (0.30s) ``` **latest (v1.6.0):** ``` === RUN TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=catalog.yml.tmpl/LOCAL_DIFF=--local/READPLAN= === PAUSE TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=catalog.yml.tmpl/LOCAL_DIFF=--local/READPLAN= === CONT TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=catalog.yml.tmpl/LOCAL_DIFF=--local/READPLAN= acceptance_test.go:1083: Error Trace: /Users/denis.bilenko/work/cli-trees/local-only/libs/testdiff/testdiff.go:22 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:1083 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:915 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:515 Error: Not equal: expected: "INPUT_CONFIG_OK\n" actual : "INPUT_CONFIG_OK\n\nExit code: 1\n" Diff: --- Expected +++ Actual @@ -2 +2,3 @@ +Exit code: 1 + Test: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=catalog.yml.tmpl/LOCAL_DIFF=--local/READPLAN= Messages: bundle/invariant/no_drift/output.txt vs /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/TestAcceptbundleinvariantno_driftDATABRICKS_BUNDLE_ENGINE=di275367463/001/output.txt acceptance_test.go:942: LOG.config: bundle: LOG.config: name: test-bundle-awusakeeqjbhpn4ur2fxe7dnye LOG.config: LOG.config: resources: LOG.config: catalogs: LOG.config: foo: LOG.config: name: test-catalog-awusakeeqjbhpn4ur2fxe7dnye LOG.config: comment: This is a test catalog LOG.config: grants: LOG.config: - principal: account users LOG.config: privileges: LOG.config: - USE_CATALOG acceptance_test.go:942: LOG.cp: acceptance_test.go:942: LOG.deploy: LOG.deploy: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle deploy LOG.deploy: Uploading bundle files to /Workspace/Users/tester@databricks.com/.bundle/test-bundle-awusakeeqjbhpn4ur2fxe7dnye/default/files... LOG.deploy: Deploying resources... LOG.deploy: Updating deployment state... LOG.deploy: Deployment complete! acceptance_test.go:942: LOG.destroy: LOG.destroy: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle destroy --auto-approve LOG.destroy: The following resources will be deleted: LOG.destroy: delete resources.catalogs.foo LOG.destroy: LOG.destroy: All files and directories at the following location will be deleted: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-awusakeeqjbhpn4ur2fxe7dnye/default LOG.destroy: LOG.destroy: Deleting files... LOG.destroy: Destroy complete! acceptance_test.go:942: LOG.planjson: acceptance_test.go:942: LOG.validate: LOG.validate: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle validate LOG.validate: Name: test-bundle-awusakeeqjbhpn4ur2fxe7dnye LOG.validate: Target: default LOG.validate: Workspace: LOG.validate: User: tester@databricks.com LOG.validate: Path: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-awusakeeqjbhpn4ur2fxe7dnye/default LOG.validate: LOG.validate: Validation OK! --- FAIL: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=catalog.yml.tmpl/LOCAL_DIFF=--local/READPLAN= (0.36s) ```
TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=catalog.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 ✅ | main (de465e09b) ❌ | latest (v1.6.0) ❌ **main (de465e09b):** ``` === RUN TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=catalog.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 === PAUSE TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=catalog.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 === CONT TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=catalog.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 acceptance_test.go:1083: Error Trace: /Users/denis.bilenko/work/cli-trees/local-only/libs/testdiff/testdiff.go:22 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:1083 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:915 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:515 Error: Not equal: expected: "INPUT_CONFIG_OK\n" actual : "INPUT_CONFIG_OK\n\nExit code: 1\n" Diff: --- Expected +++ Actual @@ -2 +2,3 @@ +Exit code: 1 + Test: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=catalog.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 Messages: bundle/invariant/no_drift/output.txt vs /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/TestAcceptbundleinvariantno_driftDATABRICKS_BUNDLE_ENGINE=di3419204991/001/output.txt acceptance_test.go:942: LOG.config: bundle: LOG.config: name: test-bundle-24xrimpf4vbm5ayso55f6u7kfu LOG.config: LOG.config: resources: LOG.config: catalogs: LOG.config: foo: LOG.config: name: test-catalog-24xrimpf4vbm5ayso55f6u7kfu LOG.config: comment: This is a test catalog LOG.config: grants: LOG.config: - principal: account users LOG.config: privileges: LOG.config: - USE_CATALOG acceptance_test.go:942: LOG.cp: acceptance_test.go:942: LOG.deploy: LOG.deploy: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle deploy --plan plan.json LOG.deploy: Uploading bundle files to /Workspace/Users/tester@databricks.com/.bundle/test-bundle-24xrimpf4vbm5ayso55f6u7kfu/default/files... LOG.deploy: Deploying resources... LOG.deploy: Updating deployment state... LOG.deploy: Deployment complete! acceptance_test.go:942: LOG.destroy: LOG.destroy: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle destroy --auto-approve LOG.destroy: The following resources will be deleted: LOG.destroy: delete resources.catalogs.foo LOG.destroy: LOG.destroy: All files and directories at the following location will be deleted: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-24xrimpf4vbm5ayso55f6u7kfu/default LOG.destroy: LOG.destroy: Deleting files... LOG.destroy: Destroy complete! acceptance_test.go:942: LOG.planjson: acceptance_test.go:942: LOG.validate: LOG.validate: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle validate LOG.validate: Name: test-bundle-24xrimpf4vbm5ayso55f6u7kfu LOG.validate: Target: default LOG.validate: Workspace: LOG.validate: User: tester@databricks.com LOG.validate: Path: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-24xrimpf4vbm5ayso55f6u7kfu/default LOG.validate: LOG.validate: Validation OK! --- FAIL: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=catalog.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 (0.30s) ``` **latest (v1.6.0):** ``` === RUN TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=catalog.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 === PAUSE TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=catalog.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 === CONT TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=catalog.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 acceptance_test.go:1083: Error Trace: /Users/denis.bilenko/work/cli-trees/local-only/libs/testdiff/testdiff.go:22 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:1083 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:915 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:515 Error: Not equal: expected: "INPUT_CONFIG_OK\n" actual : "INPUT_CONFIG_OK\n\nExit code: 1\n" Diff: --- Expected +++ Actual @@ -2 +2,3 @@ +Exit code: 1 + Test: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=catalog.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 Messages: bundle/invariant/no_drift/output.txt vs /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/TestAcceptbundleinvariantno_driftDATABRICKS_BUNDLE_ENGINE=di4006759131/001/output.txt acceptance_test.go:942: LOG.config: bundle: LOG.config: name: test-bundle-auijnqusxjaufklu2im33nmpuq LOG.config: LOG.config: resources: LOG.config: catalogs: LOG.config: foo: LOG.config: name: test-catalog-auijnqusxjaufklu2im33nmpuq LOG.config: comment: This is a test catalog LOG.config: grants: LOG.config: - principal: account users LOG.config: privileges: LOG.config: - USE_CATALOG acceptance_test.go:942: LOG.cp: acceptance_test.go:942: LOG.deploy: LOG.deploy: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle deploy --plan plan.json LOG.deploy: Uploading bundle files to /Workspace/Users/tester@databricks.com/.bundle/test-bundle-auijnqusxjaufklu2im33nmpuq/default/files... LOG.deploy: Deploying resources... LOG.deploy: Updating deployment state... LOG.deploy: Deployment complete! acceptance_test.go:942: LOG.destroy: LOG.destroy: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle destroy --auto-approve LOG.destroy: The following resources will be deleted: LOG.destroy: delete resources.catalogs.foo LOG.destroy: LOG.destroy: All files and directories at the following location will be deleted: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-auijnqusxjaufklu2im33nmpuq/default LOG.destroy: LOG.destroy: Deleting files... LOG.destroy: Destroy complete! acceptance_test.go:942: LOG.planjson: acceptance_test.go:942: LOG.validate: LOG.validate: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle validate LOG.validate: Name: test-bundle-auijnqusxjaufklu2im33nmpuq LOG.validate: Target: default LOG.validate: Workspace: LOG.validate: User: tester@databricks.com LOG.validate: Path: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-auijnqusxjaufklu2im33nmpuq/default LOG.validate: LOG.validate: Validation OK! --- FAIL: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=catalog.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 (0.32s) ```
TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=cluster.yml.tmpl/LOCAL_DIFF=--local/READPLAN= ✅ | main (de465e09b) ❌ | latest (v1.6.0) ❌ **main (de465e09b):** ``` === RUN TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=cluster.yml.tmpl/LOCAL_DIFF=--local/READPLAN= === PAUSE TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=cluster.yml.tmpl/LOCAL_DIFF=--local/READPLAN= === CONT TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=cluster.yml.tmpl/LOCAL_DIFF=--local/READPLAN= acceptance_test.go:1083: Error Trace: /Users/denis.bilenko/work/cli-trees/local-only/libs/testdiff/testdiff.go:22 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:1083 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:915 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:515 Error: Not equal: expected: "INPUT_CONFIG_OK\n" actual : "INPUT_CONFIG_OK\n\nExit code: 1\n" Diff: --- Expected +++ Actual @@ -2 +2,3 @@ +Exit code: 1 + Test: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=cluster.yml.tmpl/LOCAL_DIFF=--local/READPLAN= Messages: bundle/invariant/no_drift/output.txt vs /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/TestAcceptbundleinvariantno_driftDATABRICKS_BUNDLE_ENGINE=di3849448540/001/output.txt acceptance_test.go:942: LOG.config: bundle: LOG.config: name: test-bundle-f5fesnhggnbcrbb5vgqihq47oq LOG.config: LOG.config: resources: LOG.config: clusters: LOG.config: foo: LOG.config: cluster_name: test-cluster-f5fesnhggnbcrbb5vgqihq47oq LOG.config: spark_version: 13.3.x-scala2.12 LOG.config: node_type_id: i3.xlarge LOG.config: instance_pool_id: 0123-456789-pool0 LOG.config: num_workers: 1 LOG.config: permissions: LOG.config: - level: CAN_ATTACH_TO LOG.config: group_name: users acceptance_test.go:942: LOG.cp: acceptance_test.go:942: LOG.deploy: LOG.deploy: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle deploy LOG.deploy: Uploading bundle files to /Workspace/Users/tester@databricks.com/.bundle/test-bundle-f5fesnhggnbcrbb5vgqihq47oq/default/files... LOG.deploy: Deploying resources... LOG.deploy: Updating deployment state... LOG.deploy: Deployment complete! acceptance_test.go:942: LOG.destroy: LOG.destroy: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle destroy --auto-approve LOG.destroy: The following resources will be deleted: LOG.destroy: delete resources.clusters.foo LOG.destroy: LOG.destroy: All files and directories at the following location will be deleted: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-f5fesnhggnbcrbb5vgqihq47oq/default LOG.destroy: LOG.destroy: Deleting files... LOG.destroy: Destroy complete! acceptance_test.go:942: LOG.planjson: acceptance_test.go:942: LOG.validate: LOG.validate: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle validate LOG.validate: Name: test-bundle-f5fesnhggnbcrbb5vgqihq47oq LOG.validate: Target: default LOG.validate: Workspace: LOG.validate: User: tester@databricks.com LOG.validate: Path: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-f5fesnhggnbcrbb5vgqihq47oq/default LOG.validate: LOG.validate: Validation OK! --- FAIL: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=cluster.yml.tmpl/LOCAL_DIFF=--local/READPLAN= (0.33s) ``` **latest (v1.6.0):** ``` === RUN TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=cluster.yml.tmpl/LOCAL_DIFF=--local/READPLAN= === PAUSE TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=cluster.yml.tmpl/LOCAL_DIFF=--local/READPLAN= === CONT TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=cluster.yml.tmpl/LOCAL_DIFF=--local/READPLAN= acceptance_test.go:1083: Error Trace: /Users/denis.bilenko/work/cli-trees/local-only/libs/testdiff/testdiff.go:22 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:1083 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:915 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:515 Error: Not equal: expected: "INPUT_CONFIG_OK\n" actual : "INPUT_CONFIG_OK\n\nExit code: 1\n" Diff: --- Expected +++ Actual @@ -2 +2,3 @@ +Exit code: 1 + Test: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=cluster.yml.tmpl/LOCAL_DIFF=--local/READPLAN= Messages: bundle/invariant/no_drift/output.txt vs /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/TestAcceptbundleinvariantno_driftDATABRICKS_BUNDLE_ENGINE=di1016623273/001/output.txt acceptance_test.go:942: LOG.config: bundle: LOG.config: name: test-bundle-gzpefmdbtjcsboclkwdy4ksvpe LOG.config: LOG.config: resources: LOG.config: clusters: LOG.config: foo: LOG.config: cluster_name: test-cluster-gzpefmdbtjcsboclkwdy4ksvpe LOG.config: spark_version: 13.3.x-scala2.12 LOG.config: node_type_id: i3.xlarge LOG.config: instance_pool_id: 0123-456789-pool0 LOG.config: num_workers: 1 LOG.config: permissions: LOG.config: - level: CAN_ATTACH_TO LOG.config: group_name: users acceptance_test.go:942: LOG.cp: acceptance_test.go:942: LOG.deploy: LOG.deploy: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle deploy LOG.deploy: Uploading bundle files to /Workspace/Users/tester@databricks.com/.bundle/test-bundle-gzpefmdbtjcsboclkwdy4ksvpe/default/files... LOG.deploy: Deploying resources... LOG.deploy: Updating deployment state... LOG.deploy: Deployment complete! acceptance_test.go:942: LOG.destroy: LOG.destroy: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle destroy --auto-approve LOG.destroy: The following resources will be deleted: LOG.destroy: delete resources.clusters.foo LOG.destroy: LOG.destroy: All files and directories at the following location will be deleted: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-gzpefmdbtjcsboclkwdy4ksvpe/default LOG.destroy: LOG.destroy: Deleting files... LOG.destroy: Destroy complete! acceptance_test.go:942: LOG.planjson: acceptance_test.go:942: LOG.validate: LOG.validate: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle validate LOG.validate: Name: test-bundle-gzpefmdbtjcsboclkwdy4ksvpe LOG.validate: Target: default LOG.validate: Workspace: LOG.validate: User: tester@databricks.com LOG.validate: Path: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-gzpefmdbtjcsboclkwdy4ksvpe/default LOG.validate: LOG.validate: Validation OK! --- FAIL: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=cluster.yml.tmpl/LOCAL_DIFF=--local/READPLAN= (0.35s) ```
TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=cluster.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 ✅ | main (de465e09b) ❌ | latest (v1.6.0) ❌ **main (de465e09b):** ``` === RUN TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=cluster.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 === PAUSE TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=cluster.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 === CONT TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=cluster.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 acceptance_test.go:1083: Error Trace: /Users/denis.bilenko/work/cli-trees/local-only/libs/testdiff/testdiff.go:22 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:1083 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:915 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:515 Error: Not equal: expected: "INPUT_CONFIG_OK\n" actual : "INPUT_CONFIG_OK\n\nExit code: 1\n" Diff: --- Expected +++ Actual @@ -2 +2,3 @@ +Exit code: 1 + Test: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=cluster.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 Messages: bundle/invariant/no_drift/output.txt vs /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/TestAcceptbundleinvariantno_driftDATABRICKS_BUNDLE_ENGINE=di61954855/001/output.txt acceptance_test.go:942: LOG.config: bundle: LOG.config: name: test-bundle-zuvin4grsvgztllkxir5g3f5lq LOG.config: LOG.config: resources: LOG.config: clusters: LOG.config: foo: LOG.config: cluster_name: test-cluster-zuvin4grsvgztllkxir5g3f5lq LOG.config: spark_version: 13.3.x-scala2.12 LOG.config: node_type_id: i3.xlarge LOG.config: instance_pool_id: 0123-456789-pool0 LOG.config: num_workers: 1 LOG.config: permissions: LOG.config: - level: CAN_ATTACH_TO LOG.config: group_name: users acceptance_test.go:942: LOG.cp: acceptance_test.go:942: LOG.deploy: LOG.deploy: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle deploy --plan plan.json LOG.deploy: Uploading bundle files to /Workspace/Users/tester@databricks.com/.bundle/test-bundle-zuvin4grsvgztllkxir5g3f5lq/default/files... LOG.deploy: Deploying resources... LOG.deploy: Updating deployment state... LOG.deploy: Deployment complete! acceptance_test.go:942: LOG.destroy: LOG.destroy: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle destroy --auto-approve LOG.destroy: The following resources will be deleted: LOG.destroy: delete resources.clusters.foo LOG.destroy: LOG.destroy: All files and directories at the following location will be deleted: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-zuvin4grsvgztllkxir5g3f5lq/default LOG.destroy: LOG.destroy: Deleting files... LOG.destroy: Destroy complete! acceptance_test.go:942: LOG.planjson: acceptance_test.go:942: LOG.validate: LOG.validate: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle validate LOG.validate: Name: test-bundle-zuvin4grsvgztllkxir5g3f5lq LOG.validate: Target: default LOG.validate: Workspace: LOG.validate: User: tester@databricks.com LOG.validate: Path: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-zuvin4grsvgztllkxir5g3f5lq/default LOG.validate: LOG.validate: Validation OK! --- FAIL: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=cluster.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 (0.29s) ``` **latest (v1.6.0):** ``` === RUN TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=cluster.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 === PAUSE TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=cluster.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 === CONT TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=cluster.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 acceptance_test.go:1083: Error Trace: /Users/denis.bilenko/work/cli-trees/local-only/libs/testdiff/testdiff.go:22 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:1083 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:915 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:515 Error: Not equal: expected: "INPUT_CONFIG_OK\n" actual : "INPUT_CONFIG_OK\n\nExit code: 1\n" Diff: --- Expected +++ Actual @@ -2 +2,3 @@ +Exit code: 1 + Test: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=cluster.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 Messages: bundle/invariant/no_drift/output.txt vs /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/TestAcceptbundleinvariantno_driftDATABRICKS_BUNDLE_ENGINE=di3776115909/001/output.txt acceptance_test.go:942: LOG.config: bundle: LOG.config: name: test-bundle-snesmcvu2zfwpisj3ok6m7mvfe LOG.config: LOG.config: resources: LOG.config: clusters: LOG.config: foo: LOG.config: cluster_name: test-cluster-snesmcvu2zfwpisj3ok6m7mvfe LOG.config: spark_version: 13.3.x-scala2.12 LOG.config: node_type_id: i3.xlarge LOG.config: instance_pool_id: 0123-456789-pool0 LOG.config: num_workers: 1 LOG.config: permissions: LOG.config: - level: CAN_ATTACH_TO LOG.config: group_name: users acceptance_test.go:942: LOG.cp: acceptance_test.go:942: LOG.deploy: LOG.deploy: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle deploy --plan plan.json LOG.deploy: Uploading bundle files to /Workspace/Users/tester@databricks.com/.bundle/test-bundle-snesmcvu2zfwpisj3ok6m7mvfe/default/files... LOG.deploy: Deploying resources... LOG.deploy: Updating deployment state... LOG.deploy: Deployment complete! acceptance_test.go:942: LOG.destroy: LOG.destroy: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle destroy --auto-approve LOG.destroy: The following resources will be deleted: LOG.destroy: delete resources.clusters.foo LOG.destroy: LOG.destroy: All files and directories at the following location will be deleted: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-snesmcvu2zfwpisj3ok6m7mvfe/default LOG.destroy: LOG.destroy: Deleting files... LOG.destroy: Destroy complete! acceptance_test.go:942: LOG.planjson: acceptance_test.go:942: LOG.validate: LOG.validate: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle validate LOG.validate: Name: test-bundle-snesmcvu2zfwpisj3ok6m7mvfe LOG.validate: Target: default LOG.validate: Workspace: LOG.validate: User: tester@databricks.com LOG.validate: Path: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-snesmcvu2zfwpisj3ok6m7mvfe/default LOG.validate: LOG.validate: Validation OK! --- FAIL: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=cluster.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 (0.33s) ```
TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=cluster_apply_policy_default_values.yml.tmpl/LOCAL_DIFF=--local/READPLAN= ✅ | main (de465e09b) ❌ | latest (v1.6.0) ❌ **main (de465e09b):** ``` === RUN TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=cluster_apply_policy_default_values.yml.tmpl/LOCAL_DIFF=--local/READPLAN= === PAUSE TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=cluster_apply_policy_default_values.yml.tmpl/LOCAL_DIFF=--local/READPLAN= === CONT TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=cluster_apply_policy_default_values.yml.tmpl/LOCAL_DIFF=--local/READPLAN= acceptance_test.go:1083: Error Trace: /Users/denis.bilenko/work/cli-trees/local-only/libs/testdiff/testdiff.go:22 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:1083 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:915 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:515 Error: Not equal: expected: "INPUT_CONFIG_OK\n" actual : "INPUT_CONFIG_OK\n\nExit code: 1\n" Diff: --- Expected +++ Actual @@ -2 +2,3 @@ +Exit code: 1 + Test: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=cluster_apply_policy_default_values.yml.tmpl/LOCAL_DIFF=--local/READPLAN= Messages: bundle/invariant/no_drift/output.txt vs /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/TestAcceptbundleinvariantno_driftDATABRICKS_BUNDLE_ENGINE=di223824037/001/output.txt acceptance_test.go:942: LOG.config: bundle: LOG.config: name: test-bundle-3jickltlgrg2tdfra4fgz6rega LOG.config: LOG.config: resources: LOG.config: clusters: LOG.config: foo: LOG.config: cluster_name: test-cluster-3jickltlgrg2tdfra4fgz6rega LOG.config: spark_version: 13.3.x-scala2.12 LOG.config: node_type_id: i3.xlarge LOG.config: instance_pool_id: 0123-456789-pool0 LOG.config: num_workers: 1 LOG.config: apply_policy_default_values: true acceptance_test.go:942: LOG.cp: acceptance_test.go:942: LOG.deploy: LOG.deploy: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle deploy LOG.deploy: Uploading bundle files to /Workspace/Users/tester@databricks.com/.bundle/test-bundle-3jickltlgrg2tdfra4fgz6rega/default/files... LOG.deploy: Deploying resources... LOG.deploy: Updating deployment state... LOG.deploy: Deployment complete! acceptance_test.go:942: LOG.destroy: LOG.destroy: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle destroy --auto-approve LOG.destroy: The following resources will be deleted: LOG.destroy: delete resources.clusters.foo LOG.destroy: LOG.destroy: All files and directories at the following location will be deleted: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-3jickltlgrg2tdfra4fgz6rega/default LOG.destroy: LOG.destroy: Deleting files... LOG.destroy: Destroy complete! acceptance_test.go:942: LOG.planjson: acceptance_test.go:942: LOG.validate: LOG.validate: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle validate LOG.validate: Name: test-bundle-3jickltlgrg2tdfra4fgz6rega LOG.validate: Target: default LOG.validate: Workspace: LOG.validate: User: tester@databricks.com LOG.validate: Path: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-3jickltlgrg2tdfra4fgz6rega/default LOG.validate: LOG.validate: Validation OK! --- FAIL: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=cluster_apply_policy_default_values.yml.tmpl/LOCAL_DIFF=--local/READPLAN= (0.31s) ``` **latest (v1.6.0):** ``` === RUN TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=cluster_apply_policy_default_values.yml.tmpl/LOCAL_DIFF=--local/READPLAN= === PAUSE TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=cluster_apply_policy_default_values.yml.tmpl/LOCAL_DIFF=--local/READPLAN= === CONT TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=cluster_apply_policy_default_values.yml.tmpl/LOCAL_DIFF=--local/READPLAN= acceptance_test.go:1083: Error Trace: /Users/denis.bilenko/work/cli-trees/local-only/libs/testdiff/testdiff.go:22 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:1083 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:915 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:515 Error: Not equal: expected: "INPUT_CONFIG_OK\n" actual : "INPUT_CONFIG_OK\n\nExit code: 1\n" Diff: --- Expected +++ Actual @@ -2 +2,3 @@ +Exit code: 1 + Test: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=cluster_apply_policy_default_values.yml.tmpl/LOCAL_DIFF=--local/READPLAN= Messages: bundle/invariant/no_drift/output.txt vs /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/TestAcceptbundleinvariantno_driftDATABRICKS_BUNDLE_ENGINE=di2351716966/001/output.txt acceptance_test.go:942: LOG.config: bundle: LOG.config: name: test-bundle-ghfxz44mc5emnamuj6azkyzhyi LOG.config: LOG.config: resources: LOG.config: clusters: LOG.config: foo: LOG.config: cluster_name: test-cluster-ghfxz44mc5emnamuj6azkyzhyi LOG.config: spark_version: 13.3.x-scala2.12 LOG.config: node_type_id: i3.xlarge LOG.config: instance_pool_id: 0123-456789-pool0 LOG.config: num_workers: 1 LOG.config: apply_policy_default_values: true acceptance_test.go:942: LOG.cp: acceptance_test.go:942: LOG.deploy: LOG.deploy: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle deploy LOG.deploy: Uploading bundle files to /Workspace/Users/tester@databricks.com/.bundle/test-bundle-ghfxz44mc5emnamuj6azkyzhyi/default/files... LOG.deploy: Deploying resources... LOG.deploy: Updating deployment state... LOG.deploy: Deployment complete! acceptance_test.go:942: LOG.destroy: LOG.destroy: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle destroy --auto-approve LOG.destroy: The following resources will be deleted: LOG.destroy: delete resources.clusters.foo LOG.destroy: LOG.destroy: All files and directories at the following location will be deleted: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-ghfxz44mc5emnamuj6azkyzhyi/default LOG.destroy: LOG.destroy: Deleting files... LOG.destroy: Destroy complete! acceptance_test.go:942: LOG.planjson: acceptance_test.go:942: LOG.validate: LOG.validate: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle validate LOG.validate: Name: test-bundle-ghfxz44mc5emnamuj6azkyzhyi LOG.validate: Target: default LOG.validate: Workspace: LOG.validate: User: tester@databricks.com LOG.validate: Path: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-ghfxz44mc5emnamuj6azkyzhyi/default LOG.validate: LOG.validate: Validation OK! --- FAIL: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=cluster_apply_policy_default_values.yml.tmpl/LOCAL_DIFF=--local/READPLAN= (0.32s) ```
TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=cluster_apply_policy_default_values.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 ✅ | main (de465e09b) ❌ | latest (v1.6.0) ❌ **main (de465e09b):** ``` === RUN TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=cluster_apply_policy_default_values.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 === PAUSE TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=cluster_apply_policy_default_values.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 === CONT TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=cluster_apply_policy_default_values.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 acceptance_test.go:1083: Error Trace: /Users/denis.bilenko/work/cli-trees/local-only/libs/testdiff/testdiff.go:22 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:1083 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:915 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:515 Error: Not equal: expected: "INPUT_CONFIG_OK\n" actual : "INPUT_CONFIG_OK\n\nExit code: 1\n" Diff: --- Expected +++ Actual @@ -2 +2,3 @@ +Exit code: 1 + Test: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=cluster_apply_policy_default_values.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 Messages: bundle/invariant/no_drift/output.txt vs /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/TestAcceptbundleinvariantno_driftDATABRICKS_BUNDLE_ENGINE=di1465747792/001/output.txt acceptance_test.go:942: LOG.config: bundle: LOG.config: name: test-bundle-u7th5n5sqjeebkaidqfucj5qem LOG.config: LOG.config: resources: LOG.config: clusters: LOG.config: foo: LOG.config: cluster_name: test-cluster-u7th5n5sqjeebkaidqfucj5qem LOG.config: spark_version: 13.3.x-scala2.12 LOG.config: node_type_id: i3.xlarge LOG.config: instance_pool_id: 0123-456789-pool0 LOG.config: num_workers: 1 LOG.config: apply_policy_default_values: true acceptance_test.go:942: LOG.cp: acceptance_test.go:942: LOG.deploy: LOG.deploy: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle deploy --plan plan.json LOG.deploy: Uploading bundle files to /Workspace/Users/tester@databricks.com/.bundle/test-bundle-u7th5n5sqjeebkaidqfucj5qem/default/files... LOG.deploy: Deploying resources... LOG.deploy: Updating deployment state... LOG.deploy: Deployment complete! acceptance_test.go:942: LOG.destroy: LOG.destroy: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle destroy --auto-approve LOG.destroy: The following resources will be deleted: LOG.destroy: delete resources.clusters.foo LOG.destroy: LOG.destroy: All files and directories at the following location will be deleted: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-u7th5n5sqjeebkaidqfucj5qem/default LOG.destroy: LOG.destroy: Deleting files... LOG.destroy: Destroy complete! acceptance_test.go:942: LOG.planjson: acceptance_test.go:942: LOG.validate: LOG.validate: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle validate LOG.validate: Name: test-bundle-u7th5n5sqjeebkaidqfucj5qem LOG.validate: Target: default LOG.validate: Workspace: LOG.validate: User: tester@databricks.com LOG.validate: Path: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-u7th5n5sqjeebkaidqfucj5qem/default LOG.validate: LOG.validate: Validation OK! --- FAIL: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=cluster_apply_policy_default_values.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 (0.31s) ``` **latest (v1.6.0):** ``` === RUN TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=cluster_apply_policy_default_values.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 === PAUSE TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=cluster_apply_policy_default_values.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 === CONT TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=cluster_apply_policy_default_values.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 acceptance_test.go:1083: Error Trace: /Users/denis.bilenko/work/cli-trees/local-only/libs/testdiff/testdiff.go:22 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:1083 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:915 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:515 Error: Not equal: expected: "INPUT_CONFIG_OK\n" actual : "INPUT_CONFIG_OK\n\nExit code: 1\n" Diff: --- Expected +++ Actual @@ -2 +2,3 @@ +Exit code: 1 + Test: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=cluster_apply_policy_default_values.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 Messages: bundle/invariant/no_drift/output.txt vs /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/TestAcceptbundleinvariantno_driftDATABRICKS_BUNDLE_ENGINE=di3435698648/001/output.txt acceptance_test.go:942: LOG.config: bundle: LOG.config: name: test-bundle-wbex4wqdezfbpdf7ouv4n4yevq LOG.config: LOG.config: resources: LOG.config: clusters: LOG.config: foo: LOG.config: cluster_name: test-cluster-wbex4wqdezfbpdf7ouv4n4yevq LOG.config: spark_version: 13.3.x-scala2.12 LOG.config: node_type_id: i3.xlarge LOG.config: instance_pool_id: 0123-456789-pool0 LOG.config: num_workers: 1 LOG.config: apply_policy_default_values: true acceptance_test.go:942: LOG.cp: acceptance_test.go:942: LOG.deploy: LOG.deploy: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle deploy --plan plan.json LOG.deploy: Uploading bundle files to /Workspace/Users/tester@databricks.com/.bundle/test-bundle-wbex4wqdezfbpdf7ouv4n4yevq/default/files... LOG.deploy: Deploying resources... LOG.deploy: Updating deployment state... LOG.deploy: Deployment complete! acceptance_test.go:942: LOG.destroy: LOG.destroy: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle destroy --auto-approve LOG.destroy: The following resources will be deleted: LOG.destroy: delete resources.clusters.foo LOG.destroy: LOG.destroy: All files and directories at the following location will be deleted: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-wbex4wqdezfbpdf7ouv4n4yevq/default LOG.destroy: LOG.destroy: Deleting files... LOG.destroy: Destroy complete! acceptance_test.go:942: LOG.planjson: acceptance_test.go:942: LOG.validate: LOG.validate: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle validate LOG.validate: Name: test-bundle-wbex4wqdezfbpdf7ouv4n4yevq LOG.validate: Target: default LOG.validate: Workspace: LOG.validate: User: tester@databricks.com LOG.validate: Path: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-wbex4wqdezfbpdf7ouv4n4yevq/default LOG.validate: LOG.validate: Validation OK! --- FAIL: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=cluster_apply_policy_default_values.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 (0.31s) ```
TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_apply_policy_default_values_job_cluster.yml.tmpl/LOCAL_DIFF=--local/READPLAN= ✅ | main (de465e09b) ❌ | latest (v1.6.0) ❌ **main (de465e09b):** ``` === RUN TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_apply_policy_default_values_job_cluster.yml.tmpl/LOCAL_DIFF=--local/READPLAN= === PAUSE TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_apply_policy_default_values_job_cluster.yml.tmpl/LOCAL_DIFF=--local/READPLAN= === CONT TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_apply_policy_default_values_job_cluster.yml.tmpl/LOCAL_DIFF=--local/READPLAN= acceptance_test.go:1083: Error Trace: /Users/denis.bilenko/work/cli-trees/local-only/libs/testdiff/testdiff.go:22 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:1083 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:915 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:515 Error: Not equal: expected: "INPUT_CONFIG_OK\n" actual : "INPUT_CONFIG_OK\n\nExit code: 1\n" Diff: --- Expected +++ Actual @@ -2 +2,3 @@ +Exit code: 1 + Test: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_apply_policy_default_values_job_cluster.yml.tmpl/LOCAL_DIFF=--local/READPLAN= Messages: bundle/invariant/no_drift/output.txt vs /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/TestAcceptbundleinvariantno_driftDATABRICKS_BUNDLE_ENGINE=di1238510730/001/output.txt acceptance_test.go:942: LOG.config: bundle: LOG.config: name: test-bundle-ymjz642p7vadnjjvfo7toegs5y LOG.config: LOG.config: resources: LOG.config: jobs: LOG.config: foo: LOG.config: name: test-job-ymjz642p7vadnjjvfo7toegs5y LOG.config: job_clusters: LOG.config: - job_cluster_key: shared LOG.config: new_cluster: LOG.config: spark_version: 13.3.x-snapshot-scala2.12 LOG.config: node_type_id: i3.xlarge LOG.config: instance_pool_id: 0123-456789-pool0 LOG.config: num_workers: 1 LOG.config: apply_policy_default_values: true LOG.config: tasks: LOG.config: - task_key: only_task LOG.config: job_cluster_key: shared LOG.config: notebook_task: LOG.config: notebook_path: /Shared/notebook acceptance_test.go:942: LOG.cp: acceptance_test.go:942: LOG.deploy: LOG.deploy: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle deploy LOG.deploy: Uploading bundle files to /Workspace/Users/tester@databricks.com/.bundle/test-bundle-ymjz642p7vadnjjvfo7toegs5y/default/files... LOG.deploy: Deploying resources... LOG.deploy: Updating deployment state... LOG.deploy: Deployment complete! acceptance_test.go:942: LOG.destroy: LOG.destroy: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle destroy --auto-approve LOG.destroy: The following resources will be deleted: LOG.destroy: delete resources.jobs.foo LOG.destroy: LOG.destroy: All files and directories at the following location will be deleted: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-ymjz642p7vadnjjvfo7toegs5y/default LOG.destroy: LOG.destroy: Deleting files... LOG.destroy: Destroy complete! acceptance_test.go:942: LOG.planjson: acceptance_test.go:942: LOG.validate: LOG.validate: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle validate LOG.validate: Name: test-bundle-ymjz642p7vadnjjvfo7toegs5y LOG.validate: Target: default LOG.validate: Workspace: LOG.validate: User: tester@databricks.com LOG.validate: Path: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-ymjz642p7vadnjjvfo7toegs5y/default LOG.validate: LOG.validate: Validation OK! --- FAIL: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_apply_policy_default_values_job_cluster.yml.tmpl/LOCAL_DIFF=--local/READPLAN= (0.33s) ``` **latest (v1.6.0):** ``` === RUN TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_apply_policy_default_values_job_cluster.yml.tmpl/LOCAL_DIFF=--local/READPLAN= === PAUSE TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_apply_policy_default_values_job_cluster.yml.tmpl/LOCAL_DIFF=--local/READPLAN= === CONT TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_apply_policy_default_values_job_cluster.yml.tmpl/LOCAL_DIFF=--local/READPLAN= acceptance_test.go:1083: Error Trace: /Users/denis.bilenko/work/cli-trees/local-only/libs/testdiff/testdiff.go:22 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:1083 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:915 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:515 Error: Not equal: expected: "INPUT_CONFIG_OK\n" actual : "INPUT_CONFIG_OK\n\nExit code: 1\n" Diff: --- Expected +++ Actual @@ -2 +2,3 @@ +Exit code: 1 + Test: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_apply_policy_default_values_job_cluster.yml.tmpl/LOCAL_DIFF=--local/READPLAN= Messages: bundle/invariant/no_drift/output.txt vs /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/TestAcceptbundleinvariantno_driftDATABRICKS_BUNDLE_ENGINE=di3774647301/001/output.txt acceptance_test.go:942: LOG.config: bundle: LOG.config: name: test-bundle-4dzhcb4eyrcdzk33zebruet3bi LOG.config: LOG.config: resources: LOG.config: jobs: LOG.config: foo: LOG.config: name: test-job-4dzhcb4eyrcdzk33zebruet3bi LOG.config: job_clusters: LOG.config: - job_cluster_key: shared LOG.config: new_cluster: LOG.config: spark_version: 13.3.x-snapshot-scala2.12 LOG.config: node_type_id: i3.xlarge LOG.config: instance_pool_id: 0123-456789-pool0 LOG.config: num_workers: 1 LOG.config: apply_policy_default_values: true LOG.config: tasks: LOG.config: - task_key: only_task LOG.config: job_cluster_key: shared LOG.config: notebook_task: LOG.config: notebook_path: /Shared/notebook acceptance_test.go:942: LOG.cp: acceptance_test.go:942: LOG.deploy: LOG.deploy: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle deploy LOG.deploy: Uploading bundle files to /Workspace/Users/tester@databricks.com/.bundle/test-bundle-4dzhcb4eyrcdzk33zebruet3bi/default/files... LOG.deploy: Deploying resources... LOG.deploy: Updating deployment state... LOG.deploy: Deployment complete! acceptance_test.go:942: LOG.destroy: LOG.destroy: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle destroy --auto-approve LOG.destroy: The following resources will be deleted: LOG.destroy: delete resources.jobs.foo LOG.destroy: LOG.destroy: All files and directories at the following location will be deleted: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-4dzhcb4eyrcdzk33zebruet3bi/default LOG.destroy: LOG.destroy: Deleting files... LOG.destroy: Destroy complete! acceptance_test.go:942: LOG.planjson: acceptance_test.go:942: LOG.validate: LOG.validate: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle validate LOG.validate: Name: test-bundle-4dzhcb4eyrcdzk33zebruet3bi LOG.validate: Target: default LOG.validate: Workspace: LOG.validate: User: tester@databricks.com LOG.validate: Path: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-4dzhcb4eyrcdzk33zebruet3bi/default LOG.validate: LOG.validate: Validation OK! --- FAIL: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_apply_policy_default_values_job_cluster.yml.tmpl/LOCAL_DIFF=--local/READPLAN= (0.33s) ```
TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_apply_policy_default_values_job_cluster.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 ✅ | main (de465e09b) ❌ | latest (v1.6.0) ❌ **main (de465e09b):** ``` === RUN TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_apply_policy_default_values_job_cluster.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 === PAUSE TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_apply_policy_default_values_job_cluster.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 === CONT TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_apply_policy_default_values_job_cluster.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 acceptance_test.go:1083: Error Trace: /Users/denis.bilenko/work/cli-trees/local-only/libs/testdiff/testdiff.go:22 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:1083 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:915 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:515 Error: Not equal: expected: "INPUT_CONFIG_OK\n" actual : "INPUT_CONFIG_OK\n\nExit code: 1\n" Diff: --- Expected +++ Actual @@ -2 +2,3 @@ +Exit code: 1 + Test: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_apply_policy_default_values_job_cluster.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 Messages: bundle/invariant/no_drift/output.txt vs /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/TestAcceptbundleinvariantno_driftDATABRICKS_BUNDLE_ENGINE=di4207669964/001/output.txt acceptance_test.go:942: LOG.config: bundle: LOG.config: name: test-bundle-uq2njjgfunfureyotpsz2rasva LOG.config: LOG.config: resources: LOG.config: jobs: LOG.config: foo: LOG.config: name: test-job-uq2njjgfunfureyotpsz2rasva LOG.config: job_clusters: LOG.config: - job_cluster_key: shared LOG.config: new_cluster: LOG.config: spark_version: 13.3.x-snapshot-scala2.12 LOG.config: node_type_id: i3.xlarge LOG.config: instance_pool_id: 0123-456789-pool0 LOG.config: num_workers: 1 LOG.config: apply_policy_default_values: true LOG.config: tasks: LOG.config: - task_key: only_task LOG.config: job_cluster_key: shared LOG.config: notebook_task: LOG.config: notebook_path: /Shared/notebook acceptance_test.go:942: LOG.cp: acceptance_test.go:942: LOG.deploy: LOG.deploy: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle deploy --plan plan.json LOG.deploy: Uploading bundle files to /Workspace/Users/tester@databricks.com/.bundle/test-bundle-uq2njjgfunfureyotpsz2rasva/default/files... LOG.deploy: Deploying resources... LOG.deploy: Updating deployment state... LOG.deploy: Deployment complete! acceptance_test.go:942: LOG.destroy: LOG.destroy: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle destroy --auto-approve LOG.destroy: The following resources will be deleted: LOG.destroy: delete resources.jobs.foo LOG.destroy: LOG.destroy: All files and directories at the following location will be deleted: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-uq2njjgfunfureyotpsz2rasva/default LOG.destroy: LOG.destroy: Deleting files... LOG.destroy: Destroy complete! acceptance_test.go:942: LOG.planjson: acceptance_test.go:942: LOG.validate: LOG.validate: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle validate LOG.validate: Name: test-bundle-uq2njjgfunfureyotpsz2rasva LOG.validate: Target: default LOG.validate: Workspace: LOG.validate: User: tester@databricks.com LOG.validate: Path: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-uq2njjgfunfureyotpsz2rasva/default LOG.validate: LOG.validate: Validation OK! --- FAIL: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_apply_policy_default_values_job_cluster.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 (0.33s) ``` **latest (v1.6.0):** ``` === RUN TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_apply_policy_default_values_job_cluster.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 === PAUSE TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_apply_policy_default_values_job_cluster.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 === CONT TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_apply_policy_default_values_job_cluster.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 acceptance_test.go:1083: Error Trace: /Users/denis.bilenko/work/cli-trees/local-only/libs/testdiff/testdiff.go:22 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:1083 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:915 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:515 Error: Not equal: expected: "INPUT_CONFIG_OK\n" actual : "INPUT_CONFIG_OK\n\nExit code: 1\n" Diff: --- Expected +++ Actual @@ -2 +2,3 @@ +Exit code: 1 + Test: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_apply_policy_default_values_job_cluster.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 Messages: bundle/invariant/no_drift/output.txt vs /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/TestAcceptbundleinvariantno_driftDATABRICKS_BUNDLE_ENGINE=di937318853/001/output.txt acceptance_test.go:942: LOG.config: bundle: LOG.config: name: test-bundle-b7gqur2cwjhufmicxzzfslgwle LOG.config: LOG.config: resources: LOG.config: jobs: LOG.config: foo: LOG.config: name: test-job-b7gqur2cwjhufmicxzzfslgwle LOG.config: job_clusters: LOG.config: - job_cluster_key: shared LOG.config: new_cluster: LOG.config: spark_version: 13.3.x-snapshot-scala2.12 LOG.config: node_type_id: i3.xlarge LOG.config: instance_pool_id: 0123-456789-pool0 LOG.config: num_workers: 1 LOG.config: apply_policy_default_values: true LOG.config: tasks: LOG.config: - task_key: only_task LOG.config: job_cluster_key: shared LOG.config: notebook_task: LOG.config: notebook_path: /Shared/notebook acceptance_test.go:942: LOG.cp: acceptance_test.go:942: LOG.deploy: LOG.deploy: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle deploy --plan plan.json LOG.deploy: Uploading bundle files to /Workspace/Users/tester@databricks.com/.bundle/test-bundle-b7gqur2cwjhufmicxzzfslgwle/default/files... LOG.deploy: Deploying resources... LOG.deploy: Updating deployment state... LOG.deploy: Deployment complete! acceptance_test.go:942: LOG.destroy: LOG.destroy: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle destroy --auto-approve LOG.destroy: The following resources will be deleted: LOG.destroy: delete resources.jobs.foo LOG.destroy: LOG.destroy: All files and directories at the following location will be deleted: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-b7gqur2cwjhufmicxzzfslgwle/default LOG.destroy: LOG.destroy: Deleting files... LOG.destroy: Destroy complete! acceptance_test.go:942: LOG.planjson: acceptance_test.go:942: LOG.validate: LOG.validate: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle validate LOG.validate: Name: test-bundle-b7gqur2cwjhufmicxzzfslgwle LOG.validate: Target: default LOG.validate: Workspace: LOG.validate: User: tester@databricks.com LOG.validate: Path: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-b7gqur2cwjhufmicxzzfslgwle/default LOG.validate: LOG.validate: Validation OK! --- FAIL: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_apply_policy_default_values_job_cluster.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 (0.32s) ```
TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_apply_policy_default_values_task_cluster.yml.tmpl/LOCAL_DIFF=--local/READPLAN= ✅ | main (de465e09b) ❌ | latest (v1.6.0) ❌ **main (de465e09b):** ``` === RUN TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_apply_policy_default_values_task_cluster.yml.tmpl/LOCAL_DIFF=--local/READPLAN= === PAUSE TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_apply_policy_default_values_task_cluster.yml.tmpl/LOCAL_DIFF=--local/READPLAN= === CONT TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_apply_policy_default_values_task_cluster.yml.tmpl/LOCAL_DIFF=--local/READPLAN= acceptance_test.go:1083: Error Trace: /Users/denis.bilenko/work/cli-trees/local-only/libs/testdiff/testdiff.go:22 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:1083 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:915 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:515 Error: Not equal: expected: "INPUT_CONFIG_OK\n" actual : "INPUT_CONFIG_OK\n\nExit code: 1\n" Diff: --- Expected +++ Actual @@ -2 +2,3 @@ +Exit code: 1 + Test: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_apply_policy_default_values_task_cluster.yml.tmpl/LOCAL_DIFF=--local/READPLAN= Messages: bundle/invariant/no_drift/output.txt vs /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/TestAcceptbundleinvariantno_driftDATABRICKS_BUNDLE_ENGINE=di1114119427/001/output.txt acceptance_test.go:942: LOG.config: bundle: LOG.config: name: test-bundle-outexyjnbnecvjh6so3zxbweqi LOG.config: LOG.config: resources: LOG.config: jobs: LOG.config: foo: LOG.config: name: test-job-outexyjnbnecvjh6so3zxbweqi LOG.config: tasks: LOG.config: - task_key: only_task LOG.config: notebook_task: LOG.config: notebook_path: /Shared/notebook LOG.config: new_cluster: LOG.config: spark_version: 13.3.x-snapshot-scala2.12 LOG.config: node_type_id: i3.xlarge LOG.config: instance_pool_id: 0123-456789-pool0 LOG.config: num_workers: 1 LOG.config: apply_policy_default_values: true acceptance_test.go:942: LOG.cp: acceptance_test.go:942: LOG.deploy: LOG.deploy: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle deploy LOG.deploy: Uploading bundle files to /Workspace/Users/tester@databricks.com/.bundle/test-bundle-outexyjnbnecvjh6so3zxbweqi/default/files... LOG.deploy: Deploying resources... LOG.deploy: Updating deployment state... LOG.deploy: Deployment complete! acceptance_test.go:942: LOG.destroy: LOG.destroy: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle destroy --auto-approve LOG.destroy: The following resources will be deleted: LOG.destroy: delete resources.jobs.foo LOG.destroy: LOG.destroy: All files and directories at the following location will be deleted: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-outexyjnbnecvjh6so3zxbweqi/default LOG.destroy: LOG.destroy: Deleting files... LOG.destroy: Destroy complete! acceptance_test.go:942: LOG.planjson: acceptance_test.go:942: LOG.validate: LOG.validate: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle validate LOG.validate: Name: test-bundle-outexyjnbnecvjh6so3zxbweqi LOG.validate: Target: default LOG.validate: Workspace: LOG.validate: User: tester@databricks.com LOG.validate: Path: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-outexyjnbnecvjh6so3zxbweqi/default LOG.validate: LOG.validate: Validation OK! --- FAIL: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_apply_policy_default_values_task_cluster.yml.tmpl/LOCAL_DIFF=--local/READPLAN= (0.33s) ``` **latest (v1.6.0):** ``` === RUN TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_apply_policy_default_values_task_cluster.yml.tmpl/LOCAL_DIFF=--local/READPLAN= === PAUSE TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_apply_policy_default_values_task_cluster.yml.tmpl/LOCAL_DIFF=--local/READPLAN= === CONT TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_apply_policy_default_values_task_cluster.yml.tmpl/LOCAL_DIFF=--local/READPLAN= acceptance_test.go:1083: Error Trace: /Users/denis.bilenko/work/cli-trees/local-only/libs/testdiff/testdiff.go:22 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:1083 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:915 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:515 Error: Not equal: expected: "INPUT_CONFIG_OK\n" actual : "INPUT_CONFIG_OK\n\nExit code: 1\n" Diff: --- Expected +++ Actual @@ -2 +2,3 @@ +Exit code: 1 + Test: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_apply_policy_default_values_task_cluster.yml.tmpl/LOCAL_DIFF=--local/READPLAN= Messages: bundle/invariant/no_drift/output.txt vs /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/TestAcceptbundleinvariantno_driftDATABRICKS_BUNDLE_ENGINE=di1143075293/001/output.txt acceptance_test.go:942: LOG.config: bundle: LOG.config: name: test-bundle-4myfveeao5crfpikkjs3v2pt7u LOG.config: LOG.config: resources: LOG.config: jobs: LOG.config: foo: LOG.config: name: test-job-4myfveeao5crfpikkjs3v2pt7u LOG.config: tasks: LOG.config: - task_key: only_task LOG.config: notebook_task: LOG.config: notebook_path: /Shared/notebook LOG.config: new_cluster: LOG.config: spark_version: 13.3.x-snapshot-scala2.12 LOG.config: node_type_id: i3.xlarge LOG.config: instance_pool_id: 0123-456789-pool0 LOG.config: num_workers: 1 LOG.config: apply_policy_default_values: true acceptance_test.go:942: LOG.cp: acceptance_test.go:942: LOG.deploy: LOG.deploy: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle deploy LOG.deploy: Uploading bundle files to /Workspace/Users/tester@databricks.com/.bundle/test-bundle-4myfveeao5crfpikkjs3v2pt7u/default/files... LOG.deploy: Deploying resources... LOG.deploy: Updating deployment state... LOG.deploy: Deployment complete! acceptance_test.go:942: LOG.destroy: LOG.destroy: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle destroy --auto-approve LOG.destroy: The following resources will be deleted: LOG.destroy: delete resources.jobs.foo LOG.destroy: LOG.destroy: All files and directories at the following location will be deleted: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-4myfveeao5crfpikkjs3v2pt7u/default LOG.destroy: LOG.destroy: Deleting files... LOG.destroy: Destroy complete! acceptance_test.go:942: LOG.planjson: acceptance_test.go:942: LOG.validate: LOG.validate: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle validate LOG.validate: Name: test-bundle-4myfveeao5crfpikkjs3v2pt7u LOG.validate: Target: default LOG.validate: Workspace: LOG.validate: User: tester@databricks.com LOG.validate: Path: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-4myfveeao5crfpikkjs3v2pt7u/default LOG.validate: LOG.validate: Validation OK! --- FAIL: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_apply_policy_default_values_task_cluster.yml.tmpl/LOCAL_DIFF=--local/READPLAN= (0.33s) ```
TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_apply_policy_default_values_task_cluster.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 ✅ | main (de465e09b) ❌ | latest (v1.6.0) ❌ **main (de465e09b):** ``` === RUN TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_apply_policy_default_values_task_cluster.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 === PAUSE TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_apply_policy_default_values_task_cluster.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 === CONT TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_apply_policy_default_values_task_cluster.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 acceptance_test.go:1083: Error Trace: /Users/denis.bilenko/work/cli-trees/local-only/libs/testdiff/testdiff.go:22 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:1083 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:915 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:515 Error: Not equal: expected: "INPUT_CONFIG_OK\n" actual : "INPUT_CONFIG_OK\n\nExit code: 1\n" Diff: --- Expected +++ Actual @@ -2 +2,3 @@ +Exit code: 1 + Test: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_apply_policy_default_values_task_cluster.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 Messages: bundle/invariant/no_drift/output.txt vs /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/TestAcceptbundleinvariantno_driftDATABRICKS_BUNDLE_ENGINE=di3916341923/001/output.txt acceptance_test.go:942: LOG.config: bundle: LOG.config: name: test-bundle-axjbo6v6urdrlmtbikzdldahu4 LOG.config: LOG.config: resources: LOG.config: jobs: LOG.config: foo: LOG.config: name: test-job-axjbo6v6urdrlmtbikzdldahu4 LOG.config: tasks: LOG.config: - task_key: only_task LOG.config: notebook_task: LOG.config: notebook_path: /Shared/notebook LOG.config: new_cluster: LOG.config: spark_version: 13.3.x-snapshot-scala2.12 LOG.config: node_type_id: i3.xlarge LOG.config: instance_pool_id: 0123-456789-pool0 LOG.config: num_workers: 1 LOG.config: apply_policy_default_values: true acceptance_test.go:942: LOG.cp: acceptance_test.go:942: LOG.deploy: LOG.deploy: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle deploy --plan plan.json LOG.deploy: Uploading bundle files to /Workspace/Users/tester@databricks.com/.bundle/test-bundle-axjbo6v6urdrlmtbikzdldahu4/default/files... LOG.deploy: Deploying resources... LOG.deploy: Updating deployment state... LOG.deploy: Deployment complete! acceptance_test.go:942: LOG.destroy: LOG.destroy: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle destroy --auto-approve LOG.destroy: The following resources will be deleted: LOG.destroy: delete resources.jobs.foo LOG.destroy: LOG.destroy: All files and directories at the following location will be deleted: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-axjbo6v6urdrlmtbikzdldahu4/default LOG.destroy: LOG.destroy: Deleting files... LOG.destroy: Destroy complete! acceptance_test.go:942: LOG.planjson: acceptance_test.go:942: LOG.validate: LOG.validate: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle validate LOG.validate: Name: test-bundle-axjbo6v6urdrlmtbikzdldahu4 LOG.validate: Target: default LOG.validate: Workspace: LOG.validate: User: tester@databricks.com LOG.validate: Path: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-axjbo6v6urdrlmtbikzdldahu4/default LOG.validate: LOG.validate: Validation OK! --- FAIL: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_apply_policy_default_values_task_cluster.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 (0.31s) ``` **latest (v1.6.0):** ``` === RUN TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_apply_policy_default_values_task_cluster.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 === PAUSE TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_apply_policy_default_values_task_cluster.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 === CONT TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_apply_policy_default_values_task_cluster.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 acceptance_test.go:1083: Error Trace: /Users/denis.bilenko/work/cli-trees/local-only/libs/testdiff/testdiff.go:22 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:1083 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:915 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:515 Error: Not equal: expected: "INPUT_CONFIG_OK\n" actual : "INPUT_CONFIG_OK\n\nExit code: 1\n" Diff: --- Expected +++ Actual @@ -2 +2,3 @@ +Exit code: 1 + Test: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_apply_policy_default_values_task_cluster.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 Messages: bundle/invariant/no_drift/output.txt vs /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/TestAcceptbundleinvariantno_driftDATABRICKS_BUNDLE_ENGINE=di4056967740/001/output.txt acceptance_test.go:942: LOG.config: bundle: LOG.config: name: test-bundle-qrzvcnwemfcc3i22td7gm34usa LOG.config: LOG.config: resources: LOG.config: jobs: LOG.config: foo: LOG.config: name: test-job-qrzvcnwemfcc3i22td7gm34usa LOG.config: tasks: LOG.config: - task_key: only_task LOG.config: notebook_task: LOG.config: notebook_path: /Shared/notebook LOG.config: new_cluster: LOG.config: spark_version: 13.3.x-snapshot-scala2.12 LOG.config: node_type_id: i3.xlarge LOG.config: instance_pool_id: 0123-456789-pool0 LOG.config: num_workers: 1 LOG.config: apply_policy_default_values: true acceptance_test.go:942: LOG.cp: acceptance_test.go:942: LOG.deploy: LOG.deploy: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle deploy --plan plan.json LOG.deploy: Uploading bundle files to /Workspace/Users/tester@databricks.com/.bundle/test-bundle-qrzvcnwemfcc3i22td7gm34usa/default/files... LOG.deploy: Deploying resources... LOG.deploy: Updating deployment state... LOG.deploy: Deployment complete! acceptance_test.go:942: LOG.destroy: LOG.destroy: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle destroy --auto-approve LOG.destroy: The following resources will be deleted: LOG.destroy: delete resources.jobs.foo LOG.destroy: LOG.destroy: All files and directories at the following location will be deleted: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-qrzvcnwemfcc3i22td7gm34usa/default LOG.destroy: LOG.destroy: Deleting files... LOG.destroy: Destroy complete! acceptance_test.go:942: LOG.planjson: acceptance_test.go:942: LOG.validate: LOG.validate: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle validate LOG.validate: Name: test-bundle-qrzvcnwemfcc3i22td7gm34usa LOG.validate: Target: default LOG.validate: Workspace: LOG.validate: User: tester@databricks.com LOG.validate: Path: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-qrzvcnwemfcc3i22td7gm34usa/default LOG.validate: LOG.validate: Validation OK! --- FAIL: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_apply_policy_default_values_task_cluster.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 (0.31s) ```
TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_apply_policy_default_values_for_each_task.yml.tmpl/LOCAL_DIFF=--local/READPLAN= ✅ | main (de465e09b) ❌ | latest (v1.6.0) ❌ **main (de465e09b):** ``` === RUN TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_apply_policy_default_values_for_each_task.yml.tmpl/LOCAL_DIFF=--local/READPLAN= === PAUSE TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_apply_policy_default_values_for_each_task.yml.tmpl/LOCAL_DIFF=--local/READPLAN= === CONT TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_apply_policy_default_values_for_each_task.yml.tmpl/LOCAL_DIFF=--local/READPLAN= acceptance_test.go:1083: Error Trace: /Users/denis.bilenko/work/cli-trees/local-only/libs/testdiff/testdiff.go:22 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:1083 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:915 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:515 Error: Not equal: expected: "INPUT_CONFIG_OK\n" actual : "INPUT_CONFIG_OK\n\nExit code: 1\n" Diff: --- Expected +++ Actual @@ -2 +2,3 @@ +Exit code: 1 + Test: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_apply_policy_default_values_for_each_task.yml.tmpl/LOCAL_DIFF=--local/READPLAN= Messages: bundle/invariant/no_drift/output.txt vs /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/TestAcceptbundleinvariantno_driftDATABRICKS_BUNDLE_ENGINE=di3428406066/001/output.txt acceptance_test.go:942: LOG.config: bundle: LOG.config: name: test-bundle-mejth4isyjcblm5u6hzyy7ry64 LOG.config: LOG.config: resources: LOG.config: jobs: LOG.config: foo: LOG.config: name: test-job-mejth4isyjcblm5u6hzyy7ry64 LOG.config: tasks: LOG.config: - task_key: main LOG.config: for_each_task: LOG.config: inputs: "[1]" LOG.config: task: LOG.config: task_key: inner LOG.config: notebook_task: LOG.config: notebook_path: /Shared/notebook LOG.config: new_cluster: LOG.config: spark_version: 13.3.x-snapshot-scala2.12 LOG.config: instance_pool_id: 0123-456789-pool0 LOG.config: num_workers: 1 LOG.config: apply_policy_default_values: true acceptance_test.go:942: LOG.cp: acceptance_test.go:942: LOG.deploy: LOG.deploy: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle deploy LOG.deploy: Uploading bundle files to /Workspace/Users/tester@databricks.com/.bundle/test-bundle-mejth4isyjcblm5u6hzyy7ry64/default/files... LOG.deploy: Deploying resources... LOG.deploy: Updating deployment state... LOG.deploy: Deployment complete! acceptance_test.go:942: LOG.destroy: LOG.destroy: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle destroy --auto-approve LOG.destroy: The following resources will be deleted: LOG.destroy: delete resources.jobs.foo LOG.destroy: LOG.destroy: All files and directories at the following location will be deleted: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-mejth4isyjcblm5u6hzyy7ry64/default LOG.destroy: LOG.destroy: Deleting files... LOG.destroy: Destroy complete! acceptance_test.go:942: LOG.planjson: acceptance_test.go:942: LOG.validate: LOG.validate: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle validate LOG.validate: Name: test-bundle-mejth4isyjcblm5u6hzyy7ry64 LOG.validate: Target: default LOG.validate: Workspace: LOG.validate: User: tester@databricks.com LOG.validate: Path: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-mejth4isyjcblm5u6hzyy7ry64/default LOG.validate: LOG.validate: Validation OK! --- FAIL: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_apply_policy_default_values_for_each_task.yml.tmpl/LOCAL_DIFF=--local/READPLAN= (0.33s) ``` **latest (v1.6.0):** ``` === RUN TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_apply_policy_default_values_for_each_task.yml.tmpl/LOCAL_DIFF=--local/READPLAN= === PAUSE TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_apply_policy_default_values_for_each_task.yml.tmpl/LOCAL_DIFF=--local/READPLAN= === CONT TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_apply_policy_default_values_for_each_task.yml.tmpl/LOCAL_DIFF=--local/READPLAN= acceptance_test.go:1083: Error Trace: /Users/denis.bilenko/work/cli-trees/local-only/libs/testdiff/testdiff.go:22 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:1083 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:915 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:515 Error: Not equal: expected: "INPUT_CONFIG_OK\n" actual : "INPUT_CONFIG_OK\n\nExit code: 1\n" Diff: --- Expected +++ Actual @@ -2 +2,3 @@ +Exit code: 1 + Test: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_apply_policy_default_values_for_each_task.yml.tmpl/LOCAL_DIFF=--local/READPLAN= Messages: bundle/invariant/no_drift/output.txt vs /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/TestAcceptbundleinvariantno_driftDATABRICKS_BUNDLE_ENGINE=di3521399991/001/output.txt acceptance_test.go:942: LOG.config: bundle: LOG.config: name: test-bundle-7ws5n6rfc5b4xb6dmn25znw73e LOG.config: LOG.config: resources: LOG.config: jobs: LOG.config: foo: LOG.config: name: test-job-7ws5n6rfc5b4xb6dmn25znw73e LOG.config: tasks: LOG.config: - task_key: main LOG.config: for_each_task: LOG.config: inputs: "[1]" LOG.config: task: LOG.config: task_key: inner LOG.config: notebook_task: LOG.config: notebook_path: /Shared/notebook LOG.config: new_cluster: LOG.config: spark_version: 13.3.x-snapshot-scala2.12 LOG.config: instance_pool_id: 0123-456789-pool0 LOG.config: num_workers: 1 LOG.config: apply_policy_default_values: true acceptance_test.go:942: LOG.cp: acceptance_test.go:942: LOG.deploy: LOG.deploy: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle deploy LOG.deploy: Uploading bundle files to /Workspace/Users/tester@databricks.com/.bundle/test-bundle-7ws5n6rfc5b4xb6dmn25znw73e/default/files... LOG.deploy: Deploying resources... LOG.deploy: Updating deployment state... LOG.deploy: Deployment complete! acceptance_test.go:942: LOG.destroy: LOG.destroy: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle destroy --auto-approve LOG.destroy: The following resources will be deleted: LOG.destroy: delete resources.jobs.foo LOG.destroy: LOG.destroy: All files and directories at the following location will be deleted: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-7ws5n6rfc5b4xb6dmn25znw73e/default LOG.destroy: LOG.destroy: Deleting files... LOG.destroy: Destroy complete! acceptance_test.go:942: LOG.planjson: acceptance_test.go:942: LOG.validate: LOG.validate: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle validate LOG.validate: Name: test-bundle-7ws5n6rfc5b4xb6dmn25znw73e LOG.validate: Target: default LOG.validate: Workspace: LOG.validate: User: tester@databricks.com LOG.validate: Path: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-7ws5n6rfc5b4xb6dmn25znw73e/default LOG.validate: LOG.validate: Validation OK! --- FAIL: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_apply_policy_default_values_for_each_task.yml.tmpl/LOCAL_DIFF=--local/READPLAN= (0.34s) ```
TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_apply_policy_default_values_for_each_task.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 ✅ | main (de465e09b) ❌ | latest (v1.6.0) ❌ **main (de465e09b):** ``` === RUN TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_apply_policy_default_values_for_each_task.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 === PAUSE TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_apply_policy_default_values_for_each_task.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 === CONT TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_apply_policy_default_values_for_each_task.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 acceptance_test.go:1083: Error Trace: /Users/denis.bilenko/work/cli-trees/local-only/libs/testdiff/testdiff.go:22 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:1083 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:915 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:515 Error: Not equal: expected: "INPUT_CONFIG_OK\n" actual : "INPUT_CONFIG_OK\n\nExit code: 1\n" Diff: --- Expected +++ Actual @@ -2 +2,3 @@ +Exit code: 1 + Test: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_apply_policy_default_values_for_each_task.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 Messages: bundle/invariant/no_drift/output.txt vs /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/TestAcceptbundleinvariantno_driftDATABRICKS_BUNDLE_ENGINE=di2548414511/001/output.txt acceptance_test.go:942: LOG.config: bundle: LOG.config: name: test-bundle-wm57jegg6rbhjdl32t4lzue2c4 LOG.config: LOG.config: resources: LOG.config: jobs: LOG.config: foo: LOG.config: name: test-job-wm57jegg6rbhjdl32t4lzue2c4 LOG.config: tasks: LOG.config: - task_key: main LOG.config: for_each_task: LOG.config: inputs: "[1]" LOG.config: task: LOG.config: task_key: inner LOG.config: notebook_task: LOG.config: notebook_path: /Shared/notebook LOG.config: new_cluster: LOG.config: spark_version: 13.3.x-snapshot-scala2.12 LOG.config: instance_pool_id: 0123-456789-pool0 LOG.config: num_workers: 1 LOG.config: apply_policy_default_values: true acceptance_test.go:942: LOG.cp: acceptance_test.go:942: LOG.deploy: LOG.deploy: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle deploy --plan plan.json LOG.deploy: Uploading bundle files to /Workspace/Users/tester@databricks.com/.bundle/test-bundle-wm57jegg6rbhjdl32t4lzue2c4/default/files... LOG.deploy: Deploying resources... LOG.deploy: Updating deployment state... LOG.deploy: Deployment complete! acceptance_test.go:942: LOG.destroy: LOG.destroy: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle destroy --auto-approve LOG.destroy: The following resources will be deleted: LOG.destroy: delete resources.jobs.foo LOG.destroy: LOG.destroy: All files and directories at the following location will be deleted: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-wm57jegg6rbhjdl32t4lzue2c4/default LOG.destroy: LOG.destroy: Deleting files... LOG.destroy: Destroy complete! acceptance_test.go:942: LOG.planjson: acceptance_test.go:942: LOG.validate: LOG.validate: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle validate LOG.validate: Name: test-bundle-wm57jegg6rbhjdl32t4lzue2c4 LOG.validate: Target: default LOG.validate: Workspace: LOG.validate: User: tester@databricks.com LOG.validate: Path: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-wm57jegg6rbhjdl32t4lzue2c4/default LOG.validate: LOG.validate: Validation OK! --- FAIL: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_apply_policy_default_values_for_each_task.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 (0.34s) ``` **latest (v1.6.0):** ``` === RUN TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_apply_policy_default_values_for_each_task.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 === PAUSE TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_apply_policy_default_values_for_each_task.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 === CONT TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_apply_policy_default_values_for_each_task.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 acceptance_test.go:1083: Error Trace: /Users/denis.bilenko/work/cli-trees/local-only/libs/testdiff/testdiff.go:22 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:1083 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:915 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:515 Error: Not equal: expected: "INPUT_CONFIG_OK\n" actual : "INPUT_CONFIG_OK\n\nExit code: 1\n" Diff: --- Expected +++ Actual @@ -2 +2,3 @@ +Exit code: 1 + Test: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_apply_policy_default_values_for_each_task.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 Messages: bundle/invariant/no_drift/output.txt vs /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/TestAcceptbundleinvariantno_driftDATABRICKS_BUNDLE_ENGINE=di2101245357/001/output.txt acceptance_test.go:942: LOG.config: bundle: LOG.config: name: test-bundle-ycnn3pucdvhjraczznknp2jejq LOG.config: LOG.config: resources: LOG.config: jobs: LOG.config: foo: LOG.config: name: test-job-ycnn3pucdvhjraczznknp2jejq LOG.config: tasks: LOG.config: - task_key: main LOG.config: for_each_task: LOG.config: inputs: "[1]" LOG.config: task: LOG.config: task_key: inner LOG.config: notebook_task: LOG.config: notebook_path: /Shared/notebook LOG.config: new_cluster: LOG.config: spark_version: 13.3.x-snapshot-scala2.12 LOG.config: instance_pool_id: 0123-456789-pool0 LOG.config: num_workers: 1 LOG.config: apply_policy_default_values: true acceptance_test.go:942: LOG.cp: acceptance_test.go:942: LOG.deploy: LOG.deploy: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle deploy --plan plan.json LOG.deploy: Uploading bundle files to /Workspace/Users/tester@databricks.com/.bundle/test-bundle-ycnn3pucdvhjraczznknp2jejq/default/files... LOG.deploy: Deploying resources... LOG.deploy: Updating deployment state... LOG.deploy: Deployment complete! acceptance_test.go:942: LOG.destroy: LOG.destroy: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle destroy --auto-approve LOG.destroy: The following resources will be deleted: LOG.destroy: delete resources.jobs.foo LOG.destroy: LOG.destroy: All files and directories at the following location will be deleted: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-ycnn3pucdvhjraczznknp2jejq/default LOG.destroy: LOG.destroy: Deleting files... LOG.destroy: Destroy complete! acceptance_test.go:942: LOG.planjson: acceptance_test.go:942: LOG.validate: LOG.validate: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle validate LOG.validate: Name: test-bundle-ycnn3pucdvhjraczznknp2jejq LOG.validate: Target: default LOG.validate: Workspace: LOG.validate: User: tester@databricks.com LOG.validate: Path: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-ycnn3pucdvhjraczznknp2jejq/default LOG.validate: LOG.validate: Validation OK! --- FAIL: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_apply_policy_default_values_for_each_task.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 (0.33s) ```
TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=database_catalog.yml.tmpl/LOCAL_DIFF=--local/READPLAN= ✅ | main (de465e09b) ❌ | latest (v1.6.0) ❌ **main (de465e09b):** ``` === RUN TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=database_catalog.yml.tmpl/LOCAL_DIFF=--local/READPLAN= === PAUSE TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=database_catalog.yml.tmpl/LOCAL_DIFF=--local/READPLAN= === CONT TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=database_catalog.yml.tmpl/LOCAL_DIFF=--local/READPLAN= acceptance_test.go:1083: Error Trace: /Users/denis.bilenko/work/cli-trees/local-only/libs/testdiff/testdiff.go:22 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:1083 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:915 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:515 Error: Not equal: expected: "INPUT_CONFIG_OK\n" actual : "INPUT_CONFIG_OK\n\nExit code: 1\n" Diff: --- Expected +++ Actual @@ -2 +2,3 @@ +Exit code: 1 + Test: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=database_catalog.yml.tmpl/LOCAL_DIFF=--local/READPLAN= Messages: bundle/invariant/no_drift/output.txt vs /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/TestAcceptbundleinvariantno_driftDATABRICKS_BUNDLE_ENGINE=di2454139840/001/output.txt acceptance_test.go:942: LOG.config: bundle: LOG.config: name: test-bundle-hghbp6kooradblbncwzere4yba LOG.config: LOG.config: resources: LOG.config: database_instances: LOG.config: instance1: LOG.config: name: test-db-instance-hghbp6kooradblbncwzere4yba LOG.config: capacity: CU_1 LOG.config: LOG.config: database_catalogs: LOG.config: foo: LOG.config: database_instance_name: ${resources.database_instances.instance1.name} LOG.config: database_name: test_db LOG.config: name: test-catalog-hghbp6kooradblbncwzere4yba LOG.config: create_database_if_not_exists: true acceptance_test.go:942: LOG.cp: acceptance_test.go:942: LOG.deploy: LOG.deploy: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle deploy LOG.deploy: Uploading bundle files to /Workspace/Users/tester@databricks.com/.bundle/test-bundle-hghbp6kooradblbncwzere4yba/default/files... LOG.deploy: Deploying resources... LOG.deploy: Updating deployment state... LOG.deploy: Deployment complete! acceptance_test.go:942: LOG.destroy: LOG.destroy: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle destroy --auto-approve LOG.destroy: The following resources will be deleted: LOG.destroy: delete resources.database_catalogs.foo LOG.destroy: delete resources.database_instances.instance1 LOG.destroy: LOG.destroy: This action will result in the deletion of the following Lakebase database instances. LOG.destroy: All data stored in them will be permanently lost: LOG.destroy: delete resources.database_instances.instance1 LOG.destroy: LOG.destroy: All files and directories at the following location will be deleted: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-hghbp6kooradblbncwzere4yba/default LOG.destroy: LOG.destroy: Deleting files... LOG.destroy: Destroy complete! acceptance_test.go:942: LOG.planjson: acceptance_test.go:942: LOG.validate: LOG.validate: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle validate LOG.validate: Name: test-bundle-hghbp6kooradblbncwzere4yba LOG.validate: Target: default LOG.validate: Workspace: LOG.validate: User: tester@databricks.com LOG.validate: Path: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-hghbp6kooradblbncwzere4yba/default LOG.validate: LOG.validate: Validation OK! --- FAIL: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=database_catalog.yml.tmpl/LOCAL_DIFF=--local/READPLAN= (0.32s) ``` **latest (v1.6.0):** ``` === RUN TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=database_catalog.yml.tmpl/LOCAL_DIFF=--local/READPLAN= === PAUSE TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=database_catalog.yml.tmpl/LOCAL_DIFF=--local/READPLAN= === CONT TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=database_catalog.yml.tmpl/LOCAL_DIFF=--local/READPLAN= acceptance_test.go:1083: Error Trace: /Users/denis.bilenko/work/cli-trees/local-only/libs/testdiff/testdiff.go:22 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:1083 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:915 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:515 Error: Not equal: expected: "INPUT_CONFIG_OK\n" actual : "INPUT_CONFIG_OK\n\nExit code: 1\n" Diff: --- Expected +++ Actual @@ -2 +2,3 @@ +Exit code: 1 + Test: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=database_catalog.yml.tmpl/LOCAL_DIFF=--local/READPLAN= Messages: bundle/invariant/no_drift/output.txt vs /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/TestAcceptbundleinvariantno_driftDATABRICKS_BUNDLE_ENGINE=di2810018237/001/output.txt acceptance_test.go:942: LOG.config: bundle: LOG.config: name: test-bundle-jor7vfl53bbqpaijsvp4qf7kfq LOG.config: LOG.config: resources: LOG.config: database_instances: LOG.config: instance1: LOG.config: name: test-db-instance-jor7vfl53bbqpaijsvp4qf7kfq LOG.config: capacity: CU_1 LOG.config: LOG.config: database_catalogs: LOG.config: foo: LOG.config: database_instance_name: ${resources.database_instances.instance1.name} LOG.config: database_name: test_db LOG.config: name: test-catalog-jor7vfl53bbqpaijsvp4qf7kfq LOG.config: create_database_if_not_exists: true acceptance_test.go:942: LOG.cp: acceptance_test.go:942: LOG.deploy: LOG.deploy: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle deploy LOG.deploy: Uploading bundle files to /Workspace/Users/tester@databricks.com/.bundle/test-bundle-jor7vfl53bbqpaijsvp4qf7kfq/default/files... LOG.deploy: Deploying resources... LOG.deploy: Updating deployment state... LOG.deploy: Deployment complete! acceptance_test.go:942: LOG.destroy: LOG.destroy: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle destroy --auto-approve LOG.destroy: The following resources will be deleted: LOG.destroy: delete resources.database_catalogs.foo LOG.destroy: delete resources.database_instances.instance1 LOG.destroy: LOG.destroy: This action will result in the deletion of the following Lakebase database instances. LOG.destroy: All data stored in them will be permanently lost: LOG.destroy: delete resources.database_instances.instance1 LOG.destroy: LOG.destroy: All files and directories at the following location will be deleted: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-jor7vfl53bbqpaijsvp4qf7kfq/default LOG.destroy: LOG.destroy: Deleting files... LOG.destroy: Destroy complete! acceptance_test.go:942: LOG.planjson: acceptance_test.go:942: LOG.validate: LOG.validate: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle validate LOG.validate: Name: test-bundle-jor7vfl53bbqpaijsvp4qf7kfq LOG.validate: Target: default LOG.validate: Workspace: LOG.validate: User: tester@databricks.com LOG.validate: Path: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-jor7vfl53bbqpaijsvp4qf7kfq/default LOG.validate: LOG.validate: Validation OK! --- FAIL: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=database_catalog.yml.tmpl/LOCAL_DIFF=--local/READPLAN= (0.41s) ```
TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=database_catalog.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 ✅ | main (de465e09b) ❌ | latest (v1.6.0) ❌ **main (de465e09b):** ``` === RUN TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=database_catalog.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 === PAUSE TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=database_catalog.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 === CONT TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=database_catalog.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 acceptance_test.go:1083: Error Trace: /Users/denis.bilenko/work/cli-trees/local-only/libs/testdiff/testdiff.go:22 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:1083 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:915 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:515 Error: Not equal: expected: "INPUT_CONFIG_OK\n" actual : "INPUT_CONFIG_OK\n\nExit code: 1\n" Diff: --- Expected +++ Actual @@ -2 +2,3 @@ +Exit code: 1 + Test: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=database_catalog.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 Messages: bundle/invariant/no_drift/output.txt vs /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/TestAcceptbundleinvariantno_driftDATABRICKS_BUNDLE_ENGINE=di3053162217/001/output.txt acceptance_test.go:942: LOG.config: bundle: LOG.config: name: test-bundle-cpl27kdpvbcnhheecnx3eatyle LOG.config: LOG.config: resources: LOG.config: database_instances: LOG.config: instance1: LOG.config: name: test-db-instance-cpl27kdpvbcnhheecnx3eatyle LOG.config: capacity: CU_1 LOG.config: LOG.config: database_catalogs: LOG.config: foo: LOG.config: database_instance_name: ${resources.database_instances.instance1.name} LOG.config: database_name: test_db LOG.config: name: test-catalog-cpl27kdpvbcnhheecnx3eatyle LOG.config: create_database_if_not_exists: true acceptance_test.go:942: LOG.cp: acceptance_test.go:942: LOG.deploy: LOG.deploy: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle deploy --plan plan.json LOG.deploy: Uploading bundle files to /Workspace/Users/tester@databricks.com/.bundle/test-bundle-cpl27kdpvbcnhheecnx3eatyle/default/files... LOG.deploy: Deploying resources... LOG.deploy: Updating deployment state... LOG.deploy: Deployment complete! acceptance_test.go:942: LOG.destroy: LOG.destroy: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle destroy --auto-approve LOG.destroy: The following resources will be deleted: LOG.destroy: delete resources.database_catalogs.foo LOG.destroy: delete resources.database_instances.instance1 LOG.destroy: LOG.destroy: This action will result in the deletion of the following Lakebase database instances. LOG.destroy: All data stored in them will be permanently lost: LOG.destroy: delete resources.database_instances.instance1 LOG.destroy: LOG.destroy: All files and directories at the following location will be deleted: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-cpl27kdpvbcnhheecnx3eatyle/default LOG.destroy: LOG.destroy: Deleting files... LOG.destroy: Destroy complete! acceptance_test.go:942: LOG.planjson: acceptance_test.go:942: LOG.validate: LOG.validate: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle validate LOG.validate: Name: test-bundle-cpl27kdpvbcnhheecnx3eatyle LOG.validate: Target: default LOG.validate: Workspace: LOG.validate: User: tester@databricks.com LOG.validate: Path: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-cpl27kdpvbcnhheecnx3eatyle/default LOG.validate: LOG.validate: Validation OK! --- FAIL: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=database_catalog.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 (0.29s) ``` **latest (v1.6.0):** ``` === RUN TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=database_catalog.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 === PAUSE TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=database_catalog.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 === CONT TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=database_catalog.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 acceptance_test.go:1083: Error Trace: /Users/denis.bilenko/work/cli-trees/local-only/libs/testdiff/testdiff.go:22 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:1083 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:915 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:515 Error: Not equal: expected: "INPUT_CONFIG_OK\n" actual : "INPUT_CONFIG_OK\n\nExit code: 1\n" Diff: --- Expected +++ Actual @@ -2 +2,3 @@ +Exit code: 1 + Test: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=database_catalog.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 Messages: bundle/invariant/no_drift/output.txt vs /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/TestAcceptbundleinvariantno_driftDATABRICKS_BUNDLE_ENGINE=di1495285725/001/output.txt acceptance_test.go:942: LOG.config: bundle: LOG.config: name: test-bundle-upssfmbnhrcvxjfvvysbsltjhy LOG.config: LOG.config: resources: LOG.config: database_instances: LOG.config: instance1: LOG.config: name: test-db-instance-upssfmbnhrcvxjfvvysbsltjhy LOG.config: capacity: CU_1 LOG.config: LOG.config: database_catalogs: LOG.config: foo: LOG.config: database_instance_name: ${resources.database_instances.instance1.name} LOG.config: database_name: test_db LOG.config: name: test-catalog-upssfmbnhrcvxjfvvysbsltjhy LOG.config: create_database_if_not_exists: true acceptance_test.go:942: LOG.cp: acceptance_test.go:942: LOG.deploy: LOG.deploy: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle deploy --plan plan.json LOG.deploy: Uploading bundle files to /Workspace/Users/tester@databricks.com/.bundle/test-bundle-upssfmbnhrcvxjfvvysbsltjhy/default/files... LOG.deploy: Deploying resources... LOG.deploy: Updating deployment state... LOG.deploy: Deployment complete! acceptance_test.go:942: LOG.destroy: LOG.destroy: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle destroy --auto-approve LOG.destroy: The following resources will be deleted: LOG.destroy: delete resources.database_catalogs.foo LOG.destroy: delete resources.database_instances.instance1 LOG.destroy: LOG.destroy: This action will result in the deletion of the following Lakebase database instances. LOG.destroy: All data stored in them will be permanently lost: LOG.destroy: delete resources.database_instances.instance1 LOG.destroy: LOG.destroy: All files and directories at the following location will be deleted: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-upssfmbnhrcvxjfvvysbsltjhy/default LOG.destroy: LOG.destroy: Deleting files... LOG.destroy: Destroy complete! acceptance_test.go:942: LOG.planjson: acceptance_test.go:942: LOG.validate: LOG.validate: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle validate LOG.validate: Name: test-bundle-upssfmbnhrcvxjfvvysbsltjhy LOG.validate: Target: default LOG.validate: Workspace: LOG.validate: User: tester@databricks.com LOG.validate: Path: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-upssfmbnhrcvxjfvvysbsltjhy/default LOG.validate: LOG.validate: Validation OK! --- FAIL: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=database_catalog.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 (0.38s) ```
TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=database_instance.yml.tmpl/LOCAL_DIFF=--local/READPLAN= ✅ | main (de465e09b) ❌ | latest (v1.6.0) ❌ **main (de465e09b):** ``` === RUN TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=database_instance.yml.tmpl/LOCAL_DIFF=--local/READPLAN= === PAUSE TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=database_instance.yml.tmpl/LOCAL_DIFF=--local/READPLAN= === CONT TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=database_instance.yml.tmpl/LOCAL_DIFF=--local/READPLAN= acceptance_test.go:1083: Error Trace: /Users/denis.bilenko/work/cli-trees/local-only/libs/testdiff/testdiff.go:22 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:1083 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:915 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:515 Error: Not equal: expected: "INPUT_CONFIG_OK\n" actual : "INPUT_CONFIG_OK\n\nExit code: 1\n" Diff: --- Expected +++ Actual @@ -2 +2,3 @@ +Exit code: 1 + Test: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=database_instance.yml.tmpl/LOCAL_DIFF=--local/READPLAN= Messages: bundle/invariant/no_drift/output.txt vs /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/TestAcceptbundleinvariantno_driftDATABRICKS_BUNDLE_ENGINE=di707185207/001/output.txt acceptance_test.go:942: LOG.config: bundle: LOG.config: name: test-bundle-ang6bur2cvfifouzvxmvzmreaq LOG.config: LOG.config: resources: LOG.config: database_instances: LOG.config: foo: LOG.config: name: test-db-instance-ang6bur2cvfifouzvxmvzmreaq LOG.config: capacity: CU_1 LOG.config: permissions: LOG.config: - level: CAN_USE LOG.config: group_name: users acceptance_test.go:942: LOG.cp: acceptance_test.go:942: LOG.deploy: LOG.deploy: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle deploy LOG.deploy: Uploading bundle files to /Workspace/Users/tester@databricks.com/.bundle/test-bundle-ang6bur2cvfifouzvxmvzmreaq/default/files... LOG.deploy: Deploying resources... LOG.deploy: Updating deployment state... LOG.deploy: Deployment complete! acceptance_test.go:942: LOG.destroy: LOG.destroy: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle destroy --auto-approve LOG.destroy: The following resources will be deleted: LOG.destroy: delete resources.database_instances.foo LOG.destroy: LOG.destroy: This action will result in the deletion of the following Lakebase database instances. LOG.destroy: All data stored in them will be permanently lost: LOG.destroy: delete resources.database_instances.foo LOG.destroy: LOG.destroy: All files and directories at the following location will be deleted: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-ang6bur2cvfifouzvxmvzmreaq/default LOG.destroy: LOG.destroy: Deleting files... LOG.destroy: Destroy complete! acceptance_test.go:942: LOG.planjson: acceptance_test.go:942: LOG.validate: LOG.validate: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle validate LOG.validate: Name: test-bundle-ang6bur2cvfifouzvxmvzmreaq LOG.validate: Target: default LOG.validate: Workspace: LOG.validate: User: tester@databricks.com LOG.validate: Path: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-ang6bur2cvfifouzvxmvzmreaq/default LOG.validate: LOG.validate: Validation OK! --- FAIL: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=database_instance.yml.tmpl/LOCAL_DIFF=--local/READPLAN= (0.33s) ``` **latest (v1.6.0):** ``` === RUN TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=database_instance.yml.tmpl/LOCAL_DIFF=--local/READPLAN= === PAUSE TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=database_instance.yml.tmpl/LOCAL_DIFF=--local/READPLAN= === CONT TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=database_instance.yml.tmpl/LOCAL_DIFF=--local/READPLAN= acceptance_test.go:1083: Error Trace: /Users/denis.bilenko/work/cli-trees/local-only/libs/testdiff/testdiff.go:22 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:1083 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:915 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:515 Error: Not equal: expected: "INPUT_CONFIG_OK\n" actual : "INPUT_CONFIG_OK\n\nExit code: 1\n" Diff: --- Expected +++ Actual @@ -2 +2,3 @@ +Exit code: 1 + Test: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=database_instance.yml.tmpl/LOCAL_DIFF=--local/READPLAN= Messages: bundle/invariant/no_drift/output.txt vs /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/TestAcceptbundleinvariantno_driftDATABRICKS_BUNDLE_ENGINE=di3852823740/001/output.txt acceptance_test.go:942: LOG.config: bundle: LOG.config: name: test-bundle-watvpkqroffrxi67bxk3tp74pq LOG.config: LOG.config: resources: LOG.config: database_instances: LOG.config: foo: LOG.config: name: test-db-instance-watvpkqroffrxi67bxk3tp74pq LOG.config: capacity: CU_1 LOG.config: permissions: LOG.config: - level: CAN_USE LOG.config: group_name: users acceptance_test.go:942: LOG.cp: acceptance_test.go:942: LOG.deploy: LOG.deploy: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle deploy LOG.deploy: Uploading bundle files to /Workspace/Users/tester@databricks.com/.bundle/test-bundle-watvpkqroffrxi67bxk3tp74pq/default/files... LOG.deploy: Deploying resources... LOG.deploy: Updating deployment state... LOG.deploy: Deployment complete! acceptance_test.go:942: LOG.destroy: LOG.destroy: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle destroy --auto-approve LOG.destroy: The following resources will be deleted: LOG.destroy: delete resources.database_instances.foo LOG.destroy: LOG.destroy: This action will result in the deletion of the following Lakebase database instances. LOG.destroy: All data stored in them will be permanently lost: LOG.destroy: delete resources.database_instances.foo LOG.destroy: LOG.destroy: All files and directories at the following location will be deleted: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-watvpkqroffrxi67bxk3tp74pq/default LOG.destroy: LOG.destroy: Deleting files... LOG.destroy: Destroy complete! acceptance_test.go:942: LOG.planjson: acceptance_test.go:942: LOG.validate: LOG.validate: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle validate LOG.validate: Name: test-bundle-watvpkqroffrxi67bxk3tp74pq LOG.validate: Target: default LOG.validate: Workspace: LOG.validate: User: tester@databricks.com LOG.validate: Path: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-watvpkqroffrxi67bxk3tp74pq/default LOG.validate: LOG.validate: Validation OK! --- FAIL: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=database_instance.yml.tmpl/LOCAL_DIFF=--local/READPLAN= (0.41s) ```
TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=database_instance.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 ✅ | main (de465e09b) ❌ | latest (v1.6.0) ❌ **main (de465e09b):** ``` === RUN TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=database_instance.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 === PAUSE TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=database_instance.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 === CONT TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=database_instance.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 acceptance_test.go:1083: Error Trace: /Users/denis.bilenko/work/cli-trees/local-only/libs/testdiff/testdiff.go:22 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:1083 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:915 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:515 Error: Not equal: expected: "INPUT_CONFIG_OK\n" actual : "INPUT_CONFIG_OK\n\nExit code: 1\n" Diff: --- Expected +++ Actual @@ -2 +2,3 @@ +Exit code: 1 + Test: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=database_instance.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 Messages: bundle/invariant/no_drift/output.txt vs /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/TestAcceptbundleinvariantno_driftDATABRICKS_BUNDLE_ENGINE=di972841385/001/output.txt acceptance_test.go:942: LOG.config: bundle: LOG.config: name: test-bundle-mss2rvs2jvfrxdr4okfyovsdim LOG.config: LOG.config: resources: LOG.config: database_instances: LOG.config: foo: LOG.config: name: test-db-instance-mss2rvs2jvfrxdr4okfyovsdim LOG.config: capacity: CU_1 LOG.config: permissions: LOG.config: - level: CAN_USE LOG.config: group_name: users acceptance_test.go:942: LOG.cp: acceptance_test.go:942: LOG.deploy: LOG.deploy: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle deploy --plan plan.json LOG.deploy: Uploading bundle files to /Workspace/Users/tester@databricks.com/.bundle/test-bundle-mss2rvs2jvfrxdr4okfyovsdim/default/files... LOG.deploy: Deploying resources... LOG.deploy: Updating deployment state... LOG.deploy: Deployment complete! acceptance_test.go:942: LOG.destroy: LOG.destroy: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle destroy --auto-approve LOG.destroy: The following resources will be deleted: LOG.destroy: delete resources.database_instances.foo LOG.destroy: LOG.destroy: This action will result in the deletion of the following Lakebase database instances. LOG.destroy: All data stored in them will be permanently lost: LOG.destroy: delete resources.database_instances.foo LOG.destroy: LOG.destroy: All files and directories at the following location will be deleted: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-mss2rvs2jvfrxdr4okfyovsdim/default LOG.destroy: LOG.destroy: Deleting files... LOG.destroy: Destroy complete! acceptance_test.go:942: LOG.planjson: acceptance_test.go:942: LOG.validate: LOG.validate: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle validate LOG.validate: Name: test-bundle-mss2rvs2jvfrxdr4okfyovsdim LOG.validate: Target: default LOG.validate: Workspace: LOG.validate: User: tester@databricks.com LOG.validate: Path: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-mss2rvs2jvfrxdr4okfyovsdim/default LOG.validate: LOG.validate: Validation OK! --- FAIL: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=database_instance.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 (0.29s) ``` **latest (v1.6.0):** ``` === RUN TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=database_instance.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 === PAUSE TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=database_instance.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 === CONT TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=database_instance.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 acceptance_test.go:1083: Error Trace: /Users/denis.bilenko/work/cli-trees/local-only/libs/testdiff/testdiff.go:22 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:1083 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:915 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:515 Error: Not equal: expected: "INPUT_CONFIG_OK\n" actual : "INPUT_CONFIG_OK\n\nExit code: 1\n" Diff: --- Expected +++ Actual @@ -2 +2,3 @@ +Exit code: 1 + Test: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=database_instance.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 Messages: bundle/invariant/no_drift/output.txt vs /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/TestAcceptbundleinvariantno_driftDATABRICKS_BUNDLE_ENGINE=di583044319/001/output.txt acceptance_test.go:942: LOG.config: bundle: LOG.config: name: test-bundle-ga2t47qihrdodbnm2emxl2sstq LOG.config: LOG.config: resources: LOG.config: database_instances: LOG.config: foo: LOG.config: name: test-db-instance-ga2t47qihrdodbnm2emxl2sstq LOG.config: capacity: CU_1 LOG.config: permissions: LOG.config: - level: CAN_USE LOG.config: group_name: users acceptance_test.go:942: LOG.cp: acceptance_test.go:942: LOG.deploy: LOG.deploy: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle deploy --plan plan.json LOG.deploy: Uploading bundle files to /Workspace/Users/tester@databricks.com/.bundle/test-bundle-ga2t47qihrdodbnm2emxl2sstq/default/files... LOG.deploy: Deploying resources... LOG.deploy: Updating deployment state... LOG.deploy: Deployment complete! acceptance_test.go:942: LOG.destroy: LOG.destroy: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle destroy --auto-approve LOG.destroy: The following resources will be deleted: LOG.destroy: delete resources.database_instances.foo LOG.destroy: LOG.destroy: This action will result in the deletion of the following Lakebase database instances. LOG.destroy: All data stored in them will be permanently lost: LOG.destroy: delete resources.database_instances.foo LOG.destroy: LOG.destroy: All files and directories at the following location will be deleted: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-ga2t47qihrdodbnm2emxl2sstq/default LOG.destroy: LOG.destroy: Deleting files... LOG.destroy: Destroy complete! acceptance_test.go:942: LOG.planjson: acceptance_test.go:942: LOG.validate: LOG.validate: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle validate LOG.validate: Name: test-bundle-ga2t47qihrdodbnm2emxl2sstq LOG.validate: Target: default LOG.validate: Workspace: LOG.validate: User: tester@databricks.com LOG.validate: Path: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-ga2t47qihrdodbnm2emxl2sstq/default LOG.validate: LOG.validate: Validation OK! --- FAIL: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=database_instance.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 (0.29s) ```
TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=experiment.yml.tmpl/LOCAL_DIFF=--local/READPLAN= ✅ | main (de465e09b) ❌ | latest (v1.6.0) ❌ **main (de465e09b):** ``` === RUN TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=experiment.yml.tmpl/LOCAL_DIFF=--local/READPLAN= === PAUSE TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=experiment.yml.tmpl/LOCAL_DIFF=--local/READPLAN= === CONT TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=experiment.yml.tmpl/LOCAL_DIFF=--local/READPLAN= acceptance_test.go:1083: Error Trace: /Users/denis.bilenko/work/cli-trees/local-only/libs/testdiff/testdiff.go:22 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:1083 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:915 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:515 Error: Not equal: expected: "INPUT_CONFIG_OK\n" actual : "INPUT_CONFIG_OK\n\nExit code: 1\n" Diff: --- Expected +++ Actual @@ -2 +2,3 @@ +Exit code: 1 + Test: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=experiment.yml.tmpl/LOCAL_DIFF=--local/READPLAN= Messages: bundle/invariant/no_drift/output.txt vs /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/TestAcceptbundleinvariantno_driftDATABRICKS_BUNDLE_ENGINE=di3432956076/001/output.txt acceptance_test.go:942: LOG.config: bundle: LOG.config: name: test-bundle-2vpwqsfvyfc53jyxje2j343jii LOG.config: LOG.config: resources: LOG.config: experiments: LOG.config: foo: LOG.config: name: /Users/tester@databricks.com/test-experiment-2vpwqsfvyfc53jyxje2j343jii LOG.config: permissions: LOG.config: - level: CAN_READ LOG.config: group_name: users acceptance_test.go:942: LOG.cp: acceptance_test.go:942: LOG.deploy: LOG.deploy: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle deploy LOG.deploy: Uploading bundle files to /Workspace/Users/tester@databricks.com/.bundle/test-bundle-2vpwqsfvyfc53jyxje2j343jii/default/files... LOG.deploy: Deploying resources... LOG.deploy: Updating deployment state... LOG.deploy: Deployment complete! acceptance_test.go:942: LOG.destroy: LOG.destroy: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle destroy --auto-approve LOG.destroy: The following resources will be deleted: LOG.destroy: delete resources.experiments.foo LOG.destroy: LOG.destroy: All files and directories at the following location will be deleted: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-2vpwqsfvyfc53jyxje2j343jii/default LOG.destroy: LOG.destroy: Deleting files... LOG.destroy: Destroy complete! acceptance_test.go:942: LOG.planjson: acceptance_test.go:942: LOG.validate: LOG.validate: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle validate LOG.validate: Name: test-bundle-2vpwqsfvyfc53jyxje2j343jii LOG.validate: Target: default LOG.validate: Workspace: LOG.validate: User: tester@databricks.com LOG.validate: Path: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-2vpwqsfvyfc53jyxje2j343jii/default LOG.validate: LOG.validate: Validation OK! --- FAIL: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=experiment.yml.tmpl/LOCAL_DIFF=--local/READPLAN= (0.30s) ``` **latest (v1.6.0):** ``` === RUN TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=experiment.yml.tmpl/LOCAL_DIFF=--local/READPLAN= === PAUSE TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=experiment.yml.tmpl/LOCAL_DIFF=--local/READPLAN= === CONT TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=experiment.yml.tmpl/LOCAL_DIFF=--local/READPLAN= acceptance_test.go:1083: Error Trace: /Users/denis.bilenko/work/cli-trees/local-only/libs/testdiff/testdiff.go:22 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:1083 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:915 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:515 Error: Not equal: expected: "INPUT_CONFIG_OK\n" actual : "INPUT_CONFIG_OK\n\nExit code: 1\n" Diff: --- Expected +++ Actual @@ -2 +2,3 @@ +Exit code: 1 + Test: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=experiment.yml.tmpl/LOCAL_DIFF=--local/READPLAN= Messages: bundle/invariant/no_drift/output.txt vs /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/TestAcceptbundleinvariantno_driftDATABRICKS_BUNDLE_ENGINE=di3571588315/001/output.txt acceptance_test.go:942: LOG.config: bundle: LOG.config: name: test-bundle-lvz3zlu4bfgbxnz32gxgoy3tdu LOG.config: LOG.config: resources: LOG.config: experiments: LOG.config: foo: LOG.config: name: /Users/tester@databricks.com/test-experiment-lvz3zlu4bfgbxnz32gxgoy3tdu LOG.config: permissions: LOG.config: - level: CAN_READ LOG.config: group_name: users acceptance_test.go:942: LOG.cp: acceptance_test.go:942: LOG.deploy: LOG.deploy: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle deploy LOG.deploy: Uploading bundle files to /Workspace/Users/tester@databricks.com/.bundle/test-bundle-lvz3zlu4bfgbxnz32gxgoy3tdu/default/files... LOG.deploy: Deploying resources... LOG.deploy: Updating deployment state... LOG.deploy: Deployment complete! acceptance_test.go:942: LOG.destroy: LOG.destroy: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle destroy --auto-approve LOG.destroy: The following resources will be deleted: LOG.destroy: delete resources.experiments.foo LOG.destroy: LOG.destroy: All files and directories at the following location will be deleted: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-lvz3zlu4bfgbxnz32gxgoy3tdu/default LOG.destroy: LOG.destroy: Deleting files... LOG.destroy: Destroy complete! acceptance_test.go:942: LOG.planjson: acceptance_test.go:942: LOG.validate: LOG.validate: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle validate LOG.validate: Name: test-bundle-lvz3zlu4bfgbxnz32gxgoy3tdu LOG.validate: Target: default LOG.validate: Workspace: LOG.validate: User: tester@databricks.com LOG.validate: Path: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-lvz3zlu4bfgbxnz32gxgoy3tdu/default LOG.validate: LOG.validate: Validation OK! --- FAIL: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=experiment.yml.tmpl/LOCAL_DIFF=--local/READPLAN= (0.41s) ```
TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=experiment.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 ✅ | main (de465e09b) ❌ | latest (v1.6.0) ❌ **main (de465e09b):** ``` === RUN TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=experiment.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 === PAUSE TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=experiment.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 === CONT TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=experiment.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 acceptance_test.go:1083: Error Trace: /Users/denis.bilenko/work/cli-trees/local-only/libs/testdiff/testdiff.go:22 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:1083 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:915 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:515 Error: Not equal: expected: "INPUT_CONFIG_OK\n" actual : "INPUT_CONFIG_OK\n\nExit code: 1\n" Diff: --- Expected +++ Actual @@ -2 +2,3 @@ +Exit code: 1 + Test: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=experiment.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 Messages: bundle/invariant/no_drift/output.txt vs /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/TestAcceptbundleinvariantno_driftDATABRICKS_BUNDLE_ENGINE=di3809329427/001/output.txt acceptance_test.go:942: LOG.config: bundle: LOG.config: name: test-bundle-zqpz4qox3bd4bcmmruiv5rcd5a LOG.config: LOG.config: resources: LOG.config: experiments: LOG.config: foo: LOG.config: name: /Users/tester@databricks.com/test-experiment-zqpz4qox3bd4bcmmruiv5rcd5a LOG.config: permissions: LOG.config: - level: CAN_READ LOG.config: group_name: users acceptance_test.go:942: LOG.cp: acceptance_test.go:942: LOG.deploy: LOG.deploy: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle deploy --plan plan.json LOG.deploy: Uploading bundle files to /Workspace/Users/tester@databricks.com/.bundle/test-bundle-zqpz4qox3bd4bcmmruiv5rcd5a/default/files... LOG.deploy: Deploying resources... LOG.deploy: Updating deployment state... LOG.deploy: Deployment complete! acceptance_test.go:942: LOG.destroy: LOG.destroy: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle destroy --auto-approve LOG.destroy: The following resources will be deleted: LOG.destroy: delete resources.experiments.foo LOG.destroy: LOG.destroy: All files and directories at the following location will be deleted: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-zqpz4qox3bd4bcmmruiv5rcd5a/default LOG.destroy: LOG.destroy: Deleting files... LOG.destroy: Destroy complete! acceptance_test.go:942: LOG.planjson: acceptance_test.go:942: LOG.validate: LOG.validate: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle validate LOG.validate: Name: test-bundle-zqpz4qox3bd4bcmmruiv5rcd5a LOG.validate: Target: default LOG.validate: Workspace: LOG.validate: User: tester@databricks.com LOG.validate: Path: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-zqpz4qox3bd4bcmmruiv5rcd5a/default LOG.validate: LOG.validate: Validation OK! --- FAIL: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=experiment.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 (0.28s) ``` **latest (v1.6.0):** ``` === RUN TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=experiment.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 === PAUSE TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=experiment.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 === CONT TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=experiment.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 acceptance_test.go:1083: Error Trace: /Users/denis.bilenko/work/cli-trees/local-only/libs/testdiff/testdiff.go:22 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:1083 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:915 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:515 Error: Not equal: expected: "INPUT_CONFIG_OK\n" actual : "INPUT_CONFIG_OK\n\nExit code: 1\n" Diff: --- Expected +++ Actual @@ -2 +2,3 @@ +Exit code: 1 + Test: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=experiment.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 Messages: bundle/invariant/no_drift/output.txt vs /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/TestAcceptbundleinvariantno_driftDATABRICKS_BUNDLE_ENGINE=di4122031778/001/output.txt acceptance_test.go:942: LOG.config: bundle: LOG.config: name: test-bundle-gnlpkiqi5jaylhv74umwxgqpqy LOG.config: LOG.config: resources: LOG.config: experiments: LOG.config: foo: LOG.config: name: /Users/tester@databricks.com/test-experiment-gnlpkiqi5jaylhv74umwxgqpqy LOG.config: permissions: LOG.config: - level: CAN_READ LOG.config: group_name: users acceptance_test.go:942: LOG.cp: acceptance_test.go:942: LOG.deploy: LOG.deploy: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle deploy --plan plan.json LOG.deploy: Uploading bundle files to /Workspace/Users/tester@databricks.com/.bundle/test-bundle-gnlpkiqi5jaylhv74umwxgqpqy/default/files... LOG.deploy: Deploying resources... LOG.deploy: Updating deployment state... LOG.deploy: Deployment complete! acceptance_test.go:942: LOG.destroy: LOG.destroy: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle destroy --auto-approve LOG.destroy: The following resources will be deleted: LOG.destroy: delete resources.experiments.foo LOG.destroy: LOG.destroy: All files and directories at the following location will be deleted: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-gnlpkiqi5jaylhv74umwxgqpqy/default LOG.destroy: LOG.destroy: Deleting files... LOG.destroy: Destroy complete! acceptance_test.go:942: LOG.planjson: acceptance_test.go:942: LOG.validate: LOG.validate: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle validate LOG.validate: Name: test-bundle-gnlpkiqi5jaylhv74umwxgqpqy LOG.validate: Target: default LOG.validate: Workspace: LOG.validate: User: tester@databricks.com LOG.validate: Path: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-gnlpkiqi5jaylhv74umwxgqpqy/default LOG.validate: LOG.validate: Validation OK! --- FAIL: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=experiment.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 (0.39s) ```
TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=external_location.yml.tmpl/LOCAL_DIFF=--local/READPLAN= ✅ | main (de465e09b) ❌ | latest (v1.6.0) ❌ **main (de465e09b):** ``` === RUN TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=external_location.yml.tmpl/LOCAL_DIFF=--local/READPLAN= === PAUSE TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=external_location.yml.tmpl/LOCAL_DIFF=--local/READPLAN= === CONT TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=external_location.yml.tmpl/LOCAL_DIFF=--local/READPLAN= acceptance_test.go:1083: Error Trace: /Users/denis.bilenko/work/cli-trees/local-only/libs/testdiff/testdiff.go:22 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:1083 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:915 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:515 Error: Not equal: expected: "INPUT_CONFIG_OK\n" actual : "INPUT_CONFIG_OK\n\nExit code: 1\n" Diff: --- Expected +++ Actual @@ -2 +2,3 @@ +Exit code: 1 + Test: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=external_location.yml.tmpl/LOCAL_DIFF=--local/READPLAN= Messages: bundle/invariant/no_drift/output.txt vs /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/TestAcceptbundleinvariantno_driftDATABRICKS_BUNDLE_ENGINE=di204762762/001/output.txt acceptance_test.go:942: LOG.config: bundle: LOG.config: name: test-bundle-4n62wtnyqbay3nsd73ya3unjee LOG.config: LOG.config: resources: LOG.config: external_locations: LOG.config: test_location: LOG.config: name: test_location_4n62wtnyqbay3nsd73ya3unjee LOG.config: url: s3://test-bucket/path LOG.config: credential_name: test_storage_credential LOG.config: comment: "Test external location from DABs" LOG.config: grants: LOG.config: - principal: account users LOG.config: privileges: LOG.config: - READ_FILES acceptance_test.go:942: LOG.cp: acceptance_test.go:942: LOG.deploy: LOG.deploy: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle deploy LOG.deploy: Uploading bundle files to /Workspace/Users/tester@databricks.com/.bundle/test-bundle-4n62wtnyqbay3nsd73ya3unjee/default/files... LOG.deploy: Deploying resources... LOG.deploy: Updating deployment state... LOG.deploy: Deployment complete! acceptance_test.go:942: LOG.destroy: LOG.destroy: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle destroy --auto-approve LOG.destroy: The following resources will be deleted: LOG.destroy: delete resources.external_locations.test_location LOG.destroy: LOG.destroy: All files and directories at the following location will be deleted: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-4n62wtnyqbay3nsd73ya3unjee/default LOG.destroy: LOG.destroy: Deleting files... LOG.destroy: Destroy complete! acceptance_test.go:942: LOG.planjson: acceptance_test.go:942: LOG.validate: LOG.validate: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle validate LOG.validate: Name: test-bundle-4n62wtnyqbay3nsd73ya3unjee LOG.validate: Target: default LOG.validate: Workspace: LOG.validate: User: tester@databricks.com LOG.validate: Path: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-4n62wtnyqbay3nsd73ya3unjee/default LOG.validate: LOG.validate: Validation OK! --- FAIL: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=external_location.yml.tmpl/LOCAL_DIFF=--local/READPLAN= (0.31s) ``` **latest (v1.6.0):** ``` === RUN TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=external_location.yml.tmpl/LOCAL_DIFF=--local/READPLAN= === PAUSE TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=external_location.yml.tmpl/LOCAL_DIFF=--local/READPLAN= === CONT TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=external_location.yml.tmpl/LOCAL_DIFF=--local/READPLAN= acceptance_test.go:1083: Error Trace: /Users/denis.bilenko/work/cli-trees/local-only/libs/testdiff/testdiff.go:22 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:1083 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:915 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:515 Error: Not equal: expected: "INPUT_CONFIG_OK\n" actual : "INPUT_CONFIG_OK\n\nExit code: 1\n" Diff: --- Expected +++ Actual @@ -2 +2,3 @@ +Exit code: 1 + Test: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=external_location.yml.tmpl/LOCAL_DIFF=--local/READPLAN= Messages: bundle/invariant/no_drift/output.txt vs /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/TestAcceptbundleinvariantno_driftDATABRICKS_BUNDLE_ENGINE=di1743125574/001/output.txt acceptance_test.go:942: LOG.config: bundle: LOG.config: name: test-bundle-47ihvoes3bbfffc5qe2t447d2i LOG.config: LOG.config: resources: LOG.config: external_locations: LOG.config: test_location: LOG.config: name: test_location_47ihvoes3bbfffc5qe2t447d2i LOG.config: url: s3://test-bucket/path LOG.config: credential_name: test_storage_credential LOG.config: comment: "Test external location from DABs" LOG.config: grants: LOG.config: - principal: account users LOG.config: privileges: LOG.config: - READ_FILES acceptance_test.go:942: LOG.cp: acceptance_test.go:942: LOG.deploy: LOG.deploy: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle deploy LOG.deploy: Uploading bundle files to /Workspace/Users/tester@databricks.com/.bundle/test-bundle-47ihvoes3bbfffc5qe2t447d2i/default/files... LOG.deploy: Deploying resources... LOG.deploy: Updating deployment state... LOG.deploy: Deployment complete! acceptance_test.go:942: LOG.destroy: LOG.destroy: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle destroy --auto-approve LOG.destroy: The following resources will be deleted: LOG.destroy: delete resources.external_locations.test_location LOG.destroy: LOG.destroy: All files and directories at the following location will be deleted: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-47ihvoes3bbfffc5qe2t447d2i/default LOG.destroy: LOG.destroy: Deleting files... LOG.destroy: Destroy complete! acceptance_test.go:942: LOG.planjson: acceptance_test.go:942: LOG.validate: LOG.validate: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle validate LOG.validate: Name: test-bundle-47ihvoes3bbfffc5qe2t447d2i LOG.validate: Target: default LOG.validate: Workspace: LOG.validate: User: tester@databricks.com LOG.validate: Path: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-47ihvoes3bbfffc5qe2t447d2i/default LOG.validate: LOG.validate: Validation OK! --- FAIL: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=external_location.yml.tmpl/LOCAL_DIFF=--local/READPLAN= (0.38s) ```
TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=external_location.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 ✅ | main (de465e09b) ❌ | latest (v1.6.0) ❌ **main (de465e09b):** ``` === RUN TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=external_location.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 === PAUSE TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=external_location.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 === CONT TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=external_location.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 acceptance_test.go:1083: Error Trace: /Users/denis.bilenko/work/cli-trees/local-only/libs/testdiff/testdiff.go:22 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:1083 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:915 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:515 Error: Not equal: expected: "INPUT_CONFIG_OK\n" actual : "INPUT_CONFIG_OK\n\nExit code: 1\n" Diff: --- Expected +++ Actual @@ -2 +2,3 @@ +Exit code: 1 + Test: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=external_location.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 Messages: bundle/invariant/no_drift/output.txt vs /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/TestAcceptbundleinvariantno_driftDATABRICKS_BUNDLE_ENGINE=di100747624/001/output.txt acceptance_test.go:942: LOG.config: bundle: LOG.config: name: test-bundle-skisxwqjrvhwtdkvi3ckkbctkm LOG.config: LOG.config: resources: LOG.config: external_locations: LOG.config: test_location: LOG.config: name: test_location_skisxwqjrvhwtdkvi3ckkbctkm LOG.config: url: s3://test-bucket/path LOG.config: credential_name: test_storage_credential LOG.config: comment: "Test external location from DABs" LOG.config: grants: LOG.config: - principal: account users LOG.config: privileges: LOG.config: - READ_FILES acceptance_test.go:942: LOG.cp: acceptance_test.go:942: LOG.deploy: LOG.deploy: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle deploy --plan plan.json LOG.deploy: Uploading bundle files to /Workspace/Users/tester@databricks.com/.bundle/test-bundle-skisxwqjrvhwtdkvi3ckkbctkm/default/files... LOG.deploy: Deploying resources... LOG.deploy: Updating deployment state... LOG.deploy: Deployment complete! acceptance_test.go:942: LOG.destroy: LOG.destroy: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle destroy --auto-approve LOG.destroy: The following resources will be deleted: LOG.destroy: delete resources.external_locations.test_location LOG.destroy: LOG.destroy: All files and directories at the following location will be deleted: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-skisxwqjrvhwtdkvi3ckkbctkm/default LOG.destroy: LOG.destroy: Deleting files... LOG.destroy: Destroy complete! acceptance_test.go:942: LOG.planjson: acceptance_test.go:942: LOG.validate: LOG.validate: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle validate LOG.validate: Name: test-bundle-skisxwqjrvhwtdkvi3ckkbctkm LOG.validate: Target: default LOG.validate: Workspace: LOG.validate: User: tester@databricks.com LOG.validate: Path: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-skisxwqjrvhwtdkvi3ckkbctkm/default LOG.validate: LOG.validate: Validation OK! --- FAIL: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=external_location.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 (0.31s) ``` **latest (v1.6.0):** ``` === RUN TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=external_location.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 === PAUSE TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=external_location.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 === CONT TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=external_location.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 acceptance_test.go:1083: Error Trace: /Users/denis.bilenko/work/cli-trees/local-only/libs/testdiff/testdiff.go:22 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:1083 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:915 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:515 Error: Not equal: expected: "INPUT_CONFIG_OK\n" actual : "INPUT_CONFIG_OK\n\nExit code: 1\n" Diff: --- Expected +++ Actual @@ -2 +2,3 @@ +Exit code: 1 + Test: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=external_location.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 Messages: bundle/invariant/no_drift/output.txt vs /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/TestAcceptbundleinvariantno_driftDATABRICKS_BUNDLE_ENGINE=di2465445289/001/output.txt acceptance_test.go:942: LOG.config: bundle: LOG.config: name: test-bundle-izsypvhk3vezxhlxpxrvserzxa LOG.config: LOG.config: resources: LOG.config: external_locations: LOG.config: test_location: LOG.config: name: test_location_izsypvhk3vezxhlxpxrvserzxa LOG.config: url: s3://test-bucket/path LOG.config: credential_name: test_storage_credential LOG.config: comment: "Test external location from DABs" LOG.config: grants: LOG.config: - principal: account users LOG.config: privileges: LOG.config: - READ_FILES acceptance_test.go:942: LOG.cp: acceptance_test.go:942: LOG.deploy: LOG.deploy: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle deploy --plan plan.json LOG.deploy: Uploading bundle files to /Workspace/Users/tester@databricks.com/.bundle/test-bundle-izsypvhk3vezxhlxpxrvserzxa/default/files... LOG.deploy: Deploying resources... LOG.deploy: Updating deployment state... LOG.deploy: Deployment complete! acceptance_test.go:942: LOG.destroy: LOG.destroy: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle destroy --auto-approve LOG.destroy: The following resources will be deleted: LOG.destroy: delete resources.external_locations.test_location LOG.destroy: LOG.destroy: All files and directories at the following location will be deleted: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-izsypvhk3vezxhlxpxrvserzxa/default LOG.destroy: LOG.destroy: Deleting files... LOG.destroy: Destroy complete! acceptance_test.go:942: LOG.planjson: acceptance_test.go:942: LOG.validate: LOG.validate: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle validate LOG.validate: Name: test-bundle-izsypvhk3vezxhlxpxrvserzxa LOG.validate: Target: default LOG.validate: Workspace: LOG.validate: User: tester@databricks.com LOG.validate: Path: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-izsypvhk3vezxhlxpxrvserzxa/default LOG.validate: LOG.validate: Validation OK! --- FAIL: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=external_location.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 (0.37s) ```
TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job.yml.tmpl/LOCAL_DIFF=--local/READPLAN= ✅ | main (de465e09b) ❌ | latest (v1.6.0) ❌ **main (de465e09b):** ``` === RUN TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job.yml.tmpl/LOCAL_DIFF=--local/READPLAN= === PAUSE TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job.yml.tmpl/LOCAL_DIFF=--local/READPLAN= === CONT TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job.yml.tmpl/LOCAL_DIFF=--local/READPLAN= acceptance_test.go:1083: Error Trace: /Users/denis.bilenko/work/cli-trees/local-only/libs/testdiff/testdiff.go:22 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:1083 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:915 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:515 Error: Not equal: expected: "INPUT_CONFIG_OK\n" actual : "INPUT_CONFIG_OK\n\nExit code: 1\n" Diff: --- Expected +++ Actual @@ -2 +2,3 @@ +Exit code: 1 + Test: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job.yml.tmpl/LOCAL_DIFF=--local/READPLAN= Messages: bundle/invariant/no_drift/output.txt vs /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/TestAcceptbundleinvariantno_driftDATABRICKS_BUNDLE_ENGINE=di27198808/001/output.txt acceptance_test.go:942: LOG.config: bundle: LOG.config: name: test-bundle-evjo7apupvg3zjpmr43cde4aze LOG.config: LOG.config: resources: LOG.config: jobs: LOG.config: foo: LOG.config: name: test-job-evjo7apupvg3zjpmr43cde4aze LOG.config: permissions: LOG.config: - level: CAN_VIEW LOG.config: group_name: users acceptance_test.go:942: LOG.cp: acceptance_test.go:942: LOG.deploy: LOG.deploy: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle deploy LOG.deploy: Uploading bundle files to /Workspace/Users/tester@databricks.com/.bundle/test-bundle-evjo7apupvg3zjpmr43cde4aze/default/files... LOG.deploy: Deploying resources... LOG.deploy: Updating deployment state... LOG.deploy: Deployment complete! acceptance_test.go:942: LOG.destroy: LOG.destroy: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle destroy --auto-approve LOG.destroy: The following resources will be deleted: LOG.destroy: delete resources.jobs.foo LOG.destroy: LOG.destroy: All files and directories at the following location will be deleted: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-evjo7apupvg3zjpmr43cde4aze/default LOG.destroy: LOG.destroy: Deleting files... LOG.destroy: Destroy complete! acceptance_test.go:942: LOG.planjson: acceptance_test.go:942: LOG.validate: LOG.validate: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle validate LOG.validate: Name: test-bundle-evjo7apupvg3zjpmr43cde4aze LOG.validate: Target: default LOG.validate: Workspace: LOG.validate: User: tester@databricks.com LOG.validate: Path: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-evjo7apupvg3zjpmr43cde4aze/default LOG.validate: LOG.validate: Validation OK! --- FAIL: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job.yml.tmpl/LOCAL_DIFF=--local/READPLAN= (0.34s) ``` **latest (v1.6.0):** ``` === RUN TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job.yml.tmpl/LOCAL_DIFF=--local/READPLAN= === PAUSE TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job.yml.tmpl/LOCAL_DIFF=--local/READPLAN= === CONT TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job.yml.tmpl/LOCAL_DIFF=--local/READPLAN= acceptance_test.go:1083: Error Trace: /Users/denis.bilenko/work/cli-trees/local-only/libs/testdiff/testdiff.go:22 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:1083 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:915 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:515 Error: Not equal: expected: "INPUT_CONFIG_OK\n" actual : "INPUT_CONFIG_OK\n\nExit code: 1\n" Diff: --- Expected +++ Actual @@ -2 +2,3 @@ +Exit code: 1 + Test: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job.yml.tmpl/LOCAL_DIFF=--local/READPLAN= Messages: bundle/invariant/no_drift/output.txt vs /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/TestAcceptbundleinvariantno_driftDATABRICKS_BUNDLE_ENGINE=di2643559317/001/output.txt acceptance_test.go:942: LOG.config: bundle: LOG.config: name: test-bundle-jw4s2gjlcfa7lhynroyptj73ku LOG.config: LOG.config: resources: LOG.config: jobs: LOG.config: foo: LOG.config: name: test-job-jw4s2gjlcfa7lhynroyptj73ku LOG.config: permissions: LOG.config: - level: CAN_VIEW LOG.config: group_name: users acceptance_test.go:942: LOG.cp: acceptance_test.go:942: LOG.deploy: LOG.deploy: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle deploy LOG.deploy: Uploading bundle files to /Workspace/Users/tester@databricks.com/.bundle/test-bundle-jw4s2gjlcfa7lhynroyptj73ku/default/files... LOG.deploy: Deploying resources... LOG.deploy: Updating deployment state... LOG.deploy: Deployment complete! acceptance_test.go:942: LOG.destroy: LOG.destroy: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle destroy --auto-approve LOG.destroy: The following resources will be deleted: LOG.destroy: delete resources.jobs.foo LOG.destroy: LOG.destroy: All files and directories at the following location will be deleted: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-jw4s2gjlcfa7lhynroyptj73ku/default LOG.destroy: LOG.destroy: Deleting files... LOG.destroy: Destroy complete! acceptance_test.go:942: LOG.planjson: acceptance_test.go:942: LOG.validate: LOG.validate: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle validate LOG.validate: Name: test-bundle-jw4s2gjlcfa7lhynroyptj73ku LOG.validate: Target: default LOG.validate: Workspace: LOG.validate: User: tester@databricks.com LOG.validate: Path: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-jw4s2gjlcfa7lhynroyptj73ku/default LOG.validate: LOG.validate: Validation OK! --- FAIL: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job.yml.tmpl/LOCAL_DIFF=--local/READPLAN= (0.39s) ```
TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 ✅ | main (de465e09b) ❌ | latest (v1.6.0) ❌ **main (de465e09b):** ``` === RUN TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 === PAUSE TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 === CONT TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 acceptance_test.go:1083: Error Trace: /Users/denis.bilenko/work/cli-trees/local-only/libs/testdiff/testdiff.go:22 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:1083 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:915 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:515 Error: Not equal: expected: "INPUT_CONFIG_OK\n" actual : "INPUT_CONFIG_OK\n\nExit code: 1\n" Diff: --- Expected +++ Actual @@ -2 +2,3 @@ +Exit code: 1 + Test: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 Messages: bundle/invariant/no_drift/output.txt vs /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/TestAcceptbundleinvariantno_driftDATABRICKS_BUNDLE_ENGINE=di2699541219/001/output.txt acceptance_test.go:942: LOG.config: bundle: LOG.config: name: test-bundle-l46tmdnvcbbitco6gocmu35zxq LOG.config: LOG.config: resources: LOG.config: jobs: LOG.config: foo: LOG.config: name: test-job-l46tmdnvcbbitco6gocmu35zxq LOG.config: permissions: LOG.config: - level: CAN_VIEW LOG.config: group_name: users acceptance_test.go:942: LOG.cp: acceptance_test.go:942: LOG.deploy: LOG.deploy: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle deploy --plan plan.json LOG.deploy: Uploading bundle files to /Workspace/Users/tester@databricks.com/.bundle/test-bundle-l46tmdnvcbbitco6gocmu35zxq/default/files... LOG.deploy: Deploying resources... LOG.deploy: Updating deployment state... LOG.deploy: Deployment complete! acceptance_test.go:942: LOG.destroy: LOG.destroy: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle destroy --auto-approve LOG.destroy: The following resources will be deleted: LOG.destroy: delete resources.jobs.foo LOG.destroy: LOG.destroy: All files and directories at the following location will be deleted: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-l46tmdnvcbbitco6gocmu35zxq/default LOG.destroy: LOG.destroy: Deleting files... LOG.destroy: Destroy complete! acceptance_test.go:942: LOG.planjson: acceptance_test.go:942: LOG.validate: LOG.validate: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle validate LOG.validate: Name: test-bundle-l46tmdnvcbbitco6gocmu35zxq LOG.validate: Target: default LOG.validate: Workspace: LOG.validate: User: tester@databricks.com LOG.validate: Path: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-l46tmdnvcbbitco6gocmu35zxq/default LOG.validate: LOG.validate: Validation OK! --- FAIL: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 (0.31s) ``` **latest (v1.6.0):** ``` === RUN TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 === PAUSE TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 === CONT TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 acceptance_test.go:1083: Error Trace: /Users/denis.bilenko/work/cli-trees/local-only/libs/testdiff/testdiff.go:22 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:1083 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:915 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:515 Error: Not equal: expected: "INPUT_CONFIG_OK\n" actual : "INPUT_CONFIG_OK\n\nExit code: 1\n" Diff: --- Expected +++ Actual @@ -2 +2,3 @@ +Exit code: 1 + Test: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 Messages: bundle/invariant/no_drift/output.txt vs /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/TestAcceptbundleinvariantno_driftDATABRICKS_BUNDLE_ENGINE=di1633726267/001/output.txt acceptance_test.go:942: LOG.config: bundle: LOG.config: name: test-bundle-id65v7qkp5hivie7mml57l7nzy LOG.config: LOG.config: resources: LOG.config: jobs: LOG.config: foo: LOG.config: name: test-job-id65v7qkp5hivie7mml57l7nzy LOG.config: permissions: LOG.config: - level: CAN_VIEW LOG.config: group_name: users acceptance_test.go:942: LOG.cp: acceptance_test.go:942: LOG.deploy: LOG.deploy: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle deploy --plan plan.json LOG.deploy: Uploading bundle files to /Workspace/Users/tester@databricks.com/.bundle/test-bundle-id65v7qkp5hivie7mml57l7nzy/default/files... LOG.deploy: Deploying resources... LOG.deploy: Updating deployment state... LOG.deploy: Deployment complete! acceptance_test.go:942: LOG.destroy: LOG.destroy: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle destroy --auto-approve LOG.destroy: The following resources will be deleted: LOG.destroy: delete resources.jobs.foo LOG.destroy: LOG.destroy: All files and directories at the following location will be deleted: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-id65v7qkp5hivie7mml57l7nzy/default LOG.destroy: LOG.destroy: Deleting files... LOG.destroy: Destroy complete! acceptance_test.go:942: LOG.planjson: acceptance_test.go:942: LOG.validate: LOG.validate: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle validate LOG.validate: Name: test-bundle-id65v7qkp5hivie7mml57l7nzy LOG.validate: Target: default LOG.validate: Workspace: LOG.validate: User: tester@databricks.com LOG.validate: Path: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-id65v7qkp5hivie7mml57l7nzy/default LOG.validate: LOG.validate: Validation OK! --- FAIL: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 (0.40s) ```
TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_pydabs_10_tasks.yml.tmpl/LOCAL_DIFF=--local/READPLAN= ✅ | main (de465e09b) ❌ | latest (v1.6.0) ❌ **main (de465e09b):** ``` === RUN TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_pydabs_10_tasks.yml.tmpl/LOCAL_DIFF=--local/READPLAN= === PAUSE TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_pydabs_10_tasks.yml.tmpl/LOCAL_DIFF=--local/READPLAN= === CONT TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_pydabs_10_tasks.yml.tmpl/LOCAL_DIFF=--local/READPLAN= acceptance_test.go:1083: Error Trace: /Users/denis.bilenko/work/cli-trees/local-only/libs/testdiff/testdiff.go:22 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:1083 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:915 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:515 Error: Not equal: expected: "INPUT_CONFIG_OK\n" actual : "INPUT_CONFIG_OK\n\nExit code: 1\n" Diff: --- Expected +++ Actual @@ -2 +2,3 @@ +Exit code: 1 + Test: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_pydabs_10_tasks.yml.tmpl/LOCAL_DIFF=--local/READPLAN= Messages: bundle/invariant/no_drift/output.txt vs /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/TestAcceptbundleinvariantno_driftDATABRICKS_BUNDLE_ENGINE=di3190228368/001/output.txt acceptance_test.go:942: LOG.config: bundle: LOG.config: name: test-bundle-2qstfz64orh6bjhrwfwaybxpy4 LOG.config: LOG.config: python: LOG.config: venv_path: .venv LOG.config: resources: LOG.config: - "job_pydabs_10_tasks:load_resources" acceptance_test.go:942: LOG.cp: acceptance_test.go:942: LOG.deploy: LOG.deploy: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle deploy LOG.deploy: Uploading bundle files to /Workspace/Users/tester@databricks.com/.bundle/test-bundle-2qstfz64orh6bjhrwfwaybxpy4/default/files... LOG.deploy: Deploying resources... LOG.deploy: Updating deployment state... LOG.deploy: Deployment complete! acceptance_test.go:942: LOG.destroy: LOG.destroy: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle destroy --auto-approve LOG.destroy: The following resources will be deleted: LOG.destroy: delete resources.jobs.foo LOG.destroy: LOG.destroy: All files and directories at the following location will be deleted: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-2qstfz64orh6bjhrwfwaybxpy4/default LOG.destroy: LOG.destroy: Deleting files... LOG.destroy: Destroy complete! acceptance_test.go:942: LOG.init: acceptance_test.go:942: LOG.planjson: acceptance_test.go:942: LOG.validate: LOG.validate: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle validate LOG.validate: Name: test-bundle-2qstfz64orh6bjhrwfwaybxpy4 LOG.validate: Target: default LOG.validate: Workspace: LOG.validate: User: tester@databricks.com LOG.validate: Path: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-2qstfz64orh6bjhrwfwaybxpy4/default LOG.validate: LOG.validate: Validation OK! --- FAIL: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_pydabs_10_tasks.yml.tmpl/LOCAL_DIFF=--local/READPLAN= (2.15s) ``` **latest (v1.6.0):** ``` === RUN TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_pydabs_10_tasks.yml.tmpl/LOCAL_DIFF=--local/READPLAN= === PAUSE TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_pydabs_10_tasks.yml.tmpl/LOCAL_DIFF=--local/READPLAN= === CONT TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_pydabs_10_tasks.yml.tmpl/LOCAL_DIFF=--local/READPLAN= acceptance_test.go:1083: Error Trace: /Users/denis.bilenko/work/cli-trees/local-only/libs/testdiff/testdiff.go:22 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:1083 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:915 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:515 Error: Not equal: expected: "INPUT_CONFIG_OK\n" actual : "INPUT_CONFIG_OK\n\nExit code: 1\n" Diff: --- Expected +++ Actual @@ -2 +2,3 @@ +Exit code: 1 + Test: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_pydabs_10_tasks.yml.tmpl/LOCAL_DIFF=--local/READPLAN= Messages: bundle/invariant/no_drift/output.txt vs /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/TestAcceptbundleinvariantno_driftDATABRICKS_BUNDLE_ENGINE=di4202108752/001/output.txt acceptance_test.go:942: LOG.config: bundle: LOG.config: name: test-bundle-ygp7g2gb75havefhc6a6hov7uy LOG.config: LOG.config: python: LOG.config: venv_path: .venv LOG.config: resources: LOG.config: - "job_pydabs_10_tasks:load_resources" acceptance_test.go:942: LOG.cp: acceptance_test.go:942: LOG.deploy: LOG.deploy: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle deploy LOG.deploy: Uploading bundle files to /Workspace/Users/tester@databricks.com/.bundle/test-bundle-ygp7g2gb75havefhc6a6hov7uy/default/files... LOG.deploy: Deploying resources... LOG.deploy: Updating deployment state... LOG.deploy: Deployment complete! acceptance_test.go:942: LOG.destroy: LOG.destroy: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle destroy --auto-approve LOG.destroy: The following resources will be deleted: LOG.destroy: delete resources.jobs.foo LOG.destroy: LOG.destroy: All files and directories at the following location will be deleted: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-ygp7g2gb75havefhc6a6hov7uy/default LOG.destroy: LOG.destroy: Deleting files... LOG.destroy: Destroy complete! acceptance_test.go:942: LOG.init: acceptance_test.go:942: LOG.planjson: acceptance_test.go:942: LOG.validate: LOG.validate: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle validate LOG.validate: Name: test-bundle-ygp7g2gb75havefhc6a6hov7uy LOG.validate: Target: default LOG.validate: Workspace: LOG.validate: User: tester@databricks.com LOG.validate: Path: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-ygp7g2gb75havefhc6a6hov7uy/default LOG.validate: LOG.validate: Validation OK! --- FAIL: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_pydabs_10_tasks.yml.tmpl/LOCAL_DIFF=--local/READPLAN= (2.13s) ```
TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_pydabs_10_tasks.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 ✅ | main (de465e09b) ❌ | latest (v1.6.0) ❌ **main (de465e09b):** ``` === RUN TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_pydabs_10_tasks.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 === PAUSE TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_pydabs_10_tasks.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 === CONT TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_pydabs_10_tasks.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 acceptance_test.go:1083: Error Trace: /Users/denis.bilenko/work/cli-trees/local-only/libs/testdiff/testdiff.go:22 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:1083 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:915 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:515 Error: Not equal: expected: "INPUT_CONFIG_OK\n" actual : "INPUT_CONFIG_OK\n\nExit code: 1\n" Diff: --- Expected +++ Actual @@ -2 +2,3 @@ +Exit code: 1 + Test: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_pydabs_10_tasks.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 Messages: bundle/invariant/no_drift/output.txt vs /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/TestAcceptbundleinvariantno_driftDATABRICKS_BUNDLE_ENGINE=di1428696261/001/output.txt acceptance_test.go:942: LOG.config: bundle: LOG.config: name: test-bundle-w7atqcgxjvhx7c2jfjn3zfuxqq LOG.config: LOG.config: python: LOG.config: venv_path: .venv LOG.config: resources: LOG.config: - "job_pydabs_10_tasks:load_resources" acceptance_test.go:942: LOG.cp: acceptance_test.go:942: LOG.deploy: LOG.deploy: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle deploy --plan plan.json LOG.deploy: Uploading bundle files to /Workspace/Users/tester@databricks.com/.bundle/test-bundle-w7atqcgxjvhx7c2jfjn3zfuxqq/default/files... LOG.deploy: Deploying resources... LOG.deploy: Updating deployment state... LOG.deploy: Deployment complete! acceptance_test.go:942: LOG.destroy: LOG.destroy: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle destroy --auto-approve LOG.destroy: The following resources will be deleted: LOG.destroy: delete resources.jobs.foo LOG.destroy: LOG.destroy: All files and directories at the following location will be deleted: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-w7atqcgxjvhx7c2jfjn3zfuxqq/default LOG.destroy: LOG.destroy: Deleting files... LOG.destroy: Destroy complete! acceptance_test.go:942: LOG.init: acceptance_test.go:942: LOG.planjson: acceptance_test.go:942: LOG.validate: LOG.validate: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle validate LOG.validate: Name: test-bundle-w7atqcgxjvhx7c2jfjn3zfuxqq LOG.validate: Target: default LOG.validate: Workspace: LOG.validate: User: tester@databricks.com LOG.validate: Path: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-w7atqcgxjvhx7c2jfjn3zfuxqq/default LOG.validate: LOG.validate: Validation OK! --- FAIL: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_pydabs_10_tasks.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 (2.05s) ``` **latest (v1.6.0):** ``` === RUN TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_pydabs_10_tasks.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 === PAUSE TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_pydabs_10_tasks.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 === CONT TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_pydabs_10_tasks.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 acceptance_test.go:1083: Error Trace: /Users/denis.bilenko/work/cli-trees/local-only/libs/testdiff/testdiff.go:22 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:1083 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:915 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:515 Error: Not equal: expected: "INPUT_CONFIG_OK\n" actual : "INPUT_CONFIG_OK\n\nExit code: 1\n" Diff: --- Expected +++ Actual @@ -2 +2,3 @@ +Exit code: 1 + Test: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_pydabs_10_tasks.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 Messages: bundle/invariant/no_drift/output.txt vs /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/TestAcceptbundleinvariantno_driftDATABRICKS_BUNDLE_ENGINE=di913921657/001/output.txt acceptance_test.go:942: LOG.config: bundle: LOG.config: name: test-bundle-obzpdu2pk5hbtdfwblksbst7cy LOG.config: LOG.config: python: LOG.config: venv_path: .venv LOG.config: resources: LOG.config: - "job_pydabs_10_tasks:load_resources" acceptance_test.go:942: LOG.cp: acceptance_test.go:942: LOG.deploy: LOG.deploy: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle deploy --plan plan.json LOG.deploy: Uploading bundle files to /Workspace/Users/tester@databricks.com/.bundle/test-bundle-obzpdu2pk5hbtdfwblksbst7cy/default/files... LOG.deploy: Deploying resources... LOG.deploy: Updating deployment state... LOG.deploy: Deployment complete! acceptance_test.go:942: LOG.destroy: LOG.destroy: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle destroy --auto-approve LOG.destroy: The following resources will be deleted: LOG.destroy: delete resources.jobs.foo LOG.destroy: LOG.destroy: All files and directories at the following location will be deleted: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-obzpdu2pk5hbtdfwblksbst7cy/default LOG.destroy: LOG.destroy: Deleting files... LOG.destroy: Destroy complete! acceptance_test.go:942: LOG.init: acceptance_test.go:942: LOG.planjson: acceptance_test.go:942: LOG.validate: LOG.validate: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle validate LOG.validate: Name: test-bundle-obzpdu2pk5hbtdfwblksbst7cy LOG.validate: Target: default LOG.validate: Workspace: LOG.validate: User: tester@databricks.com LOG.validate: Path: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-obzpdu2pk5hbtdfwblksbst7cy/default LOG.validate: LOG.validate: Validation OK! --- FAIL: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_pydabs_10_tasks.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 (2.00s) ```
TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_pydabs_1000_tasks.yml.tmpl/LOCAL_DIFF=--local/READPLAN= ✅ | main (de465e09b) ❌ | latest (v1.6.0) ❌ **main (de465e09b):** ``` === RUN TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_pydabs_1000_tasks.yml.tmpl/LOCAL_DIFF=--local/READPLAN= === PAUSE TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_pydabs_1000_tasks.yml.tmpl/LOCAL_DIFF=--local/READPLAN= === CONT TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_pydabs_1000_tasks.yml.tmpl/LOCAL_DIFF=--local/READPLAN= acceptance_test.go:1083: Error Trace: /Users/denis.bilenko/work/cli-trees/local-only/libs/testdiff/testdiff.go:22 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:1083 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:915 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:515 Error: Not equal: expected: "INPUT_CONFIG_OK\n" actual : "INPUT_CONFIG_OK\n\nExit code: 1\n" Diff: --- Expected +++ Actual @@ -2 +2,3 @@ +Exit code: 1 + Test: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_pydabs_1000_tasks.yml.tmpl/LOCAL_DIFF=--local/READPLAN= Messages: bundle/invariant/no_drift/output.txt vs /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/TestAcceptbundleinvariantno_driftDATABRICKS_BUNDLE_ENGINE=di865632441/001/output.txt acceptance_test.go:942: LOG.config: bundle: LOG.config: name: test-bundle-jjv4tk362ncllphqrrnzill4y4 LOG.config: LOG.config: python: LOG.config: venv_path: .venv LOG.config: resources: LOG.config: - "job_pydabs_1000_tasks:load_resources" acceptance_test.go:942: LOG.cp: acceptance_test.go:942: LOG.deploy: LOG.deploy: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle deploy LOG.deploy: Uploading bundle files to /Workspace/Users/tester@databricks.com/.bundle/test-bundle-jjv4tk362ncllphqrrnzill4y4/default/files... LOG.deploy: Deploying resources... LOG.deploy: Updating deployment state... LOG.deploy: Deployment complete! acceptance_test.go:942: LOG.destroy: LOG.destroy: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle destroy --auto-approve LOG.destroy: The following resources will be deleted: LOG.destroy: delete resources.jobs.foo LOG.destroy: LOG.destroy: All files and directories at the following location will be deleted: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-jjv4tk362ncllphqrrnzill4y4/default LOG.destroy: LOG.destroy: Deleting files... LOG.destroy: Destroy complete! acceptance_test.go:942: LOG.init: acceptance_test.go:942: LOG.planjson: acceptance_test.go:942: LOG.validate: LOG.validate: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle validate LOG.validate: Name: test-bundle-jjv4tk362ncllphqrrnzill4y4 LOG.validate: Target: default LOG.validate: Workspace: LOG.validate: User: tester@databricks.com LOG.validate: Path: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-jjv4tk362ncllphqrrnzill4y4/default LOG.validate: LOG.validate: Validation OK! --- FAIL: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_pydabs_1000_tasks.yml.tmpl/LOCAL_DIFF=--local/READPLAN= (6.23s) ``` **latest (v1.6.0):** ``` === RUN TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_pydabs_1000_tasks.yml.tmpl/LOCAL_DIFF=--local/READPLAN= === PAUSE TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_pydabs_1000_tasks.yml.tmpl/LOCAL_DIFF=--local/READPLAN= === CONT TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_pydabs_1000_tasks.yml.tmpl/LOCAL_DIFF=--local/READPLAN= acceptance_test.go:1083: Error Trace: /Users/denis.bilenko/work/cli-trees/local-only/libs/testdiff/testdiff.go:22 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:1083 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:915 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:515 Error: Not equal: expected: "INPUT_CONFIG_OK\n" actual : "INPUT_CONFIG_OK\n\nExit code: 1\n" Diff: --- Expected +++ Actual @@ -2 +2,3 @@ +Exit code: 1 + Test: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_pydabs_1000_tasks.yml.tmpl/LOCAL_DIFF=--local/READPLAN= Messages: bundle/invariant/no_drift/output.txt vs /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/TestAcceptbundleinvariantno_driftDATABRICKS_BUNDLE_ENGINE=di1165350472/001/output.txt acceptance_test.go:942: LOG.config: bundle: LOG.config: name: test-bundle-zw7mxuedbnffplvjfl6lbuuywy LOG.config: LOG.config: python: LOG.config: venv_path: .venv LOG.config: resources: LOG.config: - "job_pydabs_1000_tasks:load_resources" acceptance_test.go:942: LOG.cp: acceptance_test.go:942: LOG.deploy: LOG.deploy: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle deploy LOG.deploy: Uploading bundle files to /Workspace/Users/tester@databricks.com/.bundle/test-bundle-zw7mxuedbnffplvjfl6lbuuywy/default/files... LOG.deploy: Deploying resources... LOG.deploy: Updating deployment state... LOG.deploy: Deployment complete! acceptance_test.go:942: LOG.destroy: LOG.destroy: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle destroy --auto-approve LOG.destroy: The following resources will be deleted: LOG.destroy: delete resources.jobs.foo LOG.destroy: LOG.destroy: All files and directories at the following location will be deleted: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-zw7mxuedbnffplvjfl6lbuuywy/default LOG.destroy: LOG.destroy: Deleting files... LOG.destroy: Destroy complete! acceptance_test.go:942: LOG.init: acceptance_test.go:942: LOG.planjson: acceptance_test.go:942: LOG.validate: LOG.validate: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle validate LOG.validate: Name: test-bundle-zw7mxuedbnffplvjfl6lbuuywy LOG.validate: Target: default LOG.validate: Workspace: LOG.validate: User: tester@databricks.com LOG.validate: Path: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-zw7mxuedbnffplvjfl6lbuuywy/default LOG.validate: LOG.validate: Validation OK! --- FAIL: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_pydabs_1000_tasks.yml.tmpl/LOCAL_DIFF=--local/READPLAN= (6.18s) ```
TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_pydabs_1000_tasks.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 ✅ | main (de465e09b) ❌ | latest (v1.6.0) ❌ **main (de465e09b):** ``` === RUN TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_pydabs_1000_tasks.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 === PAUSE TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_pydabs_1000_tasks.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 === CONT TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_pydabs_1000_tasks.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 acceptance_test.go:1083: Error Trace: /Users/denis.bilenko/work/cli-trees/local-only/libs/testdiff/testdiff.go:22 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:1083 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:915 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:515 Error: Not equal: expected: "INPUT_CONFIG_OK\n" actual : "INPUT_CONFIG_OK\n\nExit code: 1\n" Diff: --- Expected +++ Actual @@ -2 +2,3 @@ +Exit code: 1 + Test: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_pydabs_1000_tasks.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 Messages: bundle/invariant/no_drift/output.txt vs /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/TestAcceptbundleinvariantno_driftDATABRICKS_BUNDLE_ENGINE=di1392127927/001/output.txt acceptance_test.go:942: LOG.config: bundle: LOG.config: name: test-bundle-lzfvt3zeungmfmvri7afkzifta LOG.config: LOG.config: python: LOG.config: venv_path: .venv LOG.config: resources: LOG.config: - "job_pydabs_1000_tasks:load_resources" acceptance_test.go:942: LOG.cp: acceptance_test.go:942: LOG.deploy: LOG.deploy: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle deploy --plan plan.json LOG.deploy: Uploading bundle files to /Workspace/Users/tester@databricks.com/.bundle/test-bundle-lzfvt3zeungmfmvri7afkzifta/default/files... LOG.deploy: Deploying resources... LOG.deploy: Updating deployment state... LOG.deploy: Deployment complete! acceptance_test.go:942: LOG.destroy: LOG.destroy: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle destroy --auto-approve LOG.destroy: The following resources will be deleted: LOG.destroy: delete resources.jobs.foo LOG.destroy: LOG.destroy: All files and directories at the following location will be deleted: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-lzfvt3zeungmfmvri7afkzifta/default LOG.destroy: LOG.destroy: Deleting files... LOG.destroy: Destroy complete! acceptance_test.go:942: LOG.init: acceptance_test.go:942: LOG.planjson: acceptance_test.go:942: LOG.validate: LOG.validate: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle validate LOG.validate: Name: test-bundle-lzfvt3zeungmfmvri7afkzifta LOG.validate: Target: default LOG.validate: Workspace: LOG.validate: User: tester@databricks.com LOG.validate: Path: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-lzfvt3zeungmfmvri7afkzifta/default LOG.validate: LOG.validate: Validation OK! --- FAIL: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_pydabs_1000_tasks.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 (5.98s) ``` **latest (v1.6.0):** ``` === RUN TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_pydabs_1000_tasks.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 === PAUSE TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_pydabs_1000_tasks.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 === CONT TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_pydabs_1000_tasks.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 acceptance_test.go:1083: Error Trace: /Users/denis.bilenko/work/cli-trees/local-only/libs/testdiff/testdiff.go:22 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:1083 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:915 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:515 Error: Not equal: expected: "INPUT_CONFIG_OK\n" actual : "INPUT_CONFIG_OK\n\nExit code: 1\n" Diff: --- Expected +++ Actual @@ -2 +2,3 @@ +Exit code: 1 + Test: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_pydabs_1000_tasks.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 Messages: bundle/invariant/no_drift/output.txt vs /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/TestAcceptbundleinvariantno_driftDATABRICKS_BUNDLE_ENGINE=di894801691/001/output.txt acceptance_test.go:942: LOG.config: bundle: LOG.config: name: test-bundle-gvrpy33jpjd5jnbt6mwfcs3ezu LOG.config: LOG.config: python: LOG.config: venv_path: .venv LOG.config: resources: LOG.config: - "job_pydabs_1000_tasks:load_resources" acceptance_test.go:942: LOG.cp: acceptance_test.go:942: LOG.deploy: LOG.deploy: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle deploy --plan plan.json LOG.deploy: Uploading bundle files to /Workspace/Users/tester@databricks.com/.bundle/test-bundle-gvrpy33jpjd5jnbt6mwfcs3ezu/default/files... LOG.deploy: Deploying resources... LOG.deploy: Updating deployment state... LOG.deploy: Deployment complete! acceptance_test.go:942: LOG.destroy: LOG.destroy: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle destroy --auto-approve LOG.destroy: The following resources will be deleted: LOG.destroy: delete resources.jobs.foo LOG.destroy: LOG.destroy: All files and directories at the following location will be deleted: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-gvrpy33jpjd5jnbt6mwfcs3ezu/default LOG.destroy: LOG.destroy: Deleting files... LOG.destroy: Destroy complete! acceptance_test.go:942: LOG.init: acceptance_test.go:942: LOG.planjson: acceptance_test.go:942: LOG.validate: LOG.validate: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle validate LOG.validate: Name: test-bundle-gvrpy33jpjd5jnbt6mwfcs3ezu LOG.validate: Target: default LOG.validate: Workspace: LOG.validate: User: tester@databricks.com LOG.validate: Path: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-gvrpy33jpjd5jnbt6mwfcs3ezu/default LOG.validate: LOG.validate: Validation OK! --- FAIL: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_pydabs_1000_tasks.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 (5.90s) ```
TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_cross_resource_ref.yml.tmpl/LOCAL_DIFF=--local/READPLAN= ✅ | main (de465e09b) ❌ | latest (v1.6.0) ❌ **main (de465e09b):** ``` === RUN TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_cross_resource_ref.yml.tmpl/LOCAL_DIFF=--local/READPLAN= === PAUSE TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_cross_resource_ref.yml.tmpl/LOCAL_DIFF=--local/READPLAN= === CONT TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_cross_resource_ref.yml.tmpl/LOCAL_DIFF=--local/READPLAN= acceptance_test.go:1083: Error Trace: /Users/denis.bilenko/work/cli-trees/local-only/libs/testdiff/testdiff.go:22 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:1083 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:915 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:515 Error: Not equal: expected: "INPUT_CONFIG_OK\n" actual : "INPUT_CONFIG_OK\n\nExit code: 1\n" Diff: --- Expected +++ Actual @@ -2 +2,3 @@ +Exit code: 1 + Test: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_cross_resource_ref.yml.tmpl/LOCAL_DIFF=--local/READPLAN= Messages: bundle/invariant/no_drift/output.txt vs /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/TestAcceptbundleinvariantno_driftDATABRICKS_BUNDLE_ENGINE=di1914720583/001/output.txt acceptance_test.go:942: LOG.config: bundle: LOG.config: name: test-bundle-hdjbv2jakrhtboqlpy25xk7r7i LOG.config: LOG.config: resources: LOG.config: jobs: LOG.config: # job_src defines permissions and a tag value used as references by other resources LOG.config: job_src: LOG.config: name: test-job-src-hdjbv2jakrhtboqlpy25xk7r7i LOG.config: tags: LOG.config: perm_group: users LOG.config: permissions: LOG.config: - level: CAN_VIEW LOG.config: group_name: users LOG.config: LOG.config: # job_perm_ref uses permission fields from job_src as its permission values LOG.config: job_perm_ref: LOG.config: name: test-job-perm-ref-hdjbv2jakrhtboqlpy25xk7r7i LOG.config: permissions: LOG.config: - level: ${resources.jobs.job_src.permissions[0].level} LOG.config: group_name: ${resources.jobs.job_src.permissions[0].group_name} LOG.config: LOG.config: # job_tag_ref uses a job tag from job_src as a permission group_name LOG.config: job_tag_ref: LOG.config: name: test-job-tag-ref-hdjbv2jakrhtboqlpy25xk7r7i LOG.config: permissions: LOG.config: - level: CAN_VIEW LOG.config: group_name: ${resources.jobs.job_src.tags.perm_group} acceptance_test.go:942: LOG.cp: acceptance_test.go:942: LOG.deploy: LOG.deploy: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle deploy LOG.deploy: Uploading bundle files to /Workspace/Users/tester@databricks.com/.bundle/test-bundle-hdjbv2jakrhtboqlpy25xk7r7i/default/files... LOG.deploy: Deploying resources... LOG.deploy: Updating deployment state... LOG.deploy: Deployment complete! acceptance_test.go:942: LOG.destroy: LOG.destroy: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle destroy --auto-approve LOG.destroy: The following resources will be deleted: LOG.destroy: delete resources.jobs.job_perm_ref LOG.destroy: delete resources.jobs.job_src LOG.destroy: delete resources.jobs.job_tag_ref LOG.destroy: LOG.destroy: All files and directories at the following location will be deleted: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-hdjbv2jakrhtboqlpy25xk7r7i/default LOG.destroy: LOG.destroy: Deleting files... LOG.destroy: Destroy complete! acceptance_test.go:942: LOG.planjson: acceptance_test.go:942: LOG.validate: LOG.validate: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle validate LOG.validate: Name: test-bundle-hdjbv2jakrhtboqlpy25xk7r7i LOG.validate: Target: default LOG.validate: Workspace: LOG.validate: User: tester@databricks.com LOG.validate: Path: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-hdjbv2jakrhtboqlpy25xk7r7i/default LOG.validate: LOG.validate: Validation OK! --- FAIL: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_cross_resource_ref.yml.tmpl/LOCAL_DIFF=--local/READPLAN= (0.32s) ``` **latest (v1.6.0):** ``` === RUN TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_cross_resource_ref.yml.tmpl/LOCAL_DIFF=--local/READPLAN= === PAUSE TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_cross_resource_ref.yml.tmpl/LOCAL_DIFF=--local/READPLAN= === CONT TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_cross_resource_ref.yml.tmpl/LOCAL_DIFF=--local/READPLAN= acceptance_test.go:1083: Error Trace: /Users/denis.bilenko/work/cli-trees/local-only/libs/testdiff/testdiff.go:22 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:1083 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:915 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:515 Error: Not equal: expected: "INPUT_CONFIG_OK\n" actual : "INPUT_CONFIG_OK\n\nExit code: 1\n" Diff: --- Expected +++ Actual @@ -2 +2,3 @@ +Exit code: 1 + Test: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_cross_resource_ref.yml.tmpl/LOCAL_DIFF=--local/READPLAN= Messages: bundle/invariant/no_drift/output.txt vs /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/TestAcceptbundleinvariantno_driftDATABRICKS_BUNDLE_ENGINE=di309544343/001/output.txt acceptance_test.go:942: LOG.config: bundle: LOG.config: name: test-bundle-3fomgn654naujbkbeaxagqn5ay LOG.config: LOG.config: resources: LOG.config: jobs: LOG.config: # job_src defines permissions and a tag value used as references by other resources LOG.config: job_src: LOG.config: name: test-job-src-3fomgn654naujbkbeaxagqn5ay LOG.config: tags: LOG.config: perm_group: users LOG.config: permissions: LOG.config: - level: CAN_VIEW LOG.config: group_name: users LOG.config: LOG.config: # job_perm_ref uses permission fields from job_src as its permission values LOG.config: job_perm_ref: LOG.config: name: test-job-perm-ref-3fomgn654naujbkbeaxagqn5ay LOG.config: permissions: LOG.config: - level: ${resources.jobs.job_src.permissions[0].level} LOG.config: group_name: ${resources.jobs.job_src.permissions[0].group_name} LOG.config: LOG.config: # job_tag_ref uses a job tag from job_src as a permission group_name LOG.config: job_tag_ref: LOG.config: name: test-job-tag-ref-3fomgn654naujbkbeaxagqn5ay LOG.config: permissions: LOG.config: - level: CAN_VIEW LOG.config: group_name: ${resources.jobs.job_src.tags.perm_group} acceptance_test.go:942: LOG.cp: acceptance_test.go:942: LOG.deploy: LOG.deploy: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle deploy LOG.deploy: Uploading bundle files to /Workspace/Users/tester@databricks.com/.bundle/test-bundle-3fomgn654naujbkbeaxagqn5ay/default/files... LOG.deploy: Deploying resources... LOG.deploy: Updating deployment state... LOG.deploy: Deployment complete! acceptance_test.go:942: LOG.destroy: LOG.destroy: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle destroy --auto-approve LOG.destroy: The following resources will be deleted: LOG.destroy: delete resources.jobs.job_perm_ref LOG.destroy: delete resources.jobs.job_src LOG.destroy: delete resources.jobs.job_tag_ref LOG.destroy: LOG.destroy: All files and directories at the following location will be deleted: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-3fomgn654naujbkbeaxagqn5ay/default LOG.destroy: LOG.destroy: Deleting files... LOG.destroy: Destroy complete! acceptance_test.go:942: LOG.planjson: acceptance_test.go:942: LOG.validate: LOG.validate: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle validate LOG.validate: Name: test-bundle-3fomgn654naujbkbeaxagqn5ay LOG.validate: Target: default LOG.validate: Workspace: LOG.validate: User: tester@databricks.com LOG.validate: Path: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-3fomgn654naujbkbeaxagqn5ay/default LOG.validate: LOG.validate: Validation OK! --- FAIL: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_cross_resource_ref.yml.tmpl/LOCAL_DIFF=--local/READPLAN= (0.45s) ```
TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_cross_resource_ref.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 ✅ | main (de465e09b) ❌ | latest (v1.6.0) ❌ **main (de465e09b):** ``` === RUN TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_cross_resource_ref.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 === PAUSE TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_cross_resource_ref.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 === CONT TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_cross_resource_ref.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 acceptance_test.go:1083: Error Trace: /Users/denis.bilenko/work/cli-trees/local-only/libs/testdiff/testdiff.go:22 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:1083 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:915 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:515 Error: Not equal: expected: "INPUT_CONFIG_OK\n" actual : "INPUT_CONFIG_OK\n\nExit code: 1\n" Diff: --- Expected +++ Actual @@ -2 +2,3 @@ +Exit code: 1 + Test: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_cross_resource_ref.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 Messages: bundle/invariant/no_drift/output.txt vs /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/TestAcceptbundleinvariantno_driftDATABRICKS_BUNDLE_ENGINE=di4157982207/001/output.txt acceptance_test.go:942: LOG.config: bundle: LOG.config: name: test-bundle-4m4lwdkh6zcsvacugwynrr2eti LOG.config: LOG.config: resources: LOG.config: jobs: LOG.config: # job_src defines permissions and a tag value used as references by other resources LOG.config: job_src: LOG.config: name: test-job-src-4m4lwdkh6zcsvacugwynrr2eti LOG.config: tags: LOG.config: perm_group: users LOG.config: permissions: LOG.config: - level: CAN_VIEW LOG.config: group_name: users LOG.config: LOG.config: # job_perm_ref uses permission fields from job_src as its permission values LOG.config: job_perm_ref: LOG.config: name: test-job-perm-ref-4m4lwdkh6zcsvacugwynrr2eti LOG.config: permissions: LOG.config: - level: ${resources.jobs.job_src.permissions[0].level} LOG.config: group_name: ${resources.jobs.job_src.permissions[0].group_name} LOG.config: LOG.config: # job_tag_ref uses a job tag from job_src as a permission group_name LOG.config: job_tag_ref: LOG.config: name: test-job-tag-ref-4m4lwdkh6zcsvacugwynrr2eti LOG.config: permissions: LOG.config: - level: CAN_VIEW LOG.config: group_name: ${resources.jobs.job_src.tags.perm_group} acceptance_test.go:942: LOG.cp: acceptance_test.go:942: LOG.deploy: LOG.deploy: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle deploy --plan plan.json LOG.deploy: Uploading bundle files to /Workspace/Users/tester@databricks.com/.bundle/test-bundle-4m4lwdkh6zcsvacugwynrr2eti/default/files... LOG.deploy: Deploying resources... LOG.deploy: Updating deployment state... LOG.deploy: Deployment complete! acceptance_test.go:942: LOG.destroy: LOG.destroy: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle destroy --auto-approve LOG.destroy: The following resources will be deleted: LOG.destroy: delete resources.jobs.job_perm_ref LOG.destroy: delete resources.jobs.job_src LOG.destroy: delete resources.jobs.job_tag_ref LOG.destroy: LOG.destroy: All files and directories at the following location will be deleted: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-4m4lwdkh6zcsvacugwynrr2eti/default LOG.destroy: LOG.destroy: Deleting files... LOG.destroy: Destroy complete! acceptance_test.go:942: LOG.planjson: acceptance_test.go:942: LOG.validate: LOG.validate: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle validate LOG.validate: Name: test-bundle-4m4lwdkh6zcsvacugwynrr2eti LOG.validate: Target: default LOG.validate: Workspace: LOG.validate: User: tester@databricks.com LOG.validate: Path: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-4m4lwdkh6zcsvacugwynrr2eti/default LOG.validate: LOG.validate: Validation OK! --- FAIL: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_cross_resource_ref.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 (0.30s) ``` **latest (v1.6.0):** ``` === RUN TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_cross_resource_ref.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 === PAUSE TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_cross_resource_ref.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 === CONT TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_cross_resource_ref.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 acceptance_test.go:1083: Error Trace: /Users/denis.bilenko/work/cli-trees/local-only/libs/testdiff/testdiff.go:22 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:1083 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:915 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:515 Error: Not equal: expected: "INPUT_CONFIG_OK\n" actual : "INPUT_CONFIG_OK\n\nExit code: 1\n" Diff: --- Expected +++ Actual @@ -2 +2,3 @@ +Exit code: 1 + Test: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_cross_resource_ref.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 Messages: bundle/invariant/no_drift/output.txt vs /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/TestAcceptbundleinvariantno_driftDATABRICKS_BUNDLE_ENGINE=di747633349/001/output.txt acceptance_test.go:942: LOG.config: bundle: LOG.config: name: test-bundle-r4a73qikqfbnre24sju3aoahyu LOG.config: LOG.config: resources: LOG.config: jobs: LOG.config: # job_src defines permissions and a tag value used as references by other resources LOG.config: job_src: LOG.config: name: test-job-src-r4a73qikqfbnre24sju3aoahyu LOG.config: tags: LOG.config: perm_group: users LOG.config: permissions: LOG.config: - level: CAN_VIEW LOG.config: group_name: users LOG.config: LOG.config: # job_perm_ref uses permission fields from job_src as its permission values LOG.config: job_perm_ref: LOG.config: name: test-job-perm-ref-r4a73qikqfbnre24sju3aoahyu LOG.config: permissions: LOG.config: - level: ${resources.jobs.job_src.permissions[0].level} LOG.config: group_name: ${resources.jobs.job_src.permissions[0].group_name} LOG.config: LOG.config: # job_tag_ref uses a job tag from job_src as a permission group_name LOG.config: job_tag_ref: LOG.config: name: test-job-tag-ref-r4a73qikqfbnre24sju3aoahyu LOG.config: permissions: LOG.config: - level: CAN_VIEW LOG.config: group_name: ${resources.jobs.job_src.tags.perm_group} acceptance_test.go:942: LOG.cp: acceptance_test.go:942: LOG.deploy: LOG.deploy: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle deploy --plan plan.json LOG.deploy: Uploading bundle files to /Workspace/Users/tester@databricks.com/.bundle/test-bundle-r4a73qikqfbnre24sju3aoahyu/default/files... LOG.deploy: Deploying resources... LOG.deploy: Updating deployment state... LOG.deploy: Deployment complete! acceptance_test.go:942: LOG.destroy: LOG.destroy: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle destroy --auto-approve LOG.destroy: The following resources will be deleted: LOG.destroy: delete resources.jobs.job_perm_ref LOG.destroy: delete resources.jobs.job_src LOG.destroy: delete resources.jobs.job_tag_ref LOG.destroy: LOG.destroy: All files and directories at the following location will be deleted: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-r4a73qikqfbnre24sju3aoahyu/default LOG.destroy: LOG.destroy: Deleting files... LOG.destroy: Destroy complete! acceptance_test.go:942: LOG.planjson: acceptance_test.go:942: LOG.validate: LOG.validate: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle validate LOG.validate: Name: test-bundle-r4a73qikqfbnre24sju3aoahyu LOG.validate: Target: default LOG.validate: Workspace: LOG.validate: User: tester@databricks.com LOG.validate: Path: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-r4a73qikqfbnre24sju3aoahyu/default LOG.validate: LOG.validate: Validation OK! --- FAIL: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_cross_resource_ref.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 (0.43s) ```
TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_permission_ref.yml.tmpl/LOCAL_DIFF=--local/READPLAN= ✅ | main (de465e09b) ❌ | latest (v1.6.0) ❌ **main (de465e09b):** ``` === RUN TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_permission_ref.yml.tmpl/LOCAL_DIFF=--local/READPLAN= === PAUSE TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_permission_ref.yml.tmpl/LOCAL_DIFF=--local/READPLAN= === CONT TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_permission_ref.yml.tmpl/LOCAL_DIFF=--local/READPLAN= acceptance_test.go:1083: Error Trace: /Users/denis.bilenko/work/cli-trees/local-only/libs/testdiff/testdiff.go:22 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:1083 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:915 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:515 Error: Not equal: expected: "INPUT_CONFIG_OK\n" actual : "INPUT_CONFIG_OK\n\nExit code: 1\n" Diff: --- Expected +++ Actual @@ -2 +2,3 @@ +Exit code: 1 + Test: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_permission_ref.yml.tmpl/LOCAL_DIFF=--local/READPLAN= Messages: bundle/invariant/no_drift/output.txt vs /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/TestAcceptbundleinvariantno_driftDATABRICKS_BUNDLE_ENGINE=di1325424771/001/output.txt acceptance_test.go:942: LOG.config: bundle: LOG.config: name: test-bundle-mzovwizsy5bfjbdpe3up74fok4 LOG.config: LOG.config: resources: LOG.config: jobs: LOG.config: job_b: LOG.config: name: test-job-b-mzovwizsy5bfjbdpe3up74fok4 LOG.config: permissions: LOG.config: - level: CAN_VIEW LOG.config: group_name: users LOG.config: - level: CAN_MANAGE LOG.config: group_name: admins LOG.config: LOG.config: job_a: LOG.config: name: test-job-a-mzovwizsy5bfjbdpe3up74fok4 LOG.config: permissions: LOG.config: # Reference level and group_name from job_b by index LOG.config: - level: ${resources.jobs.job_b.permissions[0].level} LOG.config: group_name: ${resources.jobs.job_b.permissions[0].group_name} LOG.config: - level: ${resources.jobs.job_b.permissions[1].level} LOG.config: group_name: ${resources.jobs.job_b.permissions[1].group_name} acceptance_test.go:942: LOG.cp: acceptance_test.go:942: LOG.deploy: LOG.deploy: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle deploy LOG.deploy: Uploading bundle files to /Workspace/Users/tester@databricks.com/.bundle/test-bundle-mzovwizsy5bfjbdpe3up74fok4/default/files... LOG.deploy: Deploying resources... LOG.deploy: Updating deployment state... LOG.deploy: Deployment complete! acceptance_test.go:942: LOG.destroy: LOG.destroy: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle destroy --auto-approve LOG.destroy: The following resources will be deleted: LOG.destroy: delete resources.jobs.job_a LOG.destroy: delete resources.jobs.job_b LOG.destroy: LOG.destroy: All files and directories at the following location will be deleted: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-mzovwizsy5bfjbdpe3up74fok4/default LOG.destroy: LOG.destroy: Deleting files... LOG.destroy: Destroy complete! acceptance_test.go:942: LOG.planjson: acceptance_test.go:942: LOG.validate: LOG.validate: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle validate LOG.validate: Name: test-bundle-mzovwizsy5bfjbdpe3up74fok4 LOG.validate: Target: default LOG.validate: Workspace: LOG.validate: User: tester@databricks.com LOG.validate: Path: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-mzovwizsy5bfjbdpe3up74fok4/default LOG.validate: LOG.validate: Validation OK! --- FAIL: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_permission_ref.yml.tmpl/LOCAL_DIFF=--local/READPLAN= (0.32s) ``` **latest (v1.6.0):** ``` === RUN TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_permission_ref.yml.tmpl/LOCAL_DIFF=--local/READPLAN= === PAUSE TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_permission_ref.yml.tmpl/LOCAL_DIFF=--local/READPLAN= === CONT TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_permission_ref.yml.tmpl/LOCAL_DIFF=--local/READPLAN= acceptance_test.go:1083: Error Trace: /Users/denis.bilenko/work/cli-trees/local-only/libs/testdiff/testdiff.go:22 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:1083 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:915 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:515 Error: Not equal: expected: "INPUT_CONFIG_OK\n" actual : "INPUT_CONFIG_OK\n\nExit code: 1\n" Diff: --- Expected +++ Actual @@ -2 +2,3 @@ +Exit code: 1 + Test: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_permission_ref.yml.tmpl/LOCAL_DIFF=--local/READPLAN= Messages: bundle/invariant/no_drift/output.txt vs /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/TestAcceptbundleinvariantno_driftDATABRICKS_BUNDLE_ENGINE=di2975448614/001/output.txt acceptance_test.go:942: LOG.config: bundle: LOG.config: name: test-bundle-u4v5ksn25jhb3lmtfrshprsrxi LOG.config: LOG.config: resources: LOG.config: jobs: LOG.config: job_b: LOG.config: name: test-job-b-u4v5ksn25jhb3lmtfrshprsrxi LOG.config: permissions: LOG.config: - level: CAN_VIEW LOG.config: group_name: users LOG.config: - level: CAN_MANAGE LOG.config: group_name: admins LOG.config: LOG.config: job_a: LOG.config: name: test-job-a-u4v5ksn25jhb3lmtfrshprsrxi LOG.config: permissions: LOG.config: # Reference level and group_name from job_b by index LOG.config: - level: ${resources.jobs.job_b.permissions[0].level} LOG.config: group_name: ${resources.jobs.job_b.permissions[0].group_name} LOG.config: - level: ${resources.jobs.job_b.permissions[1].level} LOG.config: group_name: ${resources.jobs.job_b.permissions[1].group_name} acceptance_test.go:942: LOG.cp: acceptance_test.go:942: LOG.deploy: LOG.deploy: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle deploy LOG.deploy: Uploading bundle files to /Workspace/Users/tester@databricks.com/.bundle/test-bundle-u4v5ksn25jhb3lmtfrshprsrxi/default/files... LOG.deploy: Deploying resources... LOG.deploy: Updating deployment state... LOG.deploy: Deployment complete! acceptance_test.go:942: LOG.destroy: LOG.destroy: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle destroy --auto-approve LOG.destroy: The following resources will be deleted: LOG.destroy: delete resources.jobs.job_a LOG.destroy: delete resources.jobs.job_b LOG.destroy: LOG.destroy: All files and directories at the following location will be deleted: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-u4v5ksn25jhb3lmtfrshprsrxi/default LOG.destroy: LOG.destroy: Deleting files... LOG.destroy: Destroy complete! acceptance_test.go:942: LOG.planjson: acceptance_test.go:942: LOG.validate: LOG.validate: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle validate LOG.validate: Name: test-bundle-u4v5ksn25jhb3lmtfrshprsrxi LOG.validate: Target: default LOG.validate: Workspace: LOG.validate: User: tester@databricks.com LOG.validate: Path: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-u4v5ksn25jhb3lmtfrshprsrxi/default LOG.validate: LOG.validate: Validation OK! --- FAIL: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_permission_ref.yml.tmpl/LOCAL_DIFF=--local/READPLAN= (0.43s) ```
TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_permission_ref.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 ✅ | main (de465e09b) ❌ | latest (v1.6.0) ❌ **main (de465e09b):** ``` === RUN TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_permission_ref.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 === PAUSE TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_permission_ref.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 === CONT TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_permission_ref.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 acceptance_test.go:1083: Error Trace: /Users/denis.bilenko/work/cli-trees/local-only/libs/testdiff/testdiff.go:22 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:1083 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:915 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:515 Error: Not equal: expected: "INPUT_CONFIG_OK\n" actual : "INPUT_CONFIG_OK\n\nExit code: 1\n" Diff: --- Expected +++ Actual @@ -2 +2,3 @@ +Exit code: 1 + Test: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_permission_ref.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 Messages: bundle/invariant/no_drift/output.txt vs /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/TestAcceptbundleinvariantno_driftDATABRICKS_BUNDLE_ENGINE=di170232823/001/output.txt acceptance_test.go:942: LOG.config: bundle: LOG.config: name: test-bundle-xlbwyocqbreeffa2tvwshygeji LOG.config: LOG.config: resources: LOG.config: jobs: LOG.config: job_b: LOG.config: name: test-job-b-xlbwyocqbreeffa2tvwshygeji LOG.config: permissions: LOG.config: - level: CAN_VIEW LOG.config: group_name: users LOG.config: - level: CAN_MANAGE LOG.config: group_name: admins LOG.config: LOG.config: job_a: LOG.config: name: test-job-a-xlbwyocqbreeffa2tvwshygeji LOG.config: permissions: LOG.config: # Reference level and group_name from job_b by index LOG.config: - level: ${resources.jobs.job_b.permissions[0].level} LOG.config: group_name: ${resources.jobs.job_b.permissions[0].group_name} LOG.config: - level: ${resources.jobs.job_b.permissions[1].level} LOG.config: group_name: ${resources.jobs.job_b.permissions[1].group_name} acceptance_test.go:942: LOG.cp: acceptance_test.go:942: LOG.deploy: LOG.deploy: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle deploy --plan plan.json LOG.deploy: Uploading bundle files to /Workspace/Users/tester@databricks.com/.bundle/test-bundle-xlbwyocqbreeffa2tvwshygeji/default/files... LOG.deploy: Deploying resources... LOG.deploy: Updating deployment state... LOG.deploy: Deployment complete! acceptance_test.go:942: LOG.destroy: LOG.destroy: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle destroy --auto-approve LOG.destroy: The following resources will be deleted: LOG.destroy: delete resources.jobs.job_a LOG.destroy: delete resources.jobs.job_b LOG.destroy: LOG.destroy: All files and directories at the following location will be deleted: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-xlbwyocqbreeffa2tvwshygeji/default LOG.destroy: LOG.destroy: Deleting files... LOG.destroy: Destroy complete! acceptance_test.go:942: LOG.planjson: acceptance_test.go:942: LOG.validate: LOG.validate: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle validate LOG.validate: Name: test-bundle-xlbwyocqbreeffa2tvwshygeji LOG.validate: Target: default LOG.validate: Workspace: LOG.validate: User: tester@databricks.com LOG.validate: Path: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-xlbwyocqbreeffa2tvwshygeji/default LOG.validate: LOG.validate: Validation OK! --- FAIL: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_permission_ref.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 (0.30s) ``` **latest (v1.6.0):** ``` === RUN TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_permission_ref.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 === PAUSE TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_permission_ref.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 === CONT TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_permission_ref.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 acceptance_test.go:1083: Error Trace: /Users/denis.bilenko/work/cli-trees/local-only/libs/testdiff/testdiff.go:22 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:1083 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:915 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:515 Error: Not equal: expected: "INPUT_CONFIG_OK\n" actual : "INPUT_CONFIG_OK\n\nExit code: 1\n" Diff: --- Expected +++ Actual @@ -2 +2,3 @@ +Exit code: 1 + Test: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_permission_ref.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 Messages: bundle/invariant/no_drift/output.txt vs /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/TestAcceptbundleinvariantno_driftDATABRICKS_BUNDLE_ENGINE=di3991621603/001/output.txt acceptance_test.go:942: LOG.config: bundle: LOG.config: name: test-bundle-ceambcayebg6bc3pvv2svtfjhe LOG.config: LOG.config: resources: LOG.config: jobs: LOG.config: job_b: LOG.config: name: test-job-b-ceambcayebg6bc3pvv2svtfjhe LOG.config: permissions: LOG.config: - level: CAN_VIEW LOG.config: group_name: users LOG.config: - level: CAN_MANAGE LOG.config: group_name: admins LOG.config: LOG.config: job_a: LOG.config: name: test-job-a-ceambcayebg6bc3pvv2svtfjhe LOG.config: permissions: LOG.config: # Reference level and group_name from job_b by index LOG.config: - level: ${resources.jobs.job_b.permissions[0].level} LOG.config: group_name: ${resources.jobs.job_b.permissions[0].group_name} LOG.config: - level: ${resources.jobs.job_b.permissions[1].level} LOG.config: group_name: ${resources.jobs.job_b.permissions[1].group_name} acceptance_test.go:942: LOG.cp: acceptance_test.go:942: LOG.deploy: LOG.deploy: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle deploy --plan plan.json LOG.deploy: Uploading bundle files to /Workspace/Users/tester@databricks.com/.bundle/test-bundle-ceambcayebg6bc3pvv2svtfjhe/default/files... LOG.deploy: Deploying resources... LOG.deploy: Updating deployment state... LOG.deploy: Deployment complete! acceptance_test.go:942: LOG.destroy: LOG.destroy: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle destroy --auto-approve LOG.destroy: The following resources will be deleted: LOG.destroy: delete resources.jobs.job_a LOG.destroy: delete resources.jobs.job_b LOG.destroy: LOG.destroy: All files and directories at the following location will be deleted: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-ceambcayebg6bc3pvv2svtfjhe/default LOG.destroy: LOG.destroy: Deleting files... LOG.destroy: Destroy complete! acceptance_test.go:942: LOG.planjson: acceptance_test.go:942: LOG.validate: LOG.validate: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle validate LOG.validate: Name: test-bundle-ceambcayebg6bc3pvv2svtfjhe LOG.validate: Target: default LOG.validate: Workspace: LOG.validate: User: tester@databricks.com LOG.validate: Path: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-ceambcayebg6bc3pvv2svtfjhe/default LOG.validate: LOG.validate: Validation OK! --- FAIL: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_permission_ref.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 (0.45s) ```
TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_run_job_ref.yml.tmpl/LOCAL_DIFF=--local/READPLAN= ✅ | main (de465e09b) ❌ | latest (v1.6.0) ❌ **main (de465e09b):** ``` === RUN TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_run_job_ref.yml.tmpl/LOCAL_DIFF=--local/READPLAN= === PAUSE TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_run_job_ref.yml.tmpl/LOCAL_DIFF=--local/READPLAN= === CONT TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_run_job_ref.yml.tmpl/LOCAL_DIFF=--local/READPLAN= acceptance_test.go:1083: Error Trace: /Users/denis.bilenko/work/cli-trees/local-only/libs/testdiff/testdiff.go:22 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:1083 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:915 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:515 Error: Not equal: expected: "INPUT_CONFIG_OK\n" actual : "INPUT_CONFIG_OK\n\nExit code: 1\n" Diff: --- Expected +++ Actual @@ -2 +2,3 @@ +Exit code: 1 + Test: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_run_job_ref.yml.tmpl/LOCAL_DIFF=--local/READPLAN= Messages: bundle/invariant/no_drift/output.txt vs /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/TestAcceptbundleinvariantno_driftDATABRICKS_BUNDLE_ENGINE=di1182609431/001/output.txt acceptance_test.go:942: LOG.config: bundle: LOG.config: name: test-bundle-5xohrvb6brglhofz65pi3jnyhu LOG.config: LOG.config: resources: LOG.config: jobs: LOG.config: trigger_job: LOG.config: name: test-trigger-5xohrvb6brglhofz65pi3jnyhu LOG.config: # 9007199254740993 = 2^53+1, the smallest integer float64 cannot represent LOG.config: # exactly (it rounds to 2^53 = ...992). Stored as a literal via PrepareState, LOG.config: # so trigger_job keeps the exact value; watcher_job references it to force the LOG.config: # migration to resolve it from TF state, where naive float64 parsing of JSON LOG.config: # numbers would corrupt it. Local-only: deliberately out of range for the LOG.config: # real backend (see no_run_job_ref_on_cloud in the parent test.toml). LOG.config: max_concurrent_runs: 9007199254740993 LOG.config: tasks: LOG.config: - task_key: notebook LOG.config: notebook_task: LOG.config: notebook_path: /Shared/notebook LOG.config: new_cluster: LOG.config: spark_version: 13.3.x-snapshot-scala2.12 LOG.config: node_type_id: i3.xlarge LOG.config: instance_pool_id: 0123-456789-pool0 LOG.config: num_workers: 1 LOG.config: LOG.config: watcher_job: LOG.config: name: test-watcher-5xohrvb6brglhofz65pi3jnyhu LOG.config: # Resolved from trigger_job's TF state during migration. Exercises the LOG.config: # json.Number parsing path end-to-end: with the fix the migrated state keeps LOG.config: # 9007199254740993; without it the value is silently truncated to ...992. LOG.config: max_concurrent_runs: ${resources.jobs.trigger_job.max_concurrent_runs} LOG.config: tasks: LOG.config: - task_key: run_trigger LOG.config: run_job_task: LOG.config: job_id: ${resources.jobs.trigger_job.id} acceptance_test.go:942: LOG.cp: acceptance_test.go:942: LOG.deploy: LOG.deploy: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle deploy LOG.deploy: Uploading bundle files to /Workspace/Users/tester@databricks.com/.bundle/test-bundle-5xohrvb6brglhofz65pi3jnyhu/default/files... LOG.deploy: Deploying resources... LOG.deploy: Updating deployment state... LOG.deploy: Deployment complete! acceptance_test.go:942: LOG.destroy: LOG.destroy: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle destroy --auto-approve LOG.destroy: The following resources will be deleted: LOG.destroy: delete resources.jobs.trigger_job LOG.destroy: delete resources.jobs.watcher_job LOG.destroy: LOG.destroy: All files and directories at the following location will be deleted: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-5xohrvb6brglhofz65pi3jnyhu/default LOG.destroy: LOG.destroy: Deleting files... LOG.destroy: Destroy complete! acceptance_test.go:942: LOG.planjson: acceptance_test.go:942: LOG.validate: LOG.validate: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle validate LOG.validate: Name: test-bundle-5xohrvb6brglhofz65pi3jnyhu LOG.validate: Target: default LOG.validate: Workspace: LOG.validate: User: tester@databricks.com LOG.validate: Path: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-5xohrvb6brglhofz65pi3jnyhu/default LOG.validate: LOG.validate: Validation OK! --- FAIL: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_run_job_ref.yml.tmpl/LOCAL_DIFF=--local/READPLAN= (0.33s) ``` **latest (v1.6.0):** ``` === RUN TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_run_job_ref.yml.tmpl/LOCAL_DIFF=--local/READPLAN= === PAUSE TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_run_job_ref.yml.tmpl/LOCAL_DIFF=--local/READPLAN= === CONT TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_run_job_ref.yml.tmpl/LOCAL_DIFF=--local/READPLAN= acceptance_test.go:1083: Error Trace: /Users/denis.bilenko/work/cli-trees/local-only/libs/testdiff/testdiff.go:22 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:1083 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:915 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:515 Error: Not equal: expected: "INPUT_CONFIG_OK\n" actual : "INPUT_CONFIG_OK\n\nExit code: 1\n" Diff: --- Expected +++ Actual @@ -2 +2,3 @@ +Exit code: 1 + Test: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_run_job_ref.yml.tmpl/LOCAL_DIFF=--local/READPLAN= Messages: bundle/invariant/no_drift/output.txt vs /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/TestAcceptbundleinvariantno_driftDATABRICKS_BUNDLE_ENGINE=di4111304751/001/output.txt acceptance_test.go:942: LOG.config: bundle: LOG.config: name: test-bundle-mgnbjfgvbba3pcyahfrtf5thry LOG.config: LOG.config: resources: LOG.config: jobs: LOG.config: trigger_job: LOG.config: name: test-trigger-mgnbjfgvbba3pcyahfrtf5thry LOG.config: # 9007199254740993 = 2^53+1, the smallest integer float64 cannot represent LOG.config: # exactly (it rounds to 2^53 = ...992). Stored as a literal via PrepareState, LOG.config: # so trigger_job keeps the exact value; watcher_job references it to force the LOG.config: # migration to resolve it from TF state, where naive float64 parsing of JSON LOG.config: # numbers would corrupt it. Local-only: deliberately out of range for the LOG.config: # real backend (see no_run_job_ref_on_cloud in the parent test.toml). LOG.config: max_concurrent_runs: 9007199254740993 LOG.config: tasks: LOG.config: - task_key: notebook LOG.config: notebook_task: LOG.config: notebook_path: /Shared/notebook LOG.config: new_cluster: LOG.config: spark_version: 13.3.x-snapshot-scala2.12 LOG.config: node_type_id: i3.xlarge LOG.config: instance_pool_id: 0123-456789-pool0 LOG.config: num_workers: 1 LOG.config: LOG.config: watcher_job: LOG.config: name: test-watcher-mgnbjfgvbba3pcyahfrtf5thry LOG.config: # Resolved from trigger_job's TF state during migration. Exercises the LOG.config: # json.Number parsing path end-to-end: with the fix the migrated state keeps LOG.config: # 9007199254740993; without it the value is silently truncated to ...992. LOG.config: max_concurrent_runs: ${resources.jobs.trigger_job.max_concurrent_runs} LOG.config: tasks: LOG.config: - task_key: run_trigger LOG.config: run_job_task: LOG.config: job_id: ${resources.jobs.trigger_job.id} acceptance_test.go:942: LOG.cp: acceptance_test.go:942: LOG.deploy: LOG.deploy: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle deploy LOG.deploy: Uploading bundle files to /Workspace/Users/tester@databricks.com/.bundle/test-bundle-mgnbjfgvbba3pcyahfrtf5thry/default/files... LOG.deploy: Deploying resources... LOG.deploy: Updating deployment state... LOG.deploy: Deployment complete! acceptance_test.go:942: LOG.destroy: LOG.destroy: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle destroy --auto-approve LOG.destroy: The following resources will be deleted: LOG.destroy: delete resources.jobs.trigger_job LOG.destroy: delete resources.jobs.watcher_job LOG.destroy: LOG.destroy: All files and directories at the following location will be deleted: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-mgnbjfgvbba3pcyahfrtf5thry/default LOG.destroy: LOG.destroy: Deleting files... LOG.destroy: Destroy complete! acceptance_test.go:942: LOG.planjson: acceptance_test.go:942: LOG.validate: LOG.validate: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle validate LOG.validate: Name: test-bundle-mgnbjfgvbba3pcyahfrtf5thry LOG.validate: Target: default LOG.validate: Workspace: LOG.validate: User: tester@databricks.com LOG.validate: Path: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-mgnbjfgvbba3pcyahfrtf5thry/default LOG.validate: LOG.validate: Validation OK! --- FAIL: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_run_job_ref.yml.tmpl/LOCAL_DIFF=--local/READPLAN= (0.47s) ```
TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_run_job_ref.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 ✅ | main (de465e09b) ❌ | latest (v1.6.0) ❌ **main (de465e09b):** ``` === RUN TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_run_job_ref.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 === PAUSE TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_run_job_ref.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 === CONT TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_run_job_ref.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 acceptance_test.go:1083: Error Trace: /Users/denis.bilenko/work/cli-trees/local-only/libs/testdiff/testdiff.go:22 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:1083 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:915 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:515 Error: Not equal: expected: "INPUT_CONFIG_OK\n" actual : "INPUT_CONFIG_OK\n\nExit code: 1\n" Diff: --- Expected +++ Actual @@ -2 +2,3 @@ +Exit code: 1 + Test: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_run_job_ref.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 Messages: bundle/invariant/no_drift/output.txt vs /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/TestAcceptbundleinvariantno_driftDATABRICKS_BUNDLE_ENGINE=di1798332770/001/output.txt acceptance_test.go:942: LOG.config: bundle: LOG.config: name: test-bundle-red2cresn5dnzhu5mu2l3obzne LOG.config: LOG.config: resources: LOG.config: jobs: LOG.config: trigger_job: LOG.config: name: test-trigger-red2cresn5dnzhu5mu2l3obzne LOG.config: # 9007199254740993 = 2^53+1, the smallest integer float64 cannot represent LOG.config: # exactly (it rounds to 2^53 = ...992). Stored as a literal via PrepareState, LOG.config: # so trigger_job keeps the exact value; watcher_job references it to force the LOG.config: # migration to resolve it from TF state, where naive float64 parsing of JSON LOG.config: # numbers would corrupt it. Local-only: deliberately out of range for the LOG.config: # real backend (see no_run_job_ref_on_cloud in the parent test.toml). LOG.config: max_concurrent_runs: 9007199254740993 LOG.config: tasks: LOG.config: - task_key: notebook LOG.config: notebook_task: LOG.config: notebook_path: /Shared/notebook LOG.config: new_cluster: LOG.config: spark_version: 13.3.x-snapshot-scala2.12 LOG.config: node_type_id: i3.xlarge LOG.config: instance_pool_id: 0123-456789-pool0 LOG.config: num_workers: 1 LOG.config: LOG.config: watcher_job: LOG.config: name: test-watcher-red2cresn5dnzhu5mu2l3obzne LOG.config: # Resolved from trigger_job's TF state during migration. Exercises the LOG.config: # json.Number parsing path end-to-end: with the fix the migrated state keeps LOG.config: # 9007199254740993; without it the value is silently truncated to ...992. LOG.config: max_concurrent_runs: ${resources.jobs.trigger_job.max_concurrent_runs} LOG.config: tasks: LOG.config: - task_key: run_trigger LOG.config: run_job_task: LOG.config: job_id: ${resources.jobs.trigger_job.id} acceptance_test.go:942: LOG.cp: acceptance_test.go:942: LOG.deploy: LOG.deploy: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle deploy --plan plan.json LOG.deploy: Uploading bundle files to /Workspace/Users/tester@databricks.com/.bundle/test-bundle-red2cresn5dnzhu5mu2l3obzne/default/files... LOG.deploy: Deploying resources... LOG.deploy: Updating deployment state... LOG.deploy: Deployment complete! acceptance_test.go:942: LOG.destroy: LOG.destroy: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle destroy --auto-approve LOG.destroy: The following resources will be deleted: LOG.destroy: delete resources.jobs.trigger_job LOG.destroy: delete resources.jobs.watcher_job LOG.destroy: LOG.destroy: All files and directories at the following location will be deleted: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-red2cresn5dnzhu5mu2l3obzne/default LOG.destroy: LOG.destroy: Deleting files... LOG.destroy: Destroy complete! acceptance_test.go:942: LOG.planjson: acceptance_test.go:942: LOG.validate: LOG.validate: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle validate LOG.validate: Name: test-bundle-red2cresn5dnzhu5mu2l3obzne LOG.validate: Target: default LOG.validate: Workspace: LOG.validate: User: tester@databricks.com LOG.validate: Path: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-red2cresn5dnzhu5mu2l3obzne/default LOG.validate: LOG.validate: Validation OK! --- FAIL: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_run_job_ref.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 (0.33s) ``` **latest (v1.6.0):** ``` === RUN TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_run_job_ref.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 === PAUSE TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_run_job_ref.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 === CONT TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_run_job_ref.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 acceptance_test.go:1083: Error Trace: /Users/denis.bilenko/work/cli-trees/local-only/libs/testdiff/testdiff.go:22 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:1083 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:915 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:515 Error: Not equal: expected: "INPUT_CONFIG_OK\n" actual : "INPUT_CONFIG_OK\n\nExit code: 1\n" Diff: --- Expected +++ Actual @@ -2 +2,3 @@ +Exit code: 1 + Test: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_run_job_ref.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 Messages: bundle/invariant/no_drift/output.txt vs /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/TestAcceptbundleinvariantno_driftDATABRICKS_BUNDLE_ENGINE=di331016162/001/output.txt acceptance_test.go:942: LOG.config: bundle: LOG.config: name: test-bundle-qwpa6hxwvvcddg6qrsfjnn5hdq LOG.config: LOG.config: resources: LOG.config: jobs: LOG.config: trigger_job: LOG.config: name: test-trigger-qwpa6hxwvvcddg6qrsfjnn5hdq LOG.config: # 9007199254740993 = 2^53+1, the smallest integer float64 cannot represent LOG.config: # exactly (it rounds to 2^53 = ...992). Stored as a literal via PrepareState, LOG.config: # so trigger_job keeps the exact value; watcher_job references it to force the LOG.config: # migration to resolve it from TF state, where naive float64 parsing of JSON LOG.config: # numbers would corrupt it. Local-only: deliberately out of range for the LOG.config: # real backend (see no_run_job_ref_on_cloud in the parent test.toml). LOG.config: max_concurrent_runs: 9007199254740993 LOG.config: tasks: LOG.config: - task_key: notebook LOG.config: notebook_task: LOG.config: notebook_path: /Shared/notebook LOG.config: new_cluster: LOG.config: spark_version: 13.3.x-snapshot-scala2.12 LOG.config: node_type_id: i3.xlarge LOG.config: instance_pool_id: 0123-456789-pool0 LOG.config: num_workers: 1 LOG.config: LOG.config: watcher_job: LOG.config: name: test-watcher-qwpa6hxwvvcddg6qrsfjnn5hdq LOG.config: # Resolved from trigger_job's TF state during migration. Exercises the LOG.config: # json.Number parsing path end-to-end: with the fix the migrated state keeps LOG.config: # 9007199254740993; without it the value is silently truncated to ...992. LOG.config: max_concurrent_runs: ${resources.jobs.trigger_job.max_concurrent_runs} LOG.config: tasks: LOG.config: - task_key: run_trigger LOG.config: run_job_task: LOG.config: job_id: ${resources.jobs.trigger_job.id} acceptance_test.go:942: LOG.cp: acceptance_test.go:942: LOG.deploy: LOG.deploy: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle deploy --plan plan.json LOG.deploy: Uploading bundle files to /Workspace/Users/tester@databricks.com/.bundle/test-bundle-qwpa6hxwvvcddg6qrsfjnn5hdq/default/files... LOG.deploy: Deploying resources... LOG.deploy: Updating deployment state... LOG.deploy: Deployment complete! acceptance_test.go:942: LOG.destroy: LOG.destroy: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle destroy --auto-approve LOG.destroy: The following resources will be deleted: LOG.destroy: delete resources.jobs.trigger_job LOG.destroy: delete resources.jobs.watcher_job LOG.destroy: LOG.destroy: All files and directories at the following location will be deleted: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-qwpa6hxwvvcddg6qrsfjnn5hdq/default LOG.destroy: LOG.destroy: Deleting files... LOG.destroy: Destroy complete! acceptance_test.go:942: LOG.planjson: acceptance_test.go:942: LOG.validate: LOG.validate: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle validate LOG.validate: Name: test-bundle-qwpa6hxwvvcddg6qrsfjnn5hdq LOG.validate: Target: default LOG.validate: Workspace: LOG.validate: User: tester@databricks.com LOG.validate: Path: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-qwpa6hxwvvcddg6qrsfjnn5hdq/default LOG.validate: LOG.validate: Validation OK! --- FAIL: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_run_job_ref.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 (0.47s) ```
TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_with_depends_on.yml.tmpl/LOCAL_DIFF=--local/READPLAN= ✅ | main (de465e09b) ❌ | latest (v1.6.0) ❌ **main (de465e09b):** ``` === RUN TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_with_depends_on.yml.tmpl/LOCAL_DIFF=--local/READPLAN= === PAUSE TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_with_depends_on.yml.tmpl/LOCAL_DIFF=--local/READPLAN= === CONT TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_with_depends_on.yml.tmpl/LOCAL_DIFF=--local/READPLAN= acceptance_test.go:1083: Error Trace: /Users/denis.bilenko/work/cli-trees/local-only/libs/testdiff/testdiff.go:22 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:1083 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:915 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:515 Error: Not equal: expected: "INPUT_CONFIG_OK\n" actual : "INPUT_CONFIG_OK\n\nExit code: 1\n" Diff: --- Expected +++ Actual @@ -2 +2,3 @@ +Exit code: 1 + Test: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_with_depends_on.yml.tmpl/LOCAL_DIFF=--local/READPLAN= Messages: bundle/invariant/no_drift/output.txt vs /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/TestAcceptbundleinvariantno_driftDATABRICKS_BUNDLE_ENGINE=di1862620562/001/output.txt acceptance_test.go:942: LOG.config: bundle: LOG.config: name: test-bundle-qyxqz7q6qfc3xkcgxjbc4b24ny LOG.config: LOG.config: resources: LOG.config: jobs: LOG.config: foo: LOG.config: name: test-job-qyxqz7q6qfc3xkcgxjbc4b24ny LOG.config: tasks: LOG.config: - task_key: main LOG.config: notebook_task: LOG.config: notebook_path: /Shared/notebook LOG.config: - task_key: process LOG.config: depends_on: LOG.config: - task_key: main LOG.config: notebook_task: LOG.config: notebook_path: /Shared/notebook LOG.config: - task_key: finalize LOG.config: depends_on: LOG.config: - task_key: process LOG.config: - task_key: main LOG.config: notebook_task: LOG.config: notebook_path: /Shared/notebook acceptance_test.go:942: LOG.cp: acceptance_test.go:942: LOG.deploy: LOG.deploy: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle deploy LOG.deploy: Uploading bundle files to /Workspace/Users/tester@databricks.com/.bundle/test-bundle-qyxqz7q6qfc3xkcgxjbc4b24ny/default/files... LOG.deploy: Deploying resources... LOG.deploy: Updating deployment state... LOG.deploy: Deployment complete! acceptance_test.go:942: LOG.destroy: LOG.destroy: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle destroy --auto-approve LOG.destroy: The following resources will be deleted: LOG.destroy: delete resources.jobs.foo LOG.destroy: LOG.destroy: All files and directories at the following location will be deleted: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-qyxqz7q6qfc3xkcgxjbc4b24ny/default LOG.destroy: LOG.destroy: Deleting files... LOG.destroy: Destroy complete! acceptance_test.go:942: LOG.planjson: acceptance_test.go:942: LOG.validate: LOG.validate: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle validate LOG.validate: Name: test-bundle-qyxqz7q6qfc3xkcgxjbc4b24ny LOG.validate: Target: default LOG.validate: Workspace: LOG.validate: User: tester@databricks.com LOG.validate: Path: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-qyxqz7q6qfc3xkcgxjbc4b24ny/default LOG.validate: LOG.validate: Validation OK! --- FAIL: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_with_depends_on.yml.tmpl/LOCAL_DIFF=--local/READPLAN= (0.33s) ``` **latest (v1.6.0):** ``` === RUN TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_with_depends_on.yml.tmpl/LOCAL_DIFF=--local/READPLAN= === PAUSE TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_with_depends_on.yml.tmpl/LOCAL_DIFF=--local/READPLAN= === CONT TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_with_depends_on.yml.tmpl/LOCAL_DIFF=--local/READPLAN= acceptance_test.go:1083: Error Trace: /Users/denis.bilenko/work/cli-trees/local-only/libs/testdiff/testdiff.go:22 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:1083 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:915 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:515 Error: Not equal: expected: "INPUT_CONFIG_OK\n" actual : "INPUT_CONFIG_OK\n\nExit code: 1\n" Diff: --- Expected +++ Actual @@ -2 +2,3 @@ +Exit code: 1 + Test: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_with_depends_on.yml.tmpl/LOCAL_DIFF=--local/READPLAN= Messages: bundle/invariant/no_drift/output.txt vs /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/TestAcceptbundleinvariantno_driftDATABRICKS_BUNDLE_ENGINE=di2782820917/001/output.txt acceptance_test.go:942: LOG.config: bundle: LOG.config: name: test-bundle-5bqi66kq5na7fcerqz66dakaym LOG.config: LOG.config: resources: LOG.config: jobs: LOG.config: foo: LOG.config: name: test-job-5bqi66kq5na7fcerqz66dakaym LOG.config: tasks: LOG.config: - task_key: main LOG.config: notebook_task: LOG.config: notebook_path: /Shared/notebook LOG.config: - task_key: process LOG.config: depends_on: LOG.config: - task_key: main LOG.config: notebook_task: LOG.config: notebook_path: /Shared/notebook LOG.config: - task_key: finalize LOG.config: depends_on: LOG.config: - task_key: process LOG.config: - task_key: main LOG.config: notebook_task: LOG.config: notebook_path: /Shared/notebook acceptance_test.go:942: LOG.cp: acceptance_test.go:942: LOG.deploy: LOG.deploy: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle deploy LOG.deploy: Uploading bundle files to /Workspace/Users/tester@databricks.com/.bundle/test-bundle-5bqi66kq5na7fcerqz66dakaym/default/files... LOG.deploy: Deploying resources... LOG.deploy: Updating deployment state... LOG.deploy: Deployment complete! acceptance_test.go:942: LOG.destroy: LOG.destroy: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle destroy --auto-approve LOG.destroy: The following resources will be deleted: LOG.destroy: delete resources.jobs.foo LOG.destroy: LOG.destroy: All files and directories at the following location will be deleted: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-5bqi66kq5na7fcerqz66dakaym/default LOG.destroy: LOG.destroy: Deleting files... LOG.destroy: Destroy complete! acceptance_test.go:942: LOG.planjson: acceptance_test.go:942: LOG.validate: LOG.validate: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle validate LOG.validate: Name: test-bundle-5bqi66kq5na7fcerqz66dakaym LOG.validate: Target: default LOG.validate: Workspace: LOG.validate: User: tester@databricks.com LOG.validate: Path: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-5bqi66kq5na7fcerqz66dakaym/default LOG.validate: LOG.validate: Validation OK! --- FAIL: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_with_depends_on.yml.tmpl/LOCAL_DIFF=--local/READPLAN= (0.46s) ```
TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_with_depends_on.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 ✅ | main (de465e09b) ❌ | latest (v1.6.0) ❌ **main (de465e09b):** ``` === RUN TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_with_depends_on.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 === PAUSE TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_with_depends_on.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 === CONT TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_with_depends_on.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 acceptance_test.go:1083: Error Trace: /Users/denis.bilenko/work/cli-trees/local-only/libs/testdiff/testdiff.go:22 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:1083 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:915 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:515 Error: Not equal: expected: "INPUT_CONFIG_OK\n" actual : "INPUT_CONFIG_OK\n\nExit code: 1\n" Diff: --- Expected +++ Actual @@ -2 +2,3 @@ +Exit code: 1 + Test: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_with_depends_on.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 Messages: bundle/invariant/no_drift/output.txt vs /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/TestAcceptbundleinvariantno_driftDATABRICKS_BUNDLE_ENGINE=di3829873123/001/output.txt acceptance_test.go:942: LOG.config: bundle: LOG.config: name: test-bundle-qsitmnqhybht7fbjyja2y6sqhy LOG.config: LOG.config: resources: LOG.config: jobs: LOG.config: foo: LOG.config: name: test-job-qsitmnqhybht7fbjyja2y6sqhy LOG.config: tasks: LOG.config: - task_key: main LOG.config: notebook_task: LOG.config: notebook_path: /Shared/notebook LOG.config: - task_key: process LOG.config: depends_on: LOG.config: - task_key: main LOG.config: notebook_task: LOG.config: notebook_path: /Shared/notebook LOG.config: - task_key: finalize LOG.config: depends_on: LOG.config: - task_key: process LOG.config: - task_key: main LOG.config: notebook_task: LOG.config: notebook_path: /Shared/notebook acceptance_test.go:942: LOG.cp: acceptance_test.go:942: LOG.deploy: LOG.deploy: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle deploy --plan plan.json LOG.deploy: Uploading bundle files to /Workspace/Users/tester@databricks.com/.bundle/test-bundle-qsitmnqhybht7fbjyja2y6sqhy/default/files... LOG.deploy: Deploying resources... LOG.deploy: Updating deployment state... LOG.deploy: Deployment complete! acceptance_test.go:942: LOG.destroy: LOG.destroy: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle destroy --auto-approve LOG.destroy: The following resources will be deleted: LOG.destroy: delete resources.jobs.foo LOG.destroy: LOG.destroy: All files and directories at the following location will be deleted: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-qsitmnqhybht7fbjyja2y6sqhy/default LOG.destroy: LOG.destroy: Deleting files... LOG.destroy: Destroy complete! acceptance_test.go:942: LOG.planjson: acceptance_test.go:942: LOG.validate: LOG.validate: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle validate LOG.validate: Name: test-bundle-qsitmnqhybht7fbjyja2y6sqhy LOG.validate: Target: default LOG.validate: Workspace: LOG.validate: User: tester@databricks.com LOG.validate: Path: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-qsitmnqhybht7fbjyja2y6sqhy/default LOG.validate: LOG.validate: Validation OK! --- FAIL: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_with_depends_on.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 (0.32s) ``` **latest (v1.6.0):** ``` === RUN TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_with_depends_on.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 === PAUSE TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_with_depends_on.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 === CONT TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_with_depends_on.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 acceptance_test.go:1083: Error Trace: /Users/denis.bilenko/work/cli-trees/local-only/libs/testdiff/testdiff.go:22 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:1083 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:915 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:515 Error: Not equal: expected: "INPUT_CONFIG_OK\n" actual : "INPUT_CONFIG_OK\n\nExit code: 1\n" Diff: --- Expected +++ Actual @@ -2 +2,3 @@ +Exit code: 1 + Test: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_with_depends_on.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 Messages: bundle/invariant/no_drift/output.txt vs /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/TestAcceptbundleinvariantno_driftDATABRICKS_BUNDLE_ENGINE=di2162330611/001/output.txt acceptance_test.go:942: LOG.config: bundle: LOG.config: name: test-bundle-kffu6quw2fhxnn2zkxxv33cmta LOG.config: LOG.config: resources: LOG.config: jobs: LOG.config: foo: LOG.config: name: test-job-kffu6quw2fhxnn2zkxxv33cmta LOG.config: tasks: LOG.config: - task_key: main LOG.config: notebook_task: LOG.config: notebook_path: /Shared/notebook LOG.config: - task_key: process LOG.config: depends_on: LOG.config: - task_key: main LOG.config: notebook_task: LOG.config: notebook_path: /Shared/notebook LOG.config: - task_key: finalize LOG.config: depends_on: LOG.config: - task_key: process LOG.config: - task_key: main LOG.config: notebook_task: LOG.config: notebook_path: /Shared/notebook acceptance_test.go:942: LOG.cp: acceptance_test.go:942: LOG.deploy: LOG.deploy: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle deploy --plan plan.json LOG.deploy: Uploading bundle files to /Workspace/Users/tester@databricks.com/.bundle/test-bundle-kffu6quw2fhxnn2zkxxv33cmta/default/files... LOG.deploy: Deploying resources... LOG.deploy: Updating deployment state... LOG.deploy: Deployment complete! acceptance_test.go:942: LOG.destroy: LOG.destroy: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle destroy --auto-approve LOG.destroy: The following resources will be deleted: LOG.destroy: delete resources.jobs.foo LOG.destroy: LOG.destroy: All files and directories at the following location will be deleted: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-kffu6quw2fhxnn2zkxxv33cmta/default LOG.destroy: LOG.destroy: Deleting files... LOG.destroy: Destroy complete! acceptance_test.go:942: LOG.planjson: acceptance_test.go:942: LOG.validate: LOG.validate: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle validate LOG.validate: Name: test-bundle-kffu6quw2fhxnn2zkxxv33cmta LOG.validate: Target: default LOG.validate: Workspace: LOG.validate: User: tester@databricks.com LOG.validate: Path: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-kffu6quw2fhxnn2zkxxv33cmta/default LOG.validate: LOG.validate: Validation OK! --- FAIL: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_with_depends_on.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 (0.49s) ```
TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_with_task.yml.tmpl/LOCAL_DIFF=--local/READPLAN= ✅ | main (de465e09b) ❌ | latest (v1.6.0) ❌ **main (de465e09b):** ``` === RUN TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_with_task.yml.tmpl/LOCAL_DIFF=--local/READPLAN= === PAUSE TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_with_task.yml.tmpl/LOCAL_DIFF=--local/READPLAN= === CONT TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_with_task.yml.tmpl/LOCAL_DIFF=--local/READPLAN= acceptance_test.go:1083: Error Trace: /Users/denis.bilenko/work/cli-trees/local-only/libs/testdiff/testdiff.go:22 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:1083 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:915 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:515 Error: Not equal: expected: "INPUT_CONFIG_OK\n" actual : "INPUT_CONFIG_OK\n\nExit code: 1\n" Diff: --- Expected +++ Actual @@ -2 +2,3 @@ +Exit code: 1 + Test: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_with_task.yml.tmpl/LOCAL_DIFF=--local/READPLAN= Messages: bundle/invariant/no_drift/output.txt vs /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/TestAcceptbundleinvariantno_driftDATABRICKS_BUNDLE_ENGINE=di2735537976/001/output.txt acceptance_test.go:942: LOG.config: bundle: LOG.config: name: test-bundle-2sb5lhnntjh3rdeuy6hmlj6z5e LOG.config: LOG.config: resources: LOG.config: jobs: LOG.config: foo: LOG.config: name: test-job-2sb5lhnntjh3rdeuy6hmlj6z5e LOG.config: tasks: LOG.config: - task_key: only_task LOG.config: notebook_task: LOG.config: notebook_path: /Shared/notebook LOG.config: new_cluster: LOG.config: spark_version: 13.3.x-snapshot-scala2.12 LOG.config: node_type_id: i3.xlarge LOG.config: instance_pool_id: 0123-456789-pool0 LOG.config: num_workers: 1 acceptance_test.go:942: LOG.cp: acceptance_test.go:942: LOG.deploy: LOG.deploy: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle deploy LOG.deploy: Uploading bundle files to /Workspace/Users/tester@databricks.com/.bundle/test-bundle-2sb5lhnntjh3rdeuy6hmlj6z5e/default/files... LOG.deploy: Deploying resources... LOG.deploy: Updating deployment state... LOG.deploy: Deployment complete! acceptance_test.go:942: LOG.destroy: LOG.destroy: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle destroy --auto-approve LOG.destroy: The following resources will be deleted: LOG.destroy: delete resources.jobs.foo LOG.destroy: LOG.destroy: All files and directories at the following location will be deleted: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-2sb5lhnntjh3rdeuy6hmlj6z5e/default LOG.destroy: LOG.destroy: Deleting files... LOG.destroy: Destroy complete! acceptance_test.go:942: LOG.planjson: acceptance_test.go:942: LOG.validate: LOG.validate: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle validate LOG.validate: Name: test-bundle-2sb5lhnntjh3rdeuy6hmlj6z5e LOG.validate: Target: default LOG.validate: Workspace: LOG.validate: User: tester@databricks.com LOG.validate: Path: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-2sb5lhnntjh3rdeuy6hmlj6z5e/default LOG.validate: LOG.validate: Validation OK! --- FAIL: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_with_task.yml.tmpl/LOCAL_DIFF=--local/READPLAN= (0.33s) ``` **latest (v1.6.0):** ``` === RUN TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_with_task.yml.tmpl/LOCAL_DIFF=--local/READPLAN= === PAUSE TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_with_task.yml.tmpl/LOCAL_DIFF=--local/READPLAN= === CONT TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_with_task.yml.tmpl/LOCAL_DIFF=--local/READPLAN= acceptance_test.go:1083: Error Trace: /Users/denis.bilenko/work/cli-trees/local-only/libs/testdiff/testdiff.go:22 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:1083 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:915 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:515 Error: Not equal: expected: "INPUT_CONFIG_OK\n" actual : "INPUT_CONFIG_OK\n\nExit code: 1\n" Diff: --- Expected +++ Actual @@ -2 +2,3 @@ +Exit code: 1 + Test: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_with_task.yml.tmpl/LOCAL_DIFF=--local/READPLAN= Messages: bundle/invariant/no_drift/output.txt vs /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/TestAcceptbundleinvariantno_driftDATABRICKS_BUNDLE_ENGINE=di798679444/001/output.txt acceptance_test.go:942: LOG.config: bundle: LOG.config: name: test-bundle-v2otf3xzgbarfl22uycs7g2d4a LOG.config: LOG.config: resources: LOG.config: jobs: LOG.config: foo: LOG.config: name: test-job-v2otf3xzgbarfl22uycs7g2d4a LOG.config: tasks: LOG.config: - task_key: only_task LOG.config: notebook_task: LOG.config: notebook_path: /Shared/notebook LOG.config: new_cluster: LOG.config: spark_version: 13.3.x-snapshot-scala2.12 LOG.config: node_type_id: i3.xlarge LOG.config: instance_pool_id: 0123-456789-pool0 LOG.config: num_workers: 1 acceptance_test.go:942: LOG.cp: acceptance_test.go:942: LOG.deploy: LOG.deploy: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle deploy LOG.deploy: Uploading bundle files to /Workspace/Users/tester@databricks.com/.bundle/test-bundle-v2otf3xzgbarfl22uycs7g2d4a/default/files... LOG.deploy: Deploying resources... LOG.deploy: Updating deployment state... LOG.deploy: Deployment complete! acceptance_test.go:942: LOG.destroy: LOG.destroy: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle destroy --auto-approve LOG.destroy: The following resources will be deleted: LOG.destroy: delete resources.jobs.foo LOG.destroy: LOG.destroy: All files and directories at the following location will be deleted: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-v2otf3xzgbarfl22uycs7g2d4a/default LOG.destroy: LOG.destroy: Deleting files... LOG.destroy: Destroy complete! acceptance_test.go:942: LOG.planjson: acceptance_test.go:942: LOG.validate: LOG.validate: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle validate LOG.validate: Name: test-bundle-v2otf3xzgbarfl22uycs7g2d4a LOG.validate: Target: default LOG.validate: Workspace: LOG.validate: User: tester@databricks.com LOG.validate: Path: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-v2otf3xzgbarfl22uycs7g2d4a/default LOG.validate: LOG.validate: Validation OK! --- FAIL: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_with_task.yml.tmpl/LOCAL_DIFF=--local/READPLAN= (0.44s) ```
TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_with_task.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 ✅ | main (de465e09b) ❌ | latest (v1.6.0) ❌ **main (de465e09b):** ``` === RUN TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_with_task.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 === PAUSE TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_with_task.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 === CONT TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_with_task.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 acceptance_test.go:1083: Error Trace: /Users/denis.bilenko/work/cli-trees/local-only/libs/testdiff/testdiff.go:22 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:1083 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:915 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:515 Error: Not equal: expected: "INPUT_CONFIG_OK\n" actual : "INPUT_CONFIG_OK\n\nExit code: 1\n" Diff: --- Expected +++ Actual @@ -2 +2,3 @@ +Exit code: 1 + Test: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_with_task.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 Messages: bundle/invariant/no_drift/output.txt vs /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/TestAcceptbundleinvariantno_driftDATABRICKS_BUNDLE_ENGINE=di3807771160/001/output.txt acceptance_test.go:942: LOG.config: bundle: LOG.config: name: test-bundle-hlqoimjovnhn7l67aeucvl7jaa LOG.config: LOG.config: resources: LOG.config: jobs: LOG.config: foo: LOG.config: name: test-job-hlqoimjovnhn7l67aeucvl7jaa LOG.config: tasks: LOG.config: - task_key: only_task LOG.config: notebook_task: LOG.config: notebook_path: /Shared/notebook LOG.config: new_cluster: LOG.config: spark_version: 13.3.x-snapshot-scala2.12 LOG.config: node_type_id: i3.xlarge LOG.config: instance_pool_id: 0123-456789-pool0 LOG.config: num_workers: 1 acceptance_test.go:942: LOG.cp: acceptance_test.go:942: LOG.deploy: LOG.deploy: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle deploy --plan plan.json LOG.deploy: Uploading bundle files to /Workspace/Users/tester@databricks.com/.bundle/test-bundle-hlqoimjovnhn7l67aeucvl7jaa/default/files... LOG.deploy: Deploying resources... LOG.deploy: Updating deployment state... LOG.deploy: Deployment complete! acceptance_test.go:942: LOG.destroy: LOG.destroy: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle destroy --auto-approve LOG.destroy: The following resources will be deleted: LOG.destroy: delete resources.jobs.foo LOG.destroy: LOG.destroy: All files and directories at the following location will be deleted: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-hlqoimjovnhn7l67aeucvl7jaa/default LOG.destroy: LOG.destroy: Deleting files... LOG.destroy: Destroy complete! acceptance_test.go:942: LOG.planjson: acceptance_test.go:942: LOG.validate: LOG.validate: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle validate LOG.validate: Name: test-bundle-hlqoimjovnhn7l67aeucvl7jaa LOG.validate: Target: default LOG.validate: Workspace: LOG.validate: User: tester@databricks.com LOG.validate: Path: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-hlqoimjovnhn7l67aeucvl7jaa/default LOG.validate: LOG.validate: Validation OK! --- FAIL: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_with_task.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 (0.32s) ``` **latest (v1.6.0):** ``` === RUN TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_with_task.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 === PAUSE TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_with_task.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 === CONT TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_with_task.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 acceptance_test.go:1083: Error Trace: /Users/denis.bilenko/work/cli-trees/local-only/libs/testdiff/testdiff.go:22 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:1083 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:915 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:515 Error: Not equal: expected: "INPUT_CONFIG_OK\n" actual : "INPUT_CONFIG_OK\n\nExit code: 1\n" Diff: --- Expected +++ Actual @@ -2 +2,3 @@ +Exit code: 1 + Test: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_with_task.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 Messages: bundle/invariant/no_drift/output.txt vs /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/TestAcceptbundleinvariantno_driftDATABRICKS_BUNDLE_ENGINE=di1419085076/001/output.txt acceptance_test.go:942: LOG.config: bundle: LOG.config: name: test-bundle-wiloaycpkzadncwqhjmp6jzxhe LOG.config: LOG.config: resources: LOG.config: jobs: LOG.config: foo: LOG.config: name: test-job-wiloaycpkzadncwqhjmp6jzxhe LOG.config: tasks: LOG.config: - task_key: only_task LOG.config: notebook_task: LOG.config: notebook_path: /Shared/notebook LOG.config: new_cluster: LOG.config: spark_version: 13.3.x-snapshot-scala2.12 LOG.config: node_type_id: i3.xlarge LOG.config: instance_pool_id: 0123-456789-pool0 LOG.config: num_workers: 1 acceptance_test.go:942: LOG.cp: acceptance_test.go:942: LOG.deploy: LOG.deploy: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle deploy --plan plan.json LOG.deploy: Uploading bundle files to /Workspace/Users/tester@databricks.com/.bundle/test-bundle-wiloaycpkzadncwqhjmp6jzxhe/default/files... LOG.deploy: Deploying resources... LOG.deploy: Updating deployment state... LOG.deploy: Deployment complete! acceptance_test.go:942: LOG.destroy: LOG.destroy: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle destroy --auto-approve LOG.destroy: The following resources will be deleted: LOG.destroy: delete resources.jobs.foo LOG.destroy: LOG.destroy: All files and directories at the following location will be deleted: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-wiloaycpkzadncwqhjmp6jzxhe/default LOG.destroy: LOG.destroy: Deleting files... LOG.destroy: Destroy complete! acceptance_test.go:942: LOG.planjson: acceptance_test.go:942: LOG.validate: LOG.validate: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle validate LOG.validate: Name: test-bundle-wiloaycpkzadncwqhjmp6jzxhe LOG.validate: Target: default LOG.validate: Workspace: LOG.validate: User: tester@databricks.com LOG.validate: Path: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-wiloaycpkzadncwqhjmp6jzxhe/default LOG.validate: LOG.validate: Validation OK! --- FAIL: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_with_task.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 (0.46s) ```
TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=model.yml.tmpl/LOCAL_DIFF=--local/READPLAN= ✅ | main (de465e09b) ❌ | latest (v1.6.0) ❌ **main (de465e09b):** ``` === RUN TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=model.yml.tmpl/LOCAL_DIFF=--local/READPLAN= === PAUSE TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=model.yml.tmpl/LOCAL_DIFF=--local/READPLAN= === CONT TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=model.yml.tmpl/LOCAL_DIFF=--local/READPLAN= acceptance_test.go:1083: Error Trace: /Users/denis.bilenko/work/cli-trees/local-only/libs/testdiff/testdiff.go:22 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:1083 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:915 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:515 Error: Not equal: expected: "INPUT_CONFIG_OK\n" actual : "INPUT_CONFIG_OK\n\nExit code: 1\n" Diff: --- Expected +++ Actual @@ -2 +2,3 @@ +Exit code: 1 + Test: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=model.yml.tmpl/LOCAL_DIFF=--local/READPLAN= Messages: bundle/invariant/no_drift/output.txt vs /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/TestAcceptbundleinvariantno_driftDATABRICKS_BUNDLE_ENGINE=di670003421/001/output.txt acceptance_test.go:942: LOG.config: bundle: LOG.config: name: test-bundle-ak535lyqyrd4hdqtbbgfxwjuaq LOG.config: LOG.config: resources: LOG.config: models: LOG.config: foo: LOG.config: name: test-model-ak535lyqyrd4hdqtbbgfxwjuaq acceptance_test.go:942: LOG.cp: acceptance_test.go:942: LOG.deploy: LOG.deploy: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle deploy LOG.deploy: Uploading bundle files to /Workspace/Users/tester@databricks.com/.bundle/test-bundle-ak535lyqyrd4hdqtbbgfxwjuaq/default/files... LOG.deploy: Deploying resources... LOG.deploy: Updating deployment state... LOG.deploy: Deployment complete! acceptance_test.go:942: LOG.destroy: LOG.destroy: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle destroy --auto-approve LOG.destroy: The following resources will be deleted: LOG.destroy: delete resources.models.foo LOG.destroy: LOG.destroy: All files and directories at the following location will be deleted: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-ak535lyqyrd4hdqtbbgfxwjuaq/default LOG.destroy: LOG.destroy: Deleting files... LOG.destroy: Destroy complete! acceptance_test.go:942: LOG.planjson: acceptance_test.go:942: LOG.validate: LOG.validate: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle validate LOG.validate: Name: test-bundle-ak535lyqyrd4hdqtbbgfxwjuaq LOG.validate: Target: default LOG.validate: Workspace: LOG.validate: User: tester@databricks.com LOG.validate: Path: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-ak535lyqyrd4hdqtbbgfxwjuaq/default LOG.validate: LOG.validate: Validation OK! --- FAIL: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=model.yml.tmpl/LOCAL_DIFF=--local/READPLAN= (0.32s) ``` **latest (v1.6.0):** ``` === RUN TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=model.yml.tmpl/LOCAL_DIFF=--local/READPLAN= === PAUSE TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=model.yml.tmpl/LOCAL_DIFF=--local/READPLAN= === CONT TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=model.yml.tmpl/LOCAL_DIFF=--local/READPLAN= acceptance_test.go:1083: Error Trace: /Users/denis.bilenko/work/cli-trees/local-only/libs/testdiff/testdiff.go:22 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:1083 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:915 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:515 Error: Not equal: expected: "INPUT_CONFIG_OK\n" actual : "INPUT_CONFIG_OK\n\nExit code: 1\n" Diff: --- Expected +++ Actual @@ -2 +2,3 @@ +Exit code: 1 + Test: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=model.yml.tmpl/LOCAL_DIFF=--local/READPLAN= Messages: bundle/invariant/no_drift/output.txt vs /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/TestAcceptbundleinvariantno_driftDATABRICKS_BUNDLE_ENGINE=di887185375/001/output.txt acceptance_test.go:942: LOG.config: bundle: LOG.config: name: test-bundle-erzrsrgotnfp3lweazolj3m3ii LOG.config: LOG.config: resources: LOG.config: models: LOG.config: foo: LOG.config: name: test-model-erzrsrgotnfp3lweazolj3m3ii acceptance_test.go:942: LOG.cp: acceptance_test.go:942: LOG.deploy: LOG.deploy: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle deploy LOG.deploy: Uploading bundle files to /Workspace/Users/tester@databricks.com/.bundle/test-bundle-erzrsrgotnfp3lweazolj3m3ii/default/files... LOG.deploy: Deploying resources... LOG.deploy: Updating deployment state... LOG.deploy: Deployment complete! acceptance_test.go:942: LOG.destroy: LOG.destroy: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle destroy --auto-approve LOG.destroy: The following resources will be deleted: LOG.destroy: delete resources.models.foo LOG.destroy: LOG.destroy: All files and directories at the following location will be deleted: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-erzrsrgotnfp3lweazolj3m3ii/default LOG.destroy: LOG.destroy: Deleting files... LOG.destroy: Destroy complete! acceptance_test.go:942: LOG.planjson: acceptance_test.go:942: LOG.validate: LOG.validate: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle validate LOG.validate: Name: test-bundle-erzrsrgotnfp3lweazolj3m3ii LOG.validate: Target: default LOG.validate: Workspace: LOG.validate: User: tester@databricks.com LOG.validate: Path: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-erzrsrgotnfp3lweazolj3m3ii/default LOG.validate: LOG.validate: Validation OK! --- FAIL: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=model.yml.tmpl/LOCAL_DIFF=--local/READPLAN= (0.44s) ```
TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=model.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 ✅ | main (de465e09b) ❌ | latest (v1.6.0) ❌ **main (de465e09b):** ``` === RUN TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=model.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 === PAUSE TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=model.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 === CONT TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=model.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 acceptance_test.go:1083: Error Trace: /Users/denis.bilenko/work/cli-trees/local-only/libs/testdiff/testdiff.go:22 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:1083 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:915 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:515 Error: Not equal: expected: "INPUT_CONFIG_OK\n" actual : "INPUT_CONFIG_OK\n\nExit code: 1\n" Diff: --- Expected +++ Actual @@ -2 +2,3 @@ +Exit code: 1 + Test: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=model.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 Messages: bundle/invariant/no_drift/output.txt vs /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/TestAcceptbundleinvariantno_driftDATABRICKS_BUNDLE_ENGINE=di3785797323/001/output.txt acceptance_test.go:942: LOG.config: bundle: LOG.config: name: test-bundle-ddxtghkalvhmll2yxdk6w66n3u LOG.config: LOG.config: resources: LOG.config: models: LOG.config: foo: LOG.config: name: test-model-ddxtghkalvhmll2yxdk6w66n3u acceptance_test.go:942: LOG.cp: acceptance_test.go:942: LOG.deploy: LOG.deploy: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle deploy --plan plan.json LOG.deploy: Uploading bundle files to /Workspace/Users/tester@databricks.com/.bundle/test-bundle-ddxtghkalvhmll2yxdk6w66n3u/default/files... LOG.deploy: Deploying resources... LOG.deploy: Updating deployment state... LOG.deploy: Deployment complete! acceptance_test.go:942: LOG.destroy: LOG.destroy: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle destroy --auto-approve LOG.destroy: The following resources will be deleted: LOG.destroy: delete resources.models.foo LOG.destroy: LOG.destroy: All files and directories at the following location will be deleted: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-ddxtghkalvhmll2yxdk6w66n3u/default LOG.destroy: LOG.destroy: Deleting files... LOG.destroy: Destroy complete! acceptance_test.go:942: LOG.planjson: acceptance_test.go:942: LOG.validate: LOG.validate: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle validate LOG.validate: Name: test-bundle-ddxtghkalvhmll2yxdk6w66n3u LOG.validate: Target: default LOG.validate: Workspace: LOG.validate: User: tester@databricks.com LOG.validate: Path: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-ddxtghkalvhmll2yxdk6w66n3u/default LOG.validate: LOG.validate: Validation OK! --- FAIL: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=model.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 (0.29s) ``` **latest (v1.6.0):** ``` === RUN TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=model.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 === PAUSE TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=model.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 === CONT TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=model.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 acceptance_test.go:1083: Error Trace: /Users/denis.bilenko/work/cli-trees/local-only/libs/testdiff/testdiff.go:22 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:1083 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:915 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:515 Error: Not equal: expected: "INPUT_CONFIG_OK\n" actual : "INPUT_CONFIG_OK\n\nExit code: 1\n" Diff: --- Expected +++ Actual @@ -2 +2,3 @@ +Exit code: 1 + Test: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=model.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 Messages: bundle/invariant/no_drift/output.txt vs /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/TestAcceptbundleinvariantno_driftDATABRICKS_BUNDLE_ENGINE=di3447859507/001/output.txt acceptance_test.go:942: LOG.config: bundle: LOG.config: name: test-bundle-ia4p5ln2tngr7f4jfntpdcrtce LOG.config: LOG.config: resources: LOG.config: models: LOG.config: foo: LOG.config: name: test-model-ia4p5ln2tngr7f4jfntpdcrtce acceptance_test.go:942: LOG.cp: acceptance_test.go:942: LOG.deploy: LOG.deploy: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle deploy --plan plan.json LOG.deploy: Uploading bundle files to /Workspace/Users/tester@databricks.com/.bundle/test-bundle-ia4p5ln2tngr7f4jfntpdcrtce/default/files... LOG.deploy: Deploying resources... LOG.deploy: Updating deployment state... LOG.deploy: Deployment complete! acceptance_test.go:942: LOG.destroy: LOG.destroy: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle destroy --auto-approve LOG.destroy: The following resources will be deleted: LOG.destroy: delete resources.models.foo LOG.destroy: LOG.destroy: All files and directories at the following location will be deleted: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-ia4p5ln2tngr7f4jfntpdcrtce/default LOG.destroy: LOG.destroy: Deleting files... LOG.destroy: Destroy complete! acceptance_test.go:942: LOG.planjson: acceptance_test.go:942: LOG.validate: LOG.validate: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle validate LOG.validate: Name: test-bundle-ia4p5ln2tngr7f4jfntpdcrtce LOG.validate: Target: default LOG.validate: Workspace: LOG.validate: User: tester@databricks.com LOG.validate: Path: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-ia4p5ln2tngr7f4jfntpdcrtce/default LOG.validate: LOG.validate: Validation OK! --- FAIL: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=model.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 (0.39s) ```
TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=model_with_permissions.yml.tmpl/LOCAL_DIFF=--local/READPLAN= ✅ | main (de465e09b) ❌ | latest (v1.6.0) ❌ **main (de465e09b):** ``` === RUN TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=model_with_permissions.yml.tmpl/LOCAL_DIFF=--local/READPLAN= === PAUSE TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=model_with_permissions.yml.tmpl/LOCAL_DIFF=--local/READPLAN= === CONT TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=model_with_permissions.yml.tmpl/LOCAL_DIFF=--local/READPLAN= acceptance_test.go:1083: Error Trace: /Users/denis.bilenko/work/cli-trees/local-only/libs/testdiff/testdiff.go:22 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:1083 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:915 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:515 Error: Not equal: expected: "INPUT_CONFIG_OK\n" actual : "INPUT_CONFIG_OK\n\nExit code: 1\n" Diff: --- Expected +++ Actual @@ -2 +2,3 @@ +Exit code: 1 + Test: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=model_with_permissions.yml.tmpl/LOCAL_DIFF=--local/READPLAN= Messages: bundle/invariant/no_drift/output.txt vs /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/TestAcceptbundleinvariantno_driftDATABRICKS_BUNDLE_ENGINE=di430255307/001/output.txt acceptance_test.go:942: LOG.config: bundle: LOG.config: name: test-bundle-mv7l6yjgy5b5zbc42c4sm43lqi LOG.config: LOG.config: resources: LOG.config: models: LOG.config: foo: LOG.config: name: test-model-mv7l6yjgy5b5zbc42c4sm43lqi LOG.config: permissions: LOG.config: - level: CAN_READ LOG.config: group_name: users acceptance_test.go:942: LOG.cp: acceptance_test.go:942: LOG.deploy: LOG.deploy: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle deploy LOG.deploy: Uploading bundle files to /Workspace/Users/tester@databricks.com/.bundle/test-bundle-mv7l6yjgy5b5zbc42c4sm43lqi/default/files... LOG.deploy: Deploying resources... LOG.deploy: Updating deployment state... LOG.deploy: Deployment complete! acceptance_test.go:942: LOG.destroy: LOG.destroy: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle destroy --auto-approve LOG.destroy: The following resources will be deleted: LOG.destroy: delete resources.models.foo LOG.destroy: LOG.destroy: All files and directories at the following location will be deleted: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-mv7l6yjgy5b5zbc42c4sm43lqi/default LOG.destroy: LOG.destroy: Deleting files... LOG.destroy: Destroy complete! acceptance_test.go:942: LOG.planjson: acceptance_test.go:942: LOG.validate: LOG.validate: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle validate LOG.validate: Name: test-bundle-mv7l6yjgy5b5zbc42c4sm43lqi LOG.validate: Target: default LOG.validate: Workspace: LOG.validate: User: tester@databricks.com LOG.validate: Path: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-mv7l6yjgy5b5zbc42c4sm43lqi/default LOG.validate: LOG.validate: Validation OK! --- FAIL: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=model_with_permissions.yml.tmpl/LOCAL_DIFF=--local/READPLAN= (0.31s) ``` **latest (v1.6.0):** ``` === RUN TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=model_with_permissions.yml.tmpl/LOCAL_DIFF=--local/READPLAN= === PAUSE TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=model_with_permissions.yml.tmpl/LOCAL_DIFF=--local/READPLAN= === CONT TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=model_with_permissions.yml.tmpl/LOCAL_DIFF=--local/READPLAN= acceptance_test.go:1083: Error Trace: /Users/denis.bilenko/work/cli-trees/local-only/libs/testdiff/testdiff.go:22 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:1083 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:915 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:515 Error: Not equal: expected: "INPUT_CONFIG_OK\n" actual : "INPUT_CONFIG_OK\n\nExit code: 1\n" Diff: --- Expected +++ Actual @@ -2 +2,3 @@ +Exit code: 1 + Test: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=model_with_permissions.yml.tmpl/LOCAL_DIFF=--local/READPLAN= Messages: bundle/invariant/no_drift/output.txt vs /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/TestAcceptbundleinvariantno_driftDATABRICKS_BUNDLE_ENGINE=di191548102/001/output.txt acceptance_test.go:942: LOG.config: bundle: LOG.config: name: test-bundle-rlo2gay5uvbunhwq72p467kj54 LOG.config: LOG.config: resources: LOG.config: models: LOG.config: foo: LOG.config: name: test-model-rlo2gay5uvbunhwq72p467kj54 LOG.config: permissions: LOG.config: - level: CAN_READ LOG.config: group_name: users acceptance_test.go:942: LOG.cp: acceptance_test.go:942: LOG.deploy: LOG.deploy: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle deploy LOG.deploy: Uploading bundle files to /Workspace/Users/tester@databricks.com/.bundle/test-bundle-rlo2gay5uvbunhwq72p467kj54/default/files... LOG.deploy: Deploying resources... LOG.deploy: Updating deployment state... LOG.deploy: Deployment complete! acceptance_test.go:942: LOG.destroy: LOG.destroy: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle destroy --auto-approve LOG.destroy: The following resources will be deleted: LOG.destroy: delete resources.models.foo LOG.destroy: LOG.destroy: All files and directories at the following location will be deleted: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-rlo2gay5uvbunhwq72p467kj54/default LOG.destroy: LOG.destroy: Deleting files... LOG.destroy: Destroy complete! acceptance_test.go:942: LOG.planjson: acceptance_test.go:942: LOG.validate: LOG.validate: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle validate LOG.validate: Name: test-bundle-rlo2gay5uvbunhwq72p467kj54 LOG.validate: Target: default LOG.validate: Workspace: LOG.validate: User: tester@databricks.com LOG.validate: Path: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-rlo2gay5uvbunhwq72p467kj54/default LOG.validate: LOG.validate: Validation OK! --- FAIL: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=model_with_permissions.yml.tmpl/LOCAL_DIFF=--local/READPLAN= (0.42s) ```
TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=model_with_permissions.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 ✅ | main (de465e09b) ❌ | latest (v1.6.0) ❌ **main (de465e09b):** ``` === RUN TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=model_with_permissions.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 === PAUSE TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=model_with_permissions.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 === CONT TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=model_with_permissions.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 acceptance_test.go:1083: Error Trace: /Users/denis.bilenko/work/cli-trees/local-only/libs/testdiff/testdiff.go:22 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:1083 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:915 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:515 Error: Not equal: expected: "INPUT_CONFIG_OK\n" actual : "INPUT_CONFIG_OK\n\nExit code: 1\n" Diff: --- Expected +++ Actual @@ -2 +2,3 @@ +Exit code: 1 + Test: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=model_with_permissions.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 Messages: bundle/invariant/no_drift/output.txt vs /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/TestAcceptbundleinvariantno_driftDATABRICKS_BUNDLE_ENGINE=di1812902371/001/output.txt acceptance_test.go:942: LOG.config: bundle: LOG.config: name: test-bundle-maxtfj44znhrniipygdma43elu LOG.config: LOG.config: resources: LOG.config: models: LOG.config: foo: LOG.config: name: test-model-maxtfj44znhrniipygdma43elu LOG.config: permissions: LOG.config: - level: CAN_READ LOG.config: group_name: users acceptance_test.go:942: LOG.cp: acceptance_test.go:942: LOG.deploy: LOG.deploy: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle deploy --plan plan.json LOG.deploy: Uploading bundle files to /Workspace/Users/tester@databricks.com/.bundle/test-bundle-maxtfj44znhrniipygdma43elu/default/files... LOG.deploy: Deploying resources... LOG.deploy: Updating deployment state... LOG.deploy: Deployment complete! acceptance_test.go:942: LOG.destroy: LOG.destroy: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle destroy --auto-approve LOG.destroy: The following resources will be deleted: LOG.destroy: delete resources.models.foo LOG.destroy: LOG.destroy: All files and directories at the following location will be deleted: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-maxtfj44znhrniipygdma43elu/default LOG.destroy: LOG.destroy: Deleting files... LOG.destroy: Destroy complete! acceptance_test.go:942: LOG.planjson: acceptance_test.go:942: LOG.validate: LOG.validate: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle validate LOG.validate: Name: test-bundle-maxtfj44znhrniipygdma43elu LOG.validate: Target: default LOG.validate: Workspace: LOG.validate: User: tester@databricks.com LOG.validate: Path: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-maxtfj44znhrniipygdma43elu/default LOG.validate: LOG.validate: Validation OK! --- FAIL: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=model_with_permissions.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 (0.29s) ``` **latest (v1.6.0):** ``` === RUN TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=model_with_permissions.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 === PAUSE TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=model_with_permissions.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 === CONT TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=model_with_permissions.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 acceptance_test.go:1083: Error Trace: /Users/denis.bilenko/work/cli-trees/local-only/libs/testdiff/testdiff.go:22 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:1083 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:915 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:515 Error: Not equal: expected: "INPUT_CONFIG_OK\n" actual : "INPUT_CONFIG_OK\n\nExit code: 1\n" Diff: --- Expected +++ Actual @@ -2 +2,3 @@ +Exit code: 1 + Test: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=model_with_permissions.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 Messages: bundle/invariant/no_drift/output.txt vs /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/TestAcceptbundleinvariantno_driftDATABRICKS_BUNDLE_ENGINE=di1287975288/001/output.txt acceptance_test.go:942: LOG.config: bundle: LOG.config: name: test-bundle-dxyfbkm2efhl7oxe34z5uqucqm LOG.config: LOG.config: resources: LOG.config: models: LOG.config: foo: LOG.config: name: test-model-dxyfbkm2efhl7oxe34z5uqucqm LOG.config: permissions: LOG.config: - level: CAN_READ LOG.config: group_name: users acceptance_test.go:942: LOG.cp: acceptance_test.go:942: LOG.deploy: LOG.deploy: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle deploy --plan plan.json LOG.deploy: Uploading bundle files to /Workspace/Users/tester@databricks.com/.bundle/test-bundle-dxyfbkm2efhl7oxe34z5uqucqm/default/files... LOG.deploy: Deploying resources... LOG.deploy: Updating deployment state... LOG.deploy: Deployment complete! acceptance_test.go:942: LOG.destroy: LOG.destroy: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle destroy --auto-approve LOG.destroy: The following resources will be deleted: LOG.destroy: delete resources.models.foo LOG.destroy: LOG.destroy: All files and directories at the following location will be deleted: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-dxyfbkm2efhl7oxe34z5uqucqm/default LOG.destroy: LOG.destroy: Deleting files... LOG.destroy: Destroy complete! acceptance_test.go:942: LOG.planjson: acceptance_test.go:942: LOG.validate: LOG.validate: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle validate LOG.validate: Name: test-bundle-dxyfbkm2efhl7oxe34z5uqucqm LOG.validate: Target: default LOG.validate: Workspace: LOG.validate: User: tester@databricks.com LOG.validate: Path: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-dxyfbkm2efhl7oxe34z5uqucqm/default LOG.validate: LOG.validate: Validation OK! --- FAIL: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=model_with_permissions.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 (0.44s) ```
TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=model_serving_endpoint.yml.tmpl/LOCAL_DIFF=--local/READPLAN= ✅ | main (de465e09b) ❌ | latest (v1.6.0) ❌ **main (de465e09b):** ``` === RUN TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=model_serving_endpoint.yml.tmpl/LOCAL_DIFF=--local/READPLAN= === PAUSE TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=model_serving_endpoint.yml.tmpl/LOCAL_DIFF=--local/READPLAN= === CONT TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=model_serving_endpoint.yml.tmpl/LOCAL_DIFF=--local/READPLAN= acceptance_test.go:1083: Error Trace: /Users/denis.bilenko/work/cli-trees/local-only/libs/testdiff/testdiff.go:22 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:1083 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:915 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:515 Error: Not equal: expected: "INPUT_CONFIG_OK\n" actual : "INPUT_CONFIG_OK\n\nExit code: 1\n" Diff: --- Expected +++ Actual @@ -2 +2,3 @@ +Exit code: 1 + Test: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=model_serving_endpoint.yml.tmpl/LOCAL_DIFF=--local/READPLAN= Messages: bundle/invariant/no_drift/output.txt vs /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/TestAcceptbundleinvariantno_driftDATABRICKS_BUNDLE_ENGINE=di750009994/001/output.txt acceptance_test.go:942: LOG.config: bundle: LOG.config: name: test-bundle-zcrbl5r46fcfpfu342dkjahgae LOG.config: LOG.config: resources: LOG.config: model_serving_endpoints: LOG.config: foo: LOG.config: name: test-endpoint-zcrbl5r46fcfpfu342dkjahgae LOG.config: permissions: LOG.config: - level: CAN_VIEW LOG.config: group_name: users acceptance_test.go:942: LOG.cp: acceptance_test.go:942: LOG.deploy: LOG.deploy: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle deploy LOG.deploy: Uploading bundle files to /Workspace/Users/tester@databricks.com/.bundle/test-bundle-zcrbl5r46fcfpfu342dkjahgae/default/files... LOG.deploy: Deploying resources... LOG.deploy: Updating deployment state... LOG.deploy: Deployment complete! acceptance_test.go:942: LOG.destroy: LOG.destroy: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle destroy --auto-approve LOG.destroy: The following resources will be deleted: LOG.destroy: delete resources.model_serving_endpoints.foo LOG.destroy: LOG.destroy: All files and directories at the following location will be deleted: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-zcrbl5r46fcfpfu342dkjahgae/default LOG.destroy: LOG.destroy: Deleting files... LOG.destroy: Destroy complete! acceptance_test.go:942: LOG.planjson: acceptance_test.go:942: LOG.validate: LOG.validate: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle validate LOG.validate: Name: test-bundle-zcrbl5r46fcfpfu342dkjahgae LOG.validate: Target: default LOG.validate: Workspace: LOG.validate: User: tester@databricks.com LOG.validate: Path: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-zcrbl5r46fcfpfu342dkjahgae/default LOG.validate: LOG.validate: Validation OK! --- FAIL: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=model_serving_endpoint.yml.tmpl/LOCAL_DIFF=--local/READPLAN= (0.33s) ``` **latest (v1.6.0):** ``` === RUN TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=model_serving_endpoint.yml.tmpl/LOCAL_DIFF=--local/READPLAN= === PAUSE TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=model_serving_endpoint.yml.tmpl/LOCAL_DIFF=--local/READPLAN= === CONT TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=model_serving_endpoint.yml.tmpl/LOCAL_DIFF=--local/READPLAN= acceptance_test.go:1083: Error Trace: /Users/denis.bilenko/work/cli-trees/local-only/libs/testdiff/testdiff.go:22 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:1083 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:915 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:515 Error: Not equal: expected: "INPUT_CONFIG_OK\n" actual : "INPUT_CONFIG_OK\n\nExit code: 1\n" Diff: --- Expected +++ Actual @@ -2 +2,3 @@ +Exit code: 1 + Test: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=model_serving_endpoint.yml.tmpl/LOCAL_DIFF=--local/READPLAN= Messages: bundle/invariant/no_drift/output.txt vs /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/TestAcceptbundleinvariantno_driftDATABRICKS_BUNDLE_ENGINE=di798460892/001/output.txt acceptance_test.go:942: LOG.config: bundle: LOG.config: name: test-bundle-p7nagrn6nvclbei3bmgzkh6q6y LOG.config: LOG.config: resources: LOG.config: model_serving_endpoints: LOG.config: foo: LOG.config: name: test-endpoint-p7nagrn6nvclbei3bmgzkh6q6y LOG.config: permissions: LOG.config: - level: CAN_VIEW LOG.config: group_name: users acceptance_test.go:942: LOG.cp: acceptance_test.go:942: LOG.deploy: LOG.deploy: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle deploy LOG.deploy: Uploading bundle files to /Workspace/Users/tester@databricks.com/.bundle/test-bundle-p7nagrn6nvclbei3bmgzkh6q6y/default/files... LOG.deploy: Deploying resources... LOG.deploy: Updating deployment state... LOG.deploy: Deployment complete! acceptance_test.go:942: LOG.destroy: LOG.destroy: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle destroy --auto-approve LOG.destroy: The following resources will be deleted: LOG.destroy: delete resources.model_serving_endpoints.foo LOG.destroy: LOG.destroy: All files and directories at the following location will be deleted: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-p7nagrn6nvclbei3bmgzkh6q6y/default LOG.destroy: LOG.destroy: Deleting files... LOG.destroy: Destroy complete! acceptance_test.go:942: LOG.planjson: acceptance_test.go:942: LOG.validate: LOG.validate: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle validate LOG.validate: Name: test-bundle-p7nagrn6nvclbei3bmgzkh6q6y LOG.validate: Target: default LOG.validate: Workspace: LOG.validate: User: tester@databricks.com LOG.validate: Path: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-p7nagrn6nvclbei3bmgzkh6q6y/default LOG.validate: LOG.validate: Validation OK! --- FAIL: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=model_serving_endpoint.yml.tmpl/LOCAL_DIFF=--local/READPLAN= (0.35s) ```
TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=model_serving_endpoint.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 ✅ | main (de465e09b) ❌ | latest (v1.6.0) ❌ **main (de465e09b):** ``` === RUN TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=model_serving_endpoint.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 === PAUSE TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=model_serving_endpoint.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 === CONT TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=model_serving_endpoint.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 acceptance_test.go:1083: Error Trace: /Users/denis.bilenko/work/cli-trees/local-only/libs/testdiff/testdiff.go:22 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:1083 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:915 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:515 Error: Not equal: expected: "INPUT_CONFIG_OK\n" actual : "INPUT_CONFIG_OK\n\nExit code: 1\n" Diff: --- Expected +++ Actual @@ -2 +2,3 @@ +Exit code: 1 + Test: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=model_serving_endpoint.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 Messages: bundle/invariant/no_drift/output.txt vs /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/TestAcceptbundleinvariantno_driftDATABRICKS_BUNDLE_ENGINE=di705603193/001/output.txt acceptance_test.go:942: LOG.config: bundle: LOG.config: name: test-bundle-43gmgiedbrabdfyhgjzga6go7m LOG.config: LOG.config: resources: LOG.config: model_serving_endpoints: LOG.config: foo: LOG.config: name: test-endpoint-43gmgiedbrabdfyhgjzga6go7m LOG.config: permissions: LOG.config: - level: CAN_VIEW LOG.config: group_name: users acceptance_test.go:942: LOG.cp: acceptance_test.go:942: LOG.deploy: LOG.deploy: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle deploy --plan plan.json LOG.deploy: Uploading bundle files to /Workspace/Users/tester@databricks.com/.bundle/test-bundle-43gmgiedbrabdfyhgjzga6go7m/default/files... LOG.deploy: Deploying resources... LOG.deploy: Updating deployment state... LOG.deploy: Deployment complete! acceptance_test.go:942: LOG.destroy: LOG.destroy: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle destroy --auto-approve LOG.destroy: The following resources will be deleted: LOG.destroy: delete resources.model_serving_endpoints.foo LOG.destroy: LOG.destroy: All files and directories at the following location will be deleted: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-43gmgiedbrabdfyhgjzga6go7m/default LOG.destroy: LOG.destroy: Deleting files... LOG.destroy: Destroy complete! acceptance_test.go:942: LOG.planjson: acceptance_test.go:942: LOG.validate: LOG.validate: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle validate LOG.validate: Name: test-bundle-43gmgiedbrabdfyhgjzga6go7m LOG.validate: Target: default LOG.validate: Workspace: LOG.validate: User: tester@databricks.com LOG.validate: Path: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-43gmgiedbrabdfyhgjzga6go7m/default LOG.validate: LOG.validate: Validation OK! --- FAIL: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=model_serving_endpoint.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 (0.30s) ``` **latest (v1.6.0):** ``` === RUN TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=model_serving_endpoint.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 === PAUSE TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=model_serving_endpoint.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 === CONT TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=model_serving_endpoint.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 acceptance_test.go:1083: Error Trace: /Users/denis.bilenko/work/cli-trees/local-only/libs/testdiff/testdiff.go:22 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:1083 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:915 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:515 Error: Not equal: expected: "INPUT_CONFIG_OK\n" actual : "INPUT_CONFIG_OK\n\nExit code: 1\n" Diff: --- Expected +++ Actual @@ -2 +2,3 @@ +Exit code: 1 + Test: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=model_serving_endpoint.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 Messages: bundle/invariant/no_drift/output.txt vs /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/TestAcceptbundleinvariantno_driftDATABRICKS_BUNDLE_ENGINE=di721346657/001/output.txt acceptance_test.go:942: LOG.config: bundle: LOG.config: name: test-bundle-qp5jfd4fgnhmxiraev7ou2wcpy LOG.config: LOG.config: resources: LOG.config: model_serving_endpoints: LOG.config: foo: LOG.config: name: test-endpoint-qp5jfd4fgnhmxiraev7ou2wcpy LOG.config: permissions: LOG.config: - level: CAN_VIEW LOG.config: group_name: users acceptance_test.go:942: LOG.cp: acceptance_test.go:942: LOG.deploy: LOG.deploy: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle deploy --plan plan.json LOG.deploy: Uploading bundle files to /Workspace/Users/tester@databricks.com/.bundle/test-bundle-qp5jfd4fgnhmxiraev7ou2wcpy/default/files... LOG.deploy: Deploying resources... LOG.deploy: Updating deployment state... LOG.deploy: Deployment complete! acceptance_test.go:942: LOG.destroy: LOG.destroy: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle destroy --auto-approve LOG.destroy: The following resources will be deleted: LOG.destroy: delete resources.model_serving_endpoints.foo LOG.destroy: LOG.destroy: All files and directories at the following location will be deleted: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-qp5jfd4fgnhmxiraev7ou2wcpy/default LOG.destroy: LOG.destroy: Deleting files... LOG.destroy: Destroy complete! acceptance_test.go:942: LOG.planjson: acceptance_test.go:942: LOG.validate: LOG.validate: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle validate LOG.validate: Name: test-bundle-qp5jfd4fgnhmxiraev7ou2wcpy LOG.validate: Target: default LOG.validate: Workspace: LOG.validate: User: tester@databricks.com LOG.validate: Path: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-qp5jfd4fgnhmxiraev7ou2wcpy/default LOG.validate: LOG.validate: Validation OK! --- FAIL: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=model_serving_endpoint.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 (0.39s) ```
TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=pipeline.yml.tmpl/LOCAL_DIFF=--local/READPLAN= ✅ | main (de465e09b) ❌ | latest (v1.6.0) ❌ **main (de465e09b):** ``` === RUN TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=pipeline.yml.tmpl/LOCAL_DIFF=--local/READPLAN= === PAUSE TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=pipeline.yml.tmpl/LOCAL_DIFF=--local/READPLAN= === CONT TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=pipeline.yml.tmpl/LOCAL_DIFF=--local/READPLAN= acceptance_test.go:1083: Error Trace: /Users/denis.bilenko/work/cli-trees/local-only/libs/testdiff/testdiff.go:22 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:1083 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:915 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:515 Error: Not equal: expected: "INPUT_CONFIG_OK\n" actual : "INPUT_CONFIG_OK\n\nExit code: 1\n" Diff: --- Expected +++ Actual @@ -2 +2,3 @@ +Exit code: 1 + Test: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=pipeline.yml.tmpl/LOCAL_DIFF=--local/READPLAN= Messages: bundle/invariant/no_drift/output.txt vs /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/TestAcceptbundleinvariantno_driftDATABRICKS_BUNDLE_ENGINE=di3441902932/001/output.txt acceptance_test.go:942: LOG.config: bundle: LOG.config: name: test-bundle-6hywqri765dq3fe7vaf2lhptvu LOG.config: LOG.config: resources: LOG.config: pipelines: LOG.config: foo: LOG.config: name: test-pipeline-6hywqri765dq3fe7vaf2lhptvu LOG.config: libraries: LOG.config: - file: LOG.config: path: pipeline.py LOG.config: permissions: LOG.config: - level: CAN_VIEW LOG.config: group_name: users acceptance_test.go:942: LOG.cp: acceptance_test.go:942: LOG.deploy: LOG.deploy: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle deploy LOG.deploy: Uploading bundle files to /Workspace/Users/tester@databricks.com/.bundle/test-bundle-6hywqri765dq3fe7vaf2lhptvu/default/files... LOG.deploy: Deploying resources... LOG.deploy: Updating deployment state... LOG.deploy: Deployment complete! acceptance_test.go:942: LOG.destroy: LOG.destroy: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle destroy --auto-approve LOG.destroy: The following resources will be deleted: LOG.destroy: delete resources.pipelines.foo LOG.destroy: LOG.destroy: This action will result in the deletion of the following Lakeflow Spark Declarative Pipelines along with the LOG.destroy: Streaming Tables (STs) and Materialized Views (MVs) managed by them: LOG.destroy: delete resources.pipelines.foo LOG.destroy: LOG.destroy: All files and directories at the following location will be deleted: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-6hywqri765dq3fe7vaf2lhptvu/default LOG.destroy: LOG.destroy: Deleting files... LOG.destroy: Destroy complete! acceptance_test.go:942: LOG.planjson: acceptance_test.go:942: LOG.validate: LOG.validate: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle validate LOG.validate: Name: test-bundle-6hywqri765dq3fe7vaf2lhptvu LOG.validate: Target: default LOG.validate: Workspace: LOG.validate: User: tester@databricks.com LOG.validate: Path: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-6hywqri765dq3fe7vaf2lhptvu/default LOG.validate: LOG.validate: Validation OK! --- FAIL: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=pipeline.yml.tmpl/LOCAL_DIFF=--local/READPLAN= (0.32s) ``` **latest (v1.6.0):** ``` === RUN TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=pipeline.yml.tmpl/LOCAL_DIFF=--local/READPLAN= === PAUSE TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=pipeline.yml.tmpl/LOCAL_DIFF=--local/READPLAN= === CONT TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=pipeline.yml.tmpl/LOCAL_DIFF=--local/READPLAN= acceptance_test.go:1083: Error Trace: /Users/denis.bilenko/work/cli-trees/local-only/libs/testdiff/testdiff.go:22 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:1083 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:915 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:515 Error: Not equal: expected: "INPUT_CONFIG_OK\n" actual : "INPUT_CONFIG_OK\n\nExit code: 1\n" Diff: --- Expected +++ Actual @@ -2 +2,3 @@ +Exit code: 1 + Test: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=pipeline.yml.tmpl/LOCAL_DIFF=--local/READPLAN= Messages: bundle/invariant/no_drift/output.txt vs /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/TestAcceptbundleinvariantno_driftDATABRICKS_BUNDLE_ENGINE=di1544987300/001/output.txt acceptance_test.go:942: LOG.config: bundle: LOG.config: name: test-bundle-45xezbpcl5bnda7izg5vkwx6cu LOG.config: LOG.config: resources: LOG.config: pipelines: LOG.config: foo: LOG.config: name: test-pipeline-45xezbpcl5bnda7izg5vkwx6cu LOG.config: libraries: LOG.config: - file: LOG.config: path: pipeline.py LOG.config: permissions: LOG.config: - level: CAN_VIEW LOG.config: group_name: users acceptance_test.go:942: LOG.cp: acceptance_test.go:942: LOG.deploy: LOG.deploy: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle deploy LOG.deploy: Uploading bundle files to /Workspace/Users/tester@databricks.com/.bundle/test-bundle-45xezbpcl5bnda7izg5vkwx6cu/default/files... LOG.deploy: Deploying resources... LOG.deploy: Updating deployment state... LOG.deploy: Deployment complete! acceptance_test.go:942: LOG.destroy: LOG.destroy: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle destroy --auto-approve LOG.destroy: The following resources will be deleted: LOG.destroy: delete resources.pipelines.foo LOG.destroy: LOG.destroy: This action will result in the deletion of the following Lakeflow Spark Declarative Pipelines along with the LOG.destroy: Streaming Tables (STs) and Materialized Views (MVs) managed by them: LOG.destroy: delete resources.pipelines.foo LOG.destroy: LOG.destroy: All files and directories at the following location will be deleted: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-45xezbpcl5bnda7izg5vkwx6cu/default LOG.destroy: LOG.destroy: Deleting files... LOG.destroy: Destroy complete! acceptance_test.go:942: LOG.planjson: acceptance_test.go:942: LOG.validate: LOG.validate: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle validate LOG.validate: Name: test-bundle-45xezbpcl5bnda7izg5vkwx6cu LOG.validate: Target: default LOG.validate: Workspace: LOG.validate: User: tester@databricks.com LOG.validate: Path: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-45xezbpcl5bnda7izg5vkwx6cu/default LOG.validate: LOG.validate: Validation OK! --- FAIL: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=pipeline.yml.tmpl/LOCAL_DIFF=--local/READPLAN= (0.44s) ```
TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=pipeline.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 ✅ | main (de465e09b) ❌ | latest (v1.6.0) ❌ **main (de465e09b):** ``` === RUN TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=pipeline.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 === PAUSE TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=pipeline.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 === CONT TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=pipeline.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 acceptance_test.go:1083: Error Trace: /Users/denis.bilenko/work/cli-trees/local-only/libs/testdiff/testdiff.go:22 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:1083 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:915 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:515 Error: Not equal: expected: "INPUT_CONFIG_OK\n" actual : "INPUT_CONFIG_OK\n\nExit code: 1\n" Diff: --- Expected +++ Actual @@ -2 +2,3 @@ +Exit code: 1 + Test: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=pipeline.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 Messages: bundle/invariant/no_drift/output.txt vs /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/TestAcceptbundleinvariantno_driftDATABRICKS_BUNDLE_ENGINE=di2980106864/001/output.txt acceptance_test.go:942: LOG.config: bundle: LOG.config: name: test-bundle-2lv2qc36l5hz5jl2zrvnaolee4 LOG.config: LOG.config: resources: LOG.config: pipelines: LOG.config: foo: LOG.config: name: test-pipeline-2lv2qc36l5hz5jl2zrvnaolee4 LOG.config: libraries: LOG.config: - file: LOG.config: path: pipeline.py LOG.config: permissions: LOG.config: - level: CAN_VIEW LOG.config: group_name: users acceptance_test.go:942: LOG.cp: acceptance_test.go:942: LOG.deploy: LOG.deploy: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle deploy --plan plan.json LOG.deploy: Uploading bundle files to /Workspace/Users/tester@databricks.com/.bundle/test-bundle-2lv2qc36l5hz5jl2zrvnaolee4/default/files... LOG.deploy: Deploying resources... LOG.deploy: Updating deployment state... LOG.deploy: Deployment complete! acceptance_test.go:942: LOG.destroy: LOG.destroy: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle destroy --auto-approve LOG.destroy: The following resources will be deleted: LOG.destroy: delete resources.pipelines.foo LOG.destroy: LOG.destroy: This action will result in the deletion of the following Lakeflow Spark Declarative Pipelines along with the LOG.destroy: Streaming Tables (STs) and Materialized Views (MVs) managed by them: LOG.destroy: delete resources.pipelines.foo LOG.destroy: LOG.destroy: All files and directories at the following location will be deleted: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-2lv2qc36l5hz5jl2zrvnaolee4/default LOG.destroy: LOG.destroy: Deleting files... LOG.destroy: Destroy complete! acceptance_test.go:942: LOG.planjson: acceptance_test.go:942: LOG.validate: LOG.validate: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle validate LOG.validate: Name: test-bundle-2lv2qc36l5hz5jl2zrvnaolee4 LOG.validate: Target: default LOG.validate: Workspace: LOG.validate: User: tester@databricks.com LOG.validate: Path: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-2lv2qc36l5hz5jl2zrvnaolee4/default LOG.validate: LOG.validate: Validation OK! --- FAIL: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=pipeline.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 (0.31s) ``` **latest (v1.6.0):** ``` === RUN TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=pipeline.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 === PAUSE TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=pipeline.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 === CONT TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=pipeline.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 acceptance_test.go:1083: Error Trace: /Users/denis.bilenko/work/cli-trees/local-only/libs/testdiff/testdiff.go:22 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:1083 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:915 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:515 Error: Not equal: expected: "INPUT_CONFIG_OK\n" actual : "INPUT_CONFIG_OK\n\nExit code: 1\n" Diff: --- Expected +++ Actual @@ -2 +2,3 @@ +Exit code: 1 + Test: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=pipeline.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 Messages: bundle/invariant/no_drift/output.txt vs /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/TestAcceptbundleinvariantno_driftDATABRICKS_BUNDLE_ENGINE=di77076419/001/output.txt acceptance_test.go:942: LOG.config: bundle: LOG.config: name: test-bundle-yjbqmxigb5dwdgl2tou4k4elcy LOG.config: LOG.config: resources: LOG.config: pipelines: LOG.config: foo: LOG.config: name: test-pipeline-yjbqmxigb5dwdgl2tou4k4elcy LOG.config: libraries: LOG.config: - file: LOG.config: path: pipeline.py LOG.config: permissions: LOG.config: - level: CAN_VIEW LOG.config: group_name: users acceptance_test.go:942: LOG.cp: acceptance_test.go:942: LOG.deploy: LOG.deploy: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle deploy --plan plan.json LOG.deploy: Uploading bundle files to /Workspace/Users/tester@databricks.com/.bundle/test-bundle-yjbqmxigb5dwdgl2tou4k4elcy/default/files... LOG.deploy: Deploying resources... LOG.deploy: Updating deployment state... LOG.deploy: Deployment complete! acceptance_test.go:942: LOG.destroy: LOG.destroy: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle destroy --auto-approve LOG.destroy: The following resources will be deleted: LOG.destroy: delete resources.pipelines.foo LOG.destroy: LOG.destroy: This action will result in the deletion of the following Lakeflow Spark Declarative Pipelines along with the LOG.destroy: Streaming Tables (STs) and Materialized Views (MVs) managed by them: LOG.destroy: delete resources.pipelines.foo LOG.destroy: LOG.destroy: All files and directories at the following location will be deleted: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-yjbqmxigb5dwdgl2tou4k4elcy/default LOG.destroy: LOG.destroy: Deleting files... LOG.destroy: Destroy complete! acceptance_test.go:942: LOG.planjson: acceptance_test.go:942: LOG.validate: LOG.validate: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle validate LOG.validate: Name: test-bundle-yjbqmxigb5dwdgl2tou4k4elcy LOG.validate: Target: default LOG.validate: Workspace: LOG.validate: User: tester@databricks.com LOG.validate: Path: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-yjbqmxigb5dwdgl2tou4k4elcy/default LOG.validate: LOG.validate: Validation OK! --- FAIL: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=pipeline.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 (0.47s) ```
TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=pipeline_apply_policy_default_values.yml.tmpl/LOCAL_DIFF=--local/READPLAN= ✅ | main (de465e09b) ❌ | latest (v1.6.0) ❌ **main (de465e09b):** ``` === RUN TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=pipeline_apply_policy_default_values.yml.tmpl/LOCAL_DIFF=--local/READPLAN= === PAUSE TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=pipeline_apply_policy_default_values.yml.tmpl/LOCAL_DIFF=--local/READPLAN= === CONT TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=pipeline_apply_policy_default_values.yml.tmpl/LOCAL_DIFF=--local/READPLAN= acceptance_test.go:1083: Error Trace: /Users/denis.bilenko/work/cli-trees/local-only/libs/testdiff/testdiff.go:22 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:1083 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:915 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:515 Error: Not equal: expected: "INPUT_CONFIG_OK\n" actual : "INPUT_CONFIG_OK\n\nExit code: 1\n" Diff: --- Expected +++ Actual @@ -2 +2,3 @@ +Exit code: 1 + Test: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=pipeline_apply_policy_default_values.yml.tmpl/LOCAL_DIFF=--local/READPLAN= Messages: bundle/invariant/no_drift/output.txt vs /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/TestAcceptbundleinvariantno_driftDATABRICKS_BUNDLE_ENGINE=di509496018/001/output.txt acceptance_test.go:942: LOG.config: bundle: LOG.config: name: test-bundle-qd4ucyl6cfcnlolwnn2ipxs75y LOG.config: LOG.config: resources: LOG.config: pipelines: LOG.config: foo: LOG.config: name: test-pipeline-qd4ucyl6cfcnlolwnn2ipxs75y LOG.config: clusters: LOG.config: - node_type_id: i3.xlarge LOG.config: num_workers: 1 LOG.config: apply_policy_default_values: true LOG.config: libraries: LOG.config: - file: LOG.config: path: pipeline.py acceptance_test.go:942: LOG.cp: acceptance_test.go:942: LOG.deploy: LOG.deploy: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle deploy LOG.deploy: Uploading bundle files to /Workspace/Users/tester@databricks.com/.bundle/test-bundle-qd4ucyl6cfcnlolwnn2ipxs75y/default/files... LOG.deploy: Deploying resources... LOG.deploy: Updating deployment state... LOG.deploy: Deployment complete! acceptance_test.go:942: LOG.destroy: LOG.destroy: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle destroy --auto-approve LOG.destroy: The following resources will be deleted: LOG.destroy: delete resources.pipelines.foo LOG.destroy: LOG.destroy: This action will result in the deletion of the following Lakeflow Spark Declarative Pipelines along with the LOG.destroy: Streaming Tables (STs) and Materialized Views (MVs) managed by them: LOG.destroy: delete resources.pipelines.foo LOG.destroy: LOG.destroy: All files and directories at the following location will be deleted: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-qd4ucyl6cfcnlolwnn2ipxs75y/default LOG.destroy: LOG.destroy: Deleting files... LOG.destroy: Destroy complete! acceptance_test.go:942: LOG.planjson: acceptance_test.go:942: LOG.validate: LOG.validate: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle validate LOG.validate: Name: test-bundle-qd4ucyl6cfcnlolwnn2ipxs75y LOG.validate: Target: default LOG.validate: Workspace: LOG.validate: User: tester@databricks.com LOG.validate: Path: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-qd4ucyl6cfcnlolwnn2ipxs75y/default LOG.validate: LOG.validate: Validation OK! --- FAIL: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=pipeline_apply_policy_default_values.yml.tmpl/LOCAL_DIFF=--local/READPLAN= (0.34s) ``` **latest (v1.6.0):** ``` === RUN TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=pipeline_apply_policy_default_values.yml.tmpl/LOCAL_DIFF=--local/READPLAN= === PAUSE TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=pipeline_apply_policy_default_values.yml.tmpl/LOCAL_DIFF=--local/READPLAN= === CONT TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=pipeline_apply_policy_default_values.yml.tmpl/LOCAL_DIFF=--local/READPLAN= acceptance_test.go:1083: Error Trace: /Users/denis.bilenko/work/cli-trees/local-only/libs/testdiff/testdiff.go:22 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:1083 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:915 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:515 Error: Not equal: expected: "INPUT_CONFIG_OK\n" actual : "INPUT_CONFIG_OK\n\nExit code: 1\n" Diff: --- Expected +++ Actual @@ -2 +2,3 @@ +Exit code: 1 + Test: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=pipeline_apply_policy_default_values.yml.tmpl/LOCAL_DIFF=--local/READPLAN= Messages: bundle/invariant/no_drift/output.txt vs /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/TestAcceptbundleinvariantno_driftDATABRICKS_BUNDLE_ENGINE=di2790539760/001/output.txt acceptance_test.go:942: LOG.config: bundle: LOG.config: name: test-bundle-pcut66yc3vb25ju4yhjesxd3li LOG.config: LOG.config: resources: LOG.config: pipelines: LOG.config: foo: LOG.config: name: test-pipeline-pcut66yc3vb25ju4yhjesxd3li LOG.config: clusters: LOG.config: - node_type_id: i3.xlarge LOG.config: num_workers: 1 LOG.config: apply_policy_default_values: true LOG.config: libraries: LOG.config: - file: LOG.config: path: pipeline.py acceptance_test.go:942: LOG.cp: acceptance_test.go:942: LOG.deploy: LOG.deploy: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle deploy LOG.deploy: Uploading bundle files to /Workspace/Users/tester@databricks.com/.bundle/test-bundle-pcut66yc3vb25ju4yhjesxd3li/default/files... LOG.deploy: Deploying resources... LOG.deploy: Updating deployment state... LOG.deploy: Deployment complete! acceptance_test.go:942: LOG.destroy: LOG.destroy: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle destroy --auto-approve LOG.destroy: The following resources will be deleted: LOG.destroy: delete resources.pipelines.foo LOG.destroy: LOG.destroy: This action will result in the deletion of the following Lakeflow Spark Declarative Pipelines along with the LOG.destroy: Streaming Tables (STs) and Materialized Views (MVs) managed by them: LOG.destroy: delete resources.pipelines.foo LOG.destroy: LOG.destroy: All files and directories at the following location will be deleted: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-pcut66yc3vb25ju4yhjesxd3li/default LOG.destroy: LOG.destroy: Deleting files... LOG.destroy: Destroy complete! acceptance_test.go:942: LOG.planjson: acceptance_test.go:942: LOG.validate: LOG.validate: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle validate LOG.validate: Name: test-bundle-pcut66yc3vb25ju4yhjesxd3li LOG.validate: Target: default LOG.validate: Workspace: LOG.validate: User: tester@databricks.com LOG.validate: Path: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-pcut66yc3vb25ju4yhjesxd3li/default LOG.validate: LOG.validate: Validation OK! --- FAIL: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=pipeline_apply_policy_default_values.yml.tmpl/LOCAL_DIFF=--local/READPLAN= (0.34s) ```
TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=pipeline_apply_policy_default_values.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 ✅ | main (de465e09b) ❌ | latest (v1.6.0) ❌ **main (de465e09b):** ``` === RUN TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=pipeline_apply_policy_default_values.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 === PAUSE TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=pipeline_apply_policy_default_values.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 === CONT TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=pipeline_apply_policy_default_values.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 acceptance_test.go:1083: Error Trace: /Users/denis.bilenko/work/cli-trees/local-only/libs/testdiff/testdiff.go:22 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:1083 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:915 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:515 Error: Not equal: expected: "INPUT_CONFIG_OK\n" actual : "INPUT_CONFIG_OK\n\nExit code: 1\n" Diff: --- Expected +++ Actual @@ -2 +2,3 @@ +Exit code: 1 + Test: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=pipeline_apply_policy_default_values.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 Messages: bundle/invariant/no_drift/output.txt vs /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/TestAcceptbundleinvariantno_driftDATABRICKS_BUNDLE_ENGINE=di3356415784/001/output.txt acceptance_test.go:942: LOG.config: bundle: LOG.config: name: test-bundle-do6sinvuybb73pcjpzg7erjj3a LOG.config: LOG.config: resources: LOG.config: pipelines: LOG.config: foo: LOG.config: name: test-pipeline-do6sinvuybb73pcjpzg7erjj3a LOG.config: clusters: LOG.config: - node_type_id: i3.xlarge LOG.config: num_workers: 1 LOG.config: apply_policy_default_values: true LOG.config: libraries: LOG.config: - file: LOG.config: path: pipeline.py acceptance_test.go:942: LOG.cp: acceptance_test.go:942: LOG.deploy: LOG.deploy: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle deploy --plan plan.json LOG.deploy: Uploading bundle files to /Workspace/Users/tester@databricks.com/.bundle/test-bundle-do6sinvuybb73pcjpzg7erjj3a/default/files... LOG.deploy: Deploying resources... LOG.deploy: Updating deployment state... LOG.deploy: Deployment complete! acceptance_test.go:942: LOG.destroy: LOG.destroy: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle destroy --auto-approve LOG.destroy: The following resources will be deleted: LOG.destroy: delete resources.pipelines.foo LOG.destroy: LOG.destroy: This action will result in the deletion of the following Lakeflow Spark Declarative Pipelines along with the LOG.destroy: Streaming Tables (STs) and Materialized Views (MVs) managed by them: LOG.destroy: delete resources.pipelines.foo LOG.destroy: LOG.destroy: All files and directories at the following location will be deleted: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-do6sinvuybb73pcjpzg7erjj3a/default LOG.destroy: LOG.destroy: Deleting files... LOG.destroy: Destroy complete! acceptance_test.go:942: LOG.planjson: acceptance_test.go:942: LOG.validate: LOG.validate: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle validate LOG.validate: Name: test-bundle-do6sinvuybb73pcjpzg7erjj3a LOG.validate: Target: default LOG.validate: Workspace: LOG.validate: User: tester@databricks.com LOG.validate: Path: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-do6sinvuybb73pcjpzg7erjj3a/default LOG.validate: LOG.validate: Validation OK! --- FAIL: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=pipeline_apply_policy_default_values.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 (0.31s) ``` **latest (v1.6.0):** ``` === RUN TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=pipeline_apply_policy_default_values.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 === PAUSE TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=pipeline_apply_policy_default_values.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 === CONT TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=pipeline_apply_policy_default_values.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 acceptance_test.go:1083: Error Trace: /Users/denis.bilenko/work/cli-trees/local-only/libs/testdiff/testdiff.go:22 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:1083 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:915 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:515 Error: Not equal: expected: "INPUT_CONFIG_OK\n" actual : "INPUT_CONFIG_OK\n\nExit code: 1\n" Diff: --- Expected +++ Actual @@ -2 +2,3 @@ +Exit code: 1 + Test: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=pipeline_apply_policy_default_values.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 Messages: bundle/invariant/no_drift/output.txt vs /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/TestAcceptbundleinvariantno_driftDATABRICKS_BUNDLE_ENGINE=di1818920521/001/output.txt acceptance_test.go:942: LOG.config: bundle: LOG.config: name: test-bundle-sy3jc5xwwbfmjphrwfcedls77e LOG.config: LOG.config: resources: LOG.config: pipelines: LOG.config: foo: LOG.config: name: test-pipeline-sy3jc5xwwbfmjphrwfcedls77e LOG.config: clusters: LOG.config: - node_type_id: i3.xlarge LOG.config: num_workers: 1 LOG.config: apply_policy_default_values: true LOG.config: libraries: LOG.config: - file: LOG.config: path: pipeline.py acceptance_test.go:942: LOG.cp: acceptance_test.go:942: LOG.deploy: LOG.deploy: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle deploy --plan plan.json LOG.deploy: Uploading bundle files to /Workspace/Users/tester@databricks.com/.bundle/test-bundle-sy3jc5xwwbfmjphrwfcedls77e/default/files... LOG.deploy: Deploying resources... LOG.deploy: Updating deployment state... LOG.deploy: Deployment complete! acceptance_test.go:942: LOG.destroy: LOG.destroy: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle destroy --auto-approve LOG.destroy: The following resources will be deleted: LOG.destroy: delete resources.pipelines.foo LOG.destroy: LOG.destroy: This action will result in the deletion of the following Lakeflow Spark Declarative Pipelines along with the LOG.destroy: Streaming Tables (STs) and Materialized Views (MVs) managed by them: LOG.destroy: delete resources.pipelines.foo LOG.destroy: LOG.destroy: All files and directories at the following location will be deleted: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-sy3jc5xwwbfmjphrwfcedls77e/default LOG.destroy: LOG.destroy: Deleting files... LOG.destroy: Destroy complete! acceptance_test.go:942: LOG.planjson: acceptance_test.go:942: LOG.validate: LOG.validate: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle validate LOG.validate: Name: test-bundle-sy3jc5xwwbfmjphrwfcedls77e LOG.validate: Target: default LOG.validate: Workspace: LOG.validate: User: tester@databricks.com LOG.validate: Path: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-sy3jc5xwwbfmjphrwfcedls77e/default LOG.validate: LOG.validate: Validation OK! --- FAIL: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=pipeline_apply_policy_default_values.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 (0.32s) ```
TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=pipeline_config_dots.yml.tmpl/LOCAL_DIFF=--local/READPLAN= ✅ | main (de465e09b) ❌ | latest (v1.6.0) ❌ **main (de465e09b):** ``` === RUN TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=pipeline_config_dots.yml.tmpl/LOCAL_DIFF=--local/READPLAN= === PAUSE TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=pipeline_config_dots.yml.tmpl/LOCAL_DIFF=--local/READPLAN= === CONT TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=pipeline_config_dots.yml.tmpl/LOCAL_DIFF=--local/READPLAN= acceptance_test.go:1083: Error Trace: /Users/denis.bilenko/work/cli-trees/local-only/libs/testdiff/testdiff.go:22 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:1083 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:915 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:515 Error: Not equal: expected: "INPUT_CONFIG_OK\n" actual : "INPUT_CONFIG_OK\n\nExit code: 1\n" Diff: --- Expected +++ Actual @@ -2 +2,3 @@ +Exit code: 1 + Test: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=pipeline_config_dots.yml.tmpl/LOCAL_DIFF=--local/READPLAN= Messages: bundle/invariant/no_drift/output.txt vs /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/TestAcceptbundleinvariantno_driftDATABRICKS_BUNDLE_ENGINE=di186963565/001/output.txt acceptance_test.go:942: LOG.config: bundle: LOG.config: name: test-bundle-nwxr2uifobgjveb6tiucdtcshu LOG.config: LOG.config: variables: LOG.config: AZURE: LOG.config: type: complex LOG.config: default: LOG.config: subscription: test-sub-123 LOG.config: LOG.config: resources: LOG.config: schemas: LOG.config: my_schema: LOG.config: catalog_name: main LOG.config: name: test-schema-nwxr2uifobgjveb6tiucdtcshu LOG.config: LOG.config: pipelines: LOG.config: my_pipeline: LOG.config: name: test-pipeline-nwxr2uifobgjveb6tiucdtcshu LOG.config: libraries: LOG.config: - file: LOG.config: path: pipeline.py LOG.config: configuration: LOG.config: europris.swipe.egress_streaming_schema: "${resources.schemas.my_schema.catalog_name}.${resources.schemas.my_schema.name}" LOG.config: europris.azure.subscription: ${var.AZURE.subscription} acceptance_test.go:942: LOG.cp: acceptance_test.go:942: LOG.deploy: LOG.deploy: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle deploy LOG.deploy: Uploading bundle files to /Workspace/Users/tester@databricks.com/.bundle/test-bundle-nwxr2uifobgjveb6tiucdtcshu/default/files... LOG.deploy: Deploying resources... LOG.deploy: Updating deployment state... LOG.deploy: Deployment complete! acceptance_test.go:942: LOG.destroy: LOG.destroy: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle destroy --auto-approve LOG.destroy: The following resources will be deleted: LOG.destroy: delete resources.pipelines.my_pipeline LOG.destroy: delete resources.schemas.my_schema LOG.destroy: LOG.destroy: This action will result in the deletion of the following UC schemas. Any underlying data may be lost: LOG.destroy: delete resources.schemas.my_schema LOG.destroy: LOG.destroy: This action will result in the deletion of the following Lakeflow Spark Declarative Pipelines along with the LOG.destroy: Streaming Tables (STs) and Materialized Views (MVs) managed by them: LOG.destroy: delete resources.pipelines.my_pipeline LOG.destroy: LOG.destroy: All files and directories at the following location will be deleted: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-nwxr2uifobgjveb6tiucdtcshu/default LOG.destroy: LOG.destroy: Deleting files... LOG.destroy: Destroy complete! acceptance_test.go:942: LOG.planjson: acceptance_test.go:942: LOG.validate: LOG.validate: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle validate LOG.validate: Name: test-bundle-nwxr2uifobgjveb6tiucdtcshu LOG.validate: Target: default LOG.validate: Workspace: LOG.validate: User: tester@databricks.com LOG.validate: Path: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-nwxr2uifobgjveb6tiucdtcshu/default LOG.validate: LOG.validate: Validation OK! --- FAIL: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=pipeline_config_dots.yml.tmpl/LOCAL_DIFF=--local/READPLAN= (0.37s) ``` **latest (v1.6.0):** ``` === RUN TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=pipeline_config_dots.yml.tmpl/LOCAL_DIFF=--local/READPLAN= === PAUSE TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=pipeline_config_dots.yml.tmpl/LOCAL_DIFF=--local/READPLAN= === CONT TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=pipeline_config_dots.yml.tmpl/LOCAL_DIFF=--local/READPLAN= acceptance_test.go:1083: Error Trace: /Users/denis.bilenko/work/cli-trees/local-only/libs/testdiff/testdiff.go:22 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:1083 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:915 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:515 Error: Not equal: expected: "INPUT_CONFIG_OK\n" actual : "INPUT_CONFIG_OK\n\nExit code: 1\n" Diff: --- Expected +++ Actual @@ -2 +2,3 @@ +Exit code: 1 + Test: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=pipeline_config_dots.yml.tmpl/LOCAL_DIFF=--local/READPLAN= Messages: bundle/invariant/no_drift/output.txt vs /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/TestAcceptbundleinvariantno_driftDATABRICKS_BUNDLE_ENGINE=di2501091536/001/output.txt acceptance_test.go:942: LOG.config: bundle: LOG.config: name: test-bundle-batbemldjfbuzkqpsrlchom6ii LOG.config: LOG.config: variables: LOG.config: AZURE: LOG.config: type: complex LOG.config: default: LOG.config: subscription: test-sub-123 LOG.config: LOG.config: resources: LOG.config: schemas: LOG.config: my_schema: LOG.config: catalog_name: main LOG.config: name: test-schema-batbemldjfbuzkqpsrlchom6ii LOG.config: LOG.config: pipelines: LOG.config: my_pipeline: LOG.config: name: test-pipeline-batbemldjfbuzkqpsrlchom6ii LOG.config: libraries: LOG.config: - file: LOG.config: path: pipeline.py LOG.config: configuration: LOG.config: europris.swipe.egress_streaming_schema: "${resources.schemas.my_schema.catalog_name}.${resources.schemas.my_schema.name}" LOG.config: europris.azure.subscription: ${var.AZURE.subscription} acceptance_test.go:942: LOG.cp: acceptance_test.go:942: LOG.deploy: LOG.deploy: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle deploy LOG.deploy: Uploading bundle files to /Workspace/Users/tester@databricks.com/.bundle/test-bundle-batbemldjfbuzkqpsrlchom6ii/default/files... LOG.deploy: Deploying resources... LOG.deploy: Updating deployment state... LOG.deploy: Deployment complete! acceptance_test.go:942: LOG.destroy: LOG.destroy: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle destroy --auto-approve LOG.destroy: The following resources will be deleted: LOG.destroy: delete resources.pipelines.my_pipeline LOG.destroy: delete resources.schemas.my_schema LOG.destroy: LOG.destroy: This action will result in the deletion of the following UC schemas. Any underlying data may be lost: LOG.destroy: delete resources.schemas.my_schema LOG.destroy: LOG.destroy: This action will result in the deletion of the following Lakeflow Spark Declarative Pipelines along with the LOG.destroy: Streaming Tables (STs) and Materialized Views (MVs) managed by them: LOG.destroy: delete resources.pipelines.my_pipeline LOG.destroy: LOG.destroy: All files and directories at the following location will be deleted: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-batbemldjfbuzkqpsrlchom6ii/default LOG.destroy: LOG.destroy: Deleting files... LOG.destroy: Destroy complete! acceptance_test.go:942: LOG.planjson: acceptance_test.go:942: LOG.validate: LOG.validate: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle validate LOG.validate: Name: test-bundle-batbemldjfbuzkqpsrlchom6ii LOG.validate: Target: default LOG.validate: Workspace: LOG.validate: User: tester@databricks.com LOG.validate: Path: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-batbemldjfbuzkqpsrlchom6ii/default LOG.validate: LOG.validate: Validation OK! --- FAIL: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=pipeline_config_dots.yml.tmpl/LOCAL_DIFF=--local/READPLAN= (0.32s) ```
TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=pipeline_config_dots.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 ✅ | main (de465e09b) ❌ | latest (v1.6.0) ❌ **main (de465e09b):** ``` === RUN TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=pipeline_config_dots.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 === PAUSE TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=pipeline_config_dots.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 === CONT TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=pipeline_config_dots.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 acceptance_test.go:1083: Error Trace: /Users/denis.bilenko/work/cli-trees/local-only/libs/testdiff/testdiff.go:22 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:1083 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:915 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:515 Error: Not equal: expected: "INPUT_CONFIG_OK\n" actual : "INPUT_CONFIG_OK\n\nExit code: 1\n" Diff: --- Expected +++ Actual @@ -2 +2,3 @@ +Exit code: 1 + Test: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=pipeline_config_dots.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 Messages: bundle/invariant/no_drift/output.txt vs /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/TestAcceptbundleinvariantno_driftDATABRICKS_BUNDLE_ENGINE=di353102328/001/output.txt acceptance_test.go:942: LOG.config: bundle: LOG.config: name: test-bundle-7ru3wahtvngdpirjoyxnfvxdqq LOG.config: LOG.config: variables: LOG.config: AZURE: LOG.config: type: complex LOG.config: default: LOG.config: subscription: test-sub-123 LOG.config: LOG.config: resources: LOG.config: schemas: LOG.config: my_schema: LOG.config: catalog_name: main LOG.config: name: test-schema-7ru3wahtvngdpirjoyxnfvxdqq LOG.config: LOG.config: pipelines: LOG.config: my_pipeline: LOG.config: name: test-pipeline-7ru3wahtvngdpirjoyxnfvxdqq LOG.config: libraries: LOG.config: - file: LOG.config: path: pipeline.py LOG.config: configuration: LOG.config: europris.swipe.egress_streaming_schema: "${resources.schemas.my_schema.catalog_name}.${resources.schemas.my_schema.name}" LOG.config: europris.azure.subscription: ${var.AZURE.subscription} acceptance_test.go:942: LOG.cp: acceptance_test.go:942: LOG.deploy: LOG.deploy: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle deploy --plan plan.json LOG.deploy: Uploading bundle files to /Workspace/Users/tester@databricks.com/.bundle/test-bundle-7ru3wahtvngdpirjoyxnfvxdqq/default/files... LOG.deploy: Deploying resources... LOG.deploy: Updating deployment state... LOG.deploy: Deployment complete! acceptance_test.go:942: LOG.destroy: LOG.destroy: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle destroy --auto-approve LOG.destroy: The following resources will be deleted: LOG.destroy: delete resources.pipelines.my_pipeline LOG.destroy: delete resources.schemas.my_schema LOG.destroy: LOG.destroy: This action will result in the deletion of the following UC schemas. Any underlying data may be lost: LOG.destroy: delete resources.schemas.my_schema LOG.destroy: LOG.destroy: This action will result in the deletion of the following Lakeflow Spark Declarative Pipelines along with the LOG.destroy: Streaming Tables (STs) and Materialized Views (MVs) managed by them: LOG.destroy: delete resources.pipelines.my_pipeline LOG.destroy: LOG.destroy: All files and directories at the following location will be deleted: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-7ru3wahtvngdpirjoyxnfvxdqq/default LOG.destroy: LOG.destroy: Deleting files... LOG.destroy: Destroy complete! acceptance_test.go:942: LOG.planjson: acceptance_test.go:942: LOG.validate: LOG.validate: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle validate LOG.validate: Name: test-bundle-7ru3wahtvngdpirjoyxnfvxdqq LOG.validate: Target: default LOG.validate: Workspace: LOG.validate: User: tester@databricks.com LOG.validate: Path: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-7ru3wahtvngdpirjoyxnfvxdqq/default LOG.validate: LOG.validate: Validation OK! --- FAIL: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=pipeline_config_dots.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 (0.33s) ``` **latest (v1.6.0):** ``` === RUN TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=pipeline_config_dots.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 === PAUSE TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=pipeline_config_dots.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 === CONT TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=pipeline_config_dots.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 acceptance_test.go:1083: Error Trace: /Users/denis.bilenko/work/cli-trees/local-only/libs/testdiff/testdiff.go:22 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:1083 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:915 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:515 Error: Not equal: expected: "INPUT_CONFIG_OK\n" actual : "INPUT_CONFIG_OK\n\nExit code: 1\n" Diff: --- Expected +++ Actual @@ -2 +2,3 @@ +Exit code: 1 + Test: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=pipeline_config_dots.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 Messages: bundle/invariant/no_drift/output.txt vs /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/TestAcceptbundleinvariantno_driftDATABRICKS_BUNDLE_ENGINE=di4238161267/001/output.txt acceptance_test.go:942: LOG.config: bundle: LOG.config: name: test-bundle-vyks5rw4mbht3luupvosxk5rfy LOG.config: LOG.config: variables: LOG.config: AZURE: LOG.config: type: complex LOG.config: default: LOG.config: subscription: test-sub-123 LOG.config: LOG.config: resources: LOG.config: schemas: LOG.config: my_schema: LOG.config: catalog_name: main LOG.config: name: test-schema-vyks5rw4mbht3luupvosxk5rfy LOG.config: LOG.config: pipelines: LOG.config: my_pipeline: LOG.config: name: test-pipeline-vyks5rw4mbht3luupvosxk5rfy LOG.config: libraries: LOG.config: - file: LOG.config: path: pipeline.py LOG.config: configuration: LOG.config: europris.swipe.egress_streaming_schema: "${resources.schemas.my_schema.catalog_name}.${resources.schemas.my_schema.name}" LOG.config: europris.azure.subscription: ${var.AZURE.subscription} acceptance_test.go:942: LOG.cp: acceptance_test.go:942: LOG.deploy: LOG.deploy: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle deploy --plan plan.json LOG.deploy: Uploading bundle files to /Workspace/Users/tester@databricks.com/.bundle/test-bundle-vyks5rw4mbht3luupvosxk5rfy/default/files... LOG.deploy: Deploying resources... LOG.deploy: Updating deployment state... LOG.deploy: Deployment complete! acceptance_test.go:942: LOG.destroy: LOG.destroy: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle destroy --auto-approve LOG.destroy: The following resources will be deleted: LOG.destroy: delete resources.pipelines.my_pipeline LOG.destroy: delete resources.schemas.my_schema LOG.destroy: LOG.destroy: This action will result in the deletion of the following UC schemas. Any underlying data may be lost: LOG.destroy: delete resources.schemas.my_schema LOG.destroy: LOG.destroy: This action will result in the deletion of the following Lakeflow Spark Declarative Pipelines along with the LOG.destroy: Streaming Tables (STs) and Materialized Views (MVs) managed by them: LOG.destroy: delete resources.pipelines.my_pipeline LOG.destroy: LOG.destroy: All files and directories at the following location will be deleted: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-vyks5rw4mbht3luupvosxk5rfy/default LOG.destroy: LOG.destroy: Deleting files... LOG.destroy: Destroy complete! acceptance_test.go:942: LOG.planjson: acceptance_test.go:942: LOG.validate: LOG.validate: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle validate LOG.validate: Name: test-bundle-vyks5rw4mbht3luupvosxk5rfy LOG.validate: Target: default LOG.validate: Workspace: LOG.validate: User: tester@databricks.com LOG.validate: Path: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-vyks5rw4mbht3luupvosxk5rfy/default LOG.validate: LOG.validate: Validation OK! --- FAIL: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=pipeline_config_dots.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 (0.32s) ```
TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=postgres_branch.yml.tmpl/LOCAL_DIFF=--local/READPLAN= ✅ | main (de465e09b) ❌ | latest (v1.6.0) ❌ **main (de465e09b):** ``` === RUN TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=postgres_branch.yml.tmpl/LOCAL_DIFF=--local/READPLAN= === PAUSE TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=postgres_branch.yml.tmpl/LOCAL_DIFF=--local/READPLAN= === CONT TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=postgres_branch.yml.tmpl/LOCAL_DIFF=--local/READPLAN= acceptance_test.go:1083: Error Trace: /Users/denis.bilenko/work/cli-trees/local-only/libs/testdiff/testdiff.go:22 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:1083 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:915 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:515 Error: Not equal: expected: "INPUT_CONFIG_OK\n" actual : "INPUT_CONFIG_OK\n\nExit code: 1\n" Diff: --- Expected +++ Actual @@ -2 +2,3 @@ +Exit code: 1 + Test: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=postgres_branch.yml.tmpl/LOCAL_DIFF=--local/READPLAN= Messages: bundle/invariant/no_drift/output.txt vs /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/TestAcceptbundleinvariantno_driftDATABRICKS_BUNDLE_ENGINE=di3974061838/001/output.txt acceptance_test.go:942: LOG.config: bundle: LOG.config: name: test-bundle-f55b362hybhcpecnawv2osf6we LOG.config: LOG.config: resources: LOG.config: postgres_projects: LOG.config: project: LOG.config: project_id: test-pg-project-f55b362hybhcpecnawv2osf6we LOG.config: display_name: Test Postgres Project LOG.config: LOG.config: postgres_branches: LOG.config: foo: LOG.config: parent: ${resources.postgres_projects.project.name} LOG.config: branch_id: test-branch-f55b362hybhcpecnawv2osf6we LOG.config: no_expiry: true acceptance_test.go:942: LOG.cp: acceptance_test.go:942: LOG.deploy: LOG.deploy: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle deploy LOG.deploy: Uploading bundle files to /Workspace/Users/tester@databricks.com/.bundle/test-bundle-f55b362hybhcpecnawv2osf6we/default/files... LOG.deploy: Deploying resources... LOG.deploy: Updating deployment state... LOG.deploy: Deployment complete! acceptance_test.go:942: LOG.destroy: LOG.destroy: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle destroy --auto-approve LOG.destroy: The following resources will be deleted: LOG.destroy: delete resources.postgres_branches.foo LOG.destroy: delete resources.postgres_projects.project LOG.destroy: LOG.destroy: This action will result in the deletion of the following Lakebase projects along with LOG.destroy: all their branches, databases, and endpoints. All data stored in them will be permanently lost: LOG.destroy: delete resources.postgres_projects.project LOG.destroy: LOG.destroy: This action will result in the deletion of the following Lakebase branches. LOG.destroy: All data stored in them will be permanently lost: LOG.destroy: delete resources.postgres_branches.foo LOG.destroy: LOG.destroy: All files and directories at the following location will be deleted: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-f55b362hybhcpecnawv2osf6we/default LOG.destroy: LOG.destroy: Deleting files... LOG.destroy: Destroy complete! acceptance_test.go:942: LOG.planjson: acceptance_test.go:942: LOG.validate: LOG.validate: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle validate LOG.validate: Name: test-bundle-f55b362hybhcpecnawv2osf6we LOG.validate: Target: default LOG.validate: Workspace: LOG.validate: User: tester@databricks.com LOG.validate: Path: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-f55b362hybhcpecnawv2osf6we/default LOG.validate: LOG.validate: Validation OK! --- FAIL: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=postgres_branch.yml.tmpl/LOCAL_DIFF=--local/READPLAN= (0.33s) ``` **latest (v1.6.0):** ``` === RUN TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=postgres_branch.yml.tmpl/LOCAL_DIFF=--local/READPLAN= === PAUSE TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=postgres_branch.yml.tmpl/LOCAL_DIFF=--local/READPLAN= === CONT TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=postgres_branch.yml.tmpl/LOCAL_DIFF=--local/READPLAN= acceptance_test.go:1083: Error Trace: /Users/denis.bilenko/work/cli-trees/local-only/libs/testdiff/testdiff.go:22 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:1083 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:915 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:515 Error: Not equal: expected: "INPUT_CONFIG_OK\n" actual : "INPUT_CONFIG_OK\n\nExit code: 1\n" Diff: --- Expected +++ Actual @@ -2 +2,3 @@ +Exit code: 1 + Test: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=postgres_branch.yml.tmpl/LOCAL_DIFF=--local/READPLAN= Messages: bundle/invariant/no_drift/output.txt vs /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/TestAcceptbundleinvariantno_driftDATABRICKS_BUNDLE_ENGINE=di1859161961/001/output.txt acceptance_test.go:942: LOG.config: bundle: LOG.config: name: test-bundle-jtxq6vbesvhvbmtgxwnxq6jpva LOG.config: LOG.config: resources: LOG.config: postgres_projects: LOG.config: project: LOG.config: project_id: test-pg-project-jtxq6vbesvhvbmtgxwnxq6jpva LOG.config: display_name: Test Postgres Project LOG.config: LOG.config: postgres_branches: LOG.config: foo: LOG.config: parent: ${resources.postgres_projects.project.name} LOG.config: branch_id: test-branch-jtxq6vbesvhvbmtgxwnxq6jpva LOG.config: no_expiry: true acceptance_test.go:942: LOG.cp: acceptance_test.go:942: LOG.deploy: LOG.deploy: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle deploy LOG.deploy: Uploading bundle files to /Workspace/Users/tester@databricks.com/.bundle/test-bundle-jtxq6vbesvhvbmtgxwnxq6jpva/default/files... LOG.deploy: Deploying resources... LOG.deploy: Updating deployment state... LOG.deploy: Deployment complete! acceptance_test.go:942: LOG.destroy: LOG.destroy: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle destroy --auto-approve LOG.destroy: The following resources will be deleted: LOG.destroy: delete resources.postgres_branches.foo LOG.destroy: delete resources.postgres_projects.project LOG.destroy: LOG.destroy: This action will result in the deletion of the following Lakebase projects along with LOG.destroy: all their branches, databases, and endpoints. All data stored in them will be permanently lost: LOG.destroy: delete resources.postgres_projects.project LOG.destroy: LOG.destroy: This action will result in the deletion of the following Lakebase branches. LOG.destroy: All data stored in them will be permanently lost: LOG.destroy: delete resources.postgres_branches.foo LOG.destroy: LOG.destroy: All files and directories at the following location will be deleted: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-jtxq6vbesvhvbmtgxwnxq6jpva/default LOG.destroy: LOG.destroy: Deleting files... LOG.destroy: Destroy complete! acceptance_test.go:942: LOG.planjson: acceptance_test.go:942: LOG.validate: LOG.validate: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle validate LOG.validate: Name: test-bundle-jtxq6vbesvhvbmtgxwnxq6jpva LOG.validate: Target: default LOG.validate: Workspace: LOG.validate: User: tester@databricks.com LOG.validate: Path: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-jtxq6vbesvhvbmtgxwnxq6jpva/default LOG.validate: LOG.validate: Validation OK! --- FAIL: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=postgres_branch.yml.tmpl/LOCAL_DIFF=--local/READPLAN= (0.32s) ```
TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=postgres_branch.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 ✅ | main (de465e09b) ❌ | latest (v1.6.0) ❌ **main (de465e09b):** ``` === RUN TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=postgres_branch.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 === PAUSE TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=postgres_branch.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 === CONT TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=postgres_branch.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 acceptance_test.go:1083: Error Trace: /Users/denis.bilenko/work/cli-trees/local-only/libs/testdiff/testdiff.go:22 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:1083 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:915 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:515 Error: Not equal: expected: "INPUT_CONFIG_OK\n" actual : "INPUT_CONFIG_OK\n\nExit code: 1\n" Diff: --- Expected +++ Actual @@ -2 +2,3 @@ +Exit code: 1 + Test: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=postgres_branch.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 Messages: bundle/invariant/no_drift/output.txt vs /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/TestAcceptbundleinvariantno_driftDATABRICKS_BUNDLE_ENGINE=di3685182847/001/output.txt acceptance_test.go:942: LOG.config: bundle: LOG.config: name: test-bundle-sbtdruds55h23djxzsrmik5mxq LOG.config: LOG.config: resources: LOG.config: postgres_projects: LOG.config: project: LOG.config: project_id: test-pg-project-sbtdruds55h23djxzsrmik5mxq LOG.config: display_name: Test Postgres Project LOG.config: LOG.config: postgres_branches: LOG.config: foo: LOG.config: parent: ${resources.postgres_projects.project.name} LOG.config: branch_id: test-branch-sbtdruds55h23djxzsrmik5mxq LOG.config: no_expiry: true acceptance_test.go:942: LOG.cp: acceptance_test.go:942: LOG.deploy: LOG.deploy: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle deploy --plan plan.json LOG.deploy: Uploading bundle files to /Workspace/Users/tester@databricks.com/.bundle/test-bundle-sbtdruds55h23djxzsrmik5mxq/default/files... LOG.deploy: Deploying resources... LOG.deploy: Updating deployment state... LOG.deploy: Deployment complete! acceptance_test.go:942: LOG.destroy: LOG.destroy: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle destroy --auto-approve LOG.destroy: The following resources will be deleted: LOG.destroy: delete resources.postgres_branches.foo LOG.destroy: delete resources.postgres_projects.project LOG.destroy: LOG.destroy: This action will result in the deletion of the following Lakebase projects along with LOG.destroy: all their branches, databases, and endpoints. All data stored in them will be permanently lost: LOG.destroy: delete resources.postgres_projects.project LOG.destroy: LOG.destroy: This action will result in the deletion of the following Lakebase branches. LOG.destroy: All data stored in them will be permanently lost: LOG.destroy: delete resources.postgres_branches.foo LOG.destroy: LOG.destroy: All files and directories at the following location will be deleted: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-sbtdruds55h23djxzsrmik5mxq/default LOG.destroy: LOG.destroy: Deleting files... LOG.destroy: Destroy complete! acceptance_test.go:942: LOG.planjson: acceptance_test.go:942: LOG.validate: LOG.validate: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle validate LOG.validate: Name: test-bundle-sbtdruds55h23djxzsrmik5mxq LOG.validate: Target: default LOG.validate: Workspace: LOG.validate: User: tester@databricks.com LOG.validate: Path: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-sbtdruds55h23djxzsrmik5mxq/default LOG.validate: LOG.validate: Validation OK! --- FAIL: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=postgres_branch.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 (0.30s) ``` **latest (v1.6.0):** ``` === RUN TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=postgres_branch.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 === PAUSE TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=postgres_branch.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 === CONT TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=postgres_branch.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 acceptance_test.go:1083: Error Trace: /Users/denis.bilenko/work/cli-trees/local-only/libs/testdiff/testdiff.go:22 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:1083 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:915 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:515 Error: Not equal: expected: "INPUT_CONFIG_OK\n" actual : "INPUT_CONFIG_OK\n\nExit code: 1\n" Diff: --- Expected +++ Actual @@ -2 +2,3 @@ +Exit code: 1 + Test: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=postgres_branch.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 Messages: bundle/invariant/no_drift/output.txt vs /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/TestAcceptbundleinvariantno_driftDATABRICKS_BUNDLE_ENGINE=di1055625620/001/output.txt acceptance_test.go:942: LOG.config: bundle: LOG.config: name: test-bundle-vybmkltv4nhz5kuovsoz7x4tcy LOG.config: LOG.config: resources: LOG.config: postgres_projects: LOG.config: project: LOG.config: project_id: test-pg-project-vybmkltv4nhz5kuovsoz7x4tcy LOG.config: display_name: Test Postgres Project LOG.config: LOG.config: postgres_branches: LOG.config: foo: LOG.config: parent: ${resources.postgres_projects.project.name} LOG.config: branch_id: test-branch-vybmkltv4nhz5kuovsoz7x4tcy LOG.config: no_expiry: true acceptance_test.go:942: LOG.cp: acceptance_test.go:942: LOG.deploy: LOG.deploy: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle deploy --plan plan.json LOG.deploy: Uploading bundle files to /Workspace/Users/tester@databricks.com/.bundle/test-bundle-vybmkltv4nhz5kuovsoz7x4tcy/default/files... LOG.deploy: Deploying resources... LOG.deploy: Updating deployment state... LOG.deploy: Deployment complete! acceptance_test.go:942: LOG.destroy: LOG.destroy: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle destroy --auto-approve LOG.destroy: The following resources will be deleted: LOG.destroy: delete resources.postgres_branches.foo LOG.destroy: delete resources.postgres_projects.project LOG.destroy: LOG.destroy: This action will result in the deletion of the following Lakebase projects along with LOG.destroy: all their branches, databases, and endpoints. All data stored in them will be permanently lost: LOG.destroy: delete resources.postgres_projects.project LOG.destroy: LOG.destroy: This action will result in the deletion of the following Lakebase branches. LOG.destroy: All data stored in them will be permanently lost: LOG.destroy: delete resources.postgres_branches.foo LOG.destroy: LOG.destroy: All files and directories at the following location will be deleted: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-vybmkltv4nhz5kuovsoz7x4tcy/default LOG.destroy: LOG.destroy: Deleting files... LOG.destroy: Destroy complete! acceptance_test.go:942: LOG.planjson: acceptance_test.go:942: LOG.validate: LOG.validate: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle validate LOG.validate: Name: test-bundle-vybmkltv4nhz5kuovsoz7x4tcy LOG.validate: Target: default LOG.validate: Workspace: LOG.validate: User: tester@databricks.com LOG.validate: Path: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-vybmkltv4nhz5kuovsoz7x4tcy/default LOG.validate: LOG.validate: Validation OK! --- FAIL: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=postgres_branch.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 (0.30s) ```
TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=postgres_catalog.yml.tmpl/LOCAL_DIFF=--local/READPLAN= ✅ | main (de465e09b) ❌ | latest (v1.6.0) ❌ **main (de465e09b):** ``` === RUN TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=postgres_catalog.yml.tmpl/LOCAL_DIFF=--local/READPLAN= === PAUSE TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=postgres_catalog.yml.tmpl/LOCAL_DIFF=--local/READPLAN= === CONT TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=postgres_catalog.yml.tmpl/LOCAL_DIFF=--local/READPLAN= acceptance_test.go:1083: Error Trace: /Users/denis.bilenko/work/cli-trees/local-only/libs/testdiff/testdiff.go:22 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:1083 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:915 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:515 Error: Not equal: expected: "INPUT_CONFIG_OK\n" actual : "INPUT_CONFIG_OK\n\nExit code: 1\n" Diff: --- Expected +++ Actual @@ -2 +2,3 @@ +Exit code: 1 + Test: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=postgres_catalog.yml.tmpl/LOCAL_DIFF=--local/READPLAN= Messages: bundle/invariant/no_drift/output.txt vs /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/TestAcceptbundleinvariantno_driftDATABRICKS_BUNDLE_ENGINE=di2857760280/001/output.txt acceptance_test.go:942: LOG.config: bundle: LOG.config: name: test-bundle-65vzadi6ajaf7bfzwkx76g24yq LOG.config: LOG.config: resources: LOG.config: postgres_projects: LOG.config: project: LOG.config: project_id: test-pg-project-65vzadi6ajaf7bfzwkx76g24yq LOG.config: display_name: Test Postgres Project LOG.config: LOG.config: postgres_catalogs: LOG.config: catalog: LOG.config: catalog_id: test_pg_catalog_65vzadi6ajaf7bfzwkx76g24yq LOG.config: branch: ${resources.postgres_projects.project.name}/branches/production LOG.config: postgres_database: appdb LOG.config: create_database_if_missing: true acceptance_test.go:942: LOG.cp: acceptance_test.go:942: LOG.deploy: LOG.deploy: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle deploy LOG.deploy: Uploading bundle files to /Workspace/Users/tester@databricks.com/.bundle/test-bundle-65vzadi6ajaf7bfzwkx76g24yq/default/files... LOG.deploy: Deploying resources... LOG.deploy: Updating deployment state... LOG.deploy: Deployment complete! acceptance_test.go:942: LOG.destroy: LOG.destroy: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle destroy --auto-approve LOG.destroy: The following resources will be deleted: LOG.destroy: delete resources.postgres_catalogs.catalog LOG.destroy: delete resources.postgres_projects.project LOG.destroy: LOG.destroy: This action will result in the deletion of the following Lakebase projects along with LOG.destroy: all their branches, databases, and endpoints. All data stored in them will be permanently lost: LOG.destroy: delete resources.postgres_projects.project LOG.destroy: LOG.destroy: All files and directories at the following location will be deleted: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-65vzadi6ajaf7bfzwkx76g24yq/default LOG.destroy: LOG.destroy: Deleting files... LOG.destroy: Destroy complete! acceptance_test.go:942: LOG.planjson: acceptance_test.go:942: LOG.validate: LOG.validate: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle validate LOG.validate: Name: test-bundle-65vzadi6ajaf7bfzwkx76g24yq LOG.validate: Target: default LOG.validate: Workspace: LOG.validate: User: tester@databricks.com LOG.validate: Path: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-65vzadi6ajaf7bfzwkx76g24yq/default LOG.validate: LOG.validate: Validation OK! --- FAIL: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=postgres_catalog.yml.tmpl/LOCAL_DIFF=--local/READPLAN= (0.31s) ``` **latest (v1.6.0):** ``` === RUN TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=postgres_catalog.yml.tmpl/LOCAL_DIFF=--local/READPLAN= === PAUSE TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=postgres_catalog.yml.tmpl/LOCAL_DIFF=--local/READPLAN= === CONT TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=postgres_catalog.yml.tmpl/LOCAL_DIFF=--local/READPLAN= acceptance_test.go:1083: Error Trace: /Users/denis.bilenko/work/cli-trees/local-only/libs/testdiff/testdiff.go:22 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:1083 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:915 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:515 Error: Not equal: expected: "INPUT_CONFIG_OK\n" actual : "INPUT_CONFIG_OK\n\nExit code: 1\n" Diff: --- Expected +++ Actual @@ -2 +2,3 @@ +Exit code: 1 + Test: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=postgres_catalog.yml.tmpl/LOCAL_DIFF=--local/READPLAN= Messages: bundle/invariant/no_drift/output.txt vs /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/TestAcceptbundleinvariantno_driftDATABRICKS_BUNDLE_ENGINE=di1831617081/001/output.txt acceptance_test.go:942: LOG.config: bundle: LOG.config: name: test-bundle-xbkgbioglbgzfgsb7mcf7g5aem LOG.config: LOG.config: resources: LOG.config: postgres_projects: LOG.config: project: LOG.config: project_id: test-pg-project-xbkgbioglbgzfgsb7mcf7g5aem LOG.config: display_name: Test Postgres Project LOG.config: LOG.config: postgres_catalogs: LOG.config: catalog: LOG.config: catalog_id: test_pg_catalog_xbkgbioglbgzfgsb7mcf7g5aem LOG.config: branch: ${resources.postgres_projects.project.name}/branches/production LOG.config: postgres_database: appdb LOG.config: create_database_if_missing: true acceptance_test.go:942: LOG.cp: acceptance_test.go:942: LOG.deploy: LOG.deploy: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle deploy LOG.deploy: Uploading bundle files to /Workspace/Users/tester@databricks.com/.bundle/test-bundle-xbkgbioglbgzfgsb7mcf7g5aem/default/files... LOG.deploy: Deploying resources... LOG.deploy: Updating deployment state... LOG.deploy: Deployment complete! acceptance_test.go:942: LOG.destroy: LOG.destroy: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle destroy --auto-approve LOG.destroy: The following resources will be deleted: LOG.destroy: delete resources.postgres_catalogs.catalog LOG.destroy: delete resources.postgres_projects.project LOG.destroy: LOG.destroy: This action will result in the deletion of the following Lakebase projects along with LOG.destroy: all their branches, databases, and endpoints. All data stored in them will be permanently lost: LOG.destroy: delete resources.postgres_projects.project LOG.destroy: LOG.destroy: All files and directories at the following location will be deleted: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-xbkgbioglbgzfgsb7mcf7g5aem/default LOG.destroy: LOG.destroy: Deleting files... LOG.destroy: Destroy complete! acceptance_test.go:942: LOG.planjson: acceptance_test.go:942: LOG.validate: LOG.validate: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle validate LOG.validate: Name: test-bundle-xbkgbioglbgzfgsb7mcf7g5aem LOG.validate: Target: default LOG.validate: Workspace: LOG.validate: User: tester@databricks.com LOG.validate: Path: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-xbkgbioglbgzfgsb7mcf7g5aem/default LOG.validate: LOG.validate: Validation OK! --- FAIL: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=postgres_catalog.yml.tmpl/LOCAL_DIFF=--local/READPLAN= (0.35s) ```
TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=postgres_catalog.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 ✅ | main (de465e09b) ❌ | latest (v1.6.0) ❌ **main (de465e09b):** ``` === RUN TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=postgres_catalog.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 === PAUSE TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=postgres_catalog.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 === CONT TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=postgres_catalog.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 acceptance_test.go:1083: Error Trace: /Users/denis.bilenko/work/cli-trees/local-only/libs/testdiff/testdiff.go:22 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:1083 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:915 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:515 Error: Not equal: expected: "INPUT_CONFIG_OK\n" actual : "INPUT_CONFIG_OK\n\nExit code: 1\n" Diff: --- Expected +++ Actual @@ -2 +2,3 @@ +Exit code: 1 + Test: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=postgres_catalog.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 Messages: bundle/invariant/no_drift/output.txt vs /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/TestAcceptbundleinvariantno_driftDATABRICKS_BUNDLE_ENGINE=di3384167003/001/output.txt acceptance_test.go:942: LOG.config: bundle: LOG.config: name: test-bundle-2vq7f52snjdxdcie6mzztgnixu LOG.config: LOG.config: resources: LOG.config: postgres_projects: LOG.config: project: LOG.config: project_id: test-pg-project-2vq7f52snjdxdcie6mzztgnixu LOG.config: display_name: Test Postgres Project LOG.config: LOG.config: postgres_catalogs: LOG.config: catalog: LOG.config: catalog_id: test_pg_catalog_2vq7f52snjdxdcie6mzztgnixu LOG.config: branch: ${resources.postgres_projects.project.name}/branches/production LOG.config: postgres_database: appdb LOG.config: create_database_if_missing: true acceptance_test.go:942: LOG.cp: acceptance_test.go:942: LOG.deploy: LOG.deploy: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle deploy --plan plan.json LOG.deploy: Uploading bundle files to /Workspace/Users/tester@databricks.com/.bundle/test-bundle-2vq7f52snjdxdcie6mzztgnixu/default/files... LOG.deploy: Deploying resources... LOG.deploy: Updating deployment state... LOG.deploy: Deployment complete! acceptance_test.go:942: LOG.destroy: LOG.destroy: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle destroy --auto-approve LOG.destroy: The following resources will be deleted: LOG.destroy: delete resources.postgres_catalogs.catalog LOG.destroy: delete resources.postgres_projects.project LOG.destroy: LOG.destroy: This action will result in the deletion of the following Lakebase projects along with LOG.destroy: all their branches, databases, and endpoints. All data stored in them will be permanently lost: LOG.destroy: delete resources.postgres_projects.project LOG.destroy: LOG.destroy: All files and directories at the following location will be deleted: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-2vq7f52snjdxdcie6mzztgnixu/default LOG.destroy: LOG.destroy: Deleting files... LOG.destroy: Destroy complete! acceptance_test.go:942: LOG.planjson: acceptance_test.go:942: LOG.validate: LOG.validate: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle validate LOG.validate: Name: test-bundle-2vq7f52snjdxdcie6mzztgnixu LOG.validate: Target: default LOG.validate: Workspace: LOG.validate: User: tester@databricks.com LOG.validate: Path: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-2vq7f52snjdxdcie6mzztgnixu/default LOG.validate: LOG.validate: Validation OK! --- FAIL: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=postgres_catalog.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 (0.33s) ``` **latest (v1.6.0):** ``` === RUN TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=postgres_catalog.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 === PAUSE TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=postgres_catalog.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 === CONT TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=postgres_catalog.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 acceptance_test.go:1083: Error Trace: /Users/denis.bilenko/work/cli-trees/local-only/libs/testdiff/testdiff.go:22 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:1083 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:915 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:515 Error: Not equal: expected: "INPUT_CONFIG_OK\n" actual : "INPUT_CONFIG_OK\n\nExit code: 1\n" Diff: --- Expected +++ Actual @@ -2 +2,3 @@ +Exit code: 1 + Test: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=postgres_catalog.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 Messages: bundle/invariant/no_drift/output.txt vs /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/TestAcceptbundleinvariantno_driftDATABRICKS_BUNDLE_ENGINE=di1469925413/001/output.txt acceptance_test.go:942: LOG.config: bundle: LOG.config: name: test-bundle-766vstkmibdy3f5kbvwjev7ljm LOG.config: LOG.config: resources: LOG.config: postgres_projects: LOG.config: project: LOG.config: project_id: test-pg-project-766vstkmibdy3f5kbvwjev7ljm LOG.config: display_name: Test Postgres Project LOG.config: LOG.config: postgres_catalogs: LOG.config: catalog: LOG.config: catalog_id: test_pg_catalog_766vstkmibdy3f5kbvwjev7ljm LOG.config: branch: ${resources.postgres_projects.project.name}/branches/production LOG.config: postgres_database: appdb LOG.config: create_database_if_missing: true acceptance_test.go:942: LOG.cp: acceptance_test.go:942: LOG.deploy: LOG.deploy: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle deploy --plan plan.json LOG.deploy: Uploading bundle files to /Workspace/Users/tester@databricks.com/.bundle/test-bundle-766vstkmibdy3f5kbvwjev7ljm/default/files... LOG.deploy: Deploying resources... LOG.deploy: Updating deployment state... LOG.deploy: Deployment complete! acceptance_test.go:942: LOG.destroy: LOG.destroy: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle destroy --auto-approve LOG.destroy: The following resources will be deleted: LOG.destroy: delete resources.postgres_catalogs.catalog LOG.destroy: delete resources.postgres_projects.project LOG.destroy: LOG.destroy: This action will result in the deletion of the following Lakebase projects along with LOG.destroy: all their branches, databases, and endpoints. All data stored in them will be permanently lost: LOG.destroy: delete resources.postgres_projects.project LOG.destroy: LOG.destroy: All files and directories at the following location will be deleted: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-766vstkmibdy3f5kbvwjev7ljm/default LOG.destroy: LOG.destroy: Deleting files... LOG.destroy: Destroy complete! acceptance_test.go:942: LOG.planjson: acceptance_test.go:942: LOG.validate: LOG.validate: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle validate LOG.validate: Name: test-bundle-766vstkmibdy3f5kbvwjev7ljm LOG.validate: Target: default LOG.validate: Workspace: LOG.validate: User: tester@databricks.com LOG.validate: Path: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-766vstkmibdy3f5kbvwjev7ljm/default LOG.validate: LOG.validate: Validation OK! --- FAIL: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=postgres_catalog.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 (0.32s) ```
TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=postgres_database.yml.tmpl/LOCAL_DIFF=--local/READPLAN= ✅ | main (de465e09b) ❌ | latest (v1.6.0) ❌ **main (de465e09b):** ``` === RUN TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=postgres_database.yml.tmpl/LOCAL_DIFF=--local/READPLAN= === PAUSE TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=postgres_database.yml.tmpl/LOCAL_DIFF=--local/READPLAN= === CONT TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=postgres_database.yml.tmpl/LOCAL_DIFF=--local/READPLAN= acceptance_test.go:1083: Error Trace: /Users/denis.bilenko/work/cli-trees/local-only/libs/testdiff/testdiff.go:22 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:1083 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:915 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:515 Error: Not equal: expected: "INPUT_CONFIG_OK\n" actual : "INPUT_CONFIG_OK\n\nExit code: 1\n" Diff: --- Expected +++ Actual @@ -2 +2,3 @@ +Exit code: 1 + Test: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=postgres_database.yml.tmpl/LOCAL_DIFF=--local/READPLAN= Messages: bundle/invariant/no_drift/output.txt vs /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/TestAcceptbundleinvariantno_driftDATABRICKS_BUNDLE_ENGINE=di1020283125/001/output.txt acceptance_test.go:942: LOG.config: bundle: LOG.config: name: test-bundle-hlqxj4w76zfebmjst6uduaxhvy LOG.config: LOG.config: resources: LOG.config: postgres_projects: LOG.config: project: LOG.config: project_id: test-pg-project-hlqxj4w76zfebmjst6uduaxhvy LOG.config: display_name: Test Postgres Project LOG.config: LOG.config: postgres_branches: LOG.config: branch: LOG.config: parent: ${resources.postgres_projects.project.name} LOG.config: branch_id: test-branch-hlqxj4w76zfebmjst6uduaxhvy LOG.config: no_expiry: true LOG.config: LOG.config: postgres_roles: LOG.config: owner: LOG.config: parent: ${resources.postgres_branches.branch.name} LOG.config: role_id: test-role-hlqxj4w76zfebmjst6uduaxhvy LOG.config: postgres_role: app_role LOG.config: LOG.config: postgres_databases: LOG.config: foo: LOG.config: parent: ${resources.postgres_branches.branch.name} LOG.config: database_id: test-database-hlqxj4w76zfebmjst6uduaxhvy LOG.config: postgres_database: app_db LOG.config: role: ${resources.postgres_roles.owner.name} acceptance_test.go:942: LOG.cp: acceptance_test.go:942: LOG.deploy: LOG.deploy: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle deploy LOG.deploy: Uploading bundle files to /Workspace/Users/tester@databricks.com/.bundle/test-bundle-hlqxj4w76zfebmjst6uduaxhvy/default/files... LOG.deploy: Deploying resources... LOG.deploy: Updating deployment state... LOG.deploy: Deployment complete! acceptance_test.go:942: LOG.destroy: LOG.destroy: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle destroy --auto-approve LOG.destroy: The following resources will be deleted: LOG.destroy: delete resources.postgres_branches.branch LOG.destroy: delete resources.postgres_databases.foo LOG.destroy: delete resources.postgres_projects.project LOG.destroy: delete resources.postgres_roles.owner LOG.destroy: LOG.destroy: This action will result in the deletion of the following Lakebase projects along with LOG.destroy: all their branches, databases, and endpoints. All data stored in them will be permanently lost: LOG.destroy: delete resources.postgres_projects.project LOG.destroy: LOG.destroy: This action will result in the deletion of the following Lakebase branches. LOG.destroy: All data stored in them will be permanently lost: LOG.destroy: delete resources.postgres_branches.branch LOG.destroy: LOG.destroy: This action will result in the deletion of the following Lakebase databases. LOG.destroy: All data stored in them will be permanently lost: LOG.destroy: delete resources.postgres_databases.foo LOG.destroy: LOG.destroy: All files and directories at the following location will be deleted: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-hlqxj4w76zfebmjst6uduaxhvy/default LOG.destroy: LOG.destroy: Deleting files... LOG.destroy: Destroy complete! acceptance_test.go:942: LOG.planjson: acceptance_test.go:942: LOG.validate: LOG.validate: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle validate LOG.validate: Name: test-bundle-hlqxj4w76zfebmjst6uduaxhvy LOG.validate: Target: default LOG.validate: Workspace: LOG.validate: User: tester@databricks.com LOG.validate: Path: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-hlqxj4w76zfebmjst6uduaxhvy/default LOG.validate: LOG.validate: Validation OK! --- FAIL: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=postgres_database.yml.tmpl/LOCAL_DIFF=--local/READPLAN= (0.34s) ``` **latest (v1.6.0):** ``` === RUN TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=postgres_database.yml.tmpl/LOCAL_DIFF=--local/READPLAN= === PAUSE TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=postgres_database.yml.tmpl/LOCAL_DIFF=--local/READPLAN= === CONT TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=postgres_database.yml.tmpl/LOCAL_DIFF=--local/READPLAN= acceptance_test.go:1083: Error Trace: /Users/denis.bilenko/work/cli-trees/local-only/libs/testdiff/testdiff.go:22 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:1083 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:915 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:515 Error: Not equal: expected: "INPUT_CONFIG_OK\n" actual : "INPUT_CONFIG_OK\n\nExit code: 1\n" Diff: --- Expected +++ Actual @@ -2 +2,3 @@ +Exit code: 1 + Test: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=postgres_database.yml.tmpl/LOCAL_DIFF=--local/READPLAN= Messages: bundle/invariant/no_drift/output.txt vs /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/TestAcceptbundleinvariantno_driftDATABRICKS_BUNDLE_ENGINE=di2607016867/001/output.txt acceptance_test.go:942: LOG.config: bundle: LOG.config: name: test-bundle-nek4qxsn5nahlmrrii66rtrhma LOG.config: LOG.config: resources: LOG.config: postgres_projects: LOG.config: project: LOG.config: project_id: test-pg-project-nek4qxsn5nahlmrrii66rtrhma LOG.config: display_name: Test Postgres Project LOG.config: LOG.config: postgres_branches: LOG.config: branch: LOG.config: parent: ${resources.postgres_projects.project.name} LOG.config: branch_id: test-branch-nek4qxsn5nahlmrrii66rtrhma LOG.config: no_expiry: true LOG.config: LOG.config: postgres_roles: LOG.config: owner: LOG.config: parent: ${resources.postgres_branches.branch.name} LOG.config: role_id: test-role-nek4qxsn5nahlmrrii66rtrhma LOG.config: postgres_role: app_role LOG.config: LOG.config: postgres_databases: LOG.config: foo: LOG.config: parent: ${resources.postgres_branches.branch.name} LOG.config: database_id: test-database-nek4qxsn5nahlmrrii66rtrhma LOG.config: postgres_database: app_db LOG.config: role: ${resources.postgres_roles.owner.name} acceptance_test.go:942: LOG.cp: acceptance_test.go:942: LOG.deploy: LOG.deploy: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle deploy LOG.deploy: Uploading bundle files to /Workspace/Users/tester@databricks.com/.bundle/test-bundle-nek4qxsn5nahlmrrii66rtrhma/default/files... LOG.deploy: Deploying resources... LOG.deploy: Updating deployment state... LOG.deploy: Deployment complete! acceptance_test.go:942: LOG.destroy: LOG.destroy: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle destroy --auto-approve LOG.destroy: The following resources will be deleted: LOG.destroy: delete resources.postgres_branches.branch LOG.destroy: delete resources.postgres_databases.foo LOG.destroy: delete resources.postgres_projects.project LOG.destroy: delete resources.postgres_roles.owner LOG.destroy: LOG.destroy: This action will result in the deletion of the following Lakebase projects along with LOG.destroy: all their branches, databases, and endpoints. All data stored in them will be permanently lost: LOG.destroy: delete resources.postgres_projects.project LOG.destroy: LOG.destroy: This action will result in the deletion of the following Lakebase branches. LOG.destroy: All data stored in them will be permanently lost: LOG.destroy: delete resources.postgres_branches.branch LOG.destroy: LOG.destroy: This action will result in the deletion of the following Lakebase databases. LOG.destroy: All data stored in them will be permanently lost: LOG.destroy: delete resources.postgres_databases.foo LOG.destroy: LOG.destroy: All files and directories at the following location will be deleted: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-nek4qxsn5nahlmrrii66rtrhma/default LOG.destroy: LOG.destroy: Deleting files... LOG.destroy: Destroy complete! acceptance_test.go:942: LOG.planjson: acceptance_test.go:942: LOG.validate: LOG.validate: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle validate LOG.validate: Name: test-bundle-nek4qxsn5nahlmrrii66rtrhma LOG.validate: Target: default LOG.validate: Workspace: LOG.validate: User: tester@databricks.com LOG.validate: Path: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-nek4qxsn5nahlmrrii66rtrhma/default LOG.validate: LOG.validate: Validation OK! --- FAIL: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=postgres_database.yml.tmpl/LOCAL_DIFF=--local/READPLAN= (0.42s) ```
TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=postgres_database.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 ✅ | main (de465e09b) ❌ | latest (v1.6.0) ❌ **main (de465e09b):** ``` === RUN TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=postgres_database.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 === PAUSE TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=postgres_database.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 === CONT TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=postgres_database.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 acceptance_test.go:1083: Error Trace: /Users/denis.bilenko/work/cli-trees/local-only/libs/testdiff/testdiff.go:22 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:1083 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:915 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:515 Error: Not equal: expected: "INPUT_CONFIG_OK\n" actual : "INPUT_CONFIG_OK\n\nExit code: 1\n" Diff: --- Expected +++ Actual @@ -2 +2,3 @@ +Exit code: 1 + Test: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=postgres_database.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 Messages: bundle/invariant/no_drift/output.txt vs /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/TestAcceptbundleinvariantno_driftDATABRICKS_BUNDLE_ENGINE=di1437929321/001/output.txt acceptance_test.go:942: LOG.config: bundle: LOG.config: name: test-bundle-g24zufxnlvh3xjfpsjmlcs2elu LOG.config: LOG.config: resources: LOG.config: postgres_projects: LOG.config: project: LOG.config: project_id: test-pg-project-g24zufxnlvh3xjfpsjmlcs2elu LOG.config: display_name: Test Postgres Project LOG.config: LOG.config: postgres_branches: LOG.config: branch: LOG.config: parent: ${resources.postgres_projects.project.name} LOG.config: branch_id: test-branch-g24zufxnlvh3xjfpsjmlcs2elu LOG.config: no_expiry: true LOG.config: LOG.config: postgres_roles: LOG.config: owner: LOG.config: parent: ${resources.postgres_branches.branch.name} LOG.config: role_id: test-role-g24zufxnlvh3xjfpsjmlcs2elu LOG.config: postgres_role: app_role LOG.config: LOG.config: postgres_databases: LOG.config: foo: LOG.config: parent: ${resources.postgres_branches.branch.name} LOG.config: database_id: test-database-g24zufxnlvh3xjfpsjmlcs2elu LOG.config: postgres_database: app_db LOG.config: role: ${resources.postgres_roles.owner.name} acceptance_test.go:942: LOG.cp: acceptance_test.go:942: LOG.deploy: LOG.deploy: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle deploy --plan plan.json LOG.deploy: Uploading bundle files to /Workspace/Users/tester@databricks.com/.bundle/test-bundle-g24zufxnlvh3xjfpsjmlcs2elu/default/files... LOG.deploy: Deploying resources... LOG.deploy: Updating deployment state... LOG.deploy: Deployment complete! acceptance_test.go:942: LOG.destroy: LOG.destroy: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle destroy --auto-approve LOG.destroy: The following resources will be deleted: LOG.destroy: delete resources.postgres_branches.branch LOG.destroy: delete resources.postgres_databases.foo LOG.destroy: delete resources.postgres_projects.project LOG.destroy: delete resources.postgres_roles.owner LOG.destroy: LOG.destroy: This action will result in the deletion of the following Lakebase projects along with LOG.destroy: all their branches, databases, and endpoints. All data stored in them will be permanently lost: LOG.destroy: delete resources.postgres_projects.project LOG.destroy: LOG.destroy: This action will result in the deletion of the following Lakebase branches. LOG.destroy: All data stored in them will be permanently lost: LOG.destroy: delete resources.postgres_branches.branch LOG.destroy: LOG.destroy: This action will result in the deletion of the following Lakebase databases. LOG.destroy: All data stored in them will be permanently lost: LOG.destroy: delete resources.postgres_databases.foo LOG.destroy: LOG.destroy: All files and directories at the following location will be deleted: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-g24zufxnlvh3xjfpsjmlcs2elu/default LOG.destroy: LOG.destroy: Deleting files... LOG.destroy: Destroy complete! acceptance_test.go:942: LOG.planjson: acceptance_test.go:942: LOG.validate: LOG.validate: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle validate LOG.validate: Name: test-bundle-g24zufxnlvh3xjfpsjmlcs2elu LOG.validate: Target: default LOG.validate: Workspace: LOG.validate: User: tester@databricks.com LOG.validate: Path: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-g24zufxnlvh3xjfpsjmlcs2elu/default LOG.validate: LOG.validate: Validation OK! --- FAIL: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=postgres_database.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 (0.32s) ``` **latest (v1.6.0):** ``` === RUN TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=postgres_database.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 === PAUSE TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=postgres_database.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 === CONT TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=postgres_database.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 acceptance_test.go:1083: Error Trace: /Users/denis.bilenko/work/cli-trees/local-only/libs/testdiff/testdiff.go:22 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:1083 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:915 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:515 Error: Not equal: expected: "INPUT_CONFIG_OK\n" actual : "INPUT_CONFIG_OK\n\nExit code: 1\n" Diff: --- Expected +++ Actual @@ -2 +2,3 @@ +Exit code: 1 + Test: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=postgres_database.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 Messages: bundle/invariant/no_drift/output.txt vs /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/TestAcceptbundleinvariantno_driftDATABRICKS_BUNDLE_ENGINE=di3804747977/001/output.txt acceptance_test.go:942: LOG.config: bundle: LOG.config: name: test-bundle-ki746jaekbdmdh2u3geesq72by LOG.config: LOG.config: resources: LOG.config: postgres_projects: LOG.config: project: LOG.config: project_id: test-pg-project-ki746jaekbdmdh2u3geesq72by LOG.config: display_name: Test Postgres Project LOG.config: LOG.config: postgres_branches: LOG.config: branch: LOG.config: parent: ${resources.postgres_projects.project.name} LOG.config: branch_id: test-branch-ki746jaekbdmdh2u3geesq72by LOG.config: no_expiry: true LOG.config: LOG.config: postgres_roles: LOG.config: owner: LOG.config: parent: ${resources.postgres_branches.branch.name} LOG.config: role_id: test-role-ki746jaekbdmdh2u3geesq72by LOG.config: postgres_role: app_role LOG.config: LOG.config: postgres_databases: LOG.config: foo: LOG.config: parent: ${resources.postgres_branches.branch.name} LOG.config: database_id: test-database-ki746jaekbdmdh2u3geesq72by LOG.config: postgres_database: app_db LOG.config: role: ${resources.postgres_roles.owner.name} acceptance_test.go:942: LOG.cp: acceptance_test.go:942: LOG.deploy: LOG.deploy: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle deploy --plan plan.json LOG.deploy: Uploading bundle files to /Workspace/Users/tester@databricks.com/.bundle/test-bundle-ki746jaekbdmdh2u3geesq72by/default/files... LOG.deploy: Deploying resources... LOG.deploy: Updating deployment state... LOG.deploy: Deployment complete! acceptance_test.go:942: LOG.destroy: LOG.destroy: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle destroy --auto-approve LOG.destroy: The following resources will be deleted: LOG.destroy: delete resources.postgres_branches.branch LOG.destroy: delete resources.postgres_databases.foo LOG.destroy: delete resources.postgres_projects.project LOG.destroy: delete resources.postgres_roles.owner LOG.destroy: LOG.destroy: This action will result in the deletion of the following Lakebase projects along with LOG.destroy: all their branches, databases, and endpoints. All data stored in them will be permanently lost: LOG.destroy: delete resources.postgres_projects.project LOG.destroy: LOG.destroy: This action will result in the deletion of the following Lakebase branches. LOG.destroy: All data stored in them will be permanently lost: LOG.destroy: delete resources.postgres_branches.branch LOG.destroy: LOG.destroy: This action will result in the deletion of the following Lakebase databases. LOG.destroy: All data stored in them will be permanently lost: LOG.destroy: delete resources.postgres_databases.foo LOG.destroy: LOG.destroy: All files and directories at the following location will be deleted: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-ki746jaekbdmdh2u3geesq72by/default LOG.destroy: LOG.destroy: Deleting files... LOG.destroy: Destroy complete! acceptance_test.go:942: LOG.planjson: acceptance_test.go:942: LOG.validate: LOG.validate: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle validate LOG.validate: Name: test-bundle-ki746jaekbdmdh2u3geesq72by LOG.validate: Target: default LOG.validate: Workspace: LOG.validate: User: tester@databricks.com LOG.validate: Path: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-ki746jaekbdmdh2u3geesq72by/default LOG.validate: LOG.validate: Validation OK! --- FAIL: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=postgres_database.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 (0.46s) ```
TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=postgres_endpoint.yml.tmpl/LOCAL_DIFF=--local/READPLAN= ✅ | main (de465e09b) ❌ | latest (v1.6.0) ❌ **main (de465e09b):** ``` === RUN TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=postgres_endpoint.yml.tmpl/LOCAL_DIFF=--local/READPLAN= === PAUSE TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=postgres_endpoint.yml.tmpl/LOCAL_DIFF=--local/READPLAN= === CONT TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=postgres_endpoint.yml.tmpl/LOCAL_DIFF=--local/READPLAN= acceptance_test.go:1083: Error Trace: /Users/denis.bilenko/work/cli-trees/local-only/libs/testdiff/testdiff.go:22 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:1083 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:915 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:515 Error: Not equal: expected: "INPUT_CONFIG_OK\n" actual : "INPUT_CONFIG_OK\n\nExit code: 1\n" Diff: --- Expected +++ Actual @@ -2 +2,3 @@ +Exit code: 1 + Test: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=postgres_endpoint.yml.tmpl/LOCAL_DIFF=--local/READPLAN= Messages: bundle/invariant/no_drift/output.txt vs /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/TestAcceptbundleinvariantno_driftDATABRICKS_BUNDLE_ENGINE=di3790088520/001/output.txt acceptance_test.go:942: LOG.config: bundle: LOG.config: name: test-bundle-5vuo2o4xtfbvfimfvmulgqr3oi LOG.config: LOG.config: resources: LOG.config: postgres_projects: LOG.config: project: LOG.config: project_id: test-pg-project-5vuo2o4xtfbvfimfvmulgqr3oi LOG.config: display_name: Test Postgres Project LOG.config: LOG.config: postgres_branches: LOG.config: branch: LOG.config: parent: ${resources.postgres_projects.project.name} LOG.config: branch_id: test-branch-5vuo2o4xtfbvfimfvmulgqr3oi LOG.config: no_expiry: true LOG.config: LOG.config: postgres_endpoints: LOG.config: foo: LOG.config: parent: ${resources.postgres_branches.branch.name} LOG.config: endpoint_id: test-endpoint-5vuo2o4xtfbvfimfvmulgqr3oi LOG.config: endpoint_type: ENDPOINT_TYPE_READ_WRITE acceptance_test.go:942: LOG.cp: acceptance_test.go:942: LOG.deploy: LOG.deploy: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle deploy LOG.deploy: Uploading bundle files to /Workspace/Users/tester@databricks.com/.bundle/test-bundle-5vuo2o4xtfbvfimfvmulgqr3oi/default/files... LOG.deploy: Deploying resources... LOG.deploy: Updating deployment state... LOG.deploy: Deployment complete! acceptance_test.go:942: LOG.destroy: LOG.destroy: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle destroy --auto-approve LOG.destroy: The following resources will be deleted: LOG.destroy: delete resources.postgres_branches.branch LOG.destroy: delete resources.postgres_endpoints.foo LOG.destroy: delete resources.postgres_projects.project LOG.destroy: LOG.destroy: This action will result in the deletion of the following Lakebase projects along with LOG.destroy: all their branches, databases, and endpoints. All data stored in them will be permanently lost: LOG.destroy: delete resources.postgres_projects.project LOG.destroy: LOG.destroy: This action will result in the deletion of the following Lakebase branches. LOG.destroy: All data stored in them will be permanently lost: LOG.destroy: delete resources.postgres_branches.branch LOG.destroy: LOG.destroy: All files and directories at the following location will be deleted: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-5vuo2o4xtfbvfimfvmulgqr3oi/default LOG.destroy: LOG.destroy: Deleting files... LOG.destroy: Destroy complete! acceptance_test.go:942: LOG.planjson: acceptance_test.go:942: LOG.validate: LOG.validate: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle validate LOG.validate: Name: test-bundle-5vuo2o4xtfbvfimfvmulgqr3oi LOG.validate: Target: default LOG.validate: Workspace: LOG.validate: User: tester@databricks.com LOG.validate: Path: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-5vuo2o4xtfbvfimfvmulgqr3oi/default LOG.validate: LOG.validate: Validation OK! --- FAIL: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=postgres_endpoint.yml.tmpl/LOCAL_DIFF=--local/READPLAN= (0.38s) ``` **latest (v1.6.0):** ``` === RUN TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=postgres_endpoint.yml.tmpl/LOCAL_DIFF=--local/READPLAN= === PAUSE TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=postgres_endpoint.yml.tmpl/LOCAL_DIFF=--local/READPLAN= === CONT TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=postgres_endpoint.yml.tmpl/LOCAL_DIFF=--local/READPLAN= acceptance_test.go:1083: Error Trace: /Users/denis.bilenko/work/cli-trees/local-only/libs/testdiff/testdiff.go:22 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:1083 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:915 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:515 Error: Not equal: expected: "INPUT_CONFIG_OK\n" actual : "INPUT_CONFIG_OK\n\nExit code: 1\n" Diff: --- Expected +++ Actual @@ -2 +2,3 @@ +Exit code: 1 + Test: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=postgres_endpoint.yml.tmpl/LOCAL_DIFF=--local/READPLAN= Messages: bundle/invariant/no_drift/output.txt vs /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/TestAcceptbundleinvariantno_driftDATABRICKS_BUNDLE_ENGINE=di2167212476/001/output.txt acceptance_test.go:942: LOG.config: bundle: LOG.config: name: test-bundle-gzpxxviw2fdonj3zo2v6p2ehtu LOG.config: LOG.config: resources: LOG.config: postgres_projects: LOG.config: project: LOG.config: project_id: test-pg-project-gzpxxviw2fdonj3zo2v6p2ehtu LOG.config: display_name: Test Postgres Project LOG.config: LOG.config: postgres_branches: LOG.config: branch: LOG.config: parent: ${resources.postgres_projects.project.name} LOG.config: branch_id: test-branch-gzpxxviw2fdonj3zo2v6p2ehtu LOG.config: no_expiry: true LOG.config: LOG.config: postgres_endpoints: LOG.config: foo: LOG.config: parent: ${resources.postgres_branches.branch.name} LOG.config: endpoint_id: test-endpoint-gzpxxviw2fdonj3zo2v6p2ehtu LOG.config: endpoint_type: ENDPOINT_TYPE_READ_WRITE acceptance_test.go:942: LOG.cp: acceptance_test.go:942: LOG.deploy: LOG.deploy: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle deploy LOG.deploy: Uploading bundle files to /Workspace/Users/tester@databricks.com/.bundle/test-bundle-gzpxxviw2fdonj3zo2v6p2ehtu/default/files... LOG.deploy: Deploying resources... LOG.deploy: Updating deployment state... LOG.deploy: Deployment complete! acceptance_test.go:942: LOG.destroy: LOG.destroy: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle destroy --auto-approve LOG.destroy: The following resources will be deleted: LOG.destroy: delete resources.postgres_branches.branch LOG.destroy: delete resources.postgres_endpoints.foo LOG.destroy: delete resources.postgres_projects.project LOG.destroy: LOG.destroy: This action will result in the deletion of the following Lakebase projects along with LOG.destroy: all their branches, databases, and endpoints. All data stored in them will be permanently lost: LOG.destroy: delete resources.postgres_projects.project LOG.destroy: LOG.destroy: This action will result in the deletion of the following Lakebase branches. LOG.destroy: All data stored in them will be permanently lost: LOG.destroy: delete resources.postgres_branches.branch LOG.destroy: LOG.destroy: All files and directories at the following location will be deleted: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-gzpxxviw2fdonj3zo2v6p2ehtu/default LOG.destroy: LOG.destroy: Deleting files... LOG.destroy: Destroy complete! acceptance_test.go:942: LOG.planjson: acceptance_test.go:942: LOG.validate: LOG.validate: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle validate LOG.validate: Name: test-bundle-gzpxxviw2fdonj3zo2v6p2ehtu LOG.validate: Target: default LOG.validate: Workspace: LOG.validate: User: tester@databricks.com LOG.validate: Path: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-gzpxxviw2fdonj3zo2v6p2ehtu/default LOG.validate: LOG.validate: Validation OK! --- FAIL: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=postgres_endpoint.yml.tmpl/LOCAL_DIFF=--local/READPLAN= (0.39s) ```
TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=postgres_endpoint.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 ✅ | main (de465e09b) ❌ | latest (v1.6.0) ❌ **main (de465e09b):** ``` === RUN TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=postgres_endpoint.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 === PAUSE TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=postgres_endpoint.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 === CONT TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=postgres_endpoint.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 acceptance_test.go:1083: Error Trace: /Users/denis.bilenko/work/cli-trees/local-only/libs/testdiff/testdiff.go:22 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:1083 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:915 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:515 Error: Not equal: expected: "INPUT_CONFIG_OK\n" actual : "INPUT_CONFIG_OK\n\nExit code: 1\n" Diff: --- Expected +++ Actual @@ -2 +2,3 @@ +Exit code: 1 + Test: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=postgres_endpoint.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 Messages: bundle/invariant/no_drift/output.txt vs /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/TestAcceptbundleinvariantno_driftDATABRICKS_BUNDLE_ENGINE=di4030795380/001/output.txt acceptance_test.go:942: LOG.config: bundle: LOG.config: name: test-bundle-woz2bsbdnfaavcs3ghwuucw6ie LOG.config: LOG.config: resources: LOG.config: postgres_projects: LOG.config: project: LOG.config: project_id: test-pg-project-woz2bsbdnfaavcs3ghwuucw6ie LOG.config: display_name: Test Postgres Project LOG.config: LOG.config: postgres_branches: LOG.config: branch: LOG.config: parent: ${resources.postgres_projects.project.name} LOG.config: branch_id: test-branch-woz2bsbdnfaavcs3ghwuucw6ie LOG.config: no_expiry: true LOG.config: LOG.config: postgres_endpoints: LOG.config: foo: LOG.config: parent: ${resources.postgres_branches.branch.name} LOG.config: endpoint_id: test-endpoint-woz2bsbdnfaavcs3ghwuucw6ie LOG.config: endpoint_type: ENDPOINT_TYPE_READ_WRITE acceptance_test.go:942: LOG.cp: acceptance_test.go:942: LOG.deploy: LOG.deploy: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle deploy --plan plan.json LOG.deploy: Uploading bundle files to /Workspace/Users/tester@databricks.com/.bundle/test-bundle-woz2bsbdnfaavcs3ghwuucw6ie/default/files... LOG.deploy: Deploying resources... LOG.deploy: Updating deployment state... LOG.deploy: Deployment complete! acceptance_test.go:942: LOG.destroy: LOG.destroy: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle destroy --auto-approve LOG.destroy: The following resources will be deleted: LOG.destroy: delete resources.postgres_branches.branch LOG.destroy: delete resources.postgres_endpoints.foo LOG.destroy: delete resources.postgres_projects.project LOG.destroy: LOG.destroy: This action will result in the deletion of the following Lakebase projects along with LOG.destroy: all their branches, databases, and endpoints. All data stored in them will be permanently lost: LOG.destroy: delete resources.postgres_projects.project LOG.destroy: LOG.destroy: This action will result in the deletion of the following Lakebase branches. LOG.destroy: All data stored in them will be permanently lost: LOG.destroy: delete resources.postgres_branches.branch LOG.destroy: LOG.destroy: All files and directories at the following location will be deleted: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-woz2bsbdnfaavcs3ghwuucw6ie/default LOG.destroy: LOG.destroy: Deleting files... LOG.destroy: Destroy complete! acceptance_test.go:942: LOG.planjson: acceptance_test.go:942: LOG.validate: LOG.validate: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle validate LOG.validate: Name: test-bundle-woz2bsbdnfaavcs3ghwuucw6ie LOG.validate: Target: default LOG.validate: Workspace: LOG.validate: User: tester@databricks.com LOG.validate: Path: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-woz2bsbdnfaavcs3ghwuucw6ie/default LOG.validate: LOG.validate: Validation OK! --- FAIL: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=postgres_endpoint.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 (0.33s) ``` **latest (v1.6.0):** ``` === RUN TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=postgres_endpoint.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 === PAUSE TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=postgres_endpoint.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 === CONT TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=postgres_endpoint.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 acceptance_test.go:1083: Error Trace: /Users/denis.bilenko/work/cli-trees/local-only/libs/testdiff/testdiff.go:22 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:1083 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:915 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:515 Error: Not equal: expected: "INPUT_CONFIG_OK\n" actual : "INPUT_CONFIG_OK\n\nExit code: 1\n" Diff: --- Expected +++ Actual @@ -2 +2,3 @@ +Exit code: 1 + Test: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=postgres_endpoint.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 Messages: bundle/invariant/no_drift/output.txt vs /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/TestAcceptbundleinvariantno_driftDATABRICKS_BUNDLE_ENGINE=di3270952949/001/output.txt acceptance_test.go:942: LOG.config: bundle: LOG.config: name: test-bundle-7jt7wtpylzgqfou2nigzpwaxtu LOG.config: LOG.config: resources: LOG.config: postgres_projects: LOG.config: project: LOG.config: project_id: test-pg-project-7jt7wtpylzgqfou2nigzpwaxtu LOG.config: display_name: Test Postgres Project LOG.config: LOG.config: postgres_branches: LOG.config: branch: LOG.config: parent: ${resources.postgres_projects.project.name} LOG.config: branch_id: test-branch-7jt7wtpylzgqfou2nigzpwaxtu LOG.config: no_expiry: true LOG.config: LOG.config: postgres_endpoints: LOG.config: foo: LOG.config: parent: ${resources.postgres_branches.branch.name} LOG.config: endpoint_id: test-endpoint-7jt7wtpylzgqfou2nigzpwaxtu LOG.config: endpoint_type: ENDPOINT_TYPE_READ_WRITE acceptance_test.go:942: LOG.cp: acceptance_test.go:942: LOG.deploy: LOG.deploy: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle deploy --plan plan.json LOG.deploy: Uploading bundle files to /Workspace/Users/tester@databricks.com/.bundle/test-bundle-7jt7wtpylzgqfou2nigzpwaxtu/default/files... LOG.deploy: Deploying resources... LOG.deploy: Updating deployment state... LOG.deploy: Deployment complete! acceptance_test.go:942: LOG.destroy: LOG.destroy: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle destroy --auto-approve LOG.destroy: The following resources will be deleted: LOG.destroy: delete resources.postgres_branches.branch LOG.destroy: delete resources.postgres_endpoints.foo LOG.destroy: delete resources.postgres_projects.project LOG.destroy: LOG.destroy: This action will result in the deletion of the following Lakebase projects along with LOG.destroy: all their branches, databases, and endpoints. All data stored in them will be permanently lost: LOG.destroy: delete resources.postgres_projects.project LOG.destroy: LOG.destroy: This action will result in the deletion of the following Lakebase branches. LOG.destroy: All data stored in them will be permanently lost: LOG.destroy: delete resources.postgres_branches.branch LOG.destroy: LOG.destroy: All files and directories at the following location will be deleted: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-7jt7wtpylzgqfou2nigzpwaxtu/default LOG.destroy: LOG.destroy: Deleting files... LOG.destroy: Destroy complete! acceptance_test.go:942: LOG.planjson: acceptance_test.go:942: LOG.validate: LOG.validate: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle validate LOG.validate: Name: test-bundle-7jt7wtpylzgqfou2nigzpwaxtu LOG.validate: Target: default LOG.validate: Workspace: LOG.validate: User: tester@databricks.com LOG.validate: Path: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-7jt7wtpylzgqfou2nigzpwaxtu/default LOG.validate: LOG.validate: Validation OK! --- FAIL: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=postgres_endpoint.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 (0.41s) ```
TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=postgres_project.yml.tmpl/LOCAL_DIFF=--local/READPLAN= ✅ | main (de465e09b) ❌ | latest (v1.6.0) ❌ **main (de465e09b):** ``` === RUN TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=postgres_project.yml.tmpl/LOCAL_DIFF=--local/READPLAN= === PAUSE TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=postgres_project.yml.tmpl/LOCAL_DIFF=--local/READPLAN= === CONT TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=postgres_project.yml.tmpl/LOCAL_DIFF=--local/READPLAN= acceptance_test.go:1083: Error Trace: /Users/denis.bilenko/work/cli-trees/local-only/libs/testdiff/testdiff.go:22 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:1083 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:915 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:515 Error: Not equal: expected: "INPUT_CONFIG_OK\n" actual : "INPUT_CONFIG_OK\n\nExit code: 1\n" Diff: --- Expected +++ Actual @@ -2 +2,3 @@ +Exit code: 1 + Test: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=postgres_project.yml.tmpl/LOCAL_DIFF=--local/READPLAN= Messages: bundle/invariant/no_drift/output.txt vs /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/TestAcceptbundleinvariantno_driftDATABRICKS_BUNDLE_ENGINE=di4236740084/001/output.txt acceptance_test.go:942: LOG.config: bundle: LOG.config: name: test-bundle-dnddo5zh55d53dgfqyyam4ddea LOG.config: LOG.config: resources: LOG.config: postgres_projects: LOG.config: foo: LOG.config: project_id: test-pg-project-dnddo5zh55d53dgfqyyam4ddea LOG.config: display_name: Test Postgres Project LOG.config: permissions: LOG.config: - level: CAN_USE LOG.config: group_name: users acceptance_test.go:942: LOG.cp: acceptance_test.go:942: LOG.deploy: LOG.deploy: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle deploy LOG.deploy: Uploading bundle files to /Workspace/Users/tester@databricks.com/.bundle/test-bundle-dnddo5zh55d53dgfqyyam4ddea/default/files... LOG.deploy: Deploying resources... LOG.deploy: Updating deployment state... LOG.deploy: Deployment complete! acceptance_test.go:942: LOG.destroy: LOG.destroy: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle destroy --auto-approve LOG.destroy: The following resources will be deleted: LOG.destroy: delete resources.postgres_projects.foo LOG.destroy: LOG.destroy: This action will result in the deletion of the following Lakebase projects along with LOG.destroy: all their branches, databases, and endpoints. All data stored in them will be permanently lost: LOG.destroy: delete resources.postgres_projects.foo LOG.destroy: LOG.destroy: All files and directories at the following location will be deleted: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-dnddo5zh55d53dgfqyyam4ddea/default LOG.destroy: LOG.destroy: Deleting files... LOG.destroy: Destroy complete! acceptance_test.go:942: LOG.planjson: acceptance_test.go:942: LOG.validate: LOG.validate: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle validate LOG.validate: Name: test-bundle-dnddo5zh55d53dgfqyyam4ddea LOG.validate: Target: default LOG.validate: Workspace: LOG.validate: User: tester@databricks.com LOG.validate: Path: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-dnddo5zh55d53dgfqyyam4ddea/default LOG.validate: LOG.validate: Validation OK! --- FAIL: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=postgres_project.yml.tmpl/LOCAL_DIFF=--local/READPLAN= (0.33s) ``` **latest (v1.6.0):** ``` === RUN TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=postgres_project.yml.tmpl/LOCAL_DIFF=--local/READPLAN= === PAUSE TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=postgres_project.yml.tmpl/LOCAL_DIFF=--local/READPLAN= === CONT TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=postgres_project.yml.tmpl/LOCAL_DIFF=--local/READPLAN= acceptance_test.go:1083: Error Trace: /Users/denis.bilenko/work/cli-trees/local-only/libs/testdiff/testdiff.go:22 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:1083 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:915 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:515 Error: Not equal: expected: "INPUT_CONFIG_OK\n" actual : "INPUT_CONFIG_OK\n\nExit code: 1\n" Diff: --- Expected +++ Actual @@ -2 +2,3 @@ +Exit code: 1 + Test: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=postgres_project.yml.tmpl/LOCAL_DIFF=--local/READPLAN= Messages: bundle/invariant/no_drift/output.txt vs /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/TestAcceptbundleinvariantno_driftDATABRICKS_BUNDLE_ENGINE=di3574324153/001/output.txt acceptance_test.go:942: LOG.config: bundle: LOG.config: name: test-bundle-w5nla7lwpvgwhkthl4mhwjawoy LOG.config: LOG.config: resources: LOG.config: postgres_projects: LOG.config: foo: LOG.config: project_id: test-pg-project-w5nla7lwpvgwhkthl4mhwjawoy LOG.config: display_name: Test Postgres Project LOG.config: permissions: LOG.config: - level: CAN_USE LOG.config: group_name: users acceptance_test.go:942: LOG.cp: acceptance_test.go:942: LOG.deploy: LOG.deploy: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle deploy LOG.deploy: Uploading bundle files to /Workspace/Users/tester@databricks.com/.bundle/test-bundle-w5nla7lwpvgwhkthl4mhwjawoy/default/files... LOG.deploy: Deploying resources... LOG.deploy: Updating deployment state... LOG.deploy: Deployment complete! acceptance_test.go:942: LOG.destroy: LOG.destroy: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle destroy --auto-approve LOG.destroy: The following resources will be deleted: LOG.destroy: delete resources.postgres_projects.foo LOG.destroy: LOG.destroy: This action will result in the deletion of the following Lakebase projects along with LOG.destroy: all their branches, databases, and endpoints. All data stored in them will be permanently lost: LOG.destroy: delete resources.postgres_projects.foo LOG.destroy: LOG.destroy: All files and directories at the following location will be deleted: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-w5nla7lwpvgwhkthl4mhwjawoy/default LOG.destroy: LOG.destroy: Deleting files... LOG.destroy: Destroy complete! acceptance_test.go:942: LOG.planjson: acceptance_test.go:942: LOG.validate: LOG.validate: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle validate LOG.validate: Name: test-bundle-w5nla7lwpvgwhkthl4mhwjawoy LOG.validate: Target: default LOG.validate: Workspace: LOG.validate: User: tester@databricks.com LOG.validate: Path: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-w5nla7lwpvgwhkthl4mhwjawoy/default LOG.validate: LOG.validate: Validation OK! --- FAIL: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=postgres_project.yml.tmpl/LOCAL_DIFF=--local/READPLAN= (0.42s) ```
TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=postgres_project.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 ✅ | main (de465e09b) ❌ | latest (v1.6.0) ❌ **main (de465e09b):** ``` === RUN TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=postgres_project.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 === PAUSE TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=postgres_project.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 === CONT TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=postgres_project.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 acceptance_test.go:1083: Error Trace: /Users/denis.bilenko/work/cli-trees/local-only/libs/testdiff/testdiff.go:22 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:1083 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:915 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:515 Error: Not equal: expected: "INPUT_CONFIG_OK\n" actual : "INPUT_CONFIG_OK\n\nExit code: 1\n" Diff: --- Expected +++ Actual @@ -2 +2,3 @@ +Exit code: 1 + Test: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=postgres_project.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 Messages: bundle/invariant/no_drift/output.txt vs /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/TestAcceptbundleinvariantno_driftDATABRICKS_BUNDLE_ENGINE=di3826078699/001/output.txt acceptance_test.go:942: LOG.config: bundle: LOG.config: name: test-bundle-fbup4uneq5f6fdas5uu7rhcnji LOG.config: LOG.config: resources: LOG.config: postgres_projects: LOG.config: foo: LOG.config: project_id: test-pg-project-fbup4uneq5f6fdas5uu7rhcnji LOG.config: display_name: Test Postgres Project LOG.config: permissions: LOG.config: - level: CAN_USE LOG.config: group_name: users acceptance_test.go:942: LOG.cp: acceptance_test.go:942: LOG.deploy: LOG.deploy: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle deploy --plan plan.json LOG.deploy: Uploading bundle files to /Workspace/Users/tester@databricks.com/.bundle/test-bundle-fbup4uneq5f6fdas5uu7rhcnji/default/files... LOG.deploy: Deploying resources... LOG.deploy: Updating deployment state... LOG.deploy: Deployment complete! acceptance_test.go:942: LOG.destroy: LOG.destroy: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle destroy --auto-approve LOG.destroy: The following resources will be deleted: LOG.destroy: delete resources.postgres_projects.foo LOG.destroy: LOG.destroy: This action will result in the deletion of the following Lakebase projects along with LOG.destroy: all their branches, databases, and endpoints. All data stored in them will be permanently lost: LOG.destroy: delete resources.postgres_projects.foo LOG.destroy: LOG.destroy: All files and directories at the following location will be deleted: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-fbup4uneq5f6fdas5uu7rhcnji/default LOG.destroy: LOG.destroy: Deleting files... LOG.destroy: Destroy complete! acceptance_test.go:942: LOG.planjson: acceptance_test.go:942: LOG.validate: LOG.validate: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle validate LOG.validate: Name: test-bundle-fbup4uneq5f6fdas5uu7rhcnji LOG.validate: Target: default LOG.validate: Workspace: LOG.validate: User: tester@databricks.com LOG.validate: Path: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-fbup4uneq5f6fdas5uu7rhcnji/default LOG.validate: LOG.validate: Validation OK! --- FAIL: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=postgres_project.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 (0.30s) ``` **latest (v1.6.0):** ``` === RUN TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=postgres_project.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 === PAUSE TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=postgres_project.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 === CONT TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=postgres_project.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 acceptance_test.go:1083: Error Trace: /Users/denis.bilenko/work/cli-trees/local-only/libs/testdiff/testdiff.go:22 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:1083 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:915 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:515 Error: Not equal: expected: "INPUT_CONFIG_OK\n" actual : "INPUT_CONFIG_OK\n\nExit code: 1\n" Diff: --- Expected +++ Actual @@ -2 +2,3 @@ +Exit code: 1 + Test: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=postgres_project.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 Messages: bundle/invariant/no_drift/output.txt vs /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/TestAcceptbundleinvariantno_driftDATABRICKS_BUNDLE_ENGINE=di853955602/001/output.txt acceptance_test.go:942: LOG.config: bundle: LOG.config: name: test-bundle-whhod2dpjrgp5ppup3b5k6x2oq LOG.config: LOG.config: resources: LOG.config: postgres_projects: LOG.config: foo: LOG.config: project_id: test-pg-project-whhod2dpjrgp5ppup3b5k6x2oq LOG.config: display_name: Test Postgres Project LOG.config: permissions: LOG.config: - level: CAN_USE LOG.config: group_name: users acceptance_test.go:942: LOG.cp: acceptance_test.go:942: LOG.deploy: LOG.deploy: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle deploy --plan plan.json LOG.deploy: Uploading bundle files to /Workspace/Users/tester@databricks.com/.bundle/test-bundle-whhod2dpjrgp5ppup3b5k6x2oq/default/files... LOG.deploy: Deploying resources... LOG.deploy: Updating deployment state... LOG.deploy: Deployment complete! acceptance_test.go:942: LOG.destroy: LOG.destroy: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle destroy --auto-approve LOG.destroy: The following resources will be deleted: LOG.destroy: delete resources.postgres_projects.foo LOG.destroy: LOG.destroy: This action will result in the deletion of the following Lakebase projects along with LOG.destroy: all their branches, databases, and endpoints. All data stored in them will be permanently lost: LOG.destroy: delete resources.postgres_projects.foo LOG.destroy: LOG.destroy: All files and directories at the following location will be deleted: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-whhod2dpjrgp5ppup3b5k6x2oq/default LOG.destroy: LOG.destroy: Deleting files... LOG.destroy: Destroy complete! acceptance_test.go:942: LOG.planjson: acceptance_test.go:942: LOG.validate: LOG.validate: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle validate LOG.validate: Name: test-bundle-whhod2dpjrgp5ppup3b5k6x2oq LOG.validate: Target: default LOG.validate: Workspace: LOG.validate: User: tester@databricks.com LOG.validate: Path: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-whhod2dpjrgp5ppup3b5k6x2oq/default LOG.validate: LOG.validate: Validation OK! --- FAIL: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=postgres_project.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 (0.43s) ```
TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=postgres_role.yml.tmpl/LOCAL_DIFF=--local/READPLAN= ✅ | main (de465e09b) ❌ | latest (v1.6.0) ❌ **main (de465e09b):** ``` === RUN TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=postgres_role.yml.tmpl/LOCAL_DIFF=--local/READPLAN= === PAUSE TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=postgres_role.yml.tmpl/LOCAL_DIFF=--local/READPLAN= === CONT TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=postgres_role.yml.tmpl/LOCAL_DIFF=--local/READPLAN= acceptance_test.go:1083: Error Trace: /Users/denis.bilenko/work/cli-trees/local-only/libs/testdiff/testdiff.go:22 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:1083 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:915 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:515 Error: Not equal: expected: "INPUT_CONFIG_OK\n" actual : "INPUT_CONFIG_OK\n\nExit code: 1\n" Diff: --- Expected +++ Actual @@ -2 +2,3 @@ +Exit code: 1 + Test: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=postgres_role.yml.tmpl/LOCAL_DIFF=--local/READPLAN= Messages: bundle/invariant/no_drift/output.txt vs /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/TestAcceptbundleinvariantno_driftDATABRICKS_BUNDLE_ENGINE=di3807726474/001/output.txt acceptance_test.go:942: LOG.config: bundle: LOG.config: name: test-bundle-vofmm3aq7je3jdhj6kkblnwvpe LOG.config: LOG.config: resources: LOG.config: postgres_projects: LOG.config: project: LOG.config: project_id: test-pg-project-vofmm3aq7je3jdhj6kkblnwvpe LOG.config: display_name: Test Postgres Project LOG.config: LOG.config: postgres_branches: LOG.config: branch: LOG.config: parent: ${resources.postgres_projects.project.name} LOG.config: branch_id: test-branch-vofmm3aq7je3jdhj6kkblnwvpe LOG.config: no_expiry: true LOG.config: LOG.config: postgres_roles: LOG.config: foo: LOG.config: parent: ${resources.postgres_branches.branch.name} LOG.config: role_id: test-role-vofmm3aq7je3jdhj6kkblnwvpe LOG.config: postgres_role: app_role acceptance_test.go:942: LOG.cp: acceptance_test.go:942: LOG.deploy: LOG.deploy: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle deploy LOG.deploy: Uploading bundle files to /Workspace/Users/tester@databricks.com/.bundle/test-bundle-vofmm3aq7je3jdhj6kkblnwvpe/default/files... LOG.deploy: Deploying resources... LOG.deploy: Updating deployment state... LOG.deploy: Deployment complete! acceptance_test.go:942: LOG.destroy: LOG.destroy: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle destroy --auto-approve LOG.destroy: The following resources will be deleted: LOG.destroy: delete resources.postgres_branches.branch LOG.destroy: delete resources.postgres_projects.project LOG.destroy: delete resources.postgres_roles.foo LOG.destroy: LOG.destroy: This action will result in the deletion of the following Lakebase projects along with LOG.destroy: all their branches, databases, and endpoints. All data stored in them will be permanently lost: LOG.destroy: delete resources.postgres_projects.project LOG.destroy: LOG.destroy: This action will result in the deletion of the following Lakebase branches. LOG.destroy: All data stored in them will be permanently lost: LOG.destroy: delete resources.postgres_branches.branch LOG.destroy: LOG.destroy: All files and directories at the following location will be deleted: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-vofmm3aq7je3jdhj6kkblnwvpe/default LOG.destroy: LOG.destroy: Deleting files... LOG.destroy: Destroy complete! acceptance_test.go:942: LOG.planjson: acceptance_test.go:942: LOG.validate: LOG.validate: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle validate LOG.validate: Name: test-bundle-vofmm3aq7je3jdhj6kkblnwvpe LOG.validate: Target: default LOG.validate: Workspace: LOG.validate: User: tester@databricks.com LOG.validate: Path: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-vofmm3aq7je3jdhj6kkblnwvpe/default LOG.validate: LOG.validate: Validation OK! --- FAIL: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=postgres_role.yml.tmpl/LOCAL_DIFF=--local/READPLAN= (0.34s) ``` **latest (v1.6.0):** ``` === RUN TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=postgres_role.yml.tmpl/LOCAL_DIFF=--local/READPLAN= === PAUSE TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=postgres_role.yml.tmpl/LOCAL_DIFF=--local/READPLAN= === CONT TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=postgres_role.yml.tmpl/LOCAL_DIFF=--local/READPLAN= acceptance_test.go:1083: Error Trace: /Users/denis.bilenko/work/cli-trees/local-only/libs/testdiff/testdiff.go:22 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:1083 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:915 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:515 Error: Not equal: expected: "INPUT_CONFIG_OK\n" actual : "INPUT_CONFIG_OK\n\nExit code: 1\n" Diff: --- Expected +++ Actual @@ -2 +2,3 @@ +Exit code: 1 + Test: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=postgres_role.yml.tmpl/LOCAL_DIFF=--local/READPLAN= Messages: bundle/invariant/no_drift/output.txt vs /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/TestAcceptbundleinvariantno_driftDATABRICKS_BUNDLE_ENGINE=di4256568780/001/output.txt acceptance_test.go:942: LOG.config: bundle: LOG.config: name: test-bundle-xuvuwyzncvao7ncawopzkdxfdi LOG.config: LOG.config: resources: LOG.config: postgres_projects: LOG.config: project: LOG.config: project_id: test-pg-project-xuvuwyzncvao7ncawopzkdxfdi LOG.config: display_name: Test Postgres Project LOG.config: LOG.config: postgres_branches: LOG.config: branch: LOG.config: parent: ${resources.postgres_projects.project.name} LOG.config: branch_id: test-branch-xuvuwyzncvao7ncawopzkdxfdi LOG.config: no_expiry: true LOG.config: LOG.config: postgres_roles: LOG.config: foo: LOG.config: parent: ${resources.postgres_branches.branch.name} LOG.config: role_id: test-role-xuvuwyzncvao7ncawopzkdxfdi LOG.config: postgres_role: app_role acceptance_test.go:942: LOG.cp: acceptance_test.go:942: LOG.deploy: LOG.deploy: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle deploy LOG.deploy: Uploading bundle files to /Workspace/Users/tester@databricks.com/.bundle/test-bundle-xuvuwyzncvao7ncawopzkdxfdi/default/files... LOG.deploy: Deploying resources... LOG.deploy: Updating deployment state... LOG.deploy: Deployment complete! acceptance_test.go:942: LOG.destroy: LOG.destroy: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle destroy --auto-approve LOG.destroy: The following resources will be deleted: LOG.destroy: delete resources.postgres_branches.branch LOG.destroy: delete resources.postgres_projects.project LOG.destroy: delete resources.postgres_roles.foo LOG.destroy: LOG.destroy: This action will result in the deletion of the following Lakebase projects along with LOG.destroy: all their branches, databases, and endpoints. All data stored in them will be permanently lost: LOG.destroy: delete resources.postgres_projects.project LOG.destroy: LOG.destroy: This action will result in the deletion of the following Lakebase branches. LOG.destroy: All data stored in them will be permanently lost: LOG.destroy: delete resources.postgres_branches.branch LOG.destroy: LOG.destroy: All files and directories at the following location will be deleted: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-xuvuwyzncvao7ncawopzkdxfdi/default LOG.destroy: LOG.destroy: Deleting files... LOG.destroy: Destroy complete! acceptance_test.go:942: LOG.planjson: acceptance_test.go:942: LOG.validate: LOG.validate: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle validate LOG.validate: Name: test-bundle-xuvuwyzncvao7ncawopzkdxfdi LOG.validate: Target: default LOG.validate: Workspace: LOG.validate: User: tester@databricks.com LOG.validate: Path: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-xuvuwyzncvao7ncawopzkdxfdi/default LOG.validate: LOG.validate: Validation OK! --- FAIL: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=postgres_role.yml.tmpl/LOCAL_DIFF=--local/READPLAN= (0.43s) ```
TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=postgres_role.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 ✅ | main (de465e09b) ❌ | latest (v1.6.0) ❌ **main (de465e09b):** ``` === RUN TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=postgres_role.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 === PAUSE TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=postgres_role.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 === CONT TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=postgres_role.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 acceptance_test.go:1083: Error Trace: /Users/denis.bilenko/work/cli-trees/local-only/libs/testdiff/testdiff.go:22 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:1083 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:915 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:515 Error: Not equal: expected: "INPUT_CONFIG_OK\n" actual : "INPUT_CONFIG_OK\n\nExit code: 1\n" Diff: --- Expected +++ Actual @@ -2 +2,3 @@ +Exit code: 1 + Test: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=postgres_role.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 Messages: bundle/invariant/no_drift/output.txt vs /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/TestAcceptbundleinvariantno_driftDATABRICKS_BUNDLE_ENGINE=di2630000485/001/output.txt acceptance_test.go:942: LOG.config: bundle: LOG.config: name: test-bundle-qmtd7urgkvhqpcukbzoipsh2s4 LOG.config: LOG.config: resources: LOG.config: postgres_projects: LOG.config: project: LOG.config: project_id: test-pg-project-qmtd7urgkvhqpcukbzoipsh2s4 LOG.config: display_name: Test Postgres Project LOG.config: LOG.config: postgres_branches: LOG.config: branch: LOG.config: parent: ${resources.postgres_projects.project.name} LOG.config: branch_id: test-branch-qmtd7urgkvhqpcukbzoipsh2s4 LOG.config: no_expiry: true LOG.config: LOG.config: postgres_roles: LOG.config: foo: LOG.config: parent: ${resources.postgres_branches.branch.name} LOG.config: role_id: test-role-qmtd7urgkvhqpcukbzoipsh2s4 LOG.config: postgres_role: app_role acceptance_test.go:942: LOG.cp: acceptance_test.go:942: LOG.deploy: LOG.deploy: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle deploy --plan plan.json LOG.deploy: Uploading bundle files to /Workspace/Users/tester@databricks.com/.bundle/test-bundle-qmtd7urgkvhqpcukbzoipsh2s4/default/files... LOG.deploy: Deploying resources... LOG.deploy: Updating deployment state... LOG.deploy: Deployment complete! acceptance_test.go:942: LOG.destroy: LOG.destroy: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle destroy --auto-approve LOG.destroy: The following resources will be deleted: LOG.destroy: delete resources.postgres_branches.branch LOG.destroy: delete resources.postgres_projects.project LOG.destroy: delete resources.postgres_roles.foo LOG.destroy: LOG.destroy: This action will result in the deletion of the following Lakebase projects along with LOG.destroy: all their branches, databases, and endpoints. All data stored in them will be permanently lost: LOG.destroy: delete resources.postgres_projects.project LOG.destroy: LOG.destroy: This action will result in the deletion of the following Lakebase branches. LOG.destroy: All data stored in them will be permanently lost: LOG.destroy: delete resources.postgres_branches.branch LOG.destroy: LOG.destroy: All files and directories at the following location will be deleted: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-qmtd7urgkvhqpcukbzoipsh2s4/default LOG.destroy: LOG.destroy: Deleting files... LOG.destroy: Destroy complete! acceptance_test.go:942: LOG.planjson: acceptance_test.go:942: LOG.validate: LOG.validate: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle validate LOG.validate: Name: test-bundle-qmtd7urgkvhqpcukbzoipsh2s4 LOG.validate: Target: default LOG.validate: Workspace: LOG.validate: User: tester@databricks.com LOG.validate: Path: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-qmtd7urgkvhqpcukbzoipsh2s4/default LOG.validate: LOG.validate: Validation OK! --- FAIL: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=postgres_role.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 (0.36s) ``` **latest (v1.6.0):** ``` === RUN TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=postgres_role.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 === PAUSE TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=postgres_role.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 === CONT TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=postgres_role.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 acceptance_test.go:1083: Error Trace: /Users/denis.bilenko/work/cli-trees/local-only/libs/testdiff/testdiff.go:22 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:1083 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:915 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:515 Error: Not equal: expected: "INPUT_CONFIG_OK\n" actual : "INPUT_CONFIG_OK\n\nExit code: 1\n" Diff: --- Expected +++ Actual @@ -2 +2,3 @@ +Exit code: 1 + Test: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=postgres_role.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 Messages: bundle/invariant/no_drift/output.txt vs /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/TestAcceptbundleinvariantno_driftDATABRICKS_BUNDLE_ENGINE=di1866417748/001/output.txt acceptance_test.go:942: LOG.config: bundle: LOG.config: name: test-bundle-4so6r6b6xfe3nlgm64x3r4iude LOG.config: LOG.config: resources: LOG.config: postgres_projects: LOG.config: project: LOG.config: project_id: test-pg-project-4so6r6b6xfe3nlgm64x3r4iude LOG.config: display_name: Test Postgres Project LOG.config: LOG.config: postgres_branches: LOG.config: branch: LOG.config: parent: ${resources.postgres_projects.project.name} LOG.config: branch_id: test-branch-4so6r6b6xfe3nlgm64x3r4iude LOG.config: no_expiry: true LOG.config: LOG.config: postgres_roles: LOG.config: foo: LOG.config: parent: ${resources.postgres_branches.branch.name} LOG.config: role_id: test-role-4so6r6b6xfe3nlgm64x3r4iude LOG.config: postgres_role: app_role acceptance_test.go:942: LOG.cp: acceptance_test.go:942: LOG.deploy: LOG.deploy: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle deploy --plan plan.json LOG.deploy: Uploading bundle files to /Workspace/Users/tester@databricks.com/.bundle/test-bundle-4so6r6b6xfe3nlgm64x3r4iude/default/files... LOG.deploy: Deploying resources... LOG.deploy: Updating deployment state... LOG.deploy: Deployment complete! acceptance_test.go:942: LOG.destroy: LOG.destroy: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle destroy --auto-approve LOG.destroy: The following resources will be deleted: LOG.destroy: delete resources.postgres_branches.branch LOG.destroy: delete resources.postgres_projects.project LOG.destroy: delete resources.postgres_roles.foo LOG.destroy: LOG.destroy: This action will result in the deletion of the following Lakebase projects along with LOG.destroy: all their branches, databases, and endpoints. All data stored in them will be permanently lost: LOG.destroy: delete resources.postgres_projects.project LOG.destroy: LOG.destroy: This action will result in the deletion of the following Lakebase branches. LOG.destroy: All data stored in them will be permanently lost: LOG.destroy: delete resources.postgres_branches.branch LOG.destroy: LOG.destroy: All files and directories at the following location will be deleted: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-4so6r6b6xfe3nlgm64x3r4iude/default LOG.destroy: LOG.destroy: Deleting files... LOG.destroy: Destroy complete! acceptance_test.go:942: LOG.planjson: acceptance_test.go:942: LOG.validate: LOG.validate: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle validate LOG.validate: Name: test-bundle-4so6r6b6xfe3nlgm64x3r4iude LOG.validate: Target: default LOG.validate: Workspace: LOG.validate: User: tester@databricks.com LOG.validate: Path: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-4so6r6b6xfe3nlgm64x3r4iude/default LOG.validate: LOG.validate: Validation OK! --- FAIL: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=postgres_role.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 (0.44s) ```
TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=postgres_synced_table.yml.tmpl/LOCAL_DIFF=--local/READPLAN= ✅ | main (de465e09b) ❌ | latest (v1.6.0) ❌ **main (de465e09b):** ``` === RUN TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=postgres_synced_table.yml.tmpl/LOCAL_DIFF=--local/READPLAN= === PAUSE TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=postgres_synced_table.yml.tmpl/LOCAL_DIFF=--local/READPLAN= === CONT TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=postgres_synced_table.yml.tmpl/LOCAL_DIFF=--local/READPLAN= acceptance_test.go:1083: Error Trace: /Users/denis.bilenko/work/cli-trees/local-only/libs/testdiff/testdiff.go:22 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:1083 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:915 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:515 Error: Not equal: expected: "INPUT_CONFIG_OK\n" actual : "INPUT_CONFIG_OK\n\nExit code: 1\n" Diff: --- Expected +++ Actual @@ -2 +2,3 @@ +Exit code: 1 + Test: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=postgres_synced_table.yml.tmpl/LOCAL_DIFF=--local/READPLAN= Messages: bundle/invariant/no_drift/output.txt vs /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/TestAcceptbundleinvariantno_driftDATABRICKS_BUNDLE_ENGINE=di1045387757/001/output.txt acceptance_test.go:942: LOG.config: bundle: LOG.config: name: test-bundle-yiom4ypxbzhf5drzuxdfqjt5ha LOG.config: LOG.config: resources: LOG.config: postgres_synced_tables: LOG.config: foo: LOG.config: synced_table_id: lakebase_yiom4ypxbzhf5drzuxdfqjt5ha.public.trips_synced LOG.config: source_table_full_name: main.raw.trips LOG.config: primary_key_columns: [id] LOG.config: scheduling_policy: SNAPSHOT LOG.config: postgres_database: appdb LOG.config: branch: projects/test-pg-project-yiom4ypxbzhf5drzuxdfqjt5ha/branches/production LOG.config: create_database_objects_if_missing: true LOG.config: new_pipeline_spec: LOG.config: storage_catalog: main LOG.config: storage_schema: pipelines acceptance_test.go:942: LOG.cp: acceptance_test.go:942: LOG.deploy: LOG.deploy: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle deploy LOG.deploy: Uploading bundle files to /Workspace/Users/tester@databricks.com/.bundle/test-bundle-yiom4ypxbzhf5drzuxdfqjt5ha/default/files... LOG.deploy: Deploying resources... LOG.deploy: Updating deployment state... LOG.deploy: Deployment complete! acceptance_test.go:942: LOG.destroy: LOG.destroy: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle destroy --auto-approve LOG.destroy: The following resources will be deleted: LOG.destroy: delete resources.postgres_synced_tables.foo LOG.destroy: LOG.destroy: All files and directories at the following location will be deleted: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-yiom4ypxbzhf5drzuxdfqjt5ha/default LOG.destroy: LOG.destroy: Deleting files... LOG.destroy: Destroy complete! acceptance_test.go:942: LOG.planjson: acceptance_test.go:942: LOG.validate: LOG.validate: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle validate LOG.validate: Name: test-bundle-yiom4ypxbzhf5drzuxdfqjt5ha LOG.validate: Target: default LOG.validate: Workspace: LOG.validate: User: tester@databricks.com LOG.validate: Path: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-yiom4ypxbzhf5drzuxdfqjt5ha/default LOG.validate: LOG.validate: Validation OK! --- FAIL: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=postgres_synced_table.yml.tmpl/LOCAL_DIFF=--local/READPLAN= (0.31s) ``` **latest (v1.6.0):** ``` === RUN TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=postgres_synced_table.yml.tmpl/LOCAL_DIFF=--local/READPLAN= === PAUSE TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=postgres_synced_table.yml.tmpl/LOCAL_DIFF=--local/READPLAN= === CONT TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=postgres_synced_table.yml.tmpl/LOCAL_DIFF=--local/READPLAN= acceptance_test.go:1083: Error Trace: /Users/denis.bilenko/work/cli-trees/local-only/libs/testdiff/testdiff.go:22 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:1083 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:915 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:515 Error: Not equal: expected: "INPUT_CONFIG_OK\n" actual : "INPUT_CONFIG_OK\n\nExit code: 1\n" Diff: --- Expected +++ Actual @@ -2 +2,3 @@ +Exit code: 1 + Test: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=postgres_synced_table.yml.tmpl/LOCAL_DIFF=--local/READPLAN= Messages: bundle/invariant/no_drift/output.txt vs /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/TestAcceptbundleinvariantno_driftDATABRICKS_BUNDLE_ENGINE=di4270636336/001/output.txt acceptance_test.go:942: LOG.config: bundle: LOG.config: name: test-bundle-6qhndj6t5zfiloage3s67rpyem LOG.config: LOG.config: resources: LOG.config: postgres_synced_tables: LOG.config: foo: LOG.config: synced_table_id: lakebase_6qhndj6t5zfiloage3s67rpyem.public.trips_synced LOG.config: source_table_full_name: main.raw.trips LOG.config: primary_key_columns: [id] LOG.config: scheduling_policy: SNAPSHOT LOG.config: postgres_database: appdb LOG.config: branch: projects/test-pg-project-6qhndj6t5zfiloage3s67rpyem/branches/production LOG.config: create_database_objects_if_missing: true LOG.config: new_pipeline_spec: LOG.config: storage_catalog: main LOG.config: storage_schema: pipelines acceptance_test.go:942: LOG.cp: acceptance_test.go:942: LOG.deploy: LOG.deploy: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle deploy LOG.deploy: Uploading bundle files to /Workspace/Users/tester@databricks.com/.bundle/test-bundle-6qhndj6t5zfiloage3s67rpyem/default/files... LOG.deploy: Deploying resources... LOG.deploy: Updating deployment state... LOG.deploy: Deployment complete! acceptance_test.go:942: LOG.destroy: LOG.destroy: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle destroy --auto-approve LOG.destroy: The following resources will be deleted: LOG.destroy: delete resources.postgres_synced_tables.foo LOG.destroy: LOG.destroy: All files and directories at the following location will be deleted: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-6qhndj6t5zfiloage3s67rpyem/default LOG.destroy: LOG.destroy: Deleting files... LOG.destroy: Destroy complete! acceptance_test.go:942: LOG.planjson: acceptance_test.go:942: LOG.validate: LOG.validate: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle validate LOG.validate: Name: test-bundle-6qhndj6t5zfiloage3s67rpyem LOG.validate: Target: default LOG.validate: Workspace: LOG.validate: User: tester@databricks.com LOG.validate: Path: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-6qhndj6t5zfiloage3s67rpyem/default LOG.validate: LOG.validate: Validation OK! --- FAIL: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=postgres_synced_table.yml.tmpl/LOCAL_DIFF=--local/READPLAN= (0.44s) ```
TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=postgres_synced_table.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 ✅ | main (de465e09b) ❌ | latest (v1.6.0) ❌ **main (de465e09b):** ``` === RUN TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=postgres_synced_table.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 === PAUSE TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=postgres_synced_table.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 === CONT TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=postgres_synced_table.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 acceptance_test.go:1083: Error Trace: /Users/denis.bilenko/work/cli-trees/local-only/libs/testdiff/testdiff.go:22 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:1083 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:915 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:515 Error: Not equal: expected: "INPUT_CONFIG_OK\n" actual : "INPUT_CONFIG_OK\n\nExit code: 1\n" Diff: --- Expected +++ Actual @@ -2 +2,3 @@ +Exit code: 1 + Test: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=postgres_synced_table.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 Messages: bundle/invariant/no_drift/output.txt vs /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/TestAcceptbundleinvariantno_driftDATABRICKS_BUNDLE_ENGINE=di3360715119/001/output.txt acceptance_test.go:942: LOG.config: bundle: LOG.config: name: test-bundle-s3slvut5o5cjxj6b7b5smcaysm LOG.config: LOG.config: resources: LOG.config: postgres_synced_tables: LOG.config: foo: LOG.config: synced_table_id: lakebase_s3slvut5o5cjxj6b7b5smcaysm.public.trips_synced LOG.config: source_table_full_name: main.raw.trips LOG.config: primary_key_columns: [id] LOG.config: scheduling_policy: SNAPSHOT LOG.config: postgres_database: appdb LOG.config: branch: projects/test-pg-project-s3slvut5o5cjxj6b7b5smcaysm/branches/production LOG.config: create_database_objects_if_missing: true LOG.config: new_pipeline_spec: LOG.config: storage_catalog: main LOG.config: storage_schema: pipelines acceptance_test.go:942: LOG.cp: acceptance_test.go:942: LOG.deploy: LOG.deploy: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle deploy --plan plan.json LOG.deploy: Uploading bundle files to /Workspace/Users/tester@databricks.com/.bundle/test-bundle-s3slvut5o5cjxj6b7b5smcaysm/default/files... LOG.deploy: Deploying resources... LOG.deploy: Updating deployment state... LOG.deploy: Deployment complete! acceptance_test.go:942: LOG.destroy: LOG.destroy: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle destroy --auto-approve LOG.destroy: The following resources will be deleted: LOG.destroy: delete resources.postgres_synced_tables.foo LOG.destroy: LOG.destroy: All files and directories at the following location will be deleted: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-s3slvut5o5cjxj6b7b5smcaysm/default LOG.destroy: LOG.destroy: Deleting files... LOG.destroy: Destroy complete! acceptance_test.go:942: LOG.planjson: acceptance_test.go:942: LOG.validate: LOG.validate: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle validate LOG.validate: Name: test-bundle-s3slvut5o5cjxj6b7b5smcaysm LOG.validate: Target: default LOG.validate: Workspace: LOG.validate: User: tester@databricks.com LOG.validate: Path: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-s3slvut5o5cjxj6b7b5smcaysm/default LOG.validate: LOG.validate: Validation OK! --- FAIL: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=postgres_synced_table.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 (0.31s) ``` **latest (v1.6.0):** ``` === RUN TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=postgres_synced_table.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 === PAUSE TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=postgres_synced_table.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 === CONT TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=postgres_synced_table.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 acceptance_test.go:1083: Error Trace: /Users/denis.bilenko/work/cli-trees/local-only/libs/testdiff/testdiff.go:22 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:1083 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:915 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:515 Error: Not equal: expected: "INPUT_CONFIG_OK\n" actual : "INPUT_CONFIG_OK\n\nExit code: 1\n" Diff: --- Expected +++ Actual @@ -2 +2,3 @@ +Exit code: 1 + Test: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=postgres_synced_table.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 Messages: bundle/invariant/no_drift/output.txt vs /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/TestAcceptbundleinvariantno_driftDATABRICKS_BUNDLE_ENGINE=di2016158232/001/output.txt acceptance_test.go:942: LOG.config: bundle: LOG.config: name: test-bundle-gu6cwexo4nb2zpecch5e27hyzm LOG.config: LOG.config: resources: LOG.config: postgres_synced_tables: LOG.config: foo: LOG.config: synced_table_id: lakebase_gu6cwexo4nb2zpecch5e27hyzm.public.trips_synced LOG.config: source_table_full_name: main.raw.trips LOG.config: primary_key_columns: [id] LOG.config: scheduling_policy: SNAPSHOT LOG.config: postgres_database: appdb LOG.config: branch: projects/test-pg-project-gu6cwexo4nb2zpecch5e27hyzm/branches/production LOG.config: create_database_objects_if_missing: true LOG.config: new_pipeline_spec: LOG.config: storage_catalog: main LOG.config: storage_schema: pipelines acceptance_test.go:942: LOG.cp: acceptance_test.go:942: LOG.deploy: LOG.deploy: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle deploy --plan plan.json LOG.deploy: Uploading bundle files to /Workspace/Users/tester@databricks.com/.bundle/test-bundle-gu6cwexo4nb2zpecch5e27hyzm/default/files... LOG.deploy: Deploying resources... LOG.deploy: Updating deployment state... LOG.deploy: Deployment complete! acceptance_test.go:942: LOG.destroy: LOG.destroy: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle destroy --auto-approve LOG.destroy: The following resources will be deleted: LOG.destroy: delete resources.postgres_synced_tables.foo LOG.destroy: LOG.destroy: All files and directories at the following location will be deleted: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-gu6cwexo4nb2zpecch5e27hyzm/default LOG.destroy: LOG.destroy: Deleting files... LOG.destroy: Destroy complete! acceptance_test.go:942: LOG.planjson: acceptance_test.go:942: LOG.validate: LOG.validate: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle validate LOG.validate: Name: test-bundle-gu6cwexo4nb2zpecch5e27hyzm LOG.validate: Target: default LOG.validate: Workspace: LOG.validate: User: tester@databricks.com LOG.validate: Path: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-gu6cwexo4nb2zpecch5e27hyzm/default LOG.validate: LOG.validate: Validation OK! --- FAIL: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=postgres_synced_table.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 (0.42s) ```
TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=registered_model.yml.tmpl/LOCAL_DIFF=--local/READPLAN= ✅ | main (de465e09b) ❌ | latest (v1.6.0) ❌ **main (de465e09b):** ``` === RUN TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=registered_model.yml.tmpl/LOCAL_DIFF=--local/READPLAN= === PAUSE TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=registered_model.yml.tmpl/LOCAL_DIFF=--local/READPLAN= === CONT TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=registered_model.yml.tmpl/LOCAL_DIFF=--local/READPLAN= acceptance_test.go:1083: Error Trace: /Users/denis.bilenko/work/cli-trees/local-only/libs/testdiff/testdiff.go:22 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:1083 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:915 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:515 Error: Not equal: expected: "INPUT_CONFIG_OK\n" actual : "INPUT_CONFIG_OK\n\nExit code: 1\n" Diff: --- Expected +++ Actual @@ -2 +2,3 @@ +Exit code: 1 + Test: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=registered_model.yml.tmpl/LOCAL_DIFF=--local/READPLAN= Messages: bundle/invariant/no_drift/output.txt vs /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/TestAcceptbundleinvariantno_driftDATABRICKS_BUNDLE_ENGINE=di2559267524/001/output.txt acceptance_test.go:942: LOG.config: bundle: LOG.config: name: test-bundle-uoje7r3b3ng3jfqwynme7yb7om LOG.config: LOG.config: resources: LOG.config: registered_models: LOG.config: foo: LOG.config: name: test-model-uoje7r3b3ng3jfqwynme7yb7om LOG.config: catalog_name: main LOG.config: schema_name: default LOG.config: grants: LOG.config: - principal: account users LOG.config: privileges: LOG.config: - EXECUTE acceptance_test.go:942: LOG.cp: acceptance_test.go:942: LOG.deploy: LOG.deploy: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle deploy LOG.deploy: Uploading bundle files to /Workspace/Users/tester@databricks.com/.bundle/test-bundle-uoje7r3b3ng3jfqwynme7yb7om/default/files... LOG.deploy: Deploying resources... LOG.deploy: Updating deployment state... LOG.deploy: Deployment complete! acceptance_test.go:942: LOG.destroy: LOG.destroy: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle destroy --auto-approve LOG.destroy: The following resources will be deleted: LOG.destroy: delete resources.registered_models.foo LOG.destroy: LOG.destroy: All files and directories at the following location will be deleted: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-uoje7r3b3ng3jfqwynme7yb7om/default LOG.destroy: LOG.destroy: Deleting files... LOG.destroy: Destroy complete! acceptance_test.go:942: LOG.planjson: acceptance_test.go:942: LOG.validate: LOG.validate: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle validate LOG.validate: Name: test-bundle-uoje7r3b3ng3jfqwynme7yb7om LOG.validate: Target: default LOG.validate: Workspace: LOG.validate: User: tester@databricks.com LOG.validate: Path: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-uoje7r3b3ng3jfqwynme7yb7om/default LOG.validate: LOG.validate: Validation OK! --- FAIL: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=registered_model.yml.tmpl/LOCAL_DIFF=--local/READPLAN= (0.32s) ``` **latest (v1.6.0):** ``` === RUN TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=registered_model.yml.tmpl/LOCAL_DIFF=--local/READPLAN= === PAUSE TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=registered_model.yml.tmpl/LOCAL_DIFF=--local/READPLAN= === CONT TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=registered_model.yml.tmpl/LOCAL_DIFF=--local/READPLAN= acceptance_test.go:1083: Error Trace: /Users/denis.bilenko/work/cli-trees/local-only/libs/testdiff/testdiff.go:22 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:1083 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:915 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:515 Error: Not equal: expected: "INPUT_CONFIG_OK\n" actual : "INPUT_CONFIG_OK\n\nExit code: 1\n" Diff: --- Expected +++ Actual @@ -2 +2,3 @@ +Exit code: 1 + Test: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=registered_model.yml.tmpl/LOCAL_DIFF=--local/READPLAN= Messages: bundle/invariant/no_drift/output.txt vs /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/TestAcceptbundleinvariantno_driftDATABRICKS_BUNDLE_ENGINE=di1412424466/001/output.txt acceptance_test.go:942: LOG.config: bundle: LOG.config: name: test-bundle-barptzjwnjenxern4ytasf5hui LOG.config: LOG.config: resources: LOG.config: registered_models: LOG.config: foo: LOG.config: name: test-model-barptzjwnjenxern4ytasf5hui LOG.config: catalog_name: main LOG.config: schema_name: default LOG.config: grants: LOG.config: - principal: account users LOG.config: privileges: LOG.config: - EXECUTE acceptance_test.go:942: LOG.cp: acceptance_test.go:942: LOG.deploy: LOG.deploy: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle deploy LOG.deploy: Uploading bundle files to /Workspace/Users/tester@databricks.com/.bundle/test-bundle-barptzjwnjenxern4ytasf5hui/default/files... LOG.deploy: Deploying resources... LOG.deploy: Updating deployment state... LOG.deploy: Deployment complete! acceptance_test.go:942: LOG.destroy: LOG.destroy: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle destroy --auto-approve LOG.destroy: The following resources will be deleted: LOG.destroy: delete resources.registered_models.foo LOG.destroy: LOG.destroy: All files and directories at the following location will be deleted: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-barptzjwnjenxern4ytasf5hui/default LOG.destroy: LOG.destroy: Deleting files... LOG.destroy: Destroy complete! acceptance_test.go:942: LOG.planjson: acceptance_test.go:942: LOG.validate: LOG.validate: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle validate LOG.validate: Name: test-bundle-barptzjwnjenxern4ytasf5hui LOG.validate: Target: default LOG.validate: Workspace: LOG.validate: User: tester@databricks.com LOG.validate: Path: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-barptzjwnjenxern4ytasf5hui/default LOG.validate: LOG.validate: Validation OK! --- FAIL: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=registered_model.yml.tmpl/LOCAL_DIFF=--local/READPLAN= (0.43s) ```
TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=registered_model.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 ✅ | main (de465e09b) ❌ | latest (v1.6.0) ❌ **main (de465e09b):** ``` === RUN TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=registered_model.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 === PAUSE TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=registered_model.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 === CONT TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=registered_model.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 acceptance_test.go:1083: Error Trace: /Users/denis.bilenko/work/cli-trees/local-only/libs/testdiff/testdiff.go:22 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:1083 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:915 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:515 Error: Not equal: expected: "INPUT_CONFIG_OK\n" actual : "INPUT_CONFIG_OK\n\nExit code: 1\n" Diff: --- Expected +++ Actual @@ -2 +2,3 @@ +Exit code: 1 + Test: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=registered_model.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 Messages: bundle/invariant/no_drift/output.txt vs /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/TestAcceptbundleinvariantno_driftDATABRICKS_BUNDLE_ENGINE=di2231414200/001/output.txt acceptance_test.go:942: LOG.config: bundle: LOG.config: name: test-bundle-iko2nyvg4raltbqn5ng7isq7kq LOG.config: LOG.config: resources: LOG.config: registered_models: LOG.config: foo: LOG.config: name: test-model-iko2nyvg4raltbqn5ng7isq7kq LOG.config: catalog_name: main LOG.config: schema_name: default LOG.config: grants: LOG.config: - principal: account users LOG.config: privileges: LOG.config: - EXECUTE acceptance_test.go:942: LOG.cp: acceptance_test.go:942: LOG.deploy: LOG.deploy: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle deploy --plan plan.json LOG.deploy: Uploading bundle files to /Workspace/Users/tester@databricks.com/.bundle/test-bundle-iko2nyvg4raltbqn5ng7isq7kq/default/files... LOG.deploy: Deploying resources... LOG.deploy: Updating deployment state... LOG.deploy: Deployment complete! acceptance_test.go:942: LOG.destroy: LOG.destroy: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle destroy --auto-approve LOG.destroy: The following resources will be deleted: LOG.destroy: delete resources.registered_models.foo LOG.destroy: LOG.destroy: All files and directories at the following location will be deleted: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-iko2nyvg4raltbqn5ng7isq7kq/default LOG.destroy: LOG.destroy: Deleting files... LOG.destroy: Destroy complete! acceptance_test.go:942: LOG.planjson: acceptance_test.go:942: LOG.validate: LOG.validate: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle validate LOG.validate: Name: test-bundle-iko2nyvg4raltbqn5ng7isq7kq LOG.validate: Target: default LOG.validate: Workspace: LOG.validate: User: tester@databricks.com LOG.validate: Path: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-iko2nyvg4raltbqn5ng7isq7kq/default LOG.validate: LOG.validate: Validation OK! --- FAIL: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=registered_model.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 (0.32s) ``` **latest (v1.6.0):** ``` === RUN TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=registered_model.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 === PAUSE TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=registered_model.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 === CONT TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=registered_model.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 acceptance_test.go:1083: Error Trace: /Users/denis.bilenko/work/cli-trees/local-only/libs/testdiff/testdiff.go:22 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:1083 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:915 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:515 Error: Not equal: expected: "INPUT_CONFIG_OK\n" actual : "INPUT_CONFIG_OK\n\nExit code: 1\n" Diff: --- Expected +++ Actual @@ -2 +2,3 @@ +Exit code: 1 + Test: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=registered_model.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 Messages: bundle/invariant/no_drift/output.txt vs /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/TestAcceptbundleinvariantno_driftDATABRICKS_BUNDLE_ENGINE=di2287542177/001/output.txt acceptance_test.go:942: LOG.config: bundle: LOG.config: name: test-bundle-vjryjfsu4vhyrl5hccd4xqm3pu LOG.config: LOG.config: resources: LOG.config: registered_models: LOG.config: foo: LOG.config: name: test-model-vjryjfsu4vhyrl5hccd4xqm3pu LOG.config: catalog_name: main LOG.config: schema_name: default LOG.config: grants: LOG.config: - principal: account users LOG.config: privileges: LOG.config: - EXECUTE acceptance_test.go:942: LOG.cp: acceptance_test.go:942: LOG.deploy: LOG.deploy: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle deploy --plan plan.json LOG.deploy: Uploading bundle files to /Workspace/Users/tester@databricks.com/.bundle/test-bundle-vjryjfsu4vhyrl5hccd4xqm3pu/default/files... LOG.deploy: Deploying resources... LOG.deploy: Updating deployment state... LOG.deploy: Deployment complete! acceptance_test.go:942: LOG.destroy: LOG.destroy: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle destroy --auto-approve LOG.destroy: The following resources will be deleted: LOG.destroy: delete resources.registered_models.foo LOG.destroy: LOG.destroy: All files and directories at the following location will be deleted: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-vjryjfsu4vhyrl5hccd4xqm3pu/default LOG.destroy: LOG.destroy: Deleting files... LOG.destroy: Destroy complete! acceptance_test.go:942: LOG.planjson: acceptance_test.go:942: LOG.validate: LOG.validate: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle validate LOG.validate: Name: test-bundle-vjryjfsu4vhyrl5hccd4xqm3pu LOG.validate: Target: default LOG.validate: Workspace: LOG.validate: User: tester@databricks.com LOG.validate: Path: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-vjryjfsu4vhyrl5hccd4xqm3pu/default LOG.validate: LOG.validate: Validation OK! --- FAIL: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=registered_model.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 (0.53s) ```
TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=schema.yml.tmpl/LOCAL_DIFF=--local/READPLAN= ✅ | main (de465e09b) ❌ | latest (v1.6.0) ❌ **main (de465e09b):** ``` === RUN TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=schema.yml.tmpl/LOCAL_DIFF=--local/READPLAN= === PAUSE TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=schema.yml.tmpl/LOCAL_DIFF=--local/READPLAN= === CONT TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=schema.yml.tmpl/LOCAL_DIFF=--local/READPLAN= acceptance_test.go:1083: Error Trace: /Users/denis.bilenko/work/cli-trees/local-only/libs/testdiff/testdiff.go:22 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:1083 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:915 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:515 Error: Not equal: expected: "INPUT_CONFIG_OK\n" actual : "INPUT_CONFIG_OK\n\nExit code: 1\n" Diff: --- Expected +++ Actual @@ -2 +2,3 @@ +Exit code: 1 + Test: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=schema.yml.tmpl/LOCAL_DIFF=--local/READPLAN= Messages: bundle/invariant/no_drift/output.txt vs /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/TestAcceptbundleinvariantno_driftDATABRICKS_BUNDLE_ENGINE=di853412577/001/output.txt acceptance_test.go:942: LOG.config: bundle: LOG.config: name: test-bundle-dzpbejaozff7vhvsjz32ggzzmm LOG.config: LOG.config: resources: LOG.config: schemas: LOG.config: foo: LOG.config: catalog_name: main LOG.config: name: test-schema-dzpbejaozff7vhvsjz32ggzzmm LOG.config: grants: LOG.config: - principal: account users LOG.config: privileges: LOG.config: - USE_SCHEMA acceptance_test.go:942: LOG.cp: acceptance_test.go:942: LOG.deploy: LOG.deploy: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle deploy LOG.deploy: Uploading bundle files to /Workspace/Users/tester@databricks.com/.bundle/test-bundle-dzpbejaozff7vhvsjz32ggzzmm/default/files... LOG.deploy: Deploying resources... LOG.deploy: Updating deployment state... LOG.deploy: Deployment complete! acceptance_test.go:942: LOG.destroy: LOG.destroy: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle destroy --auto-approve LOG.destroy: The following resources will be deleted: LOG.destroy: delete resources.schemas.foo LOG.destroy: LOG.destroy: This action will result in the deletion of the following UC schemas. Any underlying data may be lost: LOG.destroy: delete resources.schemas.foo LOG.destroy: LOG.destroy: All files and directories at the following location will be deleted: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-dzpbejaozff7vhvsjz32ggzzmm/default LOG.destroy: LOG.destroy: Deleting files... LOG.destroy: Destroy complete! acceptance_test.go:942: LOG.planjson: acceptance_test.go:942: LOG.validate: LOG.validate: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle validate LOG.validate: Name: test-bundle-dzpbejaozff7vhvsjz32ggzzmm LOG.validate: Target: default LOG.validate: Workspace: LOG.validate: User: tester@databricks.com LOG.validate: Path: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-dzpbejaozff7vhvsjz32ggzzmm/default LOG.validate: LOG.validate: Validation OK! --- FAIL: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=schema.yml.tmpl/LOCAL_DIFF=--local/READPLAN= (0.32s) ``` **latest (v1.6.0):** ``` === RUN TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=schema.yml.tmpl/LOCAL_DIFF=--local/READPLAN= === PAUSE TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=schema.yml.tmpl/LOCAL_DIFF=--local/READPLAN= === CONT TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=schema.yml.tmpl/LOCAL_DIFF=--local/READPLAN= acceptance_test.go:1083: Error Trace: /Users/denis.bilenko/work/cli-trees/local-only/libs/testdiff/testdiff.go:22 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:1083 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:915 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:515 Error: Not equal: expected: "INPUT_CONFIG_OK\n" actual : "INPUT_CONFIG_OK\n\nExit code: 1\n" Diff: --- Expected +++ Actual @@ -2 +2,3 @@ +Exit code: 1 + Test: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=schema.yml.tmpl/LOCAL_DIFF=--local/READPLAN= Messages: bundle/invariant/no_drift/output.txt vs /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/TestAcceptbundleinvariantno_driftDATABRICKS_BUNDLE_ENGINE=di2425352157/001/output.txt acceptance_test.go:942: LOG.config: bundle: LOG.config: name: test-bundle-33flbyxqmjdnhcutm5c37sr6jq LOG.config: LOG.config: resources: LOG.config: schemas: LOG.config: foo: LOG.config: catalog_name: main LOG.config: name: test-schema-33flbyxqmjdnhcutm5c37sr6jq LOG.config: grants: LOG.config: - principal: account users LOG.config: privileges: LOG.config: - USE_SCHEMA acceptance_test.go:942: LOG.cp: acceptance_test.go:942: LOG.deploy: LOG.deploy: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle deploy LOG.deploy: Uploading bundle files to /Workspace/Users/tester@databricks.com/.bundle/test-bundle-33flbyxqmjdnhcutm5c37sr6jq/default/files... LOG.deploy: Deploying resources... LOG.deploy: Updating deployment state... LOG.deploy: Deployment complete! acceptance_test.go:942: LOG.destroy: LOG.destroy: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle destroy --auto-approve LOG.destroy: The following resources will be deleted: LOG.destroy: delete resources.schemas.foo LOG.destroy: LOG.destroy: This action will result in the deletion of the following UC schemas. Any underlying data may be lost: LOG.destroy: delete resources.schemas.foo LOG.destroy: LOG.destroy: All files and directories at the following location will be deleted: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-33flbyxqmjdnhcutm5c37sr6jq/default LOG.destroy: LOG.destroy: Deleting files... LOG.destroy: Destroy complete! acceptance_test.go:942: LOG.planjson: acceptance_test.go:942: LOG.validate: LOG.validate: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle validate LOG.validate: Name: test-bundle-33flbyxqmjdnhcutm5c37sr6jq LOG.validate: Target: default LOG.validate: Workspace: LOG.validate: User: tester@databricks.com LOG.validate: Path: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-33flbyxqmjdnhcutm5c37sr6jq/default LOG.validate: LOG.validate: Validation OK! --- FAIL: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=schema.yml.tmpl/LOCAL_DIFF=--local/READPLAN= (0.40s) ```
TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=schema.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 ✅ | main (de465e09b) ❌ | latest (v1.6.0) ❌ **main (de465e09b):** ``` === RUN TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=schema.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 === PAUSE TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=schema.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 === CONT TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=schema.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 acceptance_test.go:1083: Error Trace: /Users/denis.bilenko/work/cli-trees/local-only/libs/testdiff/testdiff.go:22 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:1083 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:915 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:515 Error: Not equal: expected: "INPUT_CONFIG_OK\n" actual : "INPUT_CONFIG_OK\n\nExit code: 1\n" Diff: --- Expected +++ Actual @@ -2 +2,3 @@ +Exit code: 1 + Test: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=schema.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 Messages: bundle/invariant/no_drift/output.txt vs /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/TestAcceptbundleinvariantno_driftDATABRICKS_BUNDLE_ENGINE=di803786996/001/output.txt acceptance_test.go:942: LOG.config: bundle: LOG.config: name: test-bundle-x2pygtvwhzcoljzhk6u3jmipcu LOG.config: LOG.config: resources: LOG.config: schemas: LOG.config: foo: LOG.config: catalog_name: main LOG.config: name: test-schema-x2pygtvwhzcoljzhk6u3jmipcu LOG.config: grants: LOG.config: - principal: account users LOG.config: privileges: LOG.config: - USE_SCHEMA acceptance_test.go:942: LOG.cp: acceptance_test.go:942: LOG.deploy: LOG.deploy: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle deploy --plan plan.json LOG.deploy: Uploading bundle files to /Workspace/Users/tester@databricks.com/.bundle/test-bundle-x2pygtvwhzcoljzhk6u3jmipcu/default/files... LOG.deploy: Deploying resources... LOG.deploy: Updating deployment state... LOG.deploy: Deployment complete! acceptance_test.go:942: LOG.destroy: LOG.destroy: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle destroy --auto-approve LOG.destroy: The following resources will be deleted: LOG.destroy: delete resources.schemas.foo LOG.destroy: LOG.destroy: This action will result in the deletion of the following UC schemas. Any underlying data may be lost: LOG.destroy: delete resources.schemas.foo LOG.destroy: LOG.destroy: All files and directories at the following location will be deleted: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-x2pygtvwhzcoljzhk6u3jmipcu/default LOG.destroy: LOG.destroy: Deleting files... LOG.destroy: Destroy complete! acceptance_test.go:942: LOG.planjson: acceptance_test.go:942: LOG.validate: LOG.validate: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle validate LOG.validate: Name: test-bundle-x2pygtvwhzcoljzhk6u3jmipcu LOG.validate: Target: default LOG.validate: Workspace: LOG.validate: User: tester@databricks.com LOG.validate: Path: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-x2pygtvwhzcoljzhk6u3jmipcu/default LOG.validate: LOG.validate: Validation OK! --- FAIL: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=schema.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 (0.32s) ``` **latest (v1.6.0):** ``` === RUN TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=schema.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 === PAUSE TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=schema.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 === CONT TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=schema.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 acceptance_test.go:1083: Error Trace: /Users/denis.bilenko/work/cli-trees/local-only/libs/testdiff/testdiff.go:22 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:1083 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:915 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:515 Error: Not equal: expected: "INPUT_CONFIG_OK\n" actual : "INPUT_CONFIG_OK\n\nExit code: 1\n" Diff: --- Expected +++ Actual @@ -2 +2,3 @@ +Exit code: 1 + Test: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=schema.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 Messages: bundle/invariant/no_drift/output.txt vs /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/TestAcceptbundleinvariantno_driftDATABRICKS_BUNDLE_ENGINE=di2502507087/001/output.txt acceptance_test.go:942: LOG.config: bundle: LOG.config: name: test-bundle-e4rgofgyvjhrjmalmlojsgktry LOG.config: LOG.config: resources: LOG.config: schemas: LOG.config: foo: LOG.config: catalog_name: main LOG.config: name: test-schema-e4rgofgyvjhrjmalmlojsgktry LOG.config: grants: LOG.config: - principal: account users LOG.config: privileges: LOG.config: - USE_SCHEMA acceptance_test.go:942: LOG.cp: acceptance_test.go:942: LOG.deploy: LOG.deploy: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle deploy --plan plan.json LOG.deploy: Uploading bundle files to /Workspace/Users/tester@databricks.com/.bundle/test-bundle-e4rgofgyvjhrjmalmlojsgktry/default/files... LOG.deploy: Deploying resources... LOG.deploy: Updating deployment state... LOG.deploy: Deployment complete! acceptance_test.go:942: LOG.destroy: LOG.destroy: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle destroy --auto-approve LOG.destroy: The following resources will be deleted: LOG.destroy: delete resources.schemas.foo LOG.destroy: LOG.destroy: This action will result in the deletion of the following UC schemas. Any underlying data may be lost: LOG.destroy: delete resources.schemas.foo LOG.destroy: LOG.destroy: All files and directories at the following location will be deleted: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-e4rgofgyvjhrjmalmlojsgktry/default LOG.destroy: LOG.destroy: Deleting files... LOG.destroy: Destroy complete! acceptance_test.go:942: LOG.planjson: acceptance_test.go:942: LOG.validate: LOG.validate: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle validate LOG.validate: Name: test-bundle-e4rgofgyvjhrjmalmlojsgktry LOG.validate: Target: default LOG.validate: Workspace: LOG.validate: User: tester@databricks.com LOG.validate: Path: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-e4rgofgyvjhrjmalmlojsgktry/default LOG.validate: LOG.validate: Validation OK! --- FAIL: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=schema.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 (0.42s) ```
TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=schema_grant_ref.yml.tmpl/LOCAL_DIFF=--local/READPLAN= ✅ | main (de465e09b) ❌ | latest (v1.6.0) ❌ **main (de465e09b):** ``` === RUN TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=schema_grant_ref.yml.tmpl/LOCAL_DIFF=--local/READPLAN= === PAUSE TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=schema_grant_ref.yml.tmpl/LOCAL_DIFF=--local/READPLAN= === CONT TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=schema_grant_ref.yml.tmpl/LOCAL_DIFF=--local/READPLAN= acceptance_test.go:1083: Error Trace: /Users/denis.bilenko/work/cli-trees/local-only/libs/testdiff/testdiff.go:22 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:1083 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:915 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:515 Error: Not equal: expected: "INPUT_CONFIG_OK\n" actual : "INPUT_CONFIG_OK\n\nExit code: 1\n" Diff: --- Expected +++ Actual @@ -2 +2,3 @@ +Exit code: 1 + Test: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=schema_grant_ref.yml.tmpl/LOCAL_DIFF=--local/READPLAN= Messages: bundle/invariant/no_drift/output.txt vs /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/TestAcceptbundleinvariantno_driftDATABRICKS_BUNDLE_ENGINE=di1351673676/001/output.txt acceptance_test.go:942: LOG.config: bundle: LOG.config: name: test-bundle-vqubst5vlrfuxlrqchq3bgpdly LOG.config: LOG.config: resources: LOG.config: schemas: LOG.config: schema_b: LOG.config: catalog_name: main LOG.config: name: test-schema-b-vqubst5vlrfuxlrqchq3bgpdly LOG.config: grants: LOG.config: # make sure principals are not sorted, to better detect drift LOG.config: - principal: tester@databricks.com LOG.config: privileges: LOG.config: - USE_SCHEMA LOG.config: - CREATE_TABLE LOG.config: - principal: account users LOG.config: privileges: LOG.config: # make sure privileges are not sorted, to better detect drift LOG.config: - USE_SCHEMA LOG.config: - APPLY_TAG LOG.config: - CREATE_VOLUME LOG.config: LOG.config: schema_a: LOG.config: catalog_name: main LOG.config: name: test-schema-a-vqubst5vlrfuxlrqchq3bgpdly LOG.config: grants: LOG.config: # Reference principal and privileges from schema_b by index LOG.config: - principal: ${resources.schemas.schema_b.grants[0].principal} LOG.config: privileges: LOG.config: - USE_SCHEMA LOG.config: - APPLY_TAG LOG.config: - principal: ${resources.schemas.schema_b.grants[1].principal} LOG.config: privileges: LOG.config: - CREATE_TABLE LOG.config: - USE_SCHEMA LOG.config: - APPLY_TAG acceptance_test.go:942: LOG.cp: acceptance_test.go:942: LOG.deploy: LOG.deploy: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle deploy LOG.deploy: Uploading bundle files to /Workspace/Users/tester@databricks.com/.bundle/test-bundle-vqubst5vlrfuxlrqchq3bgpdly/default/files... LOG.deploy: Deploying resources... LOG.deploy: Updating deployment state... LOG.deploy: Deployment complete! acceptance_test.go:942: LOG.destroy: LOG.destroy: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle destroy --auto-approve LOG.destroy: The following resources will be deleted: LOG.destroy: delete resources.schemas.schema_a LOG.destroy: delete resources.schemas.schema_b LOG.destroy: LOG.destroy: This action will result in the deletion of the following UC schemas. Any underlying data may be lost: LOG.destroy: delete resources.schemas.schema_a LOG.destroy: delete resources.schemas.schema_b LOG.destroy: LOG.destroy: All files and directories at the following location will be deleted: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-vqubst5vlrfuxlrqchq3bgpdly/default LOG.destroy: LOG.destroy: Deleting files... LOG.destroy: Destroy complete! acceptance_test.go:942: LOG.planjson: acceptance_test.go:942: LOG.validate: LOG.validate: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle validate LOG.validate: Name: test-bundle-vqubst5vlrfuxlrqchq3bgpdly LOG.validate: Target: default LOG.validate: Workspace: LOG.validate: User: tester@databricks.com LOG.validate: Path: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-vqubst5vlrfuxlrqchq3bgpdly/default LOG.validate: LOG.validate: Validation OK! --- FAIL: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=schema_grant_ref.yml.tmpl/LOCAL_DIFF=--local/READPLAN= (0.33s) ``` **latest (v1.6.0):** ``` === RUN TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=schema_grant_ref.yml.tmpl/LOCAL_DIFF=--local/READPLAN= === PAUSE TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=schema_grant_ref.yml.tmpl/LOCAL_DIFF=--local/READPLAN= === CONT TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=schema_grant_ref.yml.tmpl/LOCAL_DIFF=--local/READPLAN= acceptance_test.go:1083: Error Trace: /Users/denis.bilenko/work/cli-trees/local-only/libs/testdiff/testdiff.go:22 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:1083 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:915 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:515 Error: Not equal: expected: "INPUT_CONFIG_OK\n" actual : "INPUT_CONFIG_OK\n\nExit code: 1\n" Diff: --- Expected +++ Actual @@ -2 +2,3 @@ +Exit code: 1 + Test: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=schema_grant_ref.yml.tmpl/LOCAL_DIFF=--local/READPLAN= Messages: bundle/invariant/no_drift/output.txt vs /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/TestAcceptbundleinvariantno_driftDATABRICKS_BUNDLE_ENGINE=di2543323780/001/output.txt acceptance_test.go:942: LOG.config: bundle: LOG.config: name: test-bundle-y63s3dxhu5epjesj7qwgum2hvm LOG.config: LOG.config: resources: LOG.config: schemas: LOG.config: schema_b: LOG.config: catalog_name: main LOG.config: name: test-schema-b-y63s3dxhu5epjesj7qwgum2hvm LOG.config: grants: LOG.config: # make sure principals are not sorted, to better detect drift LOG.config: - principal: tester@databricks.com LOG.config: privileges: LOG.config: - USE_SCHEMA LOG.config: - CREATE_TABLE LOG.config: - principal: account users LOG.config: privileges: LOG.config: # make sure privileges are not sorted, to better detect drift LOG.config: - USE_SCHEMA LOG.config: - APPLY_TAG LOG.config: - CREATE_VOLUME LOG.config: LOG.config: schema_a: LOG.config: catalog_name: main LOG.config: name: test-schema-a-y63s3dxhu5epjesj7qwgum2hvm LOG.config: grants: LOG.config: # Reference principal and privileges from schema_b by index LOG.config: - principal: ${resources.schemas.schema_b.grants[0].principal} LOG.config: privileges: LOG.config: - USE_SCHEMA LOG.config: - APPLY_TAG LOG.config: - principal: ${resources.schemas.schema_b.grants[1].principal} LOG.config: privileges: LOG.config: - CREATE_TABLE LOG.config: - USE_SCHEMA LOG.config: - APPLY_TAG acceptance_test.go:942: LOG.cp: acceptance_test.go:942: LOG.deploy: LOG.deploy: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle deploy LOG.deploy: Uploading bundle files to /Workspace/Users/tester@databricks.com/.bundle/test-bundle-y63s3dxhu5epjesj7qwgum2hvm/default/files... LOG.deploy: Deploying resources... LOG.deploy: Updating deployment state... LOG.deploy: Deployment complete! acceptance_test.go:942: LOG.destroy: LOG.destroy: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle destroy --auto-approve LOG.destroy: The following resources will be deleted: LOG.destroy: delete resources.schemas.schema_a LOG.destroy: delete resources.schemas.schema_b LOG.destroy: LOG.destroy: This action will result in the deletion of the following UC schemas. Any underlying data may be lost: LOG.destroy: delete resources.schemas.schema_a LOG.destroy: delete resources.schemas.schema_b LOG.destroy: LOG.destroy: All files and directories at the following location will be deleted: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-y63s3dxhu5epjesj7qwgum2hvm/default LOG.destroy: LOG.destroy: Deleting files... LOG.destroy: Destroy complete! acceptance_test.go:942: LOG.planjson: acceptance_test.go:942: LOG.validate: LOG.validate: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle validate LOG.validate: Name: test-bundle-y63s3dxhu5epjesj7qwgum2hvm LOG.validate: Target: default LOG.validate: Workspace: LOG.validate: User: tester@databricks.com LOG.validate: Path: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-y63s3dxhu5epjesj7qwgum2hvm/default LOG.validate: LOG.validate: Validation OK! --- FAIL: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=schema_grant_ref.yml.tmpl/LOCAL_DIFF=--local/READPLAN= (0.40s) ```
TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=schema_grant_ref.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 ✅ | main (de465e09b) ❌ | latest (v1.6.0) ❌ **main (de465e09b):** ``` === RUN TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=schema_grant_ref.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 === PAUSE TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=schema_grant_ref.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 === CONT TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=schema_grant_ref.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 acceptance_test.go:1083: Error Trace: /Users/denis.bilenko/work/cli-trees/local-only/libs/testdiff/testdiff.go:22 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:1083 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:915 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:515 Error: Not equal: expected: "INPUT_CONFIG_OK\n" actual : "INPUT_CONFIG_OK\n\nExit code: 1\n" Diff: --- Expected +++ Actual @@ -2 +2,3 @@ +Exit code: 1 + Test: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=schema_grant_ref.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 Messages: bundle/invariant/no_drift/output.txt vs /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/TestAcceptbundleinvariantno_driftDATABRICKS_BUNDLE_ENGINE=di1801685741/001/output.txt acceptance_test.go:942: LOG.config: bundle: LOG.config: name: test-bundle-6fgtxqp6ojc5vmjtqxcu4kamsy LOG.config: LOG.config: resources: LOG.config: schemas: LOG.config: schema_b: LOG.config: catalog_name: main LOG.config: name: test-schema-b-6fgtxqp6ojc5vmjtqxcu4kamsy LOG.config: grants: LOG.config: # make sure principals are not sorted, to better detect drift LOG.config: - principal: tester@databricks.com LOG.config: privileges: LOG.config: - USE_SCHEMA LOG.config: - CREATE_TABLE LOG.config: - principal: account users LOG.config: privileges: LOG.config: # make sure privileges are not sorted, to better detect drift LOG.config: - USE_SCHEMA LOG.config: - APPLY_TAG LOG.config: - CREATE_VOLUME LOG.config: LOG.config: schema_a: LOG.config: catalog_name: main LOG.config: name: test-schema-a-6fgtxqp6ojc5vmjtqxcu4kamsy LOG.config: grants: LOG.config: # Reference principal and privileges from schema_b by index LOG.config: - principal: ${resources.schemas.schema_b.grants[0].principal} LOG.config: privileges: LOG.config: - USE_SCHEMA LOG.config: - APPLY_TAG LOG.config: - principal: ${resources.schemas.schema_b.grants[1].principal} LOG.config: privileges: LOG.config: - CREATE_TABLE LOG.config: - USE_SCHEMA LOG.config: - APPLY_TAG acceptance_test.go:942: LOG.cp: acceptance_test.go:942: LOG.deploy: LOG.deploy: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle deploy --plan plan.json LOG.deploy: Uploading bundle files to /Workspace/Users/tester@databricks.com/.bundle/test-bundle-6fgtxqp6ojc5vmjtqxcu4kamsy/default/files... LOG.deploy: Deploying resources... LOG.deploy: Updating deployment state... LOG.deploy: Deployment complete! acceptance_test.go:942: LOG.destroy: LOG.destroy: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle destroy --auto-approve LOG.destroy: The following resources will be deleted: LOG.destroy: delete resources.schemas.schema_a LOG.destroy: delete resources.schemas.schema_b LOG.destroy: LOG.destroy: This action will result in the deletion of the following UC schemas. Any underlying data may be lost: LOG.destroy: delete resources.schemas.schema_a LOG.destroy: delete resources.schemas.schema_b LOG.destroy: LOG.destroy: All files and directories at the following location will be deleted: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-6fgtxqp6ojc5vmjtqxcu4kamsy/default LOG.destroy: LOG.destroy: Deleting files... LOG.destroy: Destroy complete! acceptance_test.go:942: LOG.planjson: acceptance_test.go:942: LOG.validate: LOG.validate: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle validate LOG.validate: Name: test-bundle-6fgtxqp6ojc5vmjtqxcu4kamsy LOG.validate: Target: default LOG.validate: Workspace: LOG.validate: User: tester@databricks.com LOG.validate: Path: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-6fgtxqp6ojc5vmjtqxcu4kamsy/default LOG.validate: LOG.validate: Validation OK! --- FAIL: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=schema_grant_ref.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 (0.32s) ``` **latest (v1.6.0):** ``` === RUN TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=schema_grant_ref.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 === PAUSE TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=schema_grant_ref.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 === CONT TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=schema_grant_ref.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 acceptance_test.go:1083: Error Trace: /Users/denis.bilenko/work/cli-trees/local-only/libs/testdiff/testdiff.go:22 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:1083 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:915 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:515 Error: Not equal: expected: "INPUT_CONFIG_OK\n" actual : "INPUT_CONFIG_OK\n\nExit code: 1\n" Diff: --- Expected +++ Actual @@ -2 +2,3 @@ +Exit code: 1 + Test: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=schema_grant_ref.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 Messages: bundle/invariant/no_drift/output.txt vs /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/TestAcceptbundleinvariantno_driftDATABRICKS_BUNDLE_ENGINE=di1249213095/001/output.txt acceptance_test.go:942: LOG.config: bundle: LOG.config: name: test-bundle-5l7ekss4jzcp3henuxpuyr7nvm LOG.config: LOG.config: resources: LOG.config: schemas: LOG.config: schema_b: LOG.config: catalog_name: main LOG.config: name: test-schema-b-5l7ekss4jzcp3henuxpuyr7nvm LOG.config: grants: LOG.config: # make sure principals are not sorted, to better detect drift LOG.config: - principal: tester@databricks.com LOG.config: privileges: LOG.config: - USE_SCHEMA LOG.config: - CREATE_TABLE LOG.config: - principal: account users LOG.config: privileges: LOG.config: # make sure privileges are not sorted, to better detect drift LOG.config: - USE_SCHEMA LOG.config: - APPLY_TAG LOG.config: - CREATE_VOLUME LOG.config: LOG.config: schema_a: LOG.config: catalog_name: main LOG.config: name: test-schema-a-5l7ekss4jzcp3henuxpuyr7nvm LOG.config: grants: LOG.config: # Reference principal and privileges from schema_b by index LOG.config: - principal: ${resources.schemas.schema_b.grants[0].principal} LOG.config: privileges: LOG.config: - USE_SCHEMA LOG.config: - APPLY_TAG LOG.config: - principal: ${resources.schemas.schema_b.grants[1].principal} LOG.config: privileges: LOG.config: - CREATE_TABLE LOG.config: - USE_SCHEMA LOG.config: - APPLY_TAG acceptance_test.go:942: LOG.cp: acceptance_test.go:942: LOG.deploy: LOG.deploy: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle deploy --plan plan.json LOG.deploy: Uploading bundle files to /Workspace/Users/tester@databricks.com/.bundle/test-bundle-5l7ekss4jzcp3henuxpuyr7nvm/default/files... LOG.deploy: Deploying resources... LOG.deploy: Updating deployment state... LOG.deploy: Deployment complete! acceptance_test.go:942: LOG.destroy: LOG.destroy: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle destroy --auto-approve LOG.destroy: The following resources will be deleted: LOG.destroy: delete resources.schemas.schema_a LOG.destroy: delete resources.schemas.schema_b LOG.destroy: LOG.destroy: This action will result in the deletion of the following UC schemas. Any underlying data may be lost: LOG.destroy: delete resources.schemas.schema_a LOG.destroy: delete resources.schemas.schema_b LOG.destroy: LOG.destroy: All files and directories at the following location will be deleted: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-5l7ekss4jzcp3henuxpuyr7nvm/default LOG.destroy: LOG.destroy: Deleting files... LOG.destroy: Destroy complete! acceptance_test.go:942: LOG.planjson: acceptance_test.go:942: LOG.validate: LOG.validate: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle validate LOG.validate: Name: test-bundle-5l7ekss4jzcp3henuxpuyr7nvm LOG.validate: Target: default LOG.validate: Workspace: LOG.validate: User: tester@databricks.com LOG.validate: Path: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-5l7ekss4jzcp3henuxpuyr7nvm/default LOG.validate: LOG.validate: Validation OK! --- FAIL: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=schema_grant_ref.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 (0.32s) ```
TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=schema_uppercase_name.yml.tmpl/LOCAL_DIFF=--local/READPLAN= ✅ | main (de465e09b) ❌ | latest (v1.6.0) ❌ **main (de465e09b):** ``` === RUN TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=schema_uppercase_name.yml.tmpl/LOCAL_DIFF=--local/READPLAN= === PAUSE TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=schema_uppercase_name.yml.tmpl/LOCAL_DIFF=--local/READPLAN= === CONT TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=schema_uppercase_name.yml.tmpl/LOCAL_DIFF=--local/READPLAN= acceptance_test.go:1083: Error Trace: /Users/denis.bilenko/work/cli-trees/local-only/libs/testdiff/testdiff.go:22 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:1083 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:915 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:515 Error: Not equal: expected: "INPUT_CONFIG_OK\n" actual : "INPUT_CONFIG_OK\n\nExit code: 1\n" Diff: --- Expected +++ Actual @@ -2 +2,3 @@ +Exit code: 1 + Test: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=schema_uppercase_name.yml.tmpl/LOCAL_DIFF=--local/READPLAN= Messages: bundle/invariant/no_drift/output.txt vs /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/TestAcceptbundleinvariantno_driftDATABRICKS_BUNDLE_ENGINE=di3839188836/001/output.txt acceptance_test.go:942: LOG.config: bundle: LOG.config: name: test-bundle-btyeha7mnvcujjgu77h7k3ibv4 LOG.config: LOG.config: # Reproduce: UC API normalizes identifier names to lowercase, causing LOG.config: # false drift on the second deploy when the config uses mixed-case names. LOG.config: # Volumes are covered by acceptance/bundle/resources/volumes/uppercase-name LOG.config: # instead: the Terraform provider rejects an uppercase volume schema_name LOG.config: # ("inconsistent final plan"), and the migrate invariant always deploys via LOG.config: # Terraform first, so an uppercase volume cannot live in this shared config. LOG.config: resources: LOG.config: schemas: LOG.config: foo: LOG.config: catalog_name: main LOG.config: name: MySCHEMA-btyeha7mnvcujjgu77h7k3ibv4 acceptance_test.go:942: LOG.cp: acceptance_test.go:942: LOG.deploy: LOG.deploy: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle deploy LOG.deploy: Uploading bundle files to /Workspace/Users/tester@databricks.com/.bundle/test-bundle-btyeha7mnvcujjgu77h7k3ibv4/default/files... LOG.deploy: Deploying resources... LOG.deploy: Updating deployment state... LOG.deploy: Deployment complete! acceptance_test.go:942: LOG.destroy: LOG.destroy: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle destroy --auto-approve LOG.destroy: The following resources will be deleted: LOG.destroy: delete resources.schemas.foo LOG.destroy: LOG.destroy: This action will result in the deletion of the following UC schemas. Any underlying data may be lost: LOG.destroy: delete resources.schemas.foo LOG.destroy: LOG.destroy: All files and directories at the following location will be deleted: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-btyeha7mnvcujjgu77h7k3ibv4/default LOG.destroy: LOG.destroy: Deleting files... LOG.destroy: Destroy complete! acceptance_test.go:942: LOG.planjson: acceptance_test.go:942: LOG.validate: LOG.validate: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle validate LOG.validate: Name: test-bundle-btyeha7mnvcujjgu77h7k3ibv4 LOG.validate: Target: default LOG.validate: Workspace: LOG.validate: User: tester@databricks.com LOG.validate: Path: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-btyeha7mnvcujjgu77h7k3ibv4/default LOG.validate: LOG.validate: Validation OK! --- FAIL: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=schema_uppercase_name.yml.tmpl/LOCAL_DIFF=--local/READPLAN= (0.34s) ``` **latest (v1.6.0):** ``` === RUN TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=schema_uppercase_name.yml.tmpl/LOCAL_DIFF=--local/READPLAN= === PAUSE TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=schema_uppercase_name.yml.tmpl/LOCAL_DIFF=--local/READPLAN= === CONT TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=schema_uppercase_name.yml.tmpl/LOCAL_DIFF=--local/READPLAN= acceptance_test.go:1083: Error Trace: /Users/denis.bilenko/work/cli-trees/local-only/libs/testdiff/testdiff.go:22 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:1083 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:915 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:515 Error: Not equal: expected: "INPUT_CONFIG_OK\n" actual : "INPUT_CONFIG_OK\n\nExit code: 1\n" Diff: --- Expected +++ Actual @@ -2 +2,3 @@ +Exit code: 1 + Test: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=schema_uppercase_name.yml.tmpl/LOCAL_DIFF=--local/READPLAN= Messages: bundle/invariant/no_drift/output.txt vs /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/TestAcceptbundleinvariantno_driftDATABRICKS_BUNDLE_ENGINE=di3078192713/001/output.txt acceptance_test.go:942: LOG.config: bundle: LOG.config: name: test-bundle-2hvqm6vx4vfe3etvtvxbjqb56m LOG.config: LOG.config: # Reproduce: UC API normalizes identifier names to lowercase, causing LOG.config: # false drift on the second deploy when the config uses mixed-case names. LOG.config: # Volumes are covered by acceptance/bundle/resources/volumes/uppercase-name LOG.config: # instead: the Terraform provider rejects an uppercase volume schema_name LOG.config: # ("inconsistent final plan"), and the migrate invariant always deploys via LOG.config: # Terraform first, so an uppercase volume cannot live in this shared config. LOG.config: resources: LOG.config: schemas: LOG.config: foo: LOG.config: catalog_name: main LOG.config: name: MySCHEMA-2hvqm6vx4vfe3etvtvxbjqb56m acceptance_test.go:942: LOG.cp: acceptance_test.go:942: LOG.deploy: LOG.deploy: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle deploy LOG.deploy: Uploading bundle files to /Workspace/Users/tester@databricks.com/.bundle/test-bundle-2hvqm6vx4vfe3etvtvxbjqb56m/default/files... LOG.deploy: Deploying resources... LOG.deploy: Updating deployment state... LOG.deploy: Deployment complete! acceptance_test.go:942: LOG.destroy: LOG.destroy: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle destroy --auto-approve LOG.destroy: The following resources will be deleted: LOG.destroy: delete resources.schemas.foo LOG.destroy: LOG.destroy: This action will result in the deletion of the following UC schemas. Any underlying data may be lost: LOG.destroy: delete resources.schemas.foo LOG.destroy: LOG.destroy: All files and directories at the following location will be deleted: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-2hvqm6vx4vfe3etvtvxbjqb56m/default LOG.destroy: LOG.destroy: Deleting files... LOG.destroy: Destroy complete! acceptance_test.go:942: LOG.planjson: acceptance_test.go:942: LOG.validate: LOG.validate: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle validate LOG.validate: Name: test-bundle-2hvqm6vx4vfe3etvtvxbjqb56m LOG.validate: Target: default LOG.validate: Workspace: LOG.validate: User: tester@databricks.com LOG.validate: Path: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-2hvqm6vx4vfe3etvtvxbjqb56m/default LOG.validate: LOG.validate: Validation OK! --- FAIL: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=schema_uppercase_name.yml.tmpl/LOCAL_DIFF=--local/READPLAN= (0.33s) ```
TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=schema_uppercase_name.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 ✅ | main (de465e09b) ❌ | latest (v1.6.0) ❌ **main (de465e09b):** ``` === RUN TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=schema_uppercase_name.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 === PAUSE TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=schema_uppercase_name.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 === CONT TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=schema_uppercase_name.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 acceptance_test.go:1083: Error Trace: /Users/denis.bilenko/work/cli-trees/local-only/libs/testdiff/testdiff.go:22 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:1083 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:915 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:515 Error: Not equal: expected: "INPUT_CONFIG_OK\n" actual : "INPUT_CONFIG_OK\n\nExit code: 1\n" Diff: --- Expected +++ Actual @@ -2 +2,3 @@ +Exit code: 1 + Test: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=schema_uppercase_name.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 Messages: bundle/invariant/no_drift/output.txt vs /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/TestAcceptbundleinvariantno_driftDATABRICKS_BUNDLE_ENGINE=di2587662699/001/output.txt acceptance_test.go:942: LOG.config: bundle: LOG.config: name: test-bundle-vltjkf26wfdzhlqemow55whbri LOG.config: LOG.config: # Reproduce: UC API normalizes identifier names to lowercase, causing LOG.config: # false drift on the second deploy when the config uses mixed-case names. LOG.config: # Volumes are covered by acceptance/bundle/resources/volumes/uppercase-name LOG.config: # instead: the Terraform provider rejects an uppercase volume schema_name LOG.config: # ("inconsistent final plan"), and the migrate invariant always deploys via LOG.config: # Terraform first, so an uppercase volume cannot live in this shared config. LOG.config: resources: LOG.config: schemas: LOG.config: foo: LOG.config: catalog_name: main LOG.config: name: MySCHEMA-vltjkf26wfdzhlqemow55whbri acceptance_test.go:942: LOG.cp: acceptance_test.go:942: LOG.deploy: LOG.deploy: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle deploy --plan plan.json LOG.deploy: Uploading bundle files to /Workspace/Users/tester@databricks.com/.bundle/test-bundle-vltjkf26wfdzhlqemow55whbri/default/files... LOG.deploy: Deploying resources... LOG.deploy: Updating deployment state... LOG.deploy: Deployment complete! acceptance_test.go:942: LOG.destroy: LOG.destroy: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle destroy --auto-approve LOG.destroy: The following resources will be deleted: LOG.destroy: delete resources.schemas.foo LOG.destroy: LOG.destroy: This action will result in the deletion of the following UC schemas. Any underlying data may be lost: LOG.destroy: delete resources.schemas.foo LOG.destroy: LOG.destroy: All files and directories at the following location will be deleted: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-vltjkf26wfdzhlqemow55whbri/default LOG.destroy: LOG.destroy: Deleting files... LOG.destroy: Destroy complete! acceptance_test.go:942: LOG.planjson: acceptance_test.go:942: LOG.validate: LOG.validate: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle validate LOG.validate: Name: test-bundle-vltjkf26wfdzhlqemow55whbri LOG.validate: Target: default LOG.validate: Workspace: LOG.validate: User: tester@databricks.com LOG.validate: Path: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-vltjkf26wfdzhlqemow55whbri/default LOG.validate: LOG.validate: Validation OK! --- FAIL: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=schema_uppercase_name.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 (0.34s) ``` **latest (v1.6.0):** ``` === RUN TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=schema_uppercase_name.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 === PAUSE TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=schema_uppercase_name.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 === CONT TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=schema_uppercase_name.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 acceptance_test.go:1083: Error Trace: /Users/denis.bilenko/work/cli-trees/local-only/libs/testdiff/testdiff.go:22 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:1083 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:915 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:515 Error: Not equal: expected: "INPUT_CONFIG_OK\n" actual : "INPUT_CONFIG_OK\n\nExit code: 1\n" Diff: --- Expected +++ Actual @@ -2 +2,3 @@ +Exit code: 1 + Test: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=schema_uppercase_name.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 Messages: bundle/invariant/no_drift/output.txt vs /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/TestAcceptbundleinvariantno_driftDATABRICKS_BUNDLE_ENGINE=di1360438382/001/output.txt acceptance_test.go:942: LOG.config: bundle: LOG.config: name: test-bundle-uku7e5jr75axlfdychyzyyhuxq LOG.config: LOG.config: # Reproduce: UC API normalizes identifier names to lowercase, causing LOG.config: # false drift on the second deploy when the config uses mixed-case names. LOG.config: # Volumes are covered by acceptance/bundle/resources/volumes/uppercase-name LOG.config: # instead: the Terraform provider rejects an uppercase volume schema_name LOG.config: # ("inconsistent final plan"), and the migrate invariant always deploys via LOG.config: # Terraform first, so an uppercase volume cannot live in this shared config. LOG.config: resources: LOG.config: schemas: LOG.config: foo: LOG.config: catalog_name: main LOG.config: name: MySCHEMA-uku7e5jr75axlfdychyzyyhuxq acceptance_test.go:942: LOG.cp: acceptance_test.go:942: LOG.deploy: LOG.deploy: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle deploy --plan plan.json LOG.deploy: Uploading bundle files to /Workspace/Users/tester@databricks.com/.bundle/test-bundle-uku7e5jr75axlfdychyzyyhuxq/default/files... LOG.deploy: Deploying resources... LOG.deploy: Updating deployment state... LOG.deploy: Deployment complete! acceptance_test.go:942: LOG.destroy: LOG.destroy: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle destroy --auto-approve LOG.destroy: The following resources will be deleted: LOG.destroy: delete resources.schemas.foo LOG.destroy: LOG.destroy: This action will result in the deletion of the following UC schemas. Any underlying data may be lost: LOG.destroy: delete resources.schemas.foo LOG.destroy: LOG.destroy: All files and directories at the following location will be deleted: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-uku7e5jr75axlfdychyzyyhuxq/default LOG.destroy: LOG.destroy: Deleting files... LOG.destroy: Destroy complete! acceptance_test.go:942: LOG.planjson: acceptance_test.go:942: LOG.validate: LOG.validate: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle validate LOG.validate: Name: test-bundle-uku7e5jr75axlfdychyzyyhuxq LOG.validate: Target: default LOG.validate: Workspace: LOG.validate: User: tester@databricks.com LOG.validate: Path: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-uku7e5jr75axlfdychyzyyhuxq/default LOG.validate: LOG.validate: Validation OK! --- FAIL: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=schema_uppercase_name.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 (0.30s) ```
TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=secret_scope.yml.tmpl/LOCAL_DIFF=--local/READPLAN= ✅ | main (de465e09b) ❌ | latest (v1.6.0) ❌ **main (de465e09b):** ``` === RUN TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=secret_scope.yml.tmpl/LOCAL_DIFF=--local/READPLAN= === PAUSE TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=secret_scope.yml.tmpl/LOCAL_DIFF=--local/READPLAN= === CONT TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=secret_scope.yml.tmpl/LOCAL_DIFF=--local/READPLAN= acceptance_test.go:1083: Error Trace: /Users/denis.bilenko/work/cli-trees/local-only/libs/testdiff/testdiff.go:22 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:1083 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:915 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:515 Error: Not equal: expected: "INPUT_CONFIG_OK\n" actual : "INPUT_CONFIG_OK\n\nExit code: 1\n" Diff: --- Expected +++ Actual @@ -2 +2,3 @@ +Exit code: 1 + Test: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=secret_scope.yml.tmpl/LOCAL_DIFF=--local/READPLAN= Messages: bundle/invariant/no_drift/output.txt vs /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/TestAcceptbundleinvariantno_driftDATABRICKS_BUNDLE_ENGINE=di3683128030/001/output.txt acceptance_test.go:942: LOG.config: bundle: LOG.config: name: test-bundle-vpfvrrdqy5elxnz6ypwno6znvm LOG.config: LOG.config: resources: LOG.config: secret_scopes: LOG.config: foo: LOG.config: name: test-scope-vpfvrrdqy5elxnz6ypwno6znvm LOG.config: backend_type: DATABRICKS LOG.config: permissions: LOG.config: - level: READ LOG.config: group_name: users LOG.config: - level: WRITE LOG.config: group_name: admins acceptance_test.go:942: LOG.cp: acceptance_test.go:942: LOG.deploy: LOG.deploy: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle deploy LOG.deploy: Uploading bundle files to /Workspace/Users/tester@databricks.com/.bundle/test-bundle-vpfvrrdqy5elxnz6ypwno6znvm/default/files... LOG.deploy: Deploying resources... LOG.deploy: Updating deployment state... LOG.deploy: Deployment complete! acceptance_test.go:942: LOG.destroy: LOG.destroy: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle destroy --auto-approve LOG.destroy: The following resources will be deleted: LOG.destroy: delete resources.secret_scopes.foo LOG.destroy: LOG.destroy: All files and directories at the following location will be deleted: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-vpfvrrdqy5elxnz6ypwno6znvm/default LOG.destroy: LOG.destroy: Deleting files... LOG.destroy: Destroy complete! acceptance_test.go:942: LOG.planjson: acceptance_test.go:942: LOG.validate: LOG.validate: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle validate LOG.validate: Name: test-bundle-vpfvrrdqy5elxnz6ypwno6znvm LOG.validate: Target: default LOG.validate: Workspace: LOG.validate: User: tester@databricks.com LOG.validate: Path: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-vpfvrrdqy5elxnz6ypwno6znvm/default LOG.validate: LOG.validate: Validation OK! --- FAIL: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=secret_scope.yml.tmpl/LOCAL_DIFF=--local/READPLAN= (0.33s) ``` **latest (v1.6.0):** ``` === RUN TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=secret_scope.yml.tmpl/LOCAL_DIFF=--local/READPLAN= === PAUSE TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=secret_scope.yml.tmpl/LOCAL_DIFF=--local/READPLAN= === CONT TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=secret_scope.yml.tmpl/LOCAL_DIFF=--local/READPLAN= acceptance_test.go:1083: Error Trace: /Users/denis.bilenko/work/cli-trees/local-only/libs/testdiff/testdiff.go:22 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:1083 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:915 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:515 Error: Not equal: expected: "INPUT_CONFIG_OK\n" actual : "INPUT_CONFIG_OK\n\nExit code: 1\n" Diff: --- Expected +++ Actual @@ -2 +2,3 @@ +Exit code: 1 + Test: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=secret_scope.yml.tmpl/LOCAL_DIFF=--local/READPLAN= Messages: bundle/invariant/no_drift/output.txt vs /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/TestAcceptbundleinvariantno_driftDATABRICKS_BUNDLE_ENGINE=di3582295066/001/output.txt acceptance_test.go:942: LOG.config: bundle: LOG.config: name: test-bundle-x43hji7pazhsrdrvcp75ewmrvq LOG.config: LOG.config: resources: LOG.config: secret_scopes: LOG.config: foo: LOG.config: name: test-scope-x43hji7pazhsrdrvcp75ewmrvq LOG.config: backend_type: DATABRICKS LOG.config: permissions: LOG.config: - level: READ LOG.config: group_name: users LOG.config: - level: WRITE LOG.config: group_name: admins acceptance_test.go:942: LOG.cp: acceptance_test.go:942: LOG.deploy: LOG.deploy: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle deploy LOG.deploy: Uploading bundle files to /Workspace/Users/tester@databricks.com/.bundle/test-bundle-x43hji7pazhsrdrvcp75ewmrvq/default/files... LOG.deploy: Deploying resources... LOG.deploy: Updating deployment state... LOG.deploy: Deployment complete! acceptance_test.go:942: LOG.destroy: LOG.destroy: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle destroy --auto-approve LOG.destroy: The following resources will be deleted: LOG.destroy: delete resources.secret_scopes.foo LOG.destroy: LOG.destroy: All files and directories at the following location will be deleted: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-x43hji7pazhsrdrvcp75ewmrvq/default LOG.destroy: LOG.destroy: Deleting files... LOG.destroy: Destroy complete! acceptance_test.go:942: LOG.planjson: acceptance_test.go:942: LOG.validate: LOG.validate: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle validate LOG.validate: Name: test-bundle-x43hji7pazhsrdrvcp75ewmrvq LOG.validate: Target: default LOG.validate: Workspace: LOG.validate: User: tester@databricks.com LOG.validate: Path: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-x43hji7pazhsrdrvcp75ewmrvq/default LOG.validate: LOG.validate: Validation OK! --- FAIL: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=secret_scope.yml.tmpl/LOCAL_DIFF=--local/READPLAN= (0.32s) ```
TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=secret_scope.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 ✅ | main (de465e09b) ❌ | latest (v1.6.0) ❌ **main (de465e09b):** ``` === RUN TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=secret_scope.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 === PAUSE TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=secret_scope.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 === CONT TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=secret_scope.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 acceptance_test.go:1083: Error Trace: /Users/denis.bilenko/work/cli-trees/local-only/libs/testdiff/testdiff.go:22 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:1083 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:915 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:515 Error: Not equal: expected: "INPUT_CONFIG_OK\n" actual : "INPUT_CONFIG_OK\n\nExit code: 1\n" Diff: --- Expected +++ Actual @@ -2 +2,3 @@ +Exit code: 1 + Test: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=secret_scope.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 Messages: bundle/invariant/no_drift/output.txt vs /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/TestAcceptbundleinvariantno_driftDATABRICKS_BUNDLE_ENGINE=di2505159216/001/output.txt acceptance_test.go:942: LOG.config: bundle: LOG.config: name: test-bundle-z37ven6jwfa73mii4itqgpx5mi LOG.config: LOG.config: resources: LOG.config: secret_scopes: LOG.config: foo: LOG.config: name: test-scope-z37ven6jwfa73mii4itqgpx5mi LOG.config: backend_type: DATABRICKS LOG.config: permissions: LOG.config: - level: READ LOG.config: group_name: users LOG.config: - level: WRITE LOG.config: group_name: admins acceptance_test.go:942: LOG.cp: acceptance_test.go:942: LOG.deploy: LOG.deploy: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle deploy --plan plan.json LOG.deploy: Uploading bundle files to /Workspace/Users/tester@databricks.com/.bundle/test-bundle-z37ven6jwfa73mii4itqgpx5mi/default/files... LOG.deploy: Deploying resources... LOG.deploy: Updating deployment state... LOG.deploy: Deployment complete! acceptance_test.go:942: LOG.destroy: LOG.destroy: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle destroy --auto-approve LOG.destroy: The following resources will be deleted: LOG.destroy: delete resources.secret_scopes.foo LOG.destroy: LOG.destroy: All files and directories at the following location will be deleted: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-z37ven6jwfa73mii4itqgpx5mi/default LOG.destroy: LOG.destroy: Deleting files... LOG.destroy: Destroy complete! acceptance_test.go:942: LOG.planjson: acceptance_test.go:942: LOG.validate: LOG.validate: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle validate LOG.validate: Name: test-bundle-z37ven6jwfa73mii4itqgpx5mi LOG.validate: Target: default LOG.validate: Workspace: LOG.validate: User: tester@databricks.com LOG.validate: Path: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-z37ven6jwfa73mii4itqgpx5mi/default LOG.validate: LOG.validate: Validation OK! --- FAIL: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=secret_scope.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 (0.32s) ``` **latest (v1.6.0):** ``` === RUN TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=secret_scope.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 === PAUSE TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=secret_scope.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 === CONT TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=secret_scope.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 acceptance_test.go:1083: Error Trace: /Users/denis.bilenko/work/cli-trees/local-only/libs/testdiff/testdiff.go:22 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:1083 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:915 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:515 Error: Not equal: expected: "INPUT_CONFIG_OK\n" actual : "INPUT_CONFIG_OK\n\nExit code: 1\n" Diff: --- Expected +++ Actual @@ -2 +2,3 @@ +Exit code: 1 + Test: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=secret_scope.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 Messages: bundle/invariant/no_drift/output.txt vs /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/TestAcceptbundleinvariantno_driftDATABRICKS_BUNDLE_ENGINE=di1983735349/001/output.txt acceptance_test.go:942: LOG.config: bundle: LOG.config: name: test-bundle-vg2wuqs52zfotmfodi5uyhezui LOG.config: LOG.config: resources: LOG.config: secret_scopes: LOG.config: foo: LOG.config: name: test-scope-vg2wuqs52zfotmfodi5uyhezui LOG.config: backend_type: DATABRICKS LOG.config: permissions: LOG.config: - level: READ LOG.config: group_name: users LOG.config: - level: WRITE LOG.config: group_name: admins acceptance_test.go:942: LOG.cp: acceptance_test.go:942: LOG.deploy: LOG.deploy: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle deploy --plan plan.json LOG.deploy: Uploading bundle files to /Workspace/Users/tester@databricks.com/.bundle/test-bundle-vg2wuqs52zfotmfodi5uyhezui/default/files... LOG.deploy: Deploying resources... LOG.deploy: Updating deployment state... LOG.deploy: Deployment complete! acceptance_test.go:942: LOG.destroy: LOG.destroy: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle destroy --auto-approve LOG.destroy: The following resources will be deleted: LOG.destroy: delete resources.secret_scopes.foo LOG.destroy: LOG.destroy: All files and directories at the following location will be deleted: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-vg2wuqs52zfotmfodi5uyhezui/default LOG.destroy: LOG.destroy: Deleting files... LOG.destroy: Destroy complete! acceptance_test.go:942: LOG.planjson: acceptance_test.go:942: LOG.validate: LOG.validate: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle validate LOG.validate: Name: test-bundle-vg2wuqs52zfotmfodi5uyhezui LOG.validate: Target: default LOG.validate: Workspace: LOG.validate: User: tester@databricks.com LOG.validate: Path: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-vg2wuqs52zfotmfodi5uyhezui/default LOG.validate: LOG.validate: Validation OK! --- FAIL: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=secret_scope.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 (0.31s) ```
TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=secret_scope_default_backend_type.yml.tmpl/LOCAL_DIFF=--local/READPLAN= ✅ | main (de465e09b) ❌ | latest (v1.6.0) ❌ **main (de465e09b):** ``` === RUN TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=secret_scope_default_backend_type.yml.tmpl/LOCAL_DIFF=--local/READPLAN= === PAUSE TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=secret_scope_default_backend_type.yml.tmpl/LOCAL_DIFF=--local/READPLAN= === CONT TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=secret_scope_default_backend_type.yml.tmpl/LOCAL_DIFF=--local/READPLAN= acceptance_test.go:1083: Error Trace: /Users/denis.bilenko/work/cli-trees/local-only/libs/testdiff/testdiff.go:22 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:1083 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:915 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:515 Error: Not equal: expected: "INPUT_CONFIG_OK\n" actual : "INPUT_CONFIG_OK\n\nExit code: 1\n" Diff: --- Expected +++ Actual @@ -2 +2,3 @@ +Exit code: 1 + Test: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=secret_scope_default_backend_type.yml.tmpl/LOCAL_DIFF=--local/READPLAN= Messages: bundle/invariant/no_drift/output.txt vs /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/TestAcceptbundleinvariantno_driftDATABRICKS_BUNDLE_ENGINE=di2688098417/001/output.txt acceptance_test.go:942: LOG.config: bundle: LOG.config: name: test-bundle-txjzbpz36rfq5bsv7a4jxezx4q LOG.config: LOG.config: resources: LOG.config: secret_scopes: LOG.config: foo: LOG.config: name: test-scope-txjzbpz36rfq5bsv7a4jxezx4q acceptance_test.go:942: LOG.cp: acceptance_test.go:942: LOG.deploy: LOG.deploy: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle deploy LOG.deploy: Uploading bundle files to /Workspace/Users/tester@databricks.com/.bundle/test-bundle-txjzbpz36rfq5bsv7a4jxezx4q/default/files... LOG.deploy: Deploying resources... LOG.deploy: Updating deployment state... LOG.deploy: Deployment complete! acceptance_test.go:942: LOG.destroy: LOG.destroy: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle destroy --auto-approve LOG.destroy: The following resources will be deleted: LOG.destroy: delete resources.secret_scopes.foo LOG.destroy: LOG.destroy: All files and directories at the following location will be deleted: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-txjzbpz36rfq5bsv7a4jxezx4q/default LOG.destroy: LOG.destroy: Deleting files... LOG.destroy: Destroy complete! acceptance_test.go:942: LOG.planjson: acceptance_test.go:942: LOG.validate: LOG.validate: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle validate LOG.validate: Name: test-bundle-txjzbpz36rfq5bsv7a4jxezx4q LOG.validate: Target: default LOG.validate: Workspace: LOG.validate: User: tester@databricks.com LOG.validate: Path: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-txjzbpz36rfq5bsv7a4jxezx4q/default LOG.validate: LOG.validate: Validation OK! --- FAIL: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=secret_scope_default_backend_type.yml.tmpl/LOCAL_DIFF=--local/READPLAN= (0.32s) ``` **latest (v1.6.0):** ``` === RUN TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=secret_scope_default_backend_type.yml.tmpl/LOCAL_DIFF=--local/READPLAN= === PAUSE TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=secret_scope_default_backend_type.yml.tmpl/LOCAL_DIFF=--local/READPLAN= === CONT TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=secret_scope_default_backend_type.yml.tmpl/LOCAL_DIFF=--local/READPLAN= acceptance_test.go:1083: Error Trace: /Users/denis.bilenko/work/cli-trees/local-only/libs/testdiff/testdiff.go:22 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:1083 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:915 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:515 Error: Not equal: expected: "INPUT_CONFIG_OK\n" actual : "INPUT_CONFIG_OK\n\nExit code: 1\n" Diff: --- Expected +++ Actual @@ -2 +2,3 @@ +Exit code: 1 + Test: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=secret_scope_default_backend_type.yml.tmpl/LOCAL_DIFF=--local/READPLAN= Messages: bundle/invariant/no_drift/output.txt vs /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/TestAcceptbundleinvariantno_driftDATABRICKS_BUNDLE_ENGINE=di835746283/001/output.txt acceptance_test.go:942: LOG.config: bundle: LOG.config: name: test-bundle-myube62yk5gvpgqcuttf4sqgma LOG.config: LOG.config: resources: LOG.config: secret_scopes: LOG.config: foo: LOG.config: name: test-scope-myube62yk5gvpgqcuttf4sqgma acceptance_test.go:942: LOG.cp: acceptance_test.go:942: LOG.deploy: LOG.deploy: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle deploy LOG.deploy: Uploading bundle files to /Workspace/Users/tester@databricks.com/.bundle/test-bundle-myube62yk5gvpgqcuttf4sqgma/default/files... LOG.deploy: Deploying resources... LOG.deploy: Updating deployment state... LOG.deploy: Deployment complete! acceptance_test.go:942: LOG.destroy: LOG.destroy: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle destroy --auto-approve LOG.destroy: The following resources will be deleted: LOG.destroy: delete resources.secret_scopes.foo LOG.destroy: LOG.destroy: All files and directories at the following location will be deleted: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-myube62yk5gvpgqcuttf4sqgma/default LOG.destroy: LOG.destroy: Deleting files... LOG.destroy: Destroy complete! acceptance_test.go:942: LOG.planjson: acceptance_test.go:942: LOG.validate: LOG.validate: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle validate LOG.validate: Name: test-bundle-myube62yk5gvpgqcuttf4sqgma LOG.validate: Target: default LOG.validate: Workspace: LOG.validate: User: tester@databricks.com LOG.validate: Path: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-myube62yk5gvpgqcuttf4sqgma/default LOG.validate: LOG.validate: Validation OK! --- FAIL: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=secret_scope_default_backend_type.yml.tmpl/LOCAL_DIFF=--local/READPLAN= (0.34s) ```
TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=secret_scope_default_backend_type.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 ✅ | main (de465e09b) ❌ | latest (v1.6.0) ❌ **main (de465e09b):** ``` === RUN TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=secret_scope_default_backend_type.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 === PAUSE TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=secret_scope_default_backend_type.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 === CONT TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=secret_scope_default_backend_type.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 acceptance_test.go:1083: Error Trace: /Users/denis.bilenko/work/cli-trees/local-only/libs/testdiff/testdiff.go:22 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:1083 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:915 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:515 Error: Not equal: expected: "INPUT_CONFIG_OK\n" actual : "INPUT_CONFIG_OK\n\nExit code: 1\n" Diff: --- Expected +++ Actual @@ -2 +2,3 @@ +Exit code: 1 + Test: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=secret_scope_default_backend_type.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 Messages: bundle/invariant/no_drift/output.txt vs /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/TestAcceptbundleinvariantno_driftDATABRICKS_BUNDLE_ENGINE=di569520955/001/output.txt acceptance_test.go:942: LOG.config: bundle: LOG.config: name: test-bundle-vqcwmuyilnepvekglcs5wsnbta LOG.config: LOG.config: resources: LOG.config: secret_scopes: LOG.config: foo: LOG.config: name: test-scope-vqcwmuyilnepvekglcs5wsnbta acceptance_test.go:942: LOG.cp: acceptance_test.go:942: LOG.deploy: LOG.deploy: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle deploy --plan plan.json LOG.deploy: Uploading bundle files to /Workspace/Users/tester@databricks.com/.bundle/test-bundle-vqcwmuyilnepvekglcs5wsnbta/default/files... LOG.deploy: Deploying resources... LOG.deploy: Updating deployment state... LOG.deploy: Deployment complete! acceptance_test.go:942: LOG.destroy: LOG.destroy: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle destroy --auto-approve LOG.destroy: The following resources will be deleted: LOG.destroy: delete resources.secret_scopes.foo LOG.destroy: LOG.destroy: All files and directories at the following location will be deleted: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-vqcwmuyilnepvekglcs5wsnbta/default LOG.destroy: LOG.destroy: Deleting files... LOG.destroy: Destroy complete! acceptance_test.go:942: LOG.planjson: acceptance_test.go:942: LOG.validate: LOG.validate: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle validate LOG.validate: Name: test-bundle-vqcwmuyilnepvekglcs5wsnbta LOG.validate: Target: default LOG.validate: Workspace: LOG.validate: User: tester@databricks.com LOG.validate: Path: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-vqcwmuyilnepvekglcs5wsnbta/default LOG.validate: LOG.validate: Validation OK! --- FAIL: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=secret_scope_default_backend_type.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 (0.31s) ``` **latest (v1.6.0):** ``` === RUN TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=secret_scope_default_backend_type.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 === PAUSE TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=secret_scope_default_backend_type.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 === CONT TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=secret_scope_default_backend_type.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 acceptance_test.go:1083: Error Trace: /Users/denis.bilenko/work/cli-trees/local-only/libs/testdiff/testdiff.go:22 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:1083 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:915 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:515 Error: Not equal: expected: "INPUT_CONFIG_OK\n" actual : "INPUT_CONFIG_OK\n\nExit code: 1\n" Diff: --- Expected +++ Actual @@ -2 +2,3 @@ +Exit code: 1 + Test: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=secret_scope_default_backend_type.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 Messages: bundle/invariant/no_drift/output.txt vs /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/TestAcceptbundleinvariantno_driftDATABRICKS_BUNDLE_ENGINE=di3919733516/001/output.txt acceptance_test.go:942: LOG.config: bundle: LOG.config: name: test-bundle-7qkgdelpknabrbwn6ijaxgrxm4 LOG.config: LOG.config: resources: LOG.config: secret_scopes: LOG.config: foo: LOG.config: name: test-scope-7qkgdelpknabrbwn6ijaxgrxm4 acceptance_test.go:942: LOG.cp: acceptance_test.go:942: LOG.deploy: LOG.deploy: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle deploy --plan plan.json LOG.deploy: Uploading bundle files to /Workspace/Users/tester@databricks.com/.bundle/test-bundle-7qkgdelpknabrbwn6ijaxgrxm4/default/files... LOG.deploy: Deploying resources... LOG.deploy: Updating deployment state... LOG.deploy: Deployment complete! acceptance_test.go:942: LOG.destroy: LOG.destroy: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle destroy --auto-approve LOG.destroy: The following resources will be deleted: LOG.destroy: delete resources.secret_scopes.foo LOG.destroy: LOG.destroy: All files and directories at the following location will be deleted: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-7qkgdelpknabrbwn6ijaxgrxm4/default LOG.destroy: LOG.destroy: Deleting files... LOG.destroy: Destroy complete! acceptance_test.go:942: LOG.planjson: acceptance_test.go:942: LOG.validate: LOG.validate: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle validate LOG.validate: Name: test-bundle-7qkgdelpknabrbwn6ijaxgrxm4 LOG.validate: Target: default LOG.validate: Workspace: LOG.validate: User: tester@databricks.com LOG.validate: Path: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-7qkgdelpknabrbwn6ijaxgrxm4/default LOG.validate: LOG.validate: Validation OK! --- FAIL: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=secret_scope_default_backend_type.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 (0.38s) ```
TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=sql_warehouse.yml.tmpl/LOCAL_DIFF=--local/READPLAN= ✅ | main (de465e09b) ❌ | latest (v1.6.0) ❌ **main (de465e09b):** ``` === RUN TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=sql_warehouse.yml.tmpl/LOCAL_DIFF=--local/READPLAN= === PAUSE TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=sql_warehouse.yml.tmpl/LOCAL_DIFF=--local/READPLAN= === CONT TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=sql_warehouse.yml.tmpl/LOCAL_DIFF=--local/READPLAN= acceptance_test.go:1083: Error Trace: /Users/denis.bilenko/work/cli-trees/local-only/libs/testdiff/testdiff.go:22 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:1083 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:915 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:515 Error: Not equal: expected: "INPUT_CONFIG_OK\n" actual : "INPUT_CONFIG_OK\n\nExit code: 1\n" Diff: --- Expected +++ Actual @@ -2 +2,3 @@ +Exit code: 1 + Test: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=sql_warehouse.yml.tmpl/LOCAL_DIFF=--local/READPLAN= Messages: bundle/invariant/no_drift/output.txt vs /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/TestAcceptbundleinvariantno_driftDATABRICKS_BUNDLE_ENGINE=di2590446845/001/output.txt acceptance_test.go:942: LOG.config: bundle: LOG.config: name: test-bundle-j43vg4wd7rdkbivbtl46pbvjam LOG.config: LOG.config: resources: LOG.config: sql_warehouses: LOG.config: foo: LOG.config: name: test-warehouse-j43vg4wd7rdkbivbtl46pbvjam LOG.config: cluster_size: 2X-Small LOG.config: auto_stop_mins: 10 LOG.config: max_num_clusters: 1 LOG.config: min_num_clusters: 1 LOG.config: warehouse_type: CLASSIC LOG.config: permissions: LOG.config: - level: CAN_VIEW LOG.config: group_name: users acceptance_test.go:942: LOG.cp: acceptance_test.go:942: LOG.deploy: LOG.deploy: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle deploy LOG.deploy: Uploading bundle files to /Workspace/Users/tester@databricks.com/.bundle/test-bundle-j43vg4wd7rdkbivbtl46pbvjam/default/files... LOG.deploy: Deploying resources... LOG.deploy: Updating deployment state... LOG.deploy: Deployment complete! acceptance_test.go:942: LOG.destroy: LOG.destroy: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle destroy --auto-approve LOG.destroy: The following resources will be deleted: LOG.destroy: delete resources.sql_warehouses.foo LOG.destroy: LOG.destroy: All files and directories at the following location will be deleted: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-j43vg4wd7rdkbivbtl46pbvjam/default LOG.destroy: LOG.destroy: Deleting files... LOG.destroy: Destroy complete! acceptance_test.go:942: LOG.planjson: acceptance_test.go:942: LOG.validate: LOG.validate: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle validate LOG.validate: Name: test-bundle-j43vg4wd7rdkbivbtl46pbvjam LOG.validate: Target: default LOG.validate: Workspace: LOG.validate: User: tester@databricks.com LOG.validate: Path: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-j43vg4wd7rdkbivbtl46pbvjam/default LOG.validate: LOG.validate: Validation OK! --- FAIL: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=sql_warehouse.yml.tmpl/LOCAL_DIFF=--local/READPLAN= (0.34s) ``` **latest (v1.6.0):** ``` === RUN TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=sql_warehouse.yml.tmpl/LOCAL_DIFF=--local/READPLAN= === PAUSE TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=sql_warehouse.yml.tmpl/LOCAL_DIFF=--local/READPLAN= === CONT TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=sql_warehouse.yml.tmpl/LOCAL_DIFF=--local/READPLAN= acceptance_test.go:1083: Error Trace: /Users/denis.bilenko/work/cli-trees/local-only/libs/testdiff/testdiff.go:22 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:1083 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:915 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:515 Error: Not equal: expected: "INPUT_CONFIG_OK\n" actual : "INPUT_CONFIG_OK\n\nExit code: 1\n" Diff: --- Expected +++ Actual @@ -2 +2,3 @@ +Exit code: 1 + Test: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=sql_warehouse.yml.tmpl/LOCAL_DIFF=--local/READPLAN= Messages: bundle/invariant/no_drift/output.txt vs /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/TestAcceptbundleinvariantno_driftDATABRICKS_BUNDLE_ENGINE=di1581233088/001/output.txt acceptance_test.go:942: LOG.config: bundle: LOG.config: name: test-bundle-n4veqmc2o5ex5nkhnyurtqmklu LOG.config: LOG.config: resources: LOG.config: sql_warehouses: LOG.config: foo: LOG.config: name: test-warehouse-n4veqmc2o5ex5nkhnyurtqmklu LOG.config: cluster_size: 2X-Small LOG.config: auto_stop_mins: 10 LOG.config: max_num_clusters: 1 LOG.config: min_num_clusters: 1 LOG.config: warehouse_type: CLASSIC LOG.config: permissions: LOG.config: - level: CAN_VIEW LOG.config: group_name: users acceptance_test.go:942: LOG.cp: acceptance_test.go:942: LOG.deploy: LOG.deploy: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle deploy LOG.deploy: Uploading bundle files to /Workspace/Users/tester@databricks.com/.bundle/test-bundle-n4veqmc2o5ex5nkhnyurtqmklu/default/files... LOG.deploy: Deploying resources... LOG.deploy: Updating deployment state... LOG.deploy: Deployment complete! acceptance_test.go:942: LOG.destroy: LOG.destroy: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle destroy --auto-approve LOG.destroy: The following resources will be deleted: LOG.destroy: delete resources.sql_warehouses.foo LOG.destroy: LOG.destroy: All files and directories at the following location will be deleted: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-n4veqmc2o5ex5nkhnyurtqmklu/default LOG.destroy: LOG.destroy: Deleting files... LOG.destroy: Destroy complete! acceptance_test.go:942: LOG.planjson: acceptance_test.go:942: LOG.validate: LOG.validate: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle validate LOG.validate: Name: test-bundle-n4veqmc2o5ex5nkhnyurtqmklu LOG.validate: Target: default LOG.validate: Workspace: LOG.validate: User: tester@databricks.com LOG.validate: Path: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-n4veqmc2o5ex5nkhnyurtqmklu/default LOG.validate: LOG.validate: Validation OK! --- FAIL: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=sql_warehouse.yml.tmpl/LOCAL_DIFF=--local/READPLAN= (0.34s) ```
TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=sql_warehouse.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 ✅ | main (de465e09b) ❌ | latest (v1.6.0) ❌ **main (de465e09b):** ``` === RUN TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=sql_warehouse.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 === PAUSE TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=sql_warehouse.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 === CONT TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=sql_warehouse.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 acceptance_test.go:1083: Error Trace: /Users/denis.bilenko/work/cli-trees/local-only/libs/testdiff/testdiff.go:22 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:1083 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:915 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:515 Error: Not equal: expected: "INPUT_CONFIG_OK\n" actual : "INPUT_CONFIG_OK\n\nExit code: 1\n" Diff: --- Expected +++ Actual @@ -2 +2,3 @@ +Exit code: 1 + Test: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=sql_warehouse.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 Messages: bundle/invariant/no_drift/output.txt vs /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/TestAcceptbundleinvariantno_driftDATABRICKS_BUNDLE_ENGINE=di2705022640/001/output.txt acceptance_test.go:942: LOG.config: bundle: LOG.config: name: test-bundle-7mldv7to5bclljplp3iboeojcy LOG.config: LOG.config: resources: LOG.config: sql_warehouses: LOG.config: foo: LOG.config: name: test-warehouse-7mldv7to5bclljplp3iboeojcy LOG.config: cluster_size: 2X-Small LOG.config: auto_stop_mins: 10 LOG.config: max_num_clusters: 1 LOG.config: min_num_clusters: 1 LOG.config: warehouse_type: CLASSIC LOG.config: permissions: LOG.config: - level: CAN_VIEW LOG.config: group_name: users acceptance_test.go:942: LOG.cp: acceptance_test.go:942: LOG.deploy: LOG.deploy: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle deploy --plan plan.json LOG.deploy: Uploading bundle files to /Workspace/Users/tester@databricks.com/.bundle/test-bundle-7mldv7to5bclljplp3iboeojcy/default/files... LOG.deploy: Deploying resources... LOG.deploy: Updating deployment state... LOG.deploy: Deployment complete! acceptance_test.go:942: LOG.destroy: LOG.destroy: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle destroy --auto-approve LOG.destroy: The following resources will be deleted: LOG.destroy: delete resources.sql_warehouses.foo LOG.destroy: LOG.destroy: All files and directories at the following location will be deleted: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-7mldv7to5bclljplp3iboeojcy/default LOG.destroy: LOG.destroy: Deleting files... LOG.destroy: Destroy complete! acceptance_test.go:942: LOG.planjson: acceptance_test.go:942: LOG.validate: LOG.validate: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle validate LOG.validate: Name: test-bundle-7mldv7to5bclljplp3iboeojcy LOG.validate: Target: default LOG.validate: Workspace: LOG.validate: User: tester@databricks.com LOG.validate: Path: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-7mldv7to5bclljplp3iboeojcy/default LOG.validate: LOG.validate: Validation OK! --- FAIL: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=sql_warehouse.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 (0.32s) ``` **latest (v1.6.0):** ``` === RUN TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=sql_warehouse.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 === PAUSE TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=sql_warehouse.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 === CONT TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=sql_warehouse.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 acceptance_test.go:1083: Error Trace: /Users/denis.bilenko/work/cli-trees/local-only/libs/testdiff/testdiff.go:22 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:1083 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:915 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:515 Error: Not equal: expected: "INPUT_CONFIG_OK\n" actual : "INPUT_CONFIG_OK\n\nExit code: 1\n" Diff: --- Expected +++ Actual @@ -2 +2,3 @@ +Exit code: 1 + Test: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=sql_warehouse.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 Messages: bundle/invariant/no_drift/output.txt vs /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/TestAcceptbundleinvariantno_driftDATABRICKS_BUNDLE_ENGINE=di1046278147/001/output.txt acceptance_test.go:942: LOG.config: bundle: LOG.config: name: test-bundle-wy2wkwutbnd2hcipzlvpxedcjy LOG.config: LOG.config: resources: LOG.config: sql_warehouses: LOG.config: foo: LOG.config: name: test-warehouse-wy2wkwutbnd2hcipzlvpxedcjy LOG.config: cluster_size: 2X-Small LOG.config: auto_stop_mins: 10 LOG.config: max_num_clusters: 1 LOG.config: min_num_clusters: 1 LOG.config: warehouse_type: CLASSIC LOG.config: permissions: LOG.config: - level: CAN_VIEW LOG.config: group_name: users acceptance_test.go:942: LOG.cp: acceptance_test.go:942: LOG.deploy: LOG.deploy: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle deploy --plan plan.json LOG.deploy: Uploading bundle files to /Workspace/Users/tester@databricks.com/.bundle/test-bundle-wy2wkwutbnd2hcipzlvpxedcjy/default/files... LOG.deploy: Deploying resources... LOG.deploy: Updating deployment state... LOG.deploy: Deployment complete! acceptance_test.go:942: LOG.destroy: LOG.destroy: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle destroy --auto-approve LOG.destroy: The following resources will be deleted: LOG.destroy: delete resources.sql_warehouses.foo LOG.destroy: LOG.destroy: All files and directories at the following location will be deleted: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-wy2wkwutbnd2hcipzlvpxedcjy/default LOG.destroy: LOG.destroy: Deleting files... LOG.destroy: Destroy complete! acceptance_test.go:942: LOG.planjson: acceptance_test.go:942: LOG.validate: LOG.validate: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle validate LOG.validate: Name: test-bundle-wy2wkwutbnd2hcipzlvpxedcjy LOG.validate: Target: default LOG.validate: Workspace: LOG.validate: User: tester@databricks.com LOG.validate: Path: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-wy2wkwutbnd2hcipzlvpxedcjy/default LOG.validate: LOG.validate: Validation OK! --- FAIL: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=sql_warehouse.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 (0.32s) ```
TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=synced_database_table.yml.tmpl/LOCAL_DIFF=--local/READPLAN= ✅ | main (de465e09b) ❌ | latest (v1.6.0) ❌ **main (de465e09b):** ``` === RUN TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=synced_database_table.yml.tmpl/LOCAL_DIFF=--local/READPLAN= === PAUSE TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=synced_database_table.yml.tmpl/LOCAL_DIFF=--local/READPLAN= === CONT TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=synced_database_table.yml.tmpl/LOCAL_DIFF=--local/READPLAN= acceptance_test.go:1083: Error Trace: /Users/denis.bilenko/work/cli-trees/local-only/libs/testdiff/testdiff.go:22 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:1083 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:915 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:515 Error: Not equal: expected: "INPUT_CONFIG_OK\n" actual : "INPUT_CONFIG_OK\n\nExit code: 1\n" Diff: --- Expected +++ Actual @@ -2 +2,3 @@ +Exit code: 1 + Test: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=synced_database_table.yml.tmpl/LOCAL_DIFF=--local/READPLAN= Messages: bundle/invariant/no_drift/output.txt vs /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/TestAcceptbundleinvariantno_driftDATABRICKS_BUNDLE_ENGINE=di1505799584/001/output.txt acceptance_test.go:942: LOG.cleanup: Cleaning up temporary source table acceptance_test.go:942: LOG.config: bundle: LOG.config: name: test-bundle-qqkaaaoaqjhwdg5ehfcvlpb2nq LOG.config: LOG.config: resources: LOG.config: database_instances: LOG.config: instance1: LOG.config: name: test-db-instance-qqkaaaoaqjhwdg5ehfcvlpb2nq LOG.config: capacity: CU_1 LOG.config: LOG.config: database_catalogs: LOG.config: catalog1: LOG.config: database_instance_name: ${resources.database_instances.instance1.name} LOG.config: database_name: test_db LOG.config: name: test-catalog-qqkaaaoaqjhwdg5ehfcvlpb2nq LOG.config: create_database_if_not_exists: true LOG.config: LOG.config: synced_database_tables: LOG.config: foo: LOG.config: name: ${resources.database_catalogs.catalog1.name}.${resources.database_catalogs.catalog1.database_name}.test_table LOG.config: database_instance_name: ${resources.database_instances.instance1.name} LOG.config: logical_database_name: ${resources.database_catalogs.catalog1.database_name} LOG.config: spec: LOG.config: # Use a unique source table per test run to avoid hitting the 20-table-per-source limit LOG.config: source_table_full_name: main.test_synced_qqkaaaoaqjhwdg5ehfcvlpb2nq.trips_source LOG.config: scheduling_policy: SNAPSHOT LOG.config: primary_key_columns: LOG.config: - tpep_pickup_datetime acceptance_test.go:942: LOG.cp: acceptance_test.go:942: LOG.deploy: LOG.deploy: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle deploy LOG.deploy: Uploading bundle files to /Workspace/Users/tester@databricks.com/.bundle/test-bundle-qqkaaaoaqjhwdg5ehfcvlpb2nq/default/files... LOG.deploy: Deploying resources... LOG.deploy: Updating deployment state... LOG.deploy: Deployment complete! acceptance_test.go:942: LOG.destroy: LOG.destroy: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle destroy --auto-approve LOG.destroy: The following resources will be deleted: LOG.destroy: delete resources.database_catalogs.catalog1 LOG.destroy: delete resources.database_instances.instance1 LOG.destroy: delete resources.synced_database_tables.foo LOG.destroy: LOG.destroy: This action will result in the deletion of the following Lakebase database instances. LOG.destroy: All data stored in them will be permanently lost: LOG.destroy: delete resources.database_instances.instance1 LOG.destroy: LOG.destroy: This action will result in the deletion of the following synced database tables. LOG.destroy: The synced data in the destination database will be lost (the source table is preserved): LOG.destroy: delete resources.synced_database_tables.foo LOG.destroy: LOG.destroy: All files and directories at the following location will be deleted: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-qqkaaaoaqjhwdg5ehfcvlpb2nq/default LOG.destroy: LOG.destroy: Deleting files... LOG.destroy: Destroy complete! acceptance_test.go:942: LOG.init: Creating temporary source table: main.test_synced_qqkaaaoaqjhwdg5ehfcvlpb2nq.trips_source LOG.init: { LOG.init: "full_name": "main.test_synced_qqkaaaoaqjhwdg5ehfcvlpb2nq" LOG.init: } acceptance_test.go:942: LOG.planjson: acceptance_test.go:942: LOG.validate: LOG.validate: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle validate LOG.validate: Name: test-bundle-qqkaaaoaqjhwdg5ehfcvlpb2nq LOG.validate: Target: default LOG.validate: Workspace: LOG.validate: User: tester@databricks.com LOG.validate: Path: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-qqkaaaoaqjhwdg5ehfcvlpb2nq/default LOG.validate: LOG.validate: Validation OK! --- FAIL: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=synced_database_table.yml.tmpl/LOCAL_DIFF=--local/READPLAN= (0.46s) ``` **latest (v1.6.0):** ``` === RUN TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=synced_database_table.yml.tmpl/LOCAL_DIFF=--local/READPLAN= === PAUSE TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=synced_database_table.yml.tmpl/LOCAL_DIFF=--local/READPLAN= === CONT TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=synced_database_table.yml.tmpl/LOCAL_DIFF=--local/READPLAN= acceptance_test.go:1083: Error Trace: /Users/denis.bilenko/work/cli-trees/local-only/libs/testdiff/testdiff.go:22 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:1083 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:915 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:515 Error: Not equal: expected: "INPUT_CONFIG_OK\n" actual : "INPUT_CONFIG_OK\n\nExit code: 1\n" Diff: --- Expected +++ Actual @@ -2 +2,3 @@ +Exit code: 1 + Test: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=synced_database_table.yml.tmpl/LOCAL_DIFF=--local/READPLAN= Messages: bundle/invariant/no_drift/output.txt vs /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/TestAcceptbundleinvariantno_driftDATABRICKS_BUNDLE_ENGINE=di1401949956/001/output.txt acceptance_test.go:942: LOG.cleanup: Cleaning up temporary source table acceptance_test.go:942: LOG.config: bundle: LOG.config: name: test-bundle-dislktr4bjchll65wwsyh34muq LOG.config: LOG.config: resources: LOG.config: database_instances: LOG.config: instance1: LOG.config: name: test-db-instance-dislktr4bjchll65wwsyh34muq LOG.config: capacity: CU_1 LOG.config: LOG.config: database_catalogs: LOG.config: catalog1: LOG.config: database_instance_name: ${resources.database_instances.instance1.name} LOG.config: database_name: test_db LOG.config: name: test-catalog-dislktr4bjchll65wwsyh34muq LOG.config: create_database_if_not_exists: true LOG.config: LOG.config: synced_database_tables: LOG.config: foo: LOG.config: name: ${resources.database_catalogs.catalog1.name}.${resources.database_catalogs.catalog1.database_name}.test_table LOG.config: database_instance_name: ${resources.database_instances.instance1.name} LOG.config: logical_database_name: ${resources.database_catalogs.catalog1.database_name} LOG.config: spec: LOG.config: # Use a unique source table per test run to avoid hitting the 20-table-per-source limit LOG.config: source_table_full_name: main.test_synced_dislktr4bjchll65wwsyh34muq.trips_source LOG.config: scheduling_policy: SNAPSHOT LOG.config: primary_key_columns: LOG.config: - tpep_pickup_datetime acceptance_test.go:942: LOG.cp: acceptance_test.go:942: LOG.deploy: LOG.deploy: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle deploy LOG.deploy: Uploading bundle files to /Workspace/Users/tester@databricks.com/.bundle/test-bundle-dislktr4bjchll65wwsyh34muq/default/files... LOG.deploy: Deploying resources... LOG.deploy: Updating deployment state... LOG.deploy: Deployment complete! acceptance_test.go:942: LOG.destroy: LOG.destroy: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle destroy --auto-approve LOG.destroy: The following resources will be deleted: LOG.destroy: delete resources.database_catalogs.catalog1 LOG.destroy: delete resources.database_instances.instance1 LOG.destroy: delete resources.synced_database_tables.foo LOG.destroy: LOG.destroy: This action will result in the deletion of the following Lakebase database instances. LOG.destroy: All data stored in them will be permanently lost: LOG.destroy: delete resources.database_instances.instance1 LOG.destroy: LOG.destroy: This action will result in the deletion of the following synced database tables. LOG.destroy: The synced data in the destination database will be lost (the source table is preserved): LOG.destroy: delete resources.synced_database_tables.foo LOG.destroy: LOG.destroy: All files and directories at the following location will be deleted: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-dislktr4bjchll65wwsyh34muq/default LOG.destroy: LOG.destroy: Deleting files... LOG.destroy: Destroy complete! acceptance_test.go:942: LOG.init: Creating temporary source table: main.test_synced_dislktr4bjchll65wwsyh34muq.trips_source LOG.init: { LOG.init: "full_name": "main.test_synced_dislktr4bjchll65wwsyh34muq" LOG.init: } acceptance_test.go:942: LOG.planjson: acceptance_test.go:942: LOG.validate: LOG.validate: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle validate LOG.validate: Name: test-bundle-dislktr4bjchll65wwsyh34muq LOG.validate: Target: default LOG.validate: Workspace: LOG.validate: User: tester@databricks.com LOG.validate: Path: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-dislktr4bjchll65wwsyh34muq/default LOG.validate: LOG.validate: Validation OK! --- FAIL: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=synced_database_table.yml.tmpl/LOCAL_DIFF=--local/READPLAN= (0.41s) ```
TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=synced_database_table.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 ✅ | main (de465e09b) ❌ | latest (v1.6.0) ❌ **main (de465e09b):** ``` === RUN TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=synced_database_table.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 === PAUSE TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=synced_database_table.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 === CONT TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=synced_database_table.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 acceptance_test.go:1083: Error Trace: /Users/denis.bilenko/work/cli-trees/local-only/libs/testdiff/testdiff.go:22 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:1083 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:915 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:515 Error: Not equal: expected: "INPUT_CONFIG_OK\n" actual : "INPUT_CONFIG_OK\n\nExit code: 1\n" Diff: --- Expected +++ Actual @@ -2 +2,3 @@ +Exit code: 1 + Test: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=synced_database_table.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 Messages: bundle/invariant/no_drift/output.txt vs /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/TestAcceptbundleinvariantno_driftDATABRICKS_BUNDLE_ENGINE=di2316367154/001/output.txt acceptance_test.go:942: LOG.cleanup: Cleaning up temporary source table acceptance_test.go:942: LOG.config: bundle: LOG.config: name: test-bundle-jzps6h2p7fd6vjrmc33u7zx5pi LOG.config: LOG.config: resources: LOG.config: database_instances: LOG.config: instance1: LOG.config: name: test-db-instance-jzps6h2p7fd6vjrmc33u7zx5pi LOG.config: capacity: CU_1 LOG.config: LOG.config: database_catalogs: LOG.config: catalog1: LOG.config: database_instance_name: ${resources.database_instances.instance1.name} LOG.config: database_name: test_db LOG.config: name: test-catalog-jzps6h2p7fd6vjrmc33u7zx5pi LOG.config: create_database_if_not_exists: true LOG.config: LOG.config: synced_database_tables: LOG.config: foo: LOG.config: name: ${resources.database_catalogs.catalog1.name}.${resources.database_catalogs.catalog1.database_name}.test_table LOG.config: database_instance_name: ${resources.database_instances.instance1.name} LOG.config: logical_database_name: ${resources.database_catalogs.catalog1.database_name} LOG.config: spec: LOG.config: # Use a unique source table per test run to avoid hitting the 20-table-per-source limit LOG.config: source_table_full_name: main.test_synced_jzps6h2p7fd6vjrmc33u7zx5pi.trips_source LOG.config: scheduling_policy: SNAPSHOT LOG.config: primary_key_columns: LOG.config: - tpep_pickup_datetime acceptance_test.go:942: LOG.cp: acceptance_test.go:942: LOG.deploy: LOG.deploy: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle deploy --plan plan.json LOG.deploy: Uploading bundle files to /Workspace/Users/tester@databricks.com/.bundle/test-bundle-jzps6h2p7fd6vjrmc33u7zx5pi/default/files... LOG.deploy: Deploying resources... LOG.deploy: Updating deployment state... LOG.deploy: Deployment complete! acceptance_test.go:942: LOG.destroy: LOG.destroy: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle destroy --auto-approve LOG.destroy: The following resources will be deleted: LOG.destroy: delete resources.database_catalogs.catalog1 LOG.destroy: delete resources.database_instances.instance1 LOG.destroy: delete resources.synced_database_tables.foo LOG.destroy: LOG.destroy: This action will result in the deletion of the following Lakebase database instances. LOG.destroy: All data stored in them will be permanently lost: LOG.destroy: delete resources.database_instances.instance1 LOG.destroy: LOG.destroy: This action will result in the deletion of the following synced database tables. LOG.destroy: The synced data in the destination database will be lost (the source table is preserved): LOG.destroy: delete resources.synced_database_tables.foo LOG.destroy: LOG.destroy: All files and directories at the following location will be deleted: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-jzps6h2p7fd6vjrmc33u7zx5pi/default LOG.destroy: LOG.destroy: Deleting files... LOG.destroy: Destroy complete! acceptance_test.go:942: LOG.init: Creating temporary source table: main.test_synced_jzps6h2p7fd6vjrmc33u7zx5pi.trips_source LOG.init: { LOG.init: "full_name": "main.test_synced_jzps6h2p7fd6vjrmc33u7zx5pi" LOG.init: } acceptance_test.go:942: LOG.planjson: acceptance_test.go:942: LOG.validate: LOG.validate: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle validate LOG.validate: Name: test-bundle-jzps6h2p7fd6vjrmc33u7zx5pi LOG.validate: Target: default LOG.validate: Workspace: LOG.validate: User: tester@databricks.com LOG.validate: Path: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-jzps6h2p7fd6vjrmc33u7zx5pi/default LOG.validate: LOG.validate: Validation OK! --- FAIL: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=synced_database_table.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 (0.40s) ``` **latest (v1.6.0):** ``` === RUN TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=synced_database_table.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 === PAUSE TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=synced_database_table.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 === CONT TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=synced_database_table.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 acceptance_test.go:1083: Error Trace: /Users/denis.bilenko/work/cli-trees/local-only/libs/testdiff/testdiff.go:22 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:1083 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:915 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:515 Error: Not equal: expected: "INPUT_CONFIG_OK\n" actual : "INPUT_CONFIG_OK\n\nExit code: 1\n" Diff: --- Expected +++ Actual @@ -2 +2,3 @@ +Exit code: 1 + Test: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=synced_database_table.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 Messages: bundle/invariant/no_drift/output.txt vs /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/TestAcceptbundleinvariantno_driftDATABRICKS_BUNDLE_ENGINE=di4110418370/001/output.txt acceptance_test.go:942: LOG.cleanup: Cleaning up temporary source table acceptance_test.go:942: LOG.config: bundle: LOG.config: name: test-bundle-udr3oxpkhzc3jcyorbty4r5yvm LOG.config: LOG.config: resources: LOG.config: database_instances: LOG.config: instance1: LOG.config: name: test-db-instance-udr3oxpkhzc3jcyorbty4r5yvm LOG.config: capacity: CU_1 LOG.config: LOG.config: database_catalogs: LOG.config: catalog1: LOG.config: database_instance_name: ${resources.database_instances.instance1.name} LOG.config: database_name: test_db LOG.config: name: test-catalog-udr3oxpkhzc3jcyorbty4r5yvm LOG.config: create_database_if_not_exists: true LOG.config: LOG.config: synced_database_tables: LOG.config: foo: LOG.config: name: ${resources.database_catalogs.catalog1.name}.${resources.database_catalogs.catalog1.database_name}.test_table LOG.config: database_instance_name: ${resources.database_instances.instance1.name} LOG.config: logical_database_name: ${resources.database_catalogs.catalog1.database_name} LOG.config: spec: LOG.config: # Use a unique source table per test run to avoid hitting the 20-table-per-source limit LOG.config: source_table_full_name: main.test_synced_udr3oxpkhzc3jcyorbty4r5yvm.trips_source LOG.config: scheduling_policy: SNAPSHOT LOG.config: primary_key_columns: LOG.config: - tpep_pickup_datetime acceptance_test.go:942: LOG.cp: acceptance_test.go:942: LOG.deploy: LOG.deploy: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle deploy --plan plan.json LOG.deploy: Uploading bundle files to /Workspace/Users/tester@databricks.com/.bundle/test-bundle-udr3oxpkhzc3jcyorbty4r5yvm/default/files... LOG.deploy: Deploying resources... LOG.deploy: Updating deployment state... LOG.deploy: Deployment complete! acceptance_test.go:942: LOG.destroy: LOG.destroy: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle destroy --auto-approve LOG.destroy: The following resources will be deleted: LOG.destroy: delete resources.database_catalogs.catalog1 LOG.destroy: delete resources.database_instances.instance1 LOG.destroy: delete resources.synced_database_tables.foo LOG.destroy: LOG.destroy: This action will result in the deletion of the following Lakebase database instances. LOG.destroy: All data stored in them will be permanently lost: LOG.destroy: delete resources.database_instances.instance1 LOG.destroy: LOG.destroy: This action will result in the deletion of the following synced database tables. LOG.destroy: The synced data in the destination database will be lost (the source table is preserved): LOG.destroy: delete resources.synced_database_tables.foo LOG.destroy: LOG.destroy: All files and directories at the following location will be deleted: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-udr3oxpkhzc3jcyorbty4r5yvm/default LOG.destroy: LOG.destroy: Deleting files... LOG.destroy: Destroy complete! acceptance_test.go:942: LOG.init: Creating temporary source table: main.test_synced_udr3oxpkhzc3jcyorbty4r5yvm.trips_source LOG.init: { LOG.init: "full_name": "main.test_synced_udr3oxpkhzc3jcyorbty4r5yvm" LOG.init: } acceptance_test.go:942: LOG.planjson: acceptance_test.go:942: LOG.validate: LOG.validate: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle validate LOG.validate: Name: test-bundle-udr3oxpkhzc3jcyorbty4r5yvm LOG.validate: Target: default LOG.validate: Workspace: LOG.validate: User: tester@databricks.com LOG.validate: Path: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-udr3oxpkhzc3jcyorbty4r5yvm/default LOG.validate: LOG.validate: Validation OK! --- FAIL: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=synced_database_table.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 (0.42s) ```
TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=vector_search_endpoint.yml.tmpl/LOCAL_DIFF=--local/READPLAN= ✅ | main (de465e09b) ❌ | latest (v1.6.0) ❌ **main (de465e09b):** ``` === RUN TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=vector_search_endpoint.yml.tmpl/LOCAL_DIFF=--local/READPLAN= === PAUSE TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=vector_search_endpoint.yml.tmpl/LOCAL_DIFF=--local/READPLAN= === CONT TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=vector_search_endpoint.yml.tmpl/LOCAL_DIFF=--local/READPLAN= acceptance_test.go:1083: Error Trace: /Users/denis.bilenko/work/cli-trees/local-only/libs/testdiff/testdiff.go:22 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:1083 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:915 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:515 Error: Not equal: expected: "INPUT_CONFIG_OK\n" actual : "INPUT_CONFIG_OK\n\nExit code: 1\n" Diff: --- Expected +++ Actual @@ -2 +2,3 @@ +Exit code: 1 + Test: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=vector_search_endpoint.yml.tmpl/LOCAL_DIFF=--local/READPLAN= Messages: bundle/invariant/no_drift/output.txt vs /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/TestAcceptbundleinvariantno_driftDATABRICKS_BUNDLE_ENGINE=di2559601838/001/output.txt acceptance_test.go:942: LOG.config: bundle: LOG.config: name: test-bundle-3vc3c4qahfdejfq4ztkdevatge LOG.config: LOG.config: resources: LOG.config: vector_search_endpoints: LOG.config: foo: LOG.config: name: test-endpoint-3vc3c4qahfdejfq4ztkdevatge LOG.config: endpoint_type: STANDARD LOG.config: bar: LOG.config: # Endpoint names must be < 50 chars, so keep this prefix short. LOG.config: name: test-vse-perm-3vc3c4qahfdejfq4ztkdevatge LOG.config: endpoint_type: STANDARD LOG.config: permissions: LOG.config: - level: CAN_USE LOG.config: group_name: users acceptance_test.go:942: LOG.cp: acceptance_test.go:942: LOG.deploy: LOG.deploy: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle deploy LOG.deploy: Uploading bundle files to /Workspace/Users/tester@databricks.com/.bundle/test-bundle-3vc3c4qahfdejfq4ztkdevatge/default/files... LOG.deploy: Deploying resources... LOG.deploy: Updating deployment state... LOG.deploy: Deployment complete! acceptance_test.go:942: LOG.destroy: LOG.destroy: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle destroy --auto-approve LOG.destroy: The following resources will be deleted: LOG.destroy: delete resources.vector_search_endpoints.bar LOG.destroy: delete resources.vector_search_endpoints.foo LOG.destroy: LOG.destroy: All files and directories at the following location will be deleted: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-3vc3c4qahfdejfq4ztkdevatge/default LOG.destroy: LOG.destroy: Deleting files... LOG.destroy: Destroy complete! acceptance_test.go:942: LOG.planjson: acceptance_test.go:942: LOG.validate: LOG.validate: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle validate LOG.validate: Name: test-bundle-3vc3c4qahfdejfq4ztkdevatge LOG.validate: Target: default LOG.validate: Workspace: LOG.validate: User: tester@databricks.com LOG.validate: Path: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-3vc3c4qahfdejfq4ztkdevatge/default LOG.validate: LOG.validate: Validation OK! --- FAIL: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=vector_search_endpoint.yml.tmpl/LOCAL_DIFF=--local/READPLAN= (0.32s) ``` **latest (v1.6.0):** ``` === RUN TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=vector_search_endpoint.yml.tmpl/LOCAL_DIFF=--local/READPLAN= === PAUSE TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=vector_search_endpoint.yml.tmpl/LOCAL_DIFF=--local/READPLAN= === CONT TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=vector_search_endpoint.yml.tmpl/LOCAL_DIFF=--local/READPLAN= acceptance_test.go:1083: Error Trace: /Users/denis.bilenko/work/cli-trees/local-only/libs/testdiff/testdiff.go:22 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:1083 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:915 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:515 Error: Not equal: expected: "INPUT_CONFIG_OK\n" actual : "INPUT_CONFIG_OK\n\nExit code: 1\n" Diff: --- Expected +++ Actual @@ -2 +2,3 @@ +Exit code: 1 + Test: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=vector_search_endpoint.yml.tmpl/LOCAL_DIFF=--local/READPLAN= Messages: bundle/invariant/no_drift/output.txt vs /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/TestAcceptbundleinvariantno_driftDATABRICKS_BUNDLE_ENGINE=di3136348119/001/output.txt acceptance_test.go:942: LOG.config: bundle: LOG.config: name: test-bundle-stt2hk3ujnd6pniqihphiis764 LOG.config: LOG.config: resources: LOG.config: vector_search_endpoints: LOG.config: foo: LOG.config: name: test-endpoint-stt2hk3ujnd6pniqihphiis764 LOG.config: endpoint_type: STANDARD LOG.config: bar: LOG.config: # Endpoint names must be < 50 chars, so keep this prefix short. LOG.config: name: test-vse-perm-stt2hk3ujnd6pniqihphiis764 LOG.config: endpoint_type: STANDARD LOG.config: permissions: LOG.config: - level: CAN_USE LOG.config: group_name: users acceptance_test.go:942: LOG.cp: acceptance_test.go:942: LOG.deploy: LOG.deploy: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle deploy LOG.deploy: Uploading bundle files to /Workspace/Users/tester@databricks.com/.bundle/test-bundle-stt2hk3ujnd6pniqihphiis764/default/files... LOG.deploy: Deploying resources... LOG.deploy: Updating deployment state... LOG.deploy: Deployment complete! acceptance_test.go:942: LOG.destroy: LOG.destroy: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle destroy --auto-approve LOG.destroy: The following resources will be deleted: LOG.destroy: delete resources.vector_search_endpoints.bar LOG.destroy: delete resources.vector_search_endpoints.foo LOG.destroy: LOG.destroy: All files and directories at the following location will be deleted: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-stt2hk3ujnd6pniqihphiis764/default LOG.destroy: LOG.destroy: Deleting files... LOG.destroy: Destroy complete! acceptance_test.go:942: LOG.planjson: acceptance_test.go:942: LOG.validate: LOG.validate: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle validate LOG.validate: Name: test-bundle-stt2hk3ujnd6pniqihphiis764 LOG.validate: Target: default LOG.validate: Workspace: LOG.validate: User: tester@databricks.com LOG.validate: Path: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-stt2hk3ujnd6pniqihphiis764/default LOG.validate: LOG.validate: Validation OK! --- FAIL: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=vector_search_endpoint.yml.tmpl/LOCAL_DIFF=--local/READPLAN= (0.31s) ```
TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=vector_search_endpoint.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 ✅ | main (de465e09b) ❌ | latest (v1.6.0) ❌ **main (de465e09b):** ``` === RUN TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=vector_search_endpoint.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 === PAUSE TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=vector_search_endpoint.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 === CONT TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=vector_search_endpoint.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 acceptance_test.go:1083: Error Trace: /Users/denis.bilenko/work/cli-trees/local-only/libs/testdiff/testdiff.go:22 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:1083 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:915 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:515 Error: Not equal: expected: "INPUT_CONFIG_OK\n" actual : "INPUT_CONFIG_OK\n\nExit code: 1\n" Diff: --- Expected +++ Actual @@ -2 +2,3 @@ +Exit code: 1 + Test: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=vector_search_endpoint.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 Messages: bundle/invariant/no_drift/output.txt vs /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/TestAcceptbundleinvariantno_driftDATABRICKS_BUNDLE_ENGINE=di201429269/001/output.txt acceptance_test.go:942: LOG.config: bundle: LOG.config: name: test-bundle-nihq43c2nfdepcvrwlry6uqj7a LOG.config: LOG.config: resources: LOG.config: vector_search_endpoints: LOG.config: foo: LOG.config: name: test-endpoint-nihq43c2nfdepcvrwlry6uqj7a LOG.config: endpoint_type: STANDARD LOG.config: bar: LOG.config: # Endpoint names must be < 50 chars, so keep this prefix short. LOG.config: name: test-vse-perm-nihq43c2nfdepcvrwlry6uqj7a LOG.config: endpoint_type: STANDARD LOG.config: permissions: LOG.config: - level: CAN_USE LOG.config: group_name: users acceptance_test.go:942: LOG.cp: acceptance_test.go:942: LOG.deploy: LOG.deploy: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle deploy --plan plan.json LOG.deploy: Uploading bundle files to /Workspace/Users/tester@databricks.com/.bundle/test-bundle-nihq43c2nfdepcvrwlry6uqj7a/default/files... LOG.deploy: Deploying resources... LOG.deploy: Updating deployment state... LOG.deploy: Deployment complete! acceptance_test.go:942: LOG.destroy: LOG.destroy: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle destroy --auto-approve LOG.destroy: The following resources will be deleted: LOG.destroy: delete resources.vector_search_endpoints.bar LOG.destroy: delete resources.vector_search_endpoints.foo LOG.destroy: LOG.destroy: All files and directories at the following location will be deleted: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-nihq43c2nfdepcvrwlry6uqj7a/default LOG.destroy: LOG.destroy: Deleting files... LOG.destroy: Destroy complete! acceptance_test.go:942: LOG.planjson: acceptance_test.go:942: LOG.validate: LOG.validate: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle validate LOG.validate: Name: test-bundle-nihq43c2nfdepcvrwlry6uqj7a LOG.validate: Target: default LOG.validate: Workspace: LOG.validate: User: tester@databricks.com LOG.validate: Path: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-nihq43c2nfdepcvrwlry6uqj7a/default LOG.validate: LOG.validate: Validation OK! --- FAIL: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=vector_search_endpoint.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 (0.31s) ``` **latest (v1.6.0):** ``` === RUN TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=vector_search_endpoint.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 === PAUSE TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=vector_search_endpoint.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 === CONT TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=vector_search_endpoint.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 acceptance_test.go:1083: Error Trace: /Users/denis.bilenko/work/cli-trees/local-only/libs/testdiff/testdiff.go:22 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:1083 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:915 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:515 Error: Not equal: expected: "INPUT_CONFIG_OK\n" actual : "INPUT_CONFIG_OK\n\nExit code: 1\n" Diff: --- Expected +++ Actual @@ -2 +2,3 @@ +Exit code: 1 + Test: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=vector_search_endpoint.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 Messages: bundle/invariant/no_drift/output.txt vs /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/TestAcceptbundleinvariantno_driftDATABRICKS_BUNDLE_ENGINE=di1411791044/001/output.txt acceptance_test.go:942: LOG.config: bundle: LOG.config: name: test-bundle-bfgakv42ynhutolewxt3egnhtu LOG.config: LOG.config: resources: LOG.config: vector_search_endpoints: LOG.config: foo: LOG.config: name: test-endpoint-bfgakv42ynhutolewxt3egnhtu LOG.config: endpoint_type: STANDARD LOG.config: bar: LOG.config: # Endpoint names must be < 50 chars, so keep this prefix short. LOG.config: name: test-vse-perm-bfgakv42ynhutolewxt3egnhtu LOG.config: endpoint_type: STANDARD LOG.config: permissions: LOG.config: - level: CAN_USE LOG.config: group_name: users acceptance_test.go:942: LOG.cp: acceptance_test.go:942: LOG.deploy: LOG.deploy: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle deploy --plan plan.json LOG.deploy: Uploading bundle files to /Workspace/Users/tester@databricks.com/.bundle/test-bundle-bfgakv42ynhutolewxt3egnhtu/default/files... LOG.deploy: Deploying resources... LOG.deploy: Updating deployment state... LOG.deploy: Deployment complete! acceptance_test.go:942: LOG.destroy: LOG.destroy: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle destroy --auto-approve LOG.destroy: The following resources will be deleted: LOG.destroy: delete resources.vector_search_endpoints.bar LOG.destroy: delete resources.vector_search_endpoints.foo LOG.destroy: LOG.destroy: All files and directories at the following location will be deleted: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-bfgakv42ynhutolewxt3egnhtu/default LOG.destroy: LOG.destroy: Deleting files... LOG.destroy: Destroy complete! acceptance_test.go:942: LOG.planjson: acceptance_test.go:942: LOG.validate: LOG.validate: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle validate LOG.validate: Name: test-bundle-bfgakv42ynhutolewxt3egnhtu LOG.validate: Target: default LOG.validate: Workspace: LOG.validate: User: tester@databricks.com LOG.validate: Path: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-bfgakv42ynhutolewxt3egnhtu/default LOG.validate: LOG.validate: Validation OK! --- FAIL: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=vector_search_endpoint.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 (0.30s) ```
TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=volume.yml.tmpl/LOCAL_DIFF=--local/READPLAN= ✅ | main (de465e09b) ❌ | latest (v1.6.0) ❌ **main (de465e09b):** ``` === RUN TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=volume.yml.tmpl/LOCAL_DIFF=--local/READPLAN= === PAUSE TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=volume.yml.tmpl/LOCAL_DIFF=--local/READPLAN= === CONT TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=volume.yml.tmpl/LOCAL_DIFF=--local/READPLAN= acceptance_test.go:1083: Error Trace: /Users/denis.bilenko/work/cli-trees/local-only/libs/testdiff/testdiff.go:22 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:1083 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:915 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:515 Error: Not equal: expected: "INPUT_CONFIG_OK\n" actual : "INPUT_CONFIG_OK\n\nExit code: 1\n" Diff: --- Expected +++ Actual @@ -2 +2,3 @@ +Exit code: 1 + Test: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=volume.yml.tmpl/LOCAL_DIFF=--local/READPLAN= Messages: bundle/invariant/no_drift/output.txt vs /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/TestAcceptbundleinvariantno_driftDATABRICKS_BUNDLE_ENGINE=di368094009/001/output.txt acceptance_test.go:942: LOG.config: bundle: LOG.config: name: test-bundle-i4go22jmzrgcvpugsavfxyfxdm LOG.config: LOG.config: resources: LOG.config: volumes: LOG.config: foo: LOG.config: name: test-volume-i4go22jmzrgcvpugsavfxyfxdm LOG.config: catalog_name: main LOG.config: schema_name: default LOG.config: grants: LOG.config: - principal: account users LOG.config: privileges: LOG.config: - READ_VOLUME acceptance_test.go:942: LOG.cp: acceptance_test.go:942: LOG.deploy: LOG.deploy: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle deploy LOG.deploy: Uploading bundle files to /Workspace/Users/tester@databricks.com/.bundle/test-bundle-i4go22jmzrgcvpugsavfxyfxdm/default/files... LOG.deploy: Deploying resources... LOG.deploy: Updating deployment state... LOG.deploy: Deployment complete! acceptance_test.go:942: LOG.destroy: LOG.destroy: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle destroy --auto-approve LOG.destroy: The following resources will be deleted: LOG.destroy: delete resources.volumes.foo LOG.destroy: LOG.destroy: This action will result in the deletion of the following volumes. LOG.destroy: For managed volumes, the files stored in the volume are also deleted from your LOG.destroy: cloud tenant within 30 days. For external volumes, the metadata about the volume LOG.destroy: is removed from the catalog, but the underlying files are not deleted: LOG.destroy: delete resources.volumes.foo LOG.destroy: LOG.destroy: All files and directories at the following location will be deleted: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-i4go22jmzrgcvpugsavfxyfxdm/default LOG.destroy: LOG.destroy: Deleting files... LOG.destroy: Destroy complete! acceptance_test.go:942: LOG.planjson: acceptance_test.go:942: LOG.validate: LOG.validate: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle validate LOG.validate: Name: test-bundle-i4go22jmzrgcvpugsavfxyfxdm LOG.validate: Target: default LOG.validate: Workspace: LOG.validate: User: tester@databricks.com LOG.validate: Path: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-i4go22jmzrgcvpugsavfxyfxdm/default LOG.validate: LOG.validate: Validation OK! --- FAIL: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=volume.yml.tmpl/LOCAL_DIFF=--local/READPLAN= (0.32s) ``` **latest (v1.6.0):** ``` === RUN TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=volume.yml.tmpl/LOCAL_DIFF=--local/READPLAN= === PAUSE TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=volume.yml.tmpl/LOCAL_DIFF=--local/READPLAN= === CONT TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=volume.yml.tmpl/LOCAL_DIFF=--local/READPLAN= acceptance_test.go:1083: Error Trace: /Users/denis.bilenko/work/cli-trees/local-only/libs/testdiff/testdiff.go:22 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:1083 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:915 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:515 Error: Not equal: expected: "INPUT_CONFIG_OK\n" actual : "INPUT_CONFIG_OK\n\nExit code: 1\n" Diff: --- Expected +++ Actual @@ -2 +2,3 @@ +Exit code: 1 + Test: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=volume.yml.tmpl/LOCAL_DIFF=--local/READPLAN= Messages: bundle/invariant/no_drift/output.txt vs /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/TestAcceptbundleinvariantno_driftDATABRICKS_BUNDLE_ENGINE=di3793065040/001/output.txt acceptance_test.go:942: LOG.config: bundle: LOG.config: name: test-bundle-i56frwtravfl3ifta4ryn74q3q LOG.config: LOG.config: resources: LOG.config: volumes: LOG.config: foo: LOG.config: name: test-volume-i56frwtravfl3ifta4ryn74q3q LOG.config: catalog_name: main LOG.config: schema_name: default LOG.config: grants: LOG.config: - principal: account users LOG.config: privileges: LOG.config: - READ_VOLUME acceptance_test.go:942: LOG.cp: acceptance_test.go:942: LOG.deploy: LOG.deploy: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle deploy LOG.deploy: Uploading bundle files to /Workspace/Users/tester@databricks.com/.bundle/test-bundle-i56frwtravfl3ifta4ryn74q3q/default/files... LOG.deploy: Deploying resources... LOG.deploy: Updating deployment state... LOG.deploy: Deployment complete! acceptance_test.go:942: LOG.destroy: LOG.destroy: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle destroy --auto-approve LOG.destroy: The following resources will be deleted: LOG.destroy: delete resources.volumes.foo LOG.destroy: LOG.destroy: This action will result in the deletion of the following volumes. LOG.destroy: For managed volumes, the files stored in the volume are also deleted from your LOG.destroy: cloud tenant within 30 days. For external volumes, the metadata about the volume LOG.destroy: is removed from the catalog, but the underlying files are not deleted: LOG.destroy: delete resources.volumes.foo LOG.destroy: LOG.destroy: All files and directories at the following location will be deleted: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-i56frwtravfl3ifta4ryn74q3q/default LOG.destroy: LOG.destroy: Deleting files... LOG.destroy: Destroy complete! acceptance_test.go:942: LOG.planjson: acceptance_test.go:942: LOG.validate: LOG.validate: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle validate LOG.validate: Name: test-bundle-i56frwtravfl3ifta4ryn74q3q LOG.validate: Target: default LOG.validate: Workspace: LOG.validate: User: tester@databricks.com LOG.validate: Path: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-i56frwtravfl3ifta4ryn74q3q/default LOG.validate: LOG.validate: Validation OK! --- FAIL: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=volume.yml.tmpl/LOCAL_DIFF=--local/READPLAN= (0.31s) ```
TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=volume.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 ✅ | main (de465e09b) ❌ | latest (v1.6.0) ❌ **main (de465e09b):** ``` === RUN TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=volume.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 === PAUSE TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=volume.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 === CONT TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=volume.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 acceptance_test.go:1083: Error Trace: /Users/denis.bilenko/work/cli-trees/local-only/libs/testdiff/testdiff.go:22 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:1083 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:915 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:515 Error: Not equal: expected: "INPUT_CONFIG_OK\n" actual : "INPUT_CONFIG_OK\n\nExit code: 1\n" Diff: --- Expected +++ Actual @@ -2 +2,3 @@ +Exit code: 1 + Test: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=volume.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 Messages: bundle/invariant/no_drift/output.txt vs /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/TestAcceptbundleinvariantno_driftDATABRICKS_BUNDLE_ENGINE=di3187340849/001/output.txt acceptance_test.go:942: LOG.config: bundle: LOG.config: name: test-bundle-7o2fcjv5yrfadlkwmdfxt5mw4a LOG.config: LOG.config: resources: LOG.config: volumes: LOG.config: foo: LOG.config: name: test-volume-7o2fcjv5yrfadlkwmdfxt5mw4a LOG.config: catalog_name: main LOG.config: schema_name: default LOG.config: grants: LOG.config: - principal: account users LOG.config: privileges: LOG.config: - READ_VOLUME acceptance_test.go:942: LOG.cp: acceptance_test.go:942: LOG.deploy: LOG.deploy: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle deploy --plan plan.json LOG.deploy: Uploading bundle files to /Workspace/Users/tester@databricks.com/.bundle/test-bundle-7o2fcjv5yrfadlkwmdfxt5mw4a/default/files... LOG.deploy: Deploying resources... LOG.deploy: Updating deployment state... LOG.deploy: Deployment complete! acceptance_test.go:942: LOG.destroy: LOG.destroy: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle destroy --auto-approve LOG.destroy: The following resources will be deleted: LOG.destroy: delete resources.volumes.foo LOG.destroy: LOG.destroy: This action will result in the deletion of the following volumes. LOG.destroy: For managed volumes, the files stored in the volume are also deleted from your LOG.destroy: cloud tenant within 30 days. For external volumes, the metadata about the volume LOG.destroy: is removed from the catalog, but the underlying files are not deleted: LOG.destroy: delete resources.volumes.foo LOG.destroy: LOG.destroy: All files and directories at the following location will be deleted: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-7o2fcjv5yrfadlkwmdfxt5mw4a/default LOG.destroy: LOG.destroy: Deleting files... LOG.destroy: Destroy complete! acceptance_test.go:942: LOG.planjson: acceptance_test.go:942: LOG.validate: LOG.validate: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle validate LOG.validate: Name: test-bundle-7o2fcjv5yrfadlkwmdfxt5mw4a LOG.validate: Target: default LOG.validate: Workspace: LOG.validate: User: tester@databricks.com LOG.validate: Path: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-7o2fcjv5yrfadlkwmdfxt5mw4a/default LOG.validate: LOG.validate: Validation OK! --- FAIL: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=volume.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 (0.28s) ``` **latest (v1.6.0):** ``` === RUN TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=volume.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 === PAUSE TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=volume.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 === CONT TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=volume.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 acceptance_test.go:1083: Error Trace: /Users/denis.bilenko/work/cli-trees/local-only/libs/testdiff/testdiff.go:22 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:1083 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:915 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:515 Error: Not equal: expected: "INPUT_CONFIG_OK\n" actual : "INPUT_CONFIG_OK\n\nExit code: 1\n" Diff: --- Expected +++ Actual @@ -2 +2,3 @@ +Exit code: 1 + Test: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=volume.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 Messages: bundle/invariant/no_drift/output.txt vs /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/TestAcceptbundleinvariantno_driftDATABRICKS_BUNDLE_ENGINE=di2154875649/001/output.txt acceptance_test.go:942: LOG.config: bundle: LOG.config: name: test-bundle-xntsqruaqbfgvp434fd7tabkmy LOG.config: LOG.config: resources: LOG.config: volumes: LOG.config: foo: LOG.config: name: test-volume-xntsqruaqbfgvp434fd7tabkmy LOG.config: catalog_name: main LOG.config: schema_name: default LOG.config: grants: LOG.config: - principal: account users LOG.config: privileges: LOG.config: - READ_VOLUME acceptance_test.go:942: LOG.cp: acceptance_test.go:942: LOG.deploy: LOG.deploy: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle deploy --plan plan.json LOG.deploy: Uploading bundle files to /Workspace/Users/tester@databricks.com/.bundle/test-bundle-xntsqruaqbfgvp434fd7tabkmy/default/files... LOG.deploy: Deploying resources... LOG.deploy: Updating deployment state... LOG.deploy: Deployment complete! acceptance_test.go:942: LOG.destroy: LOG.destroy: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle destroy --auto-approve LOG.destroy: The following resources will be deleted: LOG.destroy: delete resources.volumes.foo LOG.destroy: LOG.destroy: This action will result in the deletion of the following volumes. LOG.destroy: For managed volumes, the files stored in the volume are also deleted from your LOG.destroy: cloud tenant within 30 days. For external volumes, the metadata about the volume LOG.destroy: is removed from the catalog, but the underlying files are not deleted: LOG.destroy: delete resources.volumes.foo LOG.destroy: LOG.destroy: All files and directories at the following location will be deleted: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-xntsqruaqbfgvp434fd7tabkmy/default LOG.destroy: LOG.destroy: Deleting files... LOG.destroy: Destroy complete! acceptance_test.go:942: LOG.planjson: acceptance_test.go:942: LOG.validate: LOG.validate: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle validate LOG.validate: Name: test-bundle-xntsqruaqbfgvp434fd7tabkmy LOG.validate: Target: default LOG.validate: Workspace: LOG.validate: User: tester@databricks.com LOG.validate: Path: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-xntsqruaqbfgvp434fd7tabkmy/default LOG.validate: LOG.validate: Validation OK! --- FAIL: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=volume.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 (0.31s) ```
TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=volume_external.yml.tmpl/LOCAL_DIFF=--local/READPLAN= ✅ | main (de465e09b) ❌ | latest (v1.6.0) ❌ **main (de465e09b):** ``` === RUN TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=volume_external.yml.tmpl/LOCAL_DIFF=--local/READPLAN= === PAUSE TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=volume_external.yml.tmpl/LOCAL_DIFF=--local/READPLAN= === CONT TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=volume_external.yml.tmpl/LOCAL_DIFF=--local/READPLAN= acceptance_test.go:1083: Error Trace: /Users/denis.bilenko/work/cli-trees/local-only/libs/testdiff/testdiff.go:22 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:1083 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:915 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:515 Error: Not equal: expected: "INPUT_CONFIG_OK\n" actual : "INPUT_CONFIG_OK\n\nExit code: 1\n" Diff: --- Expected +++ Actual @@ -2 +2,3 @@ +Exit code: 1 + Test: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=volume_external.yml.tmpl/LOCAL_DIFF=--local/READPLAN= Messages: bundle/invariant/no_drift/output.txt vs /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/TestAcceptbundleinvariantno_driftDATABRICKS_BUNDLE_ENGINE=di2490188921/001/output.txt acceptance_test.go:942: LOG.config: bundle: LOG.config: name: test-bundle-kjzpntsmjfcj3hbxxelropfimq LOG.config: LOG.config: resources: LOG.config: volumes: LOG.config: foo: LOG.config: name: test-volume-kjzpntsmjfcj3hbxxelropfimq LOG.config: catalog_name: main LOG.config: schema_name: default LOG.config: volume_type: EXTERNAL LOG.config: storage_location: s3://test-bucket/path/ acceptance_test.go:942: LOG.cp: acceptance_test.go:942: LOG.deploy: LOG.deploy: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle deploy LOG.deploy: Uploading bundle files to /Workspace/Users/tester@databricks.com/.bundle/test-bundle-kjzpntsmjfcj3hbxxelropfimq/default/files... LOG.deploy: Deploying resources... LOG.deploy: Updating deployment state... LOG.deploy: Deployment complete! acceptance_test.go:942: LOG.destroy: LOG.destroy: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle destroy --auto-approve LOG.destroy: The following resources will be deleted: LOG.destroy: delete resources.volumes.foo LOG.destroy: LOG.destroy: This action will result in the deletion of the following volumes. LOG.destroy: For managed volumes, the files stored in the volume are also deleted from your LOG.destroy: cloud tenant within 30 days. For external volumes, the metadata about the volume LOG.destroy: is removed from the catalog, but the underlying files are not deleted: LOG.destroy: delete resources.volumes.foo LOG.destroy: LOG.destroy: All files and directories at the following location will be deleted: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-kjzpntsmjfcj3hbxxelropfimq/default LOG.destroy: LOG.destroy: Deleting files... LOG.destroy: Destroy complete! acceptance_test.go:942: LOG.planjson: acceptance_test.go:942: LOG.validate: LOG.validate: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle validate LOG.validate: Name: test-bundle-kjzpntsmjfcj3hbxxelropfimq LOG.validate: Target: default LOG.validate: Workspace: LOG.validate: User: tester@databricks.com LOG.validate: Path: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-kjzpntsmjfcj3hbxxelropfimq/default LOG.validate: LOG.validate: Validation OK! --- FAIL: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=volume_external.yml.tmpl/LOCAL_DIFF=--local/READPLAN= (0.31s) ``` **latest (v1.6.0):** ``` === RUN TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=volume_external.yml.tmpl/LOCAL_DIFF=--local/READPLAN= === PAUSE TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=volume_external.yml.tmpl/LOCAL_DIFF=--local/READPLAN= === CONT TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=volume_external.yml.tmpl/LOCAL_DIFF=--local/READPLAN= acceptance_test.go:1083: Error Trace: /Users/denis.bilenko/work/cli-trees/local-only/libs/testdiff/testdiff.go:22 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:1083 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:915 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:515 Error: Not equal: expected: "INPUT_CONFIG_OK\n" actual : "INPUT_CONFIG_OK\n\nExit code: 1\n" Diff: --- Expected +++ Actual @@ -2 +2,3 @@ +Exit code: 1 + Test: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=volume_external.yml.tmpl/LOCAL_DIFF=--local/READPLAN= Messages: bundle/invariant/no_drift/output.txt vs /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/TestAcceptbundleinvariantno_driftDATABRICKS_BUNDLE_ENGINE=di3790172549/001/output.txt acceptance_test.go:942: LOG.config: bundle: LOG.config: name: test-bundle-t3ci4fllirf67ksn26oviw5bc4 LOG.config: LOG.config: resources: LOG.config: volumes: LOG.config: foo: LOG.config: name: test-volume-t3ci4fllirf67ksn26oviw5bc4 LOG.config: catalog_name: main LOG.config: schema_name: default LOG.config: volume_type: EXTERNAL LOG.config: storage_location: s3://test-bucket/path/ acceptance_test.go:942: LOG.cp: acceptance_test.go:942: LOG.deploy: LOG.deploy: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle deploy LOG.deploy: Uploading bundle files to /Workspace/Users/tester@databricks.com/.bundle/test-bundle-t3ci4fllirf67ksn26oviw5bc4/default/files... LOG.deploy: Deploying resources... LOG.deploy: Updating deployment state... LOG.deploy: Deployment complete! acceptance_test.go:942: LOG.destroy: LOG.destroy: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle destroy --auto-approve LOG.destroy: The following resources will be deleted: LOG.destroy: delete resources.volumes.foo LOG.destroy: LOG.destroy: This action will result in the deletion of the following volumes. LOG.destroy: For managed volumes, the files stored in the volume are also deleted from your LOG.destroy: cloud tenant within 30 days. For external volumes, the metadata about the volume LOG.destroy: is removed from the catalog, but the underlying files are not deleted: LOG.destroy: delete resources.volumes.foo LOG.destroy: LOG.destroy: All files and directories at the following location will be deleted: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-t3ci4fllirf67ksn26oviw5bc4/default LOG.destroy: LOG.destroy: Deleting files... LOG.destroy: Destroy complete! acceptance_test.go:942: LOG.planjson: acceptance_test.go:942: LOG.validate: LOG.validate: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle validate LOG.validate: Name: test-bundle-t3ci4fllirf67ksn26oviw5bc4 LOG.validate: Target: default LOG.validate: Workspace: LOG.validate: User: tester@databricks.com LOG.validate: Path: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-t3ci4fllirf67ksn26oviw5bc4/default LOG.validate: LOG.validate: Validation OK! --- FAIL: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=volume_external.yml.tmpl/LOCAL_DIFF=--local/READPLAN= (0.31s) ```
TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=volume_external.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 ✅ | main (de465e09b) ❌ | latest (v1.6.0) ❌ **main (de465e09b):** ``` === RUN TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=volume_external.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 === PAUSE TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=volume_external.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 === CONT TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=volume_external.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 acceptance_test.go:1083: Error Trace: /Users/denis.bilenko/work/cli-trees/local-only/libs/testdiff/testdiff.go:22 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:1083 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:915 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:515 Error: Not equal: expected: "INPUT_CONFIG_OK\n" actual : "INPUT_CONFIG_OK\n\nExit code: 1\n" Diff: --- Expected +++ Actual @@ -2 +2,3 @@ +Exit code: 1 + Test: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=volume_external.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 Messages: bundle/invariant/no_drift/output.txt vs /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/TestAcceptbundleinvariantno_driftDATABRICKS_BUNDLE_ENGINE=di459142577/001/output.txt acceptance_test.go:942: LOG.config: bundle: LOG.config: name: test-bundle-r3rksz2dcvfy3ohwxkgpigo73q LOG.config: LOG.config: resources: LOG.config: volumes: LOG.config: foo: LOG.config: name: test-volume-r3rksz2dcvfy3ohwxkgpigo73q LOG.config: catalog_name: main LOG.config: schema_name: default LOG.config: volume_type: EXTERNAL LOG.config: storage_location: s3://test-bucket/path/ acceptance_test.go:942: LOG.cp: acceptance_test.go:942: LOG.deploy: LOG.deploy: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle deploy --plan plan.json LOG.deploy: Uploading bundle files to /Workspace/Users/tester@databricks.com/.bundle/test-bundle-r3rksz2dcvfy3ohwxkgpigo73q/default/files... LOG.deploy: Deploying resources... LOG.deploy: Updating deployment state... LOG.deploy: Deployment complete! acceptance_test.go:942: LOG.destroy: LOG.destroy: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle destroy --auto-approve LOG.destroy: The following resources will be deleted: LOG.destroy: delete resources.volumes.foo LOG.destroy: LOG.destroy: This action will result in the deletion of the following volumes. LOG.destroy: For managed volumes, the files stored in the volume are also deleted from your LOG.destroy: cloud tenant within 30 days. For external volumes, the metadata about the volume LOG.destroy: is removed from the catalog, but the underlying files are not deleted: LOG.destroy: delete resources.volumes.foo LOG.destroy: LOG.destroy: All files and directories at the following location will be deleted: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-r3rksz2dcvfy3ohwxkgpigo73q/default LOG.destroy: LOG.destroy: Deleting files... LOG.destroy: Destroy complete! acceptance_test.go:942: LOG.planjson: acceptance_test.go:942: LOG.validate: LOG.validate: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle validate LOG.validate: Name: test-bundle-r3rksz2dcvfy3ohwxkgpigo73q LOG.validate: Target: default LOG.validate: Workspace: LOG.validate: User: tester@databricks.com LOG.validate: Path: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-r3rksz2dcvfy3ohwxkgpigo73q/default LOG.validate: LOG.validate: Validation OK! --- FAIL: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=volume_external.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 (0.29s) ``` **latest (v1.6.0):** ``` === RUN TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=volume_external.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 === PAUSE TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=volume_external.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 === CONT TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=volume_external.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 acceptance_test.go:1083: Error Trace: /Users/denis.bilenko/work/cli-trees/local-only/libs/testdiff/testdiff.go:22 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:1083 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:915 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:515 Error: Not equal: expected: "INPUT_CONFIG_OK\n" actual : "INPUT_CONFIG_OK\n\nExit code: 1\n" Diff: --- Expected +++ Actual @@ -2 +2,3 @@ +Exit code: 1 + Test: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=volume_external.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 Messages: bundle/invariant/no_drift/output.txt vs /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/TestAcceptbundleinvariantno_driftDATABRICKS_BUNDLE_ENGINE=di937801497/001/output.txt acceptance_test.go:942: LOG.config: bundle: LOG.config: name: test-bundle-ynopplz5avgd3n5hie2niowjzi LOG.config: LOG.config: resources: LOG.config: volumes: LOG.config: foo: LOG.config: name: test-volume-ynopplz5avgd3n5hie2niowjzi LOG.config: catalog_name: main LOG.config: schema_name: default LOG.config: volume_type: EXTERNAL LOG.config: storage_location: s3://test-bucket/path/ acceptance_test.go:942: LOG.cp: acceptance_test.go:942: LOG.deploy: LOG.deploy: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle deploy --plan plan.json LOG.deploy: Uploading bundle files to /Workspace/Users/tester@databricks.com/.bundle/test-bundle-ynopplz5avgd3n5hie2niowjzi/default/files... LOG.deploy: Deploying resources... LOG.deploy: Updating deployment state... LOG.deploy: Deployment complete! acceptance_test.go:942: LOG.destroy: LOG.destroy: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle destroy --auto-approve LOG.destroy: The following resources will be deleted: LOG.destroy: delete resources.volumes.foo LOG.destroy: LOG.destroy: This action will result in the deletion of the following volumes. LOG.destroy: For managed volumes, the files stored in the volume are also deleted from your LOG.destroy: cloud tenant within 30 days. For external volumes, the metadata about the volume LOG.destroy: is removed from the catalog, but the underlying files are not deleted: LOG.destroy: delete resources.volumes.foo LOG.destroy: LOG.destroy: All files and directories at the following location will be deleted: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-ynopplz5avgd3n5hie2niowjzi/default LOG.destroy: LOG.destroy: Deleting files... LOG.destroy: Destroy complete! acceptance_test.go:942: LOG.planjson: acceptance_test.go:942: LOG.validate: LOG.validate: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle validate LOG.validate: Name: test-bundle-ynopplz5avgd3n5hie2niowjzi LOG.validate: Target: default LOG.validate: Workspace: LOG.validate: User: tester@databricks.com LOG.validate: Path: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-ynopplz5avgd3n5hie2niowjzi/default LOG.validate: LOG.validate: Validation OK! --- FAIL: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=volume_external.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 (0.30s) ```
TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=volume_uppercase_name.yml.tmpl/LOCAL_DIFF=--local/READPLAN= ✅ | main (de465e09b) ❌ | latest (v1.6.0) ❌ **main (de465e09b):** ``` === RUN TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=volume_uppercase_name.yml.tmpl/LOCAL_DIFF=--local/READPLAN= === PAUSE TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=volume_uppercase_name.yml.tmpl/LOCAL_DIFF=--local/READPLAN= === CONT TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=volume_uppercase_name.yml.tmpl/LOCAL_DIFF=--local/READPLAN= acceptance_test.go:1083: Error Trace: /Users/denis.bilenko/work/cli-trees/local-only/libs/testdiff/testdiff.go:22 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:1083 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:915 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:515 Error: Not equal: expected: "INPUT_CONFIG_OK\n" actual : "INPUT_CONFIG_OK\n\nExit code: 1\n" Diff: --- Expected +++ Actual @@ -2 +2,3 @@ +Exit code: 1 + Test: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=volume_uppercase_name.yml.tmpl/LOCAL_DIFF=--local/READPLAN= Messages: bundle/invariant/no_drift/output.txt vs /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/TestAcceptbundleinvariantno_driftDATABRICKS_BUNDLE_ENGINE=di1886020916/001/output.txt acceptance_test.go:942: LOG.config: bundle: LOG.config: name: test-bundle-y55gb4xryfg2pnyandfgftqqxu LOG.config: LOG.config: # Reproduce: the UC API lowercases identifier names, causing false drift on the LOG.config: # second deploy when the config uses mixed-case names. This covers a volume's LOG.config: # catalog_name, schema_name and name on the direct engine. LOG.config: # LOG.config: # Excluded from the migrate invariant: that test deploys via Terraform first, LOG.config: # and the TF provider rejects an uppercase volume schema_name ("inconsistent LOG.config: # final plan"). LOG.config: resources: LOG.config: schemas: LOG.config: foo: LOG.config: catalog_name: main LOG.config: name: MySCHEMA-y55gb4xryfg2pnyandfgftqqxu LOG.config: LOG.config: volumes: LOG.config: bar: LOG.config: catalog_name: main LOG.config: schema_name: ${resources.schemas.foo.name} LOG.config: name: MyVOL-y55gb4xryfg2pnyandfgftqqxu LOG.config: volume_type: MANAGED acceptance_test.go:942: LOG.cp: acceptance_test.go:942: LOG.deploy: LOG.deploy: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle deploy LOG.deploy: Uploading bundle files to /Workspace/Users/tester@databricks.com/.bundle/test-bundle-y55gb4xryfg2pnyandfgftqqxu/default/files... LOG.deploy: Deploying resources... LOG.deploy: Updating deployment state... LOG.deploy: Deployment complete! acceptance_test.go:942: LOG.destroy: LOG.destroy: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle destroy --auto-approve LOG.destroy: The following resources will be deleted: LOG.destroy: delete resources.schemas.foo LOG.destroy: delete resources.volumes.bar LOG.destroy: LOG.destroy: This action will result in the deletion of the following UC schemas. Any underlying data may be lost: LOG.destroy: delete resources.schemas.foo LOG.destroy: LOG.destroy: This action will result in the deletion of the following volumes. LOG.destroy: For managed volumes, the files stored in the volume are also deleted from your LOG.destroy: cloud tenant within 30 days. For external volumes, the metadata about the volume LOG.destroy: is removed from the catalog, but the underlying files are not deleted: LOG.destroy: delete resources.volumes.bar LOG.destroy: LOG.destroy: All files and directories at the following location will be deleted: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-y55gb4xryfg2pnyandfgftqqxu/default LOG.destroy: LOG.destroy: Deleting files... LOG.destroy: Destroy complete! acceptance_test.go:942: LOG.planjson: acceptance_test.go:942: LOG.validate: LOG.validate: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle validate LOG.validate: Name: test-bundle-y55gb4xryfg2pnyandfgftqqxu LOG.validate: Target: default LOG.validate: Workspace: LOG.validate: User: tester@databricks.com LOG.validate: Path: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-y55gb4xryfg2pnyandfgftqqxu/default LOG.validate: LOG.validate: Validation OK! --- FAIL: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=volume_uppercase_name.yml.tmpl/LOCAL_DIFF=--local/READPLAN= (0.30s) ``` **latest (v1.6.0):** ``` === RUN TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=volume_uppercase_name.yml.tmpl/LOCAL_DIFF=--local/READPLAN= === PAUSE TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=volume_uppercase_name.yml.tmpl/LOCAL_DIFF=--local/READPLAN= === CONT TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=volume_uppercase_name.yml.tmpl/LOCAL_DIFF=--local/READPLAN= acceptance_test.go:1083: Error Trace: /Users/denis.bilenko/work/cli-trees/local-only/libs/testdiff/testdiff.go:22 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:1083 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:915 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:515 Error: Not equal: expected: "INPUT_CONFIG_OK\n" actual : "INPUT_CONFIG_OK\n\nExit code: 1\n" Diff: --- Expected +++ Actual @@ -2 +2,3 @@ +Exit code: 1 + Test: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=volume_uppercase_name.yml.tmpl/LOCAL_DIFF=--local/READPLAN= Messages: bundle/invariant/no_drift/output.txt vs /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/TestAcceptbundleinvariantno_driftDATABRICKS_BUNDLE_ENGINE=di3230777906/001/output.txt acceptance_test.go:942: LOG.config: bundle: LOG.config: name: test-bundle-jimnbtvxubctfgov4jfn6an27q LOG.config: LOG.config: # Reproduce: the UC API lowercases identifier names, causing false drift on the LOG.config: # second deploy when the config uses mixed-case names. This covers a volume's LOG.config: # catalog_name, schema_name and name on the direct engine. LOG.config: # LOG.config: # Excluded from the migrate invariant: that test deploys via Terraform first, LOG.config: # and the TF provider rejects an uppercase volume schema_name ("inconsistent LOG.config: # final plan"). LOG.config: resources: LOG.config: schemas: LOG.config: foo: LOG.config: catalog_name: main LOG.config: name: MySCHEMA-jimnbtvxubctfgov4jfn6an27q LOG.config: LOG.config: volumes: LOG.config: bar: LOG.config: catalog_name: main LOG.config: schema_name: ${resources.schemas.foo.name} LOG.config: name: MyVOL-jimnbtvxubctfgov4jfn6an27q LOG.config: volume_type: MANAGED acceptance_test.go:942: LOG.cp: acceptance_test.go:942: LOG.deploy: LOG.deploy: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle deploy LOG.deploy: Uploading bundle files to /Workspace/Users/tester@databricks.com/.bundle/test-bundle-jimnbtvxubctfgov4jfn6an27q/default/files... LOG.deploy: Deploying resources... LOG.deploy: Updating deployment state... LOG.deploy: Deployment complete! acceptance_test.go:942: LOG.destroy: LOG.destroy: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle destroy --auto-approve LOG.destroy: The following resources will be deleted: LOG.destroy: delete resources.schemas.foo LOG.destroy: delete resources.volumes.bar LOG.destroy: LOG.destroy: This action will result in the deletion of the following UC schemas. Any underlying data may be lost: LOG.destroy: delete resources.schemas.foo LOG.destroy: LOG.destroy: This action will result in the deletion of the following volumes. LOG.destroy: For managed volumes, the files stored in the volume are also deleted from your LOG.destroy: cloud tenant within 30 days. For external volumes, the metadata about the volume LOG.destroy: is removed from the catalog, but the underlying files are not deleted: LOG.destroy: delete resources.volumes.bar LOG.destroy: LOG.destroy: All files and directories at the following location will be deleted: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-jimnbtvxubctfgov4jfn6an27q/default LOG.destroy: LOG.destroy: Deleting files... LOG.destroy: Destroy complete! acceptance_test.go:942: LOG.planjson: acceptance_test.go:942: LOG.validate: LOG.validate: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle validate LOG.validate: Name: test-bundle-jimnbtvxubctfgov4jfn6an27q LOG.validate: Target: default LOG.validate: Workspace: LOG.validate: User: tester@databricks.com LOG.validate: Path: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-jimnbtvxubctfgov4jfn6an27q/default LOG.validate: LOG.validate: Validation OK! --- FAIL: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=volume_uppercase_name.yml.tmpl/LOCAL_DIFF=--local/READPLAN= (0.31s) ```
TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=volume_uppercase_name.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 ✅ | main (de465e09b) ❌ | latest (v1.6.0) ❌ **main (de465e09b):** ``` === RUN TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=volume_uppercase_name.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 === PAUSE TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=volume_uppercase_name.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 === CONT TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=volume_uppercase_name.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 acceptance_test.go:1083: Error Trace: /Users/denis.bilenko/work/cli-trees/local-only/libs/testdiff/testdiff.go:22 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:1083 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:915 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:515 Error: Not equal: expected: "INPUT_CONFIG_OK\n" actual : "INPUT_CONFIG_OK\n\nExit code: 1\n" Diff: --- Expected +++ Actual @@ -2 +2,3 @@ +Exit code: 1 + Test: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=volume_uppercase_name.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 Messages: bundle/invariant/no_drift/output.txt vs /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/TestAcceptbundleinvariantno_driftDATABRICKS_BUNDLE_ENGINE=di2200537538/001/output.txt acceptance_test.go:942: LOG.config: bundle: LOG.config: name: test-bundle-wjxixhll5na2tfh4lzr4fltpgi LOG.config: LOG.config: # Reproduce: the UC API lowercases identifier names, causing false drift on the LOG.config: # second deploy when the config uses mixed-case names. This covers a volume's LOG.config: # catalog_name, schema_name and name on the direct engine. LOG.config: # LOG.config: # Excluded from the migrate invariant: that test deploys via Terraform first, LOG.config: # and the TF provider rejects an uppercase volume schema_name ("inconsistent LOG.config: # final plan"). LOG.config: resources: LOG.config: schemas: LOG.config: foo: LOG.config: catalog_name: main LOG.config: name: MySCHEMA-wjxixhll5na2tfh4lzr4fltpgi LOG.config: LOG.config: volumes: LOG.config: bar: LOG.config: catalog_name: main LOG.config: schema_name: ${resources.schemas.foo.name} LOG.config: name: MyVOL-wjxixhll5na2tfh4lzr4fltpgi LOG.config: volume_type: MANAGED acceptance_test.go:942: LOG.cp: acceptance_test.go:942: LOG.deploy: LOG.deploy: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle deploy --plan plan.json LOG.deploy: Uploading bundle files to /Workspace/Users/tester@databricks.com/.bundle/test-bundle-wjxixhll5na2tfh4lzr4fltpgi/default/files... LOG.deploy: Deploying resources... LOG.deploy: Updating deployment state... LOG.deploy: Deployment complete! acceptance_test.go:942: LOG.destroy: LOG.destroy: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle destroy --auto-approve LOG.destroy: The following resources will be deleted: LOG.destroy: delete resources.schemas.foo LOG.destroy: delete resources.volumes.bar LOG.destroy: LOG.destroy: This action will result in the deletion of the following UC schemas. Any underlying data may be lost: LOG.destroy: delete resources.schemas.foo LOG.destroy: LOG.destroy: This action will result in the deletion of the following volumes. LOG.destroy: For managed volumes, the files stored in the volume are also deleted from your LOG.destroy: cloud tenant within 30 days. For external volumes, the metadata about the volume LOG.destroy: is removed from the catalog, but the underlying files are not deleted: LOG.destroy: delete resources.volumes.bar LOG.destroy: LOG.destroy: All files and directories at the following location will be deleted: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-wjxixhll5na2tfh4lzr4fltpgi/default LOG.destroy: LOG.destroy: Deleting files... LOG.destroy: Destroy complete! acceptance_test.go:942: LOG.planjson: acceptance_test.go:942: LOG.validate: LOG.validate: >>> /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/regression_main_cli_zcw9ioq8/src/databricks bundle validate LOG.validate: Name: test-bundle-wjxixhll5na2tfh4lzr4fltpgi LOG.validate: Target: default LOG.validate: Workspace: LOG.validate: User: tester@databricks.com LOG.validate: Path: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-wjxixhll5na2tfh4lzr4fltpgi/default LOG.validate: LOG.validate: Validation OK! --- FAIL: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=volume_uppercase_name.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 (0.30s) ``` **latest (v1.6.0):** ``` === RUN TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=volume_uppercase_name.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 === PAUSE TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=volume_uppercase_name.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 === CONT TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=volume_uppercase_name.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 acceptance_test.go:1083: Error Trace: /Users/denis.bilenko/work/cli-trees/local-only/libs/testdiff/testdiff.go:22 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:1083 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:915 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:515 Error: Not equal: expected: "INPUT_CONFIG_OK\n" actual : "INPUT_CONFIG_OK\n\nExit code: 1\n" Diff: --- Expected +++ Actual @@ -2 +2,3 @@ +Exit code: 1 + Test: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=volume_uppercase_name.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 Messages: bundle/invariant/no_drift/output.txt vs /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/TestAcceptbundleinvariantno_driftDATABRICKS_BUNDLE_ENGINE=di3960157050/001/output.txt acceptance_test.go:942: LOG.config: bundle: LOG.config: name: test-bundle-6vxiu43mlbfdxi7qro5synhzhe LOG.config: LOG.config: # Reproduce: the UC API lowercases identifier names, causing false drift on the LOG.config: # second deploy when the config uses mixed-case names. This covers a volume's LOG.config: # catalog_name, schema_name and name on the direct engine. LOG.config: # LOG.config: # Excluded from the migrate invariant: that test deploys via Terraform first, LOG.config: # and the TF provider rejects an uppercase volume schema_name ("inconsistent LOG.config: # final plan"). LOG.config: resources: LOG.config: schemas: LOG.config: foo: LOG.config: catalog_name: main LOG.config: name: MySCHEMA-6vxiu43mlbfdxi7qro5synhzhe LOG.config: LOG.config: volumes: LOG.config: bar: LOG.config: catalog_name: main LOG.config: schema_name: ${resources.schemas.foo.name} LOG.config: name: MyVOL-6vxiu43mlbfdxi7qro5synhzhe LOG.config: volume_type: MANAGED acceptance_test.go:942: LOG.cp: acceptance_test.go:942: LOG.deploy: LOG.deploy: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle deploy --plan plan.json LOG.deploy: Uploading bundle files to /Workspace/Users/tester@databricks.com/.bundle/test-bundle-6vxiu43mlbfdxi7qro5synhzhe/default/files... LOG.deploy: Deploying resources... LOG.deploy: Updating deployment state... LOG.deploy: Deployment complete! acceptance_test.go:942: LOG.destroy: LOG.destroy: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle destroy --auto-approve LOG.destroy: The following resources will be deleted: LOG.destroy: delete resources.schemas.foo LOG.destroy: delete resources.volumes.bar LOG.destroy: LOG.destroy: This action will result in the deletion of the following UC schemas. Any underlying data may be lost: LOG.destroy: delete resources.schemas.foo LOG.destroy: LOG.destroy: This action will result in the deletion of the following volumes. LOG.destroy: For managed volumes, the files stored in the volume are also deleted from your LOG.destroy: cloud tenant within 30 days. For external volumes, the metadata about the volume LOG.destroy: is removed from the catalog, but the underlying files are not deleted: LOG.destroy: delete resources.volumes.bar LOG.destroy: LOG.destroy: All files and directories at the following location will be deleted: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-6vxiu43mlbfdxi7qro5synhzhe/default LOG.destroy: LOG.destroy: Deleting files... LOG.destroy: Destroy complete! acceptance_test.go:942: LOG.planjson: acceptance_test.go:942: LOG.validate: LOG.validate: >>> /Users/denis.bilenko/work/cli-trees/local-only/acceptance/build/darwin_arm64/1.6.0/databricks bundle validate LOG.validate: Name: test-bundle-6vxiu43mlbfdxi7qro5synhzhe LOG.validate: Target: default LOG.validate: Workspace: LOG.validate: User: tester@databricks.com LOG.validate: Path: /Workspace/Users/tester@databricks.com/.bundle/test-bundle-6vxiu43mlbfdxi7qro5synhzhe/default LOG.validate: LOG.validate: Validation OK! --- FAIL: TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=volume_uppercase_name.yml.tmpl/LOCAL_DIFF=--local/READPLAN=1 (0.31s) ```
TestAccept/bundle/resources/jobs/num_workers/DATABRICKS_BUNDLE_ENGINE=direct/LOCAL=--local ✅ | main (de465e09b) ❌ | latest (v1.6.0) ❌ **main (de465e09b):** ``` === RUN TestAccept/bundle/resources/jobs/num_workers/DATABRICKS_BUNDLE_ENGINE=direct/LOCAL=--local === PAUSE TestAccept/bundle/resources/jobs/num_workers/DATABRICKS_BUNDLE_ENGINE=direct/LOCAL=--local === CONT TestAccept/bundle/resources/jobs/num_workers/DATABRICKS_BUNDLE_ENGINE=direct/LOCAL=--local acceptance_test.go:1083: Diff: --- bundle/resources/jobs/num_workers/output.txt +++ /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/TestAcceptbundleresourcesjobsnum_workersDATABRICKS_BUNDLE_E661901508/001/output.txt @@ -1,128 +1,26 @@ >>> [CLI] bundle deploy -Warning: Single node cluster is not correctly configured - at resources.jobs.sample_job.job_clusters[3].new_cluster - in databricks.yml:64:13 +Error: unknown flag: -num_workers should be 0 only for single-node clusters. To create a -valid single node cluster please ensure that the following properties -are correctly set in the cluster specification: +Usage: + databricks bundle deploy [flags] - spark_conf: - spark.databricks.cluster.profile: singleNode - spark.master: local[*] +Flags: + --auto-approve Skip interactive approvals that might be required for deployment. + -c, --cluster-id string Override cluster in the deployment with the given cluster ID. + --fail-on-active-runs Fail if there are running jobs or pipelines in the deployment. + --force Force-override Git branch validation. + --force-lock Force acquisition of deployment lock. + -h, --help help for deploy + --plan string Path to a JSON plan file to apply instead of planning (direct engine only). + --select strings Deploy only the specified resource (e.g. 'my_job' or 'jobs.my_job'). Can be repeated or comma-separated. - custom_tags: - ResourceClass: SingleNode - +Global Flags: + --debug enable debug logging + -o, --output type output type: text or json (default text) + -p, --profile string ~/.databrickscfg profile + -t, --target string bundle target to use (if applicable) + --var strings set values for variables defined in bundle config. Example: --var="foo=bar" -Uploading bundle files to /Workspace/Users/[USERNAME]/.bundle/test-bundle/default/files... -Deploying resources... -Updating deployment state... -Deployment complete! ->>> print_requests.py //jobs -{ - "method": "POST", - "path": "/api/2.2/jobs/create", - "body": { - "deployment": { - "kind": "BUNDLE", - "metadata_file_path": "/Workspace/Users/[USERNAME]/.bundle/test-bundle/default/state/metadata.json" - }, - "edit_mode": "UI_LOCKED", - "format": "MULTI_TASK", - "job_clusters": [ - { - "job_cluster_key": "job_cluster_autoscale", - "new_cluster": { - "autoscale": { - "max_workers": 4, - "min_workers": 1 - }, - "data_security_mode": "SINGLE_USER", - "node_type_id": "[NODE_TYPE_ID]", - "spark_version": "16.4.x-scala2.12" - } - }, - { - "job_cluster_key": "job_cluster_autoscale_num_workers1", - "new_cluster": { - "autoscale": { - "max_workers": 4, - "min_workers": 1 - }, - "data_security_mode": "SINGLE_USER", - "node_type_id": "[NODE_TYPE_ID]", - "num_workers": 1, - "spark_version": "16.4.x-scala2.14" - } - }, - { - "job_cluster_key": "job_cluster_num_workers1", - "new_cluster": { - "data_security_mode": "SINGLE_USER", - "node_type_id": "[NODE_TYPE_ID]", - "num_workers": 1, - "spark_version": "16.4.x-scala2.15" - } - }, - { - "job_cluster_key": "job_cluster_num_workers0", - "new_cluster": { - "data_security_mode": "SINGLE_USER", - "node_type_id": "[NODE_TYPE_ID]", - "num_workers": 0, - "spark_version": "16.4.x-scala2.16" - } - }, - { - "job_cluster_key": "job_cluster_default", - "new_cluster": { - "num_workers": 0, - "spark_version": "16.4.x-scala2.17" - } - } - ], - "max_concurrent_runs": 1, - "name": "sample_job", - "queue": { - "enabled": true - }, - "tasks": [ - { - "notebook_task": { - "notebook_path": "/Workspace/Users/[USERNAME]/.bundle/test-bundle/default/files/sample_notebook", - "source": "WORKSPACE" - }, - "task_key": "notebook_task" - } - ], - "trigger": { - "pause_status": "UNPAUSED", - "periodic": { - "interval": 1, - "unit": "DAYS" - } - } - } -} - ->>> [CLI] bundle plan -Warning: Single node cluster is not correctly configured - at resources.jobs.sample_job.job_clusters[3].new_cluster - in databricks.yml:64:13 - -num_workers should be 0 only for single-node clusters. To create a -valid single node cluster please ensure that the following properties -are correctly set in the cluster specification: - - spark_conf: - spark.databricks.cluster.profile: singleNode - spark.master: local[*] - - custom_tags: - ResourceClass: SingleNode - - -Plan: 0 to add, 0 to change, 0 to delete, 1 unchanged +Exit code: 1 --- FAIL: TestAccept/bundle/resources/jobs/num_workers/DATABRICKS_BUNDLE_ENGINE=direct/LOCAL=--local (0.06s) ``` **latest (v1.6.0):** ``` === RUN TestAccept/bundle/resources/jobs/num_workers/DATABRICKS_BUNDLE_ENGINE=direct/LOCAL=--local === PAUSE TestAccept/bundle/resources/jobs/num_workers/DATABRICKS_BUNDLE_ENGINE=direct/LOCAL=--local === CONT TestAccept/bundle/resources/jobs/num_workers/DATABRICKS_BUNDLE_ENGINE=direct/LOCAL=--local acceptance_test.go:1083: Diff: --- bundle/resources/jobs/num_workers/output.txt +++ /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/TestAcceptbundleresourcesjobsnum_workersDATABRICKS_BUNDLE_E4215011328/001/output.txt @@ -1,128 +1,26 @@ >>> [CLI] bundle deploy -Warning: Single node cluster is not correctly configured - at resources.jobs.sample_job.job_clusters[3].new_cluster - in databricks.yml:64:13 +Error: unknown flag: -num_workers should be 0 only for single-node clusters. To create a -valid single node cluster please ensure that the following properties -are correctly set in the cluster specification: +Usage: + databricks bundle deploy [flags] - spark_conf: - spark.databricks.cluster.profile: singleNode - spark.master: local[*] +Flags: + --auto-approve Skip interactive approvals that might be required for deployment. + -c, --cluster-id string Override cluster in the deployment with the given cluster ID. + --fail-on-active-runs Fail if there are running jobs or pipelines in the deployment. + --force Force-override Git branch validation. + --force-lock Force acquisition of deployment lock. + -h, --help help for deploy + --plan string Path to a JSON plan file to apply instead of planning (direct engine only). + --select strings Deploy only the specified resource (e.g. 'my_job' or 'jobs.my_job'). Can be repeated or comma-separated. - custom_tags: - ResourceClass: SingleNode - +Global Flags: + --debug enable debug logging + -o, --output type output type: text or json (default text) + -p, --profile string ~/.databrickscfg profile + -t, --target string bundle target to use (if applicable) + --var strings set values for variables defined in bundle config. Example: --var="foo=bar" -Uploading bundle files to /Workspace/Users/[USERNAME]/.bundle/test-bundle/default/files... -Deploying resources... -Updating deployment state... -Deployment complete! ->>> print_requests.py //jobs -{ - "method": "POST", - "path": "/api/2.2/jobs/create", - "body": { - "deployment": { - "kind": "BUNDLE", - "metadata_file_path": "/Workspace/Users/[USERNAME]/.bundle/test-bundle/default/state/metadata.json" - }, - "edit_mode": "UI_LOCKED", - "format": "MULTI_TASK", - "job_clusters": [ - { - "job_cluster_key": "job_cluster_autoscale", - "new_cluster": { - "autoscale": { - "max_workers": 4, - "min_workers": 1 - }, - "data_security_mode": "SINGLE_USER", - "node_type_id": "[NODE_TYPE_ID]", - "spark_version": "16.4.x-scala2.12" - } - }, - { - "job_cluster_key": "job_cluster_autoscale_num_workers1", - "new_cluster": { - "autoscale": { - "max_workers": 4, - "min_workers": 1 - }, - "data_security_mode": "SINGLE_USER", - "node_type_id": "[NODE_TYPE_ID]", - "num_workers": 1, - "spark_version": "16.4.x-scala2.14" - } - }, - { - "job_cluster_key": "job_cluster_num_workers1", - "new_cluster": { - "data_security_mode": "SINGLE_USER", - "node_type_id": "[NODE_TYPE_ID]", - "num_workers": 1, - "spark_version": "16.4.x-scala2.15" - } - }, - { - "job_cluster_key": "job_cluster_num_workers0", - "new_cluster": { - "data_security_mode": "SINGLE_USER", - "node_type_id": "[NODE_TYPE_ID]", - "num_workers": 0, - "spark_version": "16.4.x-scala2.16" - } - }, - { - "job_cluster_key": "job_cluster_default", - "new_cluster": { - "num_workers": 0, - "spark_version": "16.4.x-scala2.17" - } - } - ], - "max_concurrent_runs": 1, - "name": "sample_job", - "queue": { - "enabled": true - }, - "tasks": [ - { - "notebook_task": { - "notebook_path": "/Workspace/Users/[USERNAME]/.bundle/test-bundle/default/files/sample_notebook", - "source": "WORKSPACE" - }, - "task_key": "notebook_task" - } - ], - "trigger": { - "pause_status": "UNPAUSED", - "periodic": { - "interval": 1, - "unit": "DAYS" - } - } - } -} - ->>> [CLI] bundle plan -Warning: Single node cluster is not correctly configured - at resources.jobs.sample_job.job_clusters[3].new_cluster - in databricks.yml:64:13 - -num_workers should be 0 only for single-node clusters. To create a -valid single node cluster please ensure that the following properties -are correctly set in the cluster specification: - - spark_conf: - spark.databricks.cluster.profile: singleNode - spark.master: local[*] - - custom_tags: - ResourceClass: SingleNode - - -Plan: 0 to add, 0 to change, 0 to delete, 1 unchanged +Exit code: 1 --- FAIL: TestAccept/bundle/resources/jobs/num_workers/DATABRICKS_BUNDLE_ENGINE=direct/LOCAL=--local (0.07s) ```
TestAccept/bundle/resources/schemas/update/DATABRICKS_BUNDLE_ENGINE=direct/LOCAL=--local ✅ | main (de465e09b) ❌ | latest (v1.6.0) ❌ **main (de465e09b):** ``` === RUN TestAccept/bundle/resources/schemas/update/DATABRICKS_BUNDLE_ENGINE=direct/LOCAL=--local === PAUSE TestAccept/bundle/resources/schemas/update/DATABRICKS_BUNDLE_ENGINE=direct/LOCAL=--local === CONT TestAccept/bundle/resources/schemas/update/DATABRICKS_BUNDLE_ENGINE=direct/LOCAL=--local acceptance_test.go:1083: Diff: --- bundle/resources/schemas/update/output.txt +++ /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/TestAcceptbundleresourcesschemasupdateDATABRICKS_BUNDLE_ENG2038250438/001/output.txt @@ -1,48 +1,26 @@ >>> [CLI] bundle deploy -Uploading bundle files to /Workspace/Users/[USERNAME]/.bundle/test-bundle/default/files... -Deploying resources... -Updating deployment state... -Deployment complete! +Error: unknown flag: ->>> print_requests.py //unity -{ - "method": "POST", - "path": "/api/2.1/unity-catalog/schemas", - "body": { - "catalog_name": "main", - "comment": "COMMENT1", - "name": "myschema" - } -} -schemas schema1 id='main.myschema' name='myschema' catalog_name='main' comment='COMMENT1' +Usage: + databricks bundle deploy [flags] -=== Update comment and re-deploy ->>> update_file.py databricks.yml COMMENT1 COMMENT2 +Flags: + --auto-approve Skip interactive approvals that might be required for deployment. + -c, --cluster-id string Override cluster in the deployment with the given cluster ID. + --fail-on-active-runs Fail if there are running jobs or pipelines in the deployment. + --force Force-override Git branch validation. + --force-lock Force acquisition of deployment lock. + -h, --help help for deploy + --plan string Path to a JSON plan file to apply instead of planning (direct engine only). + --select strings Deploy only the specified resource (e.g. 'my_job' or 'jobs.my_job'). Can be repeated or comma-separated. ->>> [CLI] bundle deploy -Uploading bundle files to /Workspace/Users/[USERNAME]/.bundle/test-bundle/default/files... -Deploying resources... -Updating deployment state... -Deployment complete! +Global Flags: + --debug enable debug logging + -o, --output type output type: text or json (default text) + -p, --profile string ~/.databrickscfg profile + -t, --target string bundle target to use (if applicable) + --var strings set values for variables defined in bundle config. Example: --var="foo=bar" ->>> print_requests.py //unity -json.method = "PATCH"; -json.path = "/api/2.1/unity-catalog/schemas/main.myschema"; -json.body.comment = "COMMENT2"; -schemas schema1 id='main.myschema' name='myschema' catalog_name='main' comment='COMMENT2' -=== Restore comment to original value and re-deploy ->>> update_file.py databricks.yml COMMENT2 COMMENT1 - ->>> [CLI] bundle deploy -Uploading bundle files to /Workspace/Users/[USERNAME]/.bundle/test-bundle/default/files... -Deploying resources... -Updating deployment state... -Deployment complete! - ->>> print_requests.py //unity -json.method = "PATCH"; -json.path = "/api/2.1/unity-catalog/schemas/main.myschema"; -json.body.comment = "COMMENT1"; -schemas schema1 id='main.myschema' name='myschema' catalog_name='main' comment='COMMENT1' +Exit code: 1 acceptance_test.go:954: Test produced unexpected files: .gitignore --- FAIL: TestAccept/bundle/resources/schemas/update/DATABRICKS_BUNDLE_ENGINE=direct/LOCAL=--local (0.03s) ``` **latest (v1.6.0):** ``` === RUN TestAccept/bundle/resources/schemas/update/DATABRICKS_BUNDLE_ENGINE=direct/LOCAL=--local === PAUSE TestAccept/bundle/resources/schemas/update/DATABRICKS_BUNDLE_ENGINE=direct/LOCAL=--local === CONT TestAccept/bundle/resources/schemas/update/DATABRICKS_BUNDLE_ENGINE=direct/LOCAL=--local acceptance_test.go:1083: Diff: --- bundle/resources/schemas/update/output.txt +++ /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/TestAcceptbundleresourcesschemasupdateDATABRICKS_BUNDLE_ENG3648811774/001/output.txt @@ -1,48 +1,26 @@ >>> [CLI] bundle deploy -Uploading bundle files to /Workspace/Users/[USERNAME]/.bundle/test-bundle/default/files... -Deploying resources... -Updating deployment state... -Deployment complete! +Error: unknown flag: ->>> print_requests.py //unity -{ - "method": "POST", - "path": "/api/2.1/unity-catalog/schemas", - "body": { - "catalog_name": "main", - "comment": "COMMENT1", - "name": "myschema" - } -} -schemas schema1 id='main.myschema' name='myschema' catalog_name='main' comment='COMMENT1' +Usage: + databricks bundle deploy [flags] -=== Update comment and re-deploy ->>> update_file.py databricks.yml COMMENT1 COMMENT2 +Flags: + --auto-approve Skip interactive approvals that might be required for deployment. + -c, --cluster-id string Override cluster in the deployment with the given cluster ID. + --fail-on-active-runs Fail if there are running jobs or pipelines in the deployment. + --force Force-override Git branch validation. + --force-lock Force acquisition of deployment lock. + -h, --help help for deploy + --plan string Path to a JSON plan file to apply instead of planning (direct engine only). + --select strings Deploy only the specified resource (e.g. 'my_job' or 'jobs.my_job'). Can be repeated or comma-separated. ->>> [CLI] bundle deploy -Uploading bundle files to /Workspace/Users/[USERNAME]/.bundle/test-bundle/default/files... -Deploying resources... -Updating deployment state... -Deployment complete! +Global Flags: + --debug enable debug logging + -o, --output type output type: text or json (default text) + -p, --profile string ~/.databrickscfg profile + -t, --target string bundle target to use (if applicable) + --var strings set values for variables defined in bundle config. Example: --var="foo=bar" ->>> print_requests.py //unity -json.method = "PATCH"; -json.path = "/api/2.1/unity-catalog/schemas/main.myschema"; -json.body.comment = "COMMENT2"; -schemas schema1 id='main.myschema' name='myschema' catalog_name='main' comment='COMMENT2' -=== Restore comment to original value and re-deploy ->>> update_file.py databricks.yml COMMENT2 COMMENT1 - ->>> [CLI] bundle deploy -Uploading bundle files to /Workspace/Users/[USERNAME]/.bundle/test-bundle/default/files... -Deploying resources... -Updating deployment state... -Deployment complete! - ->>> print_requests.py //unity -json.method = "PATCH"; -json.path = "/api/2.1/unity-catalog/schemas/main.myschema"; -json.body.comment = "COMMENT1"; -schemas schema1 id='main.myschema' name='myschema' catalog_name='main' comment='COMMENT1' +Exit code: 1 acceptance_test.go:954: Test produced unexpected files: .gitignore --- FAIL: TestAccept/bundle/resources/schemas/update/DATABRICKS_BUNDLE_ENGINE=direct/LOCAL=--local (0.03s) ```
TestAccept/bundle/resources/volumes/change-name/DATABRICKS_BUNDLE_ENGINE=terraform/LOCAL= ✅ | main (de465e09b) ✅ | latest (v1.6.0) ❌ **latest (v1.6.0):** ``` === RUN TestAccept/bundle/resources/volumes/change-name/DATABRICKS_BUNDLE_ENGINE=terraform/LOCAL= === PAUSE TestAccept/bundle/resources/volumes/change-name/DATABRICKS_BUNDLE_ENGINE=terraform/LOCAL= === CONT TestAccept/bundle/resources/volumes/change-name/DATABRICKS_BUNDLE_ENGINE=terraform/LOCAL= acceptance_test.go:1083: Error Trace: /Users/denis.bilenko/work/cli-trees/local-only/libs/testdiff/testdiff.go:22 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:1083 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:915 /Users/denis.bilenko/work/cli-trees/local-only/acceptance/acceptance_test.go:515 Error: Not equal: expected: "{\n \"cli_version\": \"[DEV_VERSION]\",\n \"plan\": {\n \"resources.volumes.volume1\": {\n \"action\": \"update\"\n }\n }\n}\n" actual : "{\n \"cli_version\": \"1.6.0\",\n \"plan\": {\n \"resources.volumes.volume1\": {\n \"action\": \"update\"\n }\n }\n}\n" Diff: --- Expected +++ Actual @@ -1,3 +1,3 @@ { - "cli_version": "[DEV_VERSION]", + "cli_version": "1.6.0", "plan": { Test: TestAccept/bundle/resources/volumes/change-name/DATABRICKS_BUNDLE_ENGINE=terraform/LOCAL= Messages: bundle/resources/volumes/change-name/out.plan.terraform.json vs /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/TestAcceptbundleresourcesvolumeschange-nameDATABRICKS_BUNDL202098559/001/out.plan.terraform.json --- FAIL: TestAccept/bundle/resources/volumes/change-name/DATABRICKS_BUNDLE_ENGINE=terraform/LOCAL= (3.30s) ```
TestAccept/bundle/resources/volumes/change-name/DATABRICKS_BUNDLE_ENGINE=direct/LOCAL= ✅ | main (de465e09b) ✅ | latest (v1.6.0) ❌ **latest (v1.6.0):** ``` === RUN TestAccept/bundle/resources/volumes/change-name/DATABRICKS_BUNDLE_ENGINE=direct/LOCAL= === PAUSE TestAccept/bundle/resources/volumes/change-name/DATABRICKS_BUNDLE_ENGINE=direct/LOCAL= === CONT TestAccept/bundle/resources/volumes/change-name/DATABRICKS_BUNDLE_ENGINE=direct/LOCAL= acceptance_test.go:1083: Diff: --- bundle/resources/volumes/change-name/out.plan.direct.json +++ /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/TestAcceptbundleresourcesvolumeschange-nameDATABRICKS_BUNDL2752724402/001/out.plan.direct.json @@ -1,6 +1,6 @@ { "plan_version": 2, - "cli_version": "[DEV_VERSION]", + "cli_version": "1.6.0", "lineage": "[UUID]", "serial": 1, "plan": { --- FAIL: TestAccept/bundle/resources/volumes/change-name/DATABRICKS_BUNDLE_ENGINE=direct/LOCAL= (0.33s) ```
TestAccept/bundle/resources/volumes/change-name/DATABRICKS_BUNDLE_ENGINE=direct/LOCAL=--local ✅ | main (de465e09b) ❌ | latest (v1.6.0) ❌ **main (de465e09b):** ``` === RUN TestAccept/bundle/resources/volumes/change-name/DATABRICKS_BUNDLE_ENGINE=direct/LOCAL=--local === PAUSE TestAccept/bundle/resources/volumes/change-name/DATABRICKS_BUNDLE_ENGINE=direct/LOCAL=--local === CONT TestAccept/bundle/resources/volumes/change-name/DATABRICKS_BUNDLE_ENGINE=direct/LOCAL=--local acceptance_test.go:1054: Missing output file: out.plan.direct.json acceptance_test.go:1083: Diff: --- bundle/resources/volumes/change-name/output.txt +++ /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/TestAcceptbundleresourcesvolumeschange-nameDATABRICKS_BUNDL1438617772/001/output.txt @@ -1,78 +1,26 @@ >>> [CLI] bundle deploy -Uploading bundle files to /Workspace/Users/[USERNAME]/.bundle/test-bundle/default/files... -Deploying resources... -Updating deployment state... -Deployment complete! +Error: unknown flag: ->>> print_requests.py //unity -{ - "method": "POST", - "path": "/api/2.1/unity-catalog/volumes", - "body": { - "catalog_name": "main", - "comment": "COMMENT1", - "name": "myvolume", - "schema_name": "myschema", - "volume_type": "MANAGED" - } -} +Usage: + databricks bundle deploy [flags] -=== Summary should now show id and url -{ - "volumes": { - "volume1": { - "catalog_name": "main", - "comment": "COMMENT1", - "id": "main.myschema.myvolume", - "name": "myvolume", - "schema_name": "myschema", - "url": "[DATABRICKS_URL]/explore/data/volumes/main/myschema/myvolume?w=[NUMID]", - "volume_type": "MANAGED" - } - } -} +Flags: + --auto-approve Skip interactive approvals that might be required for deployment. + -c, --cluster-id string Override cluster in the deployment with the given cluster ID. + --fail-on-active-runs Fail if there are running jobs or pipelines in the deployment. + --force Force-override Git branch validation. + --force-lock Force acquisition of deployment lock. + -h, --help help for deploy + --plan string Path to a JSON plan file to apply instead of planning (direct engine only). + --select strings Deploy only the specified resource (e.g. 'my_job' or 'jobs.my_job'). Can be repeated or comma-separated. -=== Update name ->>> update_file.py databricks.yml myvolume mynewvolume +Global Flags: + --debug enable debug logging + -o, --output type output type: text or json (default text) + -p, --profile string ~/.databrickscfg profile + -t, --target string bundle target to use (if applicable) + --var strings set values for variables defined in bundle config. Example: --var="foo=bar" ->>> [CLI] bundle plan -update volumes.volume1 -Plan: 0 to add, 1 to change, 0 to delete, 0 unchanged - ->>> [CLI] bundle deploy -Uploading bundle files to /Workspace/Users/[USERNAME]/.bundle/test-bundle/default/files... -Deploying resources... -Updating deployment state... -Deployment complete! - ->>> print_requests.py //unity -{ - "method": "PATCH", - "path": "/api/2.1/unity-catalog/volumes/main.myschema.myvolume", - "body": { - "comment": "COMMENT1", - "new_name": "mynewvolume" - } -} - ->>> [CLI] volumes read main.myschema.mynewvolume -{ - "catalog_name": "main", - "comment": "COMMENT1", - "created_at": [UNIX_TIME_MILLIS][0], - "created_by": "[USERNAME]", - "full_name": "main.myschema.mynewvolume", - "name": "mynewvolume", - "owner": "[USERNAME]", - "schema_name": "myschema", - "storage_location": "s3://[METASTORE_NAME]/metastore/[UUID]/volumes/[UUID]", - "updated_at": [UNIX_TIME_MILLIS][1], - "updated_by": "[USERNAME]", - "volume_id": "[UUID]", - "volume_type": "MANAGED" -} - ->>> musterr [CLI] volumes read main.myschema.myvolume -Error: Resource catalog.VolumeInfo not found: main.myschema.myvolume +Exit code: 1 --- FAIL: TestAccept/bundle/resources/volumes/change-name/DATABRICKS_BUNDLE_ENGINE=direct/LOCAL=--local (0.04s) ``` **latest (v1.6.0):** ``` === RUN TestAccept/bundle/resources/volumes/change-name/DATABRICKS_BUNDLE_ENGINE=direct/LOCAL=--local === PAUSE TestAccept/bundle/resources/volumes/change-name/DATABRICKS_BUNDLE_ENGINE=direct/LOCAL=--local === CONT TestAccept/bundle/resources/volumes/change-name/DATABRICKS_BUNDLE_ENGINE=direct/LOCAL=--local acceptance_test.go:1054: Missing output file: out.plan.direct.json acceptance_test.go:1083: Diff: --- bundle/resources/volumes/change-name/output.txt +++ /var/folders/5y/9kkdnjw91p11vsqwk0cvmk200000gp/T/TestAcceptbundleresourcesvolumeschange-nameDATABRICKS_BUNDL222247796/001/output.txt @@ -1,78 +1,26 @@ >>> [CLI] bundle deploy -Uploading bundle files to /Workspace/Users/[USERNAME]/.bundle/test-bundle/default/files... -Deploying resources... -Updating deployment state... -Deployment complete! +Error: unknown flag: ->>> print_requests.py //unity -{ - "method": "POST", - "path": "/api/2.1/unity-catalog/volumes", - "body": { - "catalog_name": "main", - "comment": "COMMENT1", - "name": "myvolume", - "schema_name": "myschema", - "volume_type": "MANAGED" - } -} +Usage: + databricks bundle deploy [flags] -=== Summary should now show id and url -{ - "volumes": { - "volume1": { - "catalog_name": "main", - "comment": "COMMENT1", - "id": "main.myschema.myvolume", - "name": "myvolume", - "schema_name": "myschema", - "url": "[DATABRICKS_URL]/explore/data/volumes/main/myschema/myvolume?w=[NUMID]", - "volume_type": "MANAGED" - } - } -} +Flags: + --auto-approve Skip interactive approvals that might be required for deployment. + -c, --cluster-id string Override cluster in the deployment with the given cluster ID. + --fail-on-active-runs Fail if there are running jobs or pipelines in the deployment. + --force Force-override Git branch validation. + --force-lock Force acquisition of deployment lock. + -h, --help help for deploy + --plan string Path to a JSON plan file to apply instead of planning (direct engine only). + --select strings Deploy only the specified resource (e.g. 'my_job' or 'jobs.my_job'). Can be repeated or comma-separated. -=== Update name ->>> update_file.py databricks.yml myvolume mynewvolume +Global Flags: + --debug enable debug logging + -o, --output type output type: text or json (default text) + -p, --profile string ~/.databrickscfg profile + -t, --target string bundle target to use (if applicable) + --var strings set values for variables defined in bundle config. Example: --var="foo=bar" ->>> [CLI] bundle plan -update volumes.volume1 -Plan: 0 to add, 1 to change, 0 to delete, 0 unchanged - ->>> [CLI] bundle deploy -Uploading bundle files to /Workspace/Users/[USERNAME]/.bundle/test-bundle/default/files... -Deploying resources... -Updating deployment state... -Deployment complete! - ->>> print_requests.py //unity -{ - "method": "PATCH", - "path": "/api/2.1/unity-catalog/volumes/main.myschema.myvolume", - "body": { - "comment": "COMMENT1", - "new_name": "mynewvolume" - } -} - ->>> [CLI] volumes read main.myschema.mynewvolume -{ - "catalog_name": "main", - "comment": "COMMENT1", - "created_at": [UNIX_TIME_MILLIS][0], - "created_by": "[USERNAME]", - "full_name": "main.myschema.mynewvolume", - "name": "mynewvolume", - "owner": "[USERNAME]", - "schema_name": "myschema", - "storage_location": "s3://[METASTORE_NAME]/metastore/[UUID]/volumes/[UUID]", - "updated_at": [UNIX_TIME_MILLIS][1], - "updated_by": "[USERNAME]", - "volume_id": "[UUID]", - "volume_type": "MANAGED" -} - ->>> musterr [CLI] volumes read main.myschema.myvolume -Error: Resource catalog.VolumeInfo not found: main.myschema.myvolume +Exit code: 1 --- FAIL: TestAccept/bundle/resources/volumes/change-name/DATABRICKS_BUNDLE_ENGINE=direct/LOCAL=--local (0.03s) ```
From 7305ae2e45a7ac98ead74046f2479a81cffe26e1 Mon Sep 17 00:00:00 2001 From: Denis Bilenko Date: Mon, 6 Jul 2026 13:31:14 +0200 Subject: [PATCH 08/25] acc: add --local matrix to catalogs, external_locations, schemas/drift tests Co-authored-by: Isaac --- acceptance/bundle/resources/catalogs/basic/script | 4 ++-- acceptance/bundle/resources/catalogs/basic/test.toml | 9 +++++++++ .../bundle/resources/catalogs/with-schemas/script | 4 ++-- .../bundle/resources/catalogs/with-schemas/test.toml | 9 +++++++++ .../bundle/resources/external_locations/script | 12 ++++++------ .../bundle/resources/external_locations/test.toml | 9 +++++++++ .../schemas/drift/managed_properties/script | 8 ++++---- .../schemas/drift/managed_properties/test.toml | 10 ++++++++++ 8 files changed, 51 insertions(+), 14 deletions(-) diff --git a/acceptance/bundle/resources/catalogs/basic/script b/acceptance/bundle/resources/catalogs/basic/script index 3ce45404638..37e773b80a4 100644 --- a/acceptance/bundle/resources/catalogs/basic/script +++ b/acceptance/bundle/resources/catalogs/basic/script @@ -12,7 +12,7 @@ cleanup() { trap cleanup EXIT title "Deploy bundle with catalog" -trace $CLI bundle deploy +trace $CLI bundle deploy $LOCAL title "Assert the catalog is created" trace $CLI catalogs get "${CATALOG_NAME}" | jq "{name, comment, properties}" @@ -21,7 +21,7 @@ title "Update catalog comment" update_file.py databricks.yml "This catalog was created from DABs" "Updated comment from DABs" title "Redeploy with updated comment" -trace $CLI bundle deploy +trace $CLI bundle deploy $LOCAL title "Assert the catalog comment is updated" trace $CLI catalogs get "${CATALOG_NAME}" | jq "{name, comment}" diff --git a/acceptance/bundle/resources/catalogs/basic/test.toml b/acceptance/bundle/resources/catalogs/basic/test.toml index d2b122411f2..b5748fa464d 100644 --- a/acceptance/bundle/resources/catalogs/basic/test.toml +++ b/acceptance/bundle/resources/catalogs/basic/test.toml @@ -8,5 +8,14 @@ Ignore = [ "databricks.yml", ] +# Also run with --local: plan/deploy issue the same requests with or without --local +# so the recorded output is identical across variants. +EnvRepl.LOCAL = false + [EnvMatrix] DATABRICKS_BUNDLE_ENGINE = ["direct"] + LOCAL = ["", "--local"] + +[[Repls]] +Old = " --local" +New = "" diff --git a/acceptance/bundle/resources/catalogs/with-schemas/script b/acceptance/bundle/resources/catalogs/with-schemas/script index 66930927295..cc6c5031b18 100644 --- a/acceptance/bundle/resources/catalogs/with-schemas/script +++ b/acceptance/bundle/resources/catalogs/with-schemas/script @@ -16,7 +16,7 @@ cleanup() { trap cleanup EXIT title "Deploy bundle with catalog and schema" -trace $CLI bundle deploy +trace $CLI bundle deploy $LOCAL title "Assert the catalog is created" trace $CLI catalogs get "${CATALOG_NAME}" | jq "{name, comment, properties}" @@ -36,7 +36,7 @@ title "Update catalog comment" update_file.py databricks.yml "Catalog created from DABs" "Updated catalog comment" title "Redeploy with updated catalog" -trace $CLI bundle deploy +trace $CLI bundle deploy $LOCAL title "Assert catalog comment is updated" trace $CLI catalogs get "${CATALOG_NAME}" | jq "{name, comment}" diff --git a/acceptance/bundle/resources/catalogs/with-schemas/test.toml b/acceptance/bundle/resources/catalogs/with-schemas/test.toml index d2b122411f2..b5748fa464d 100644 --- a/acceptance/bundle/resources/catalogs/with-schemas/test.toml +++ b/acceptance/bundle/resources/catalogs/with-schemas/test.toml @@ -8,5 +8,14 @@ Ignore = [ "databricks.yml", ] +# Also run with --local: plan/deploy issue the same requests with or without --local +# so the recorded output is identical across variants. +EnvRepl.LOCAL = false + [EnvMatrix] DATABRICKS_BUNDLE_ENGINE = ["direct"] + LOCAL = ["", "--local"] + +[[Repls]] +Old = " --local" +New = "" diff --git a/acceptance/bundle/resources/external_locations/script b/acceptance/bundle/resources/external_locations/script index 1ff7d02ec4d..8bb789de93b 100755 --- a/acceptance/bundle/resources/external_locations/script +++ b/acceptance/bundle/resources/external_locations/script @@ -12,8 +12,8 @@ cleanup() { trap cleanup EXIT title "Deploy bundle with catalog and external location" -trace $CLI bundle plan -trace $CLI bundle deploy +trace $CLI bundle plan $LOCAL +trace $CLI bundle deploy $LOCAL title "Assert the catalog is created with grants" trace $CLI catalogs get "${CATALOG_NAME}" | jq "{name, comment, properties}" @@ -27,8 +27,8 @@ title "Update external location comment" update_file.py databricks.yml "Test external location from DABs" "Updated external location from DABs" title "Redeploy with updated comment" -trace $CLI bundle plan -trace $CLI bundle deploy +trace $CLI bundle plan $LOCAL +trace $CLI bundle deploy $LOCAL title "Assert the external location comment is updated" trace $CLI external-locations get "${EXT_LOCATION_NAME}" | jq "{name, comment}" @@ -37,8 +37,8 @@ title "Update catalog comment" update_file.py databricks.yml "Test catalog for external locations" "Updated catalog for external locations" title "Redeploy with updated catalog comment" -trace $CLI bundle plan -trace $CLI bundle deploy +trace $CLI bundle plan $LOCAL +trace $CLI bundle deploy $LOCAL title "Assert the catalog comment is updated" trace $CLI catalogs get "${CATALOG_NAME}" | jq "{name, comment}" diff --git a/acceptance/bundle/resources/external_locations/test.toml b/acceptance/bundle/resources/external_locations/test.toml index 55cc7b681f5..d8e87eaa000 100644 --- a/acceptance/bundle/resources/external_locations/test.toml +++ b/acceptance/bundle/resources/external_locations/test.toml @@ -10,5 +10,14 @@ Ignore = [ "databricks.yml", ] +# Also run with --local: plan/deploy issue the same requests with or without --local +# so the recorded output is identical across variants. +EnvRepl.LOCAL = false + [EnvMatrix] DATABRICKS_BUNDLE_ENGINE = ["direct"] + LOCAL = ["", "--local"] + +[[Repls]] +Old = " --local" +New = "" diff --git a/acceptance/bundle/resources/schemas/drift/managed_properties/script b/acceptance/bundle/resources/schemas/drift/managed_properties/script index fadd886cd48..b5819ee847a 100644 --- a/acceptance/bundle/resources/schemas/drift/managed_properties/script +++ b/acceptance/bundle/resources/schemas/drift/managed_properties/script @@ -1,14 +1,14 @@ echo "*" > .gitignore title "Initial deployment" -trace $CLI bundle deploy +trace $CLI bundle deploy $LOCAL title "Plan is a no-op despite UC auto-populating managed properties" -trace $CLI bundle plan | contains.py "Plan: 0 to add, 0 to change, 0 to delete, 1 unchanged" +trace $CLI bundle plan $LOCAL | contains.py "Plan: 0 to add, 0 to change, 0 to delete, 1 unchanged" title "The remote-only properties map is skipped as a backend default (confirms the matched rule)" -trace $CLI bundle plan --output json | jq '.plan[].changes' +trace $CLI bundle plan $LOCAL --output json | jq '.plan[].changes' title "Redeploy is a no-op (no UpdateSchema call)" -trace $CLI bundle deploy +trace $CLI bundle deploy $LOCAL trace print_requests.py //unity | gron.py | contains.py '!json.method = "PATCH"' diff --git a/acceptance/bundle/resources/schemas/drift/managed_properties/test.toml b/acceptance/bundle/resources/schemas/drift/managed_properties/test.toml index 5016e85b395..58cd1088170 100644 --- a/acceptance/bundle/resources/schemas/drift/managed_properties/test.toml +++ b/acceptance/bundle/resources/schemas/drift/managed_properties/test.toml @@ -1,5 +1,15 @@ RecordRequests = true +Ignore = [".databricks", ".gitignore"] # Terraform issues a spurious PATCH for enable_predictive_optimization on every # deploy, which is outside the scope of backend-default handling in resources.yml. EnvMatrix.DATABRICKS_BUNDLE_ENGINE = ["direct"] + +# Also run with --local: plan/deploy issue the same requests with or without --local +# so the recorded output is identical across variants. +EnvMatrix.LOCAL = ["", "--local"] +EnvRepl.LOCAL = false + +[[Repls]] +Old = " --local" +New = "" From e756e6bd9cc644c7472cc3d16644de5deff103d1 Mon Sep 17 00:00:00 2001 From: Denis Bilenko Date: Mon, 6 Jul 2026 13:56:42 +0200 Subject: [PATCH 09/25] acc: test deploy --plan warning for --local plans; add READPLAN matrix Co-authored-by: Isaac --- acceptance/bundle/local/basic/out.test.toml | 1 + acceptance/bundle/local/basic/output.txt | 6 ++++++ acceptance/bundle/local/basic/script | 12 +++++++++++- acceptance/bundle/local/basic/test.toml | 4 +++- 4 files changed, 21 insertions(+), 2 deletions(-) diff --git a/acceptance/bundle/local/basic/out.test.toml b/acceptance/bundle/local/basic/out.test.toml index 9cfad3fb0d5..8b995e4d177 100644 --- a/acceptance/bundle/local/basic/out.test.toml +++ b/acceptance/bundle/local/basic/out.test.toml @@ -1,3 +1,4 @@ Local = true Cloud = true EnvMatrix.DATABRICKS_BUNDLE_ENGINE = ["direct"] +EnvMatrix.READPLAN = ["", "1"] diff --git a/acceptance/bundle/local/basic/output.txt b/acceptance/bundle/local/basic/output.txt index 2f81cfbf5ea..a3d5342e894 100644 --- a/acceptance/bundle/local/basic/output.txt +++ b/acceptance/bundle/local/basic/output.txt @@ -41,6 +41,12 @@ Plan: 0 to add, 0 to change, 0 to delete, 2 unchanged >>> print_requests.py --get //jobs/get +=== Deploy --plan with --local plan (warns): +Uploading bundle files to /Workspace/Users/[USERNAME]/.bundle/local-[UNIQUE_NAME]/default/files... +Deploying resources... +Updating deployment state... +Deployment complete! + >>> [CLI] bundle deploy --local Uploading bundle files to /Workspace/Users/[USERNAME]/.bundle/local-[UNIQUE_NAME]/default/files... Deploying resources... diff --git a/acceptance/bundle/local/basic/script b/acceptance/bundle/local/basic/script index a276fcaf063..81fa81aa6af 100644 --- a/acceptance/bundle/local/basic/script +++ b/acceptance/bundle/local/basic/script @@ -22,10 +22,20 @@ trace print_requests.py --get //jobs/get # The JSON plan is self-describing: local_only is true and no entry carries # remote_state (nothing was fetched), so deploy --plan can warn before applying it. title "Plan --local as JSON:\n" -trace $CLI bundle plan --local -o json +trace $CLI bundle plan --local -o json | tee plan.local.json title "Job reads during 'bundle plan --local -o json':\n" trace print_requests.py --get //jobs/get +# deploy --plan with a --local plan warns that the plan may miss out-of-band drift. +# READPLAN matrix runs this twice: once applying the saved plan (warns), once without. +title "Deploy --plan with --local plan (warns):\n" +$CLI bundle deploy $(readplanarg plan.local.json) > LOG.deploy_plan 2>&1 +cat LOG.deploy_plan | contains.py '!panic' '!internal error' +if [[ -n "$READPLAN" ]]; then + cat LOG.deploy_plan | contains.py 'does not reflect the remote state' +fi +rm -f out.requests.txt + # A --local deploy likewise does not read remote state up front and reports its use via telemetry. trace $CLI bundle deploy --local title "Job reads during 'bundle deploy --local':\n" diff --git a/acceptance/bundle/local/basic/test.toml b/acceptance/bundle/local/basic/test.toml index ebc3f807638..c5943235881 100644 --- a/acceptance/bundle/local/basic/test.toml +++ b/acceptance/bundle/local/basic/test.toml @@ -3,5 +3,7 @@ Cloud = true RecordRequests = true # --local skips the per-resource remote read, which only the direct engine performs. EnvMatrix.DATABRICKS_BUNDLE_ENGINE = ["direct"] +# READPLAN=1 feeds the saved --local plan to deploy --plan; the warning is asserted in script. +EnvMatrix.READPLAN = ["", "1"] # databricks.yml is generated at runtime from the template. -Ignore = [".databricks", ".gitignore", "databricks.yml"] +Ignore = [".databricks", ".gitignore", "databricks.yml", "plan.local.json"] From 27dc691884de818b17bbe95483cae94659cdc603 Mon Sep 17 00:00:00 2001 From: Denis Bilenko Date: Mon, 6 Jul 2026 15:44:22 +0200 Subject: [PATCH 10/25] acc: add local/references test for on-demand remote read of remote-only field Co-authored-by: Isaac --- .../local/references/databricks.yml.tmpl | 18 +++++++++++ .../bundle/local/references/out.test.toml | 3 ++ acceptance/bundle/local/references/output.txt | 31 +++++++++++++++++++ acceptance/bundle/local/references/script | 19 ++++++++++++ acceptance/bundle/local/references/test.toml | 7 +++++ 5 files changed, 78 insertions(+) create mode 100644 acceptance/bundle/local/references/databricks.yml.tmpl create mode 100644 acceptance/bundle/local/references/out.test.toml create mode 100644 acceptance/bundle/local/references/output.txt create mode 100644 acceptance/bundle/local/references/script create mode 100644 acceptance/bundle/local/references/test.toml diff --git a/acceptance/bundle/local/references/databricks.yml.tmpl b/acceptance/bundle/local/references/databricks.yml.tmpl new file mode 100644 index 00000000000..870729632bd --- /dev/null +++ b/acceptance/bundle/local/references/databricks.yml.tmpl @@ -0,0 +1,18 @@ +bundle: + name: local-references-$UNIQUE_NAME + +resources: + jobs: + bar: + name: bar-$UNIQUE_NAME + + foo: + name: foo-$UNIQUE_NAME + tasks: + - task_key: tag_owner + notebook_task: + # creator_user_name is a remote-only field: it exists in the remote + # schema but not in config. Under --local, bar's remote state is not + # fetched during planning, but resolving this reference forces a + # targeted fetch of bar on demand. + notebook_path: /path/${resources.jobs.bar.creator_user_name} diff --git a/acceptance/bundle/local/references/out.test.toml b/acceptance/bundle/local/references/out.test.toml new file mode 100644 index 00000000000..9cfad3fb0d5 --- /dev/null +++ b/acceptance/bundle/local/references/out.test.toml @@ -0,0 +1,3 @@ +Local = true +Cloud = true +EnvMatrix.DATABRICKS_BUNDLE_ENGINE = ["direct"] diff --git a/acceptance/bundle/local/references/output.txt b/acceptance/bundle/local/references/output.txt new file mode 100644 index 00000000000..0774f3c4cbc --- /dev/null +++ b/acceptance/bundle/local/references/output.txt @@ -0,0 +1,31 @@ + +>>> [CLI] bundle deploy +Uploading bundle files to /Workspace/Users/[USERNAME]/.bundle/local-references-[UNIQUE_NAME]/default/files... +Deploying resources... +Updating deployment state... +Deployment complete! + +>>> [CLI] bundle plan --local +Plan: 0 to add, 0 to change, 0 to delete, 2 unchanged + +=== Job reads during 'bundle plan --local': + +>>> print_requests.py --get //jobs/get +{ + "method": "GET", + "path": "/api/2.2/jobs/get", + "q": { + "job_id": "[NUMID]" + } +} + +=== Destroy +>>> [CLI] bundle destroy --auto-approve +The following resources will be deleted: + delete resources.jobs.bar + delete resources.jobs.foo + +All files and directories at the following location will be deleted: /Workspace/Users/[USERNAME]/.bundle/local-references-[UNIQUE_NAME]/default + +Deleting files... +Destroy complete! diff --git a/acceptance/bundle/local/references/script b/acceptance/bundle/local/references/script new file mode 100644 index 00000000000..c22329ac763 --- /dev/null +++ b/acceptance/bundle/local/references/script @@ -0,0 +1,19 @@ +envsubst '$UNIQUE_NAME' < databricks.yml.tmpl > databricks.yml + +cleanup() { + title "Destroy" + trace $CLI bundle destroy --auto-approve + rm -f out.requests.txt +} +trap cleanup EXIT + +# Deploy so that bar's ID and creator_user_name are recorded in the local state. +trace $CLI bundle deploy +rm -f out.requests.txt + +# A --local plan skips proactive remote reads but still resolves references. +# foo references bar.creator_user_name, which is remote-only (absent from config), +# so remoteStateForRef fetches bar on demand. Only that one GET is issued. +trace $CLI bundle plan --local +title "Job reads during 'bundle plan --local':\n" +trace print_requests.py --get //jobs/get diff --git a/acceptance/bundle/local/references/test.toml b/acceptance/bundle/local/references/test.toml new file mode 100644 index 00000000000..ebc3f807638 --- /dev/null +++ b/acceptance/bundle/local/references/test.toml @@ -0,0 +1,7 @@ +Local = true +Cloud = true +RecordRequests = true +# --local skips the per-resource remote read, which only the direct engine performs. +EnvMatrix.DATABRICKS_BUNDLE_ENGINE = ["direct"] +# databricks.yml is generated at runtime from the template. +Ignore = [".databricks", ".gitignore", "databricks.yml"] From 534e77b98da368a20e66ed6a42db4aa1044344d7 Mon Sep 17 00:00:00 2001 From: Denis Bilenko Date: Mon, 6 Jul 2026 18:37:45 +0200 Subject: [PATCH 11/25] acc: assert --local plan ignores remote drift on both tests Co-authored-by: Isaac --- acceptance/bundle/local/basic/output.txt | 9 +++++++ acceptance/bundle/local/basic/script | 14 +++++++++++ acceptance/bundle/local/references/output.txt | 24 +++++++++++++++++++ acceptance/bundle/local/references/script | 20 ++++++++++++++++ 4 files changed, 67 insertions(+) diff --git a/acceptance/bundle/local/basic/output.txt b/acceptance/bundle/local/basic/output.txt index a3d5342e894..478268d12ff 100644 --- a/acceptance/bundle/local/basic/output.txt +++ b/acceptance/bundle/local/basic/output.txt @@ -12,6 +12,15 @@ Plan: 0 to add, 0 to change, 0 to delete, 2 unchanged >>> print_requests.py --get //jobs/get +=== After out-of-band rename of bar: --local plan still shows no drift: + +>>> [CLI] bundle plan --local +Plan: 0 to add, 0 to change, 0 to delete, 2 unchanged + +=== Job reads during --local plan after drift: + +>>> print_requests.py --get //jobs/get + === Plan --local as JSON: >>> [CLI] bundle plan --local -o json diff --git a/acceptance/bundle/local/basic/script b/acceptance/bundle/local/basic/script index 81fa81aa6af..88efefb36f9 100644 --- a/acceptance/bundle/local/basic/script +++ b/acceptance/bundle/local/basic/script @@ -12,6 +12,8 @@ trap cleanup EXIT trace $CLI bundle deploy rm -f out.requests.txt +BAR_ID=$($CLI bundle summary -o json | jq -r '.resources.jobs.bar.id') + # A --local plan reports no drift without reading the remote state of the jobs: # no GET is issued. The ${resources.jobs.bar.id} reference still resolves because # it comes from the local state, not a remote read. @@ -19,6 +21,18 @@ trace $CLI bundle plan --local title "Job reads during 'bundle plan --local':\n" trace print_requests.py --get //jobs/get +# Rename bar out-of-band (simulates remote drift). --local plan still shows +# no changes: it never reads remote state, so the rename is invisible to it. +edit_resource.py jobs $BAR_ID <<'EOF' +r["name"] = r["name"] + "-drifted" +EOF +rm -f out.requests.txt + +title "After out-of-band rename of bar: --local plan still shows no drift:\n" +trace $CLI bundle plan --local +title "Job reads during --local plan after drift:\n" +trace print_requests.py --get //jobs/get + # The JSON plan is self-describing: local_only is true and no entry carries # remote_state (nothing was fetched), so deploy --plan can warn before applying it. title "Plan --local as JSON:\n" diff --git a/acceptance/bundle/local/references/output.txt b/acceptance/bundle/local/references/output.txt index 0774f3c4cbc..654394db3a9 100644 --- a/acceptance/bundle/local/references/output.txt +++ b/acceptance/bundle/local/references/output.txt @@ -19,6 +19,30 @@ Plan: 0 to add, 0 to change, 0 to delete, 2 unchanged } } +=== After out-of-band rename of bar: --local plan still shows no drift: + +>>> [CLI] bundle plan --local +Plan: 0 to add, 0 to change, 0 to delete, 2 unchanged + +=== Job reads during --local plan after drift: + +>>> print_requests.py --get //jobs/get +{ + "method": "GET", + "path": "/api/2.2/jobs/get", + "q": { + "job_id": "[NUMID]" + } +} + +=== Normal plan detects the drift: + +>>> [CLI] bundle plan +update jobs.bar +update jobs.foo + +Plan: 0 to add, 2 to change, 0 to delete, 0 unchanged + === Destroy >>> [CLI] bundle destroy --auto-approve The following resources will be deleted: diff --git a/acceptance/bundle/local/references/script b/acceptance/bundle/local/references/script index c22329ac763..af51ec8ea19 100644 --- a/acceptance/bundle/local/references/script +++ b/acceptance/bundle/local/references/script @@ -11,9 +11,29 @@ trap cleanup EXIT trace $CLI bundle deploy rm -f out.requests.txt +BAR_ID=$($CLI bundle summary -o json | jq -r '.resources.jobs.bar.id') + # A --local plan skips proactive remote reads but still resolves references. # foo references bar.creator_user_name, which is remote-only (absent from config), # so remoteStateForRef fetches bar on demand. Only that one GET is issued. trace $CLI bundle plan --local title "Job reads during 'bundle plan --local':\n" trace print_requests.py --get //jobs/get + +# Rename bar out-of-band (simulates remote drift). +edit_resource.py jobs $BAR_ID <<'EOF' +r["name"] = r["name"] + "-drifted" +EOF +rm -f out.requests.txt + +# --local plan still reports no drift: it compares config against saved local +# state and never reads the remote, so the out-of-band rename is invisible. +title "After out-of-band rename of bar: --local plan still shows no drift:\n" +trace $CLI bundle plan --local +title "Job reads during --local plan after drift:\n" +trace print_requests.py --get //jobs/get + +# Normal plan reads remote and detects the drift. +title "Normal plan detects the drift:\n" +trace $CLI bundle plan +rm -f out.requests.txt From f1687a62c4ca3584afb88149819b494261096182 Mon Sep 17 00:00:00 2001 From: Denis Bilenko Date: Tue, 7 Jul 2026 15:17:57 +0200 Subject: [PATCH 12/25] direct: use saved state as remote in --local plan In --local mode the per-resource remote read is skipped. Previously this left the remote comparison value nil, so state-only fields reconciled via OverrideChangeDesc (dashboard/genie etag, vector_search_index endpoint_uuid) read as spurious drift. Treat the saved state as the remote stand-in: it is our last recorded snapshot of remote, so drift is computed purely from saved-state vs config and these fields reconcile against their saved value. VectorSearchIndex.OverrideChangeDesc now reads change.Remote (equal to the raw remote's EndpointUuid) instead of the raw remote param, which is nil in --local. Drops the three no_drift EnvMatrixExclude entries that worked around this, and reverts the --local matrix on schemas/drift/managed_properties (its subject is a remote-only managed-properties map that has no local stand-in, so it is a genuine bad fit for --local). Co-authored-by: Isaac --- .../bundle/invariant/no_drift/test.toml | 11 ---- acceptance/bundle/local/basic/output.txt | 42 +++++++++++-- acceptance/bundle/local/basic/script | 12 ++-- .../schemas/drift/managed_properties/script | 8 +-- .../drift/managed_properties/test.toml | 10 --- bundle/direct/bundle_plan.go | 62 ++++++++++++------- .../direct/dresources/vector_search_index.go | 11 ++-- 7 files changed, 93 insertions(+), 63 deletions(-) diff --git a/acceptance/bundle/invariant/no_drift/test.toml b/acceptance/bundle/invariant/no_drift/test.toml index 9c192724693..ea310e44be8 100644 --- a/acceptance/bundle/invariant/no_drift/test.toml +++ b/acceptance/bundle/invariant/no_drift/test.toml @@ -4,14 +4,3 @@ EnvMatrix.READPLAN = ["", "1"] # using only the local state. The no-drift invariant must hold either way: after a # deploy the local state saved by the engine must already match the config. EnvMatrix.LOCAL_DIFF = ["", "--local"] - -# The configs below show drift under --local and are excluded from that variant only. -# They still run in the normal (LOCAL_DIFF="") variant. - -# dashboard, genie_space and vector_search_index persist a remote-sourced value in -# state for drift detection (etag, endpoint_uuid) that the config never carries. -# A normal plan reconciles it against the freshly-read remote; --local has no remote -# to compare against, so the persisted value reads as drift. This is inherent to --local. -EnvMatrixExclude.no_dashboard_local = ["LOCAL_DIFF=--local", "INPUT_CONFIG=dashboard.yml.tmpl"] -EnvMatrixExclude.no_genie_space_local = ["LOCAL_DIFF=--local", "INPUT_CONFIG=genie_space.yml.tmpl"] -EnvMatrixExclude.no_vector_search_index_local = ["LOCAL_DIFF=--local", "INPUT_CONFIG=vector_search_index.yml.tmpl"] diff --git a/acceptance/bundle/local/basic/output.txt b/acceptance/bundle/local/basic/output.txt index 478268d12ff..2433e19664a 100644 --- a/acceptance/bundle/local/basic/output.txt +++ b/acceptance/bundle/local/basic/output.txt @@ -32,7 +32,20 @@ Plan: 0 to add, 0 to change, 0 to delete, 2 unchanged "local_only": true, "plan": { "resources.jobs.bar": { - "action": "skip" + "action": "skip", + "remote_state": { + "deployment": { + "kind": "BUNDLE", + "metadata_file_path": "/Workspace/Users/[USERNAME]/.bundle/local-[UNIQUE_NAME]/default/state/metadata.json" + }, + "edit_mode": "UI_LOCKED", + "format": "MULTI_TASK", + "max_concurrent_runs": 1, + "name": "bar-[UNIQUE_NAME]", + "queue": { + "enabled": true + } + } }, "resources.jobs.foo": { "depends_on": [ @@ -41,7 +54,28 @@ Plan: 0 to add, 0 to change, 0 to delete, 2 unchanged "label": "${resources.jobs.bar.id}" } ], - "action": "skip" + "action": "skip", + "remote_state": { + "deployment": { + "kind": "BUNDLE", + "metadata_file_path": "/Workspace/Users/[USERNAME]/.bundle/local-[UNIQUE_NAME]/default/state/metadata.json" + }, + "edit_mode": "UI_LOCKED", + "format": "MULTI_TASK", + "max_concurrent_runs": 1, + "name": "foo-[UNIQUE_NAME]", + "queue": { + "enabled": true + }, + "tasks": [ + { + "run_job_task": { + "job_id": [NUMID] + }, + "task_key": "run_bar" + } + ] + } } } } @@ -51,10 +85,6 @@ Plan: 0 to add, 0 to change, 0 to delete, 2 unchanged >>> print_requests.py --get //jobs/get === Deploy --plan with --local plan (warns): -Uploading bundle files to /Workspace/Users/[USERNAME]/.bundle/local-[UNIQUE_NAME]/default/files... -Deploying resources... -Updating deployment state... -Deployment complete! >>> [CLI] bundle deploy --local Uploading bundle files to /Workspace/Users/[USERNAME]/.bundle/local-[UNIQUE_NAME]/default/files... diff --git a/acceptance/bundle/local/basic/script b/acceptance/bundle/local/basic/script index 88efefb36f9..1daa9cdac8f 100644 --- a/acceptance/bundle/local/basic/script +++ b/acceptance/bundle/local/basic/script @@ -33,8 +33,9 @@ trace $CLI bundle plan --local title "Job reads during --local plan after drift:\n" trace print_requests.py --get //jobs/get -# The JSON plan is self-describing: local_only is true and no entry carries -# remote_state (nothing was fetched), so deploy --plan can warn before applying it. +# The JSON plan is self-describing: local_only is true, so deploy --plan can warn +# before applying it. remote_state is the saved local state (used as the stand-in +# for remote in --local), not a fresh read. title "Plan --local as JSON:\n" trace $CLI bundle plan --local -o json | tee plan.local.json title "Job reads during 'bundle plan --local -o json':\n" @@ -44,9 +45,12 @@ trace print_requests.py --get //jobs/get # READPLAN matrix runs this twice: once applying the saved plan (warns), once without. title "Deploy --plan with --local plan (warns):\n" $CLI bundle deploy $(readplanarg plan.local.json) > LOG.deploy_plan 2>&1 -cat LOG.deploy_plan | contains.py '!panic' '!internal error' +# contains.py echoes stdin, so route its passthrough to a LOG file: the deploy +# output (and the --local warning, present only when READPLAN=1) must not leak +# into output.txt or the two matrix variants would diverge. +cat LOG.deploy_plan | contains.py '!panic' '!internal error' > LOG.contains if [[ -n "$READPLAN" ]]; then - cat LOG.deploy_plan | contains.py 'does not reflect the remote state' + cat LOG.deploy_plan | contains.py 'does not reflect the remote state' > LOG.contains fi rm -f out.requests.txt diff --git a/acceptance/bundle/resources/schemas/drift/managed_properties/script b/acceptance/bundle/resources/schemas/drift/managed_properties/script index b5819ee847a..fadd886cd48 100644 --- a/acceptance/bundle/resources/schemas/drift/managed_properties/script +++ b/acceptance/bundle/resources/schemas/drift/managed_properties/script @@ -1,14 +1,14 @@ echo "*" > .gitignore title "Initial deployment" -trace $CLI bundle deploy $LOCAL +trace $CLI bundle deploy title "Plan is a no-op despite UC auto-populating managed properties" -trace $CLI bundle plan $LOCAL | contains.py "Plan: 0 to add, 0 to change, 0 to delete, 1 unchanged" +trace $CLI bundle plan | contains.py "Plan: 0 to add, 0 to change, 0 to delete, 1 unchanged" title "The remote-only properties map is skipped as a backend default (confirms the matched rule)" -trace $CLI bundle plan $LOCAL --output json | jq '.plan[].changes' +trace $CLI bundle plan --output json | jq '.plan[].changes' title "Redeploy is a no-op (no UpdateSchema call)" -trace $CLI bundle deploy $LOCAL +trace $CLI bundle deploy trace print_requests.py //unity | gron.py | contains.py '!json.method = "PATCH"' diff --git a/acceptance/bundle/resources/schemas/drift/managed_properties/test.toml b/acceptance/bundle/resources/schemas/drift/managed_properties/test.toml index 58cd1088170..5016e85b395 100644 --- a/acceptance/bundle/resources/schemas/drift/managed_properties/test.toml +++ b/acceptance/bundle/resources/schemas/drift/managed_properties/test.toml @@ -1,15 +1,5 @@ RecordRequests = true -Ignore = [".databricks", ".gitignore"] # Terraform issues a spurious PATCH for enable_predictive_optimization on every # deploy, which is outside the scope of backend-default handling in resources.yml. EnvMatrix.DATABRICKS_BUNDLE_ENGINE = ["direct"] - -# Also run with --local: plan/deploy issue the same requests with or without --local -# so the recorded output is identical across variants. -EnvMatrix.LOCAL = ["", "--local"] -EnvRepl.LOCAL = false - -[[Repls]] -Old = " --local" -New = "" diff --git a/bundle/direct/bundle_plan.go b/bundle/direct/bundle_plan.go index d35e58dfdcd..bdd5777288a 100644 --- a/bundle/direct/bundle_plan.go +++ b/bundle/direct/bundle_plan.go @@ -247,8 +247,20 @@ func (b *DeploymentBundle) CalculatePlan(ctx context.Context, client *databricks return false } - var remoteState any - if !localOnly { + var action deployplan.ActionType + var remoteDiff []structdiff.Change + var remoteStateComparable any + + if localOnly { + // --local skips the remote read. Treat the saved state as the remote: + // it is our last recorded snapshot of remote, so drift is computed + // purely from saved-state vs config. This also lets OverrideChangeDesc + // hooks (etag, endpoint_uuid) reconcile state-only fields against their + // saved value instead of nil, avoiding spurious drift. + remoteStateComparable = savedState + entry.RemoteState = savedState + } else { + var remoteState any remoteState, err = retryOnTransient(ctx, func() (any, error) { return adapter.DoRead(ctx, dbentry.ID) }) @@ -260,27 +272,23 @@ func (b *DeploymentBundle) CalculatePlan(ctx context.Context, client *databricks return false } } - } - // We have a choice whether to include remoteState or remoteStateComparable from below. - // Including remoteState because in the near future remoteState is expected to become a superset struct of remoteStateComparable - entry.RemoteState = remoteState - - var action deployplan.ActionType - var remoteDiff []structdiff.Change - var remoteStateComparable any + // We have a choice whether to include remoteState or remoteStateComparable from below. + // Including remoteState because in the near future remoteState is expected to become a superset struct of remoteStateComparable + entry.RemoteState = remoteState - if remoteState != nil { - remoteStateComparable, err = adapter.RemapState(remoteState) - if err != nil { - logdiag.LogError(ctx, fmt.Errorf("%s: interpreting remote state id=%q: %w", errorPrefix, dbentry.ID, err)) - return false - } + if remoteState != nil { + remoteStateComparable, err = adapter.RemapState(remoteState) + if err != nil { + logdiag.LogError(ctx, fmt.Errorf("%s: interpreting remote state id=%q: %w", errorPrefix, dbentry.ID, err)) + return false + } - remoteDiff, err = structdiff.GetStructDiff(remoteStateComparable, sv.Value, adapter.KeyedSlices()) - if err != nil { - logdiag.LogError(ctx, fmt.Errorf("%s: diffing remote state: %w", errorPrefix, err)) - return false + remoteDiff, err = structdiff.GetStructDiff(remoteStateComparable, sv.Value, adapter.KeyedSlices()) + if err != nil { + logdiag.LogError(ctx, fmt.Errorf("%s: diffing remote state: %w", errorPrefix, err)) + return false + } } } @@ -290,13 +298,21 @@ func (b *DeploymentBundle) CalculatePlan(ctx context.Context, client *databricks return false } - err = addPerFieldActions(ctx, adapter, entry.Changes, remoteState) + // In --local we pass nil as the raw remote param: it is typed as each + // resource's remote struct, which the saved state (a state-typed struct) + // is not. OverrideChangeDesc hooks read the reconciled value from + // ch.Remote (populated from saved state above) instead. + var rawRemote any + if !localOnly { + rawRemote = entry.RemoteState + } + err = addPerFieldActions(ctx, adapter, entry.Changes, rawRemote) if err != nil { logdiag.LogError(ctx, fmt.Errorf("%s: classifying changes: %w", errorPrefix, err)) return false } - if remoteState == nil && !localOnly { + if entry.RemoteState == nil && !localOnly { // Even if local action is "recreate" which is higher than "create", we should still pick "create" here // because we know remote does not exist. action = deployplan.Create @@ -310,7 +326,7 @@ func (b *DeploymentBundle) CalculatePlan(ctx context.Context, client *databricks // variable resolution depends on several factors, see canReadRemoteCache in LookupReferencePreDeploy. // In --local mode the store is skipped so remoteStateForRef fetches on demand (it keys off cache absence). if !localOnly { - b.RemoteStateCache.Store(resourceKey, remoteState) + b.RemoteStateCache.Store(resourceKey, entry.RemoteState) } // Validate that resources without DoUpdate don't have update actions diff --git a/bundle/direct/dresources/vector_search_index.go b/bundle/direct/dresources/vector_search_index.go index 48ee6f0f968..75ba3e0fced 100644 --- a/bundle/direct/dresources/vector_search_index.go +++ b/bundle/direct/dresources/vector_search_index.go @@ -204,15 +204,16 @@ func (r *ResourceVectorSearchIndex) WaitAfterDelete(ctx context.Context, id stri // lookupEndpointUuid distinguishes this (404 -> "") from transient errors // (propagated through DoRead/DoCreate), so reaching this branch with empty // remoteUuid unambiguously means the endpoint is gone. -func (*ResourceVectorSearchIndex) OverrideChangeDesc(_ context.Context, path *structpath.PathNode, change *ChangeDesc, remote *VectorSearchIndexRemote) error { +func (*ResourceVectorSearchIndex) OverrideChangeDesc(_ context.Context, path *structpath.PathNode, change *ChangeDesc, _ *VectorSearchIndexRemote) error { if path.String() != "endpoint_uuid" { return nil } savedUuid, _ := change.Old.(string) - var remoteUuid string - if remote != nil { - remoteUuid = remote.EndpointUuid - } + // change.Remote is endpoint_uuid from the remapped remote state (equal to the + // raw remote's EndpointUuid), or the saved value in --local mode. Reading it + // rather than the raw remote param keeps this correct when --local supplies no + // remote read. + remoteUuid, _ := change.Remote.(string) if savedUuid != "" && savedUuid != remoteUuid { change.Action = deployplan.Recreate change.Reason = "endpoint replaced out-of-band" From d8b84e4e73ad8725667844330a3e3fc725de4591 Mon Sep 17 00:00:00 2001 From: Denis Bilenko Date: Tue, 7 Jul 2026 15:31:03 +0200 Subject: [PATCH 13/25] acc: remove noisy Destroy title from cleanup Co-authored-by: Isaac --- acceptance/bundle/local/basic/output.txt | 1 - acceptance/bundle/local/basic/script | 1 - acceptance/bundle/local/references/output.txt | 1 - acceptance/bundle/local/references/script | 1 - 4 files changed, 4 deletions(-) diff --git a/acceptance/bundle/local/basic/output.txt b/acceptance/bundle/local/basic/output.txt index 2433e19664a..fb520256d2a 100644 --- a/acceptance/bundle/local/basic/output.txt +++ b/acceptance/bundle/local/basic/output.txt @@ -106,7 +106,6 @@ Deployment complete! === Telemetry: local_used true -=== Destroy >>> [CLI] bundle destroy --auto-approve The following resources will be deleted: delete resources.jobs.bar diff --git a/acceptance/bundle/local/basic/script b/acceptance/bundle/local/basic/script index 1daa9cdac8f..2b0ca8bf28b 100644 --- a/acceptance/bundle/local/basic/script +++ b/acceptance/bundle/local/basic/script @@ -1,7 +1,6 @@ envsubst '$UNIQUE_NAME' < databricks.yml.tmpl > databricks.yml cleanup() { - title "Destroy" trace $CLI bundle destroy --auto-approve rm -f out.requests.txt } diff --git a/acceptance/bundle/local/references/output.txt b/acceptance/bundle/local/references/output.txt index 654394db3a9..39bb5bff2ac 100644 --- a/acceptance/bundle/local/references/output.txt +++ b/acceptance/bundle/local/references/output.txt @@ -43,7 +43,6 @@ update jobs.foo Plan: 0 to add, 2 to change, 0 to delete, 0 unchanged -=== Destroy >>> [CLI] bundle destroy --auto-approve The following resources will be deleted: delete resources.jobs.bar diff --git a/acceptance/bundle/local/references/script b/acceptance/bundle/local/references/script index af51ec8ea19..e308fe1b21c 100644 --- a/acceptance/bundle/local/references/script +++ b/acceptance/bundle/local/references/script @@ -1,7 +1,6 @@ envsubst '$UNIQUE_NAME' < databricks.yml.tmpl > databricks.yml cleanup() { - title "Destroy" trace $CLI bundle destroy --auto-approve rm -f out.requests.txt } From 4180ad9703a52f230ed9e168573ea08fe8db9530 Mon Sep 17 00:00:00 2001 From: Denis Bilenko Date: Wed, 8 Jul 2026 09:13:30 +0200 Subject: [PATCH 14/25] direct: fix nil-deref in ResourceApp.OverrideChangeDesc The hook dereferenced its raw remote *AppRemote param, but calladapt delivers a typed nil when the remote read is skipped (--local) or the resource does not exist remotely. Read change.Remote instead, matching the pattern used by vector_search_index. Co-authored-by: Isaac --- bundle/direct/dresources/app.go | 6 +++++- bundle/direct/dresources/app_test.go | 31 ++++++++++++++++++++++++++++ 2 files changed, 36 insertions(+), 1 deletion(-) diff --git a/bundle/direct/dresources/app.go b/bundle/direct/dresources/app.go index c3928755818..8ab64272894 100644 --- a/bundle/direct/dresources/app.go +++ b/bundle/direct/dresources/app.go @@ -250,11 +250,15 @@ func hasAppChanges(entry *PlanEntry) bool { // git_source) while the app has no active deployment. DoRead reads them only from the // active deployment, so before the first deploy (or once a stop clears it) the remote // side is empty and the diff is spurious; it applies on the next start (manageLifecycle). +// +// remote is nil in --plan-mode=local (no plan-time DoRead) and when the resource +// does not exist remotely; treat that as "no active deployment" so the skip fires +// on the same path without a nil deref. func (*ResourceApp) OverrideChangeDesc(_ context.Context, path *structpath.PathNode, change *ChangeDesc, remote *AppRemote) error { // Prefix(1) so a nested diff (e.g. config.command) matches its top-level field. switch path.Prefix(1).String() { case "source_code_path", "config", "git_source": - if remote.ActiveDeployment == nil { + if remote == nil || remote.ActiveDeployment == nil { change.Action = deployplan.Skip change.Reason = "no active deployment" } diff --git a/bundle/direct/dresources/app_test.go b/bundle/direct/dresources/app_test.go index 444dfbd255e..d1d4e90b7a4 100644 --- a/bundle/direct/dresources/app_test.go +++ b/bundle/direct/dresources/app_test.go @@ -6,6 +6,8 @@ import ( "strings" "testing" + "github.com/databricks/cli/bundle/deployplan" + "github.com/databricks/cli/libs/structs/structpath" "github.com/databricks/cli/libs/testserver" "github.com/databricks/databricks-sdk-go" "github.com/databricks/databricks-sdk-go/service/apps" @@ -170,3 +172,32 @@ func TestAppDoUpdate_UpdateMaskHasAllFields(t *testing.T) { assert.Contains(t, allFields, field, "field %s is in UpdateMaskFields but not in apps.App struct", field) } } + +func TestAppOverrideChangeDescActiveDeployment(t *testing.T) { + r := &ResourceApp{} + + // The hook skips drift on the deploy-only fields (source_code_path, config, + // git_source) when the app has no active deployment. remote may be a typed + // nil (--plan-mode=local or resource missing remotely); the hook must treat + // that as "no active deployment" without dereferencing. + tests := []struct { + name string + path *structpath.PathNode + remote *AppRemote + wantAction deployplan.ActionType + }{ + {"source_code_path skips when remote is nil", structpath.MustParsePath("source_code_path"), nil, deployplan.Skip}, + {"config.command skips when remote is nil", structpath.MustParsePath("config.command"), nil, deployplan.Skip}, + {"git_source skips when remote is nil", structpath.MustParsePath("git_source"), nil, deployplan.Skip}, + {"source_code_path skips when ActiveDeployment is nil", structpath.MustParsePath("source_code_path"), &AppRemote{}, deployplan.Skip}, + {"source_code_path untouched when ActiveDeployment is set", structpath.MustParsePath("source_code_path"), &AppRemote{App: apps.App{ActiveDeployment: &apps.AppDeployment{}}}, deployplan.Update}, + {"name untouched (not a deploy-only field)", structpath.MustParsePath("name"), nil, deployplan.Update}, + } + for _, tc := range tests { + t.Run(tc.name, func(t *testing.T) { + change := &ChangeDesc{Action: deployplan.Update, Old: "a", New: "b"} + require.NoError(t, r.OverrideChangeDesc(t.Context(), tc.path, change, tc.remote)) + assert.Equal(t, tc.wantAction, change.Action) + }) + } +} From c3a1d731fe0349ba4ce131e4e8a9b99986093366 Mon Sep 17 00:00:00 2001 From: Denis Bilenko Date: Wed, 8 Jul 2026 14:12:11 +0200 Subject: [PATCH 15/25] direct: table-drive TestAppOverrideChangeDescSourceCodePath Every row now passes a typed-nil raw remote param, so the nil-safety guarantee is exercised on every case rather than a dedicated subtest. Co-authored-by: Isaac --- bundle/direct/dresources/app_test.go | 32 +++++++++++++++++++++++++++- 1 file changed, 31 insertions(+), 1 deletion(-) diff --git a/bundle/direct/dresources/app_test.go b/bundle/direct/dresources/app_test.go index d1d4e90b7a4..7fc6f766b78 100644 --- a/bundle/direct/dresources/app_test.go +++ b/bundle/direct/dresources/app_test.go @@ -195,9 +195,39 @@ func TestAppOverrideChangeDescActiveDeployment(t *testing.T) { } for _, tc := range tests { t.Run(tc.name, func(t *testing.T) { - change := &ChangeDesc{Action: deployplan.Update, Old: "a", New: "b"} + + change := &ChangeDesc{} require.NoError(t, r.OverrideChangeDesc(t.Context(), tc.path, change, tc.remote)) assert.Equal(t, tc.wantAction, change.Action) }) } } + +func TestAppOverrideChangeDescSourceCodePath(t *testing.T) { + r := &ResourceApp{} + pathSCP := structpath.MustParsePath("source_code_path") + pathOther := structpath.MustParsePath("name") + + // Every case passes a typed nil for the raw remote param — this matches what + // calladapt delivers when the remote read is skipped in --local mode or the + // resource does not exist. If the hook regresses to dereferencing that param, + // every row panics. + tests := []struct { + name string + path *structpath.PathNode + remote any + wantAction deployplan.ActionType + }{ + {"Skip when remote is empty", pathSCP, "", deployplan.Skip}, + {`Skip when remote is "null"`, pathSCP, "null", deployplan.Skip}, + {"Untouched when remote is a real path", pathSCP, "/actual", deployplan.Update}, + {"Other paths untouched", pathOther, "", deployplan.Update}, + } + for _, tc := range tests { + t.Run(tc.name, func(t *testing.T) { + change := &ChangeDesc{Action: deployplan.Update, Old: "/old", New: "/new", Remote: tc.remote} + require.NoError(t, r.OverrideChangeDesc(t.Context(), tc.path, change, (*AppRemote)(nil))) + assert.Equal(t, tc.wantAction, change.Action) + }) + } +} From f903a0f7c4a4726c955b267081b2605038823e3e Mon Sep 17 00:00:00 2001 From: Denis Bilenko Date: Mon, 13 Jul 2026 18:39:41 +0200 Subject: [PATCH 16/25] Rename --local to --plan-mode=local Introduce deployplan.PlanMode enum (Full, Local, Offline) and thread it through the planner and CLI. --local becomes --plan-mode=local; Offline is reserved for a follow-up. Bundle.Local becomes Bundle.PlanMode, and the local_used telemetry key becomes plan_mode_used_. Co-authored-by: Isaac --- acceptance/bundle/invariant/no_drift/script | 4 +- .../bundle/invariant/no_drift/test.toml | 2 +- acceptance/bundle/local/basic/output.txt | 28 +++++------ acceptance/bundle/local/basic/script | 36 +++++++------- acceptance/bundle/local/basic/test.toml | 4 +- acceptance/bundle/local/references/output.txt | 10 ++-- acceptance/bundle/local/references/script | 14 +++--- acceptance/bundle/local/rejected/output.txt | 8 +-- acceptance/bundle/local/rejected/script | 6 +-- .../resources/catalogs/basic/out.test.toml | 1 + .../bundle/resources/catalogs/basic/script | 4 +- .../bundle/resources/catalogs/basic/test.toml | 8 +-- .../catalogs/with-schemas/out.test.toml | 1 + .../resources/catalogs/with-schemas/script | 4 +- .../resources/catalogs/with-schemas/test.toml | 8 +-- .../external_locations/out.test.toml | 1 + .../resources/external_locations/script | 12 ++--- .../resources/external_locations/test.toml | 8 +-- .../resources/jobs/num_workers/out.test.toml | 1 + .../bundle/resources/jobs/num_workers/script | 4 +- .../resources/jobs/num_workers/test.toml | 16 +++--- .../resources/schemas/update/out.test.toml | 1 + .../bundle/resources/schemas/update/script | 6 +-- .../bundle/resources/schemas/update/test.toml | 16 +++--- .../volumes/change-name/out.test.toml | 1 + .../resources/volumes/change-name/script | 6 +-- .../resources/volumes/change-name/test.toml | 18 +++---- bundle/bundle.go | 7 +-- bundle/deployplan/plan.go | 49 +++++++++++++++++-- bundle/direct/bind.go | 4 +- bundle/direct/bundle_plan.go | 26 +++++----- bundle/direct/dresources/app_test.go | 31 +----------- bundle/metrics/metrics.go | 5 +- bundle/phases/deploy.go | 2 +- bundle/phases/destroy.go | 2 +- cmd/bundle/config_remote_sync.go | 3 +- cmd/bundle/deploy.go | 15 ++++-- cmd/bundle/plan.go | 12 +++-- cmd/bundle/utils/process.go | 12 ++--- 39 files changed, 214 insertions(+), 182 deletions(-) diff --git a/acceptance/bundle/invariant/no_drift/script b/acceptance/bundle/invariant/no_drift/script index 3fbe62311dd..81d6e24a83b 100644 --- a/acceptance/bundle/invariant/no_drift/script +++ b/acceptance/bundle/invariant/no_drift/script @@ -44,8 +44,8 @@ echo INPUT_CONFIG_OK # JSON plan asserts every action is "skip" -- a strict superset of the text # renderer's "Plan: 0 to add, 0 to change, 0 to delete" summary. -# LOCAL_DIFF is either empty or "--local"; with --local the plan ignores the remote +# LOCAL_DIFF is either empty or "--plan-mode=local"; the local mode ignores the remote # state of resources, so no drift means the local state saved by deploy matches config. $CLI bundle plan $LOCAL_DIFF -o json > LOG.planjson 2>LOG.planjson.err cat LOG.planjson.err | contains.py '!panic' '!internal error' > /dev/null -verify_no_drift.py LOG.planjson \ No newline at end of file +verify_no_drift.py LOG.planjson diff --git a/acceptance/bundle/invariant/no_drift/test.toml b/acceptance/bundle/invariant/no_drift/test.toml index ea310e44be8..5f86bd0d154 100644 --- a/acceptance/bundle/invariant/no_drift/test.toml +++ b/acceptance/bundle/invariant/no_drift/test.toml @@ -3,4 +3,4 @@ EnvMatrix.READPLAN = ["", "1"] # Run every config twice: once planning normally and once with --local, which plans # using only the local state. The no-drift invariant must hold either way: after a # deploy the local state saved by the engine must already match the config. -EnvMatrix.LOCAL_DIFF = ["", "--local"] +EnvMatrix.LOCAL_DIFF = ["", "--plan-mode=local"] diff --git a/acceptance/bundle/local/basic/output.txt b/acceptance/bundle/local/basic/output.txt index fb520256d2a..ea0353fe62e 100644 --- a/acceptance/bundle/local/basic/output.txt +++ b/acceptance/bundle/local/basic/output.txt @@ -5,31 +5,31 @@ Deploying resources... Updating deployment state... Deployment complete! ->>> [CLI] bundle plan --local +>>> [CLI] bundle plan --plan-mode=local Plan: 0 to add, 0 to change, 0 to delete, 2 unchanged -=== Job reads during 'bundle plan --local': +=== Job reads during 'bundle plan --plan-mode=local': >>> print_requests.py --get //jobs/get -=== After out-of-band rename of bar: --local plan still shows no drift: +=== After out-of-band rename of bar: --plan-mode=local plan still shows no drift: ->>> [CLI] bundle plan --local +>>> [CLI] bundle plan --plan-mode=local Plan: 0 to add, 0 to change, 0 to delete, 2 unchanged -=== Job reads during --local plan after drift: +=== Job reads during --plan-mode=local plan after drift: >>> print_requests.py --get //jobs/get -=== Plan --local as JSON: +=== Plan --plan-mode=local as JSON: ->>> [CLI] bundle plan --local -o json +>>> [CLI] bundle plan --plan-mode=local -o json { "plan_version": 2, - "cli_version": "[DEV_VERSION]", + "cli_version": "[CLI_VERSION]", "lineage": "[UUID]", "serial": 1, - "local_only": true, + "plan_mode": "local", "plan": { "resources.jobs.bar": { "action": "skip", @@ -80,19 +80,19 @@ Plan: 0 to add, 0 to change, 0 to delete, 2 unchanged } } -=== Job reads during 'bundle plan --local -o json': +=== Job reads during 'bundle plan --plan-mode=local -o json': >>> print_requests.py --get //jobs/get -=== Deploy --plan with --local plan (warns): +=== Deploy --plan with --plan-mode=local plan (warns): ->>> [CLI] bundle deploy --local +>>> [CLI] bundle deploy --plan-mode=local Uploading bundle files to /Workspace/Users/[USERNAME]/.bundle/local-[UNIQUE_NAME]/default/files... Deploying resources... Updating deployment state... Deployment complete! -=== Job reads during 'bundle deploy --local': +=== Job reads during 'bundle deploy --plan-mode=local': >>> print_requests.py --get //jobs/get --keep { @@ -104,7 +104,7 @@ Deployment complete! } === Telemetry: -local_used true +plan_mode_used_local true >>> [CLI] bundle destroy --auto-approve The following resources will be deleted: diff --git a/acceptance/bundle/local/basic/script b/acceptance/bundle/local/basic/script index 2b0ca8bf28b..a3d77d4417b 100644 --- a/acceptance/bundle/local/basic/script +++ b/acceptance/bundle/local/basic/script @@ -13,39 +13,39 @@ rm -f out.requests.txt BAR_ID=$($CLI bundle summary -o json | jq -r '.resources.jobs.bar.id') -# A --local plan reports no drift without reading the remote state of the jobs: +# A --plan-mode=local plan reports no drift without reading the remote state of the jobs: # no GET is issued. The ${resources.jobs.bar.id} reference still resolves because # it comes from the local state, not a remote read. -trace $CLI bundle plan --local -title "Job reads during 'bundle plan --local':\n" +trace $CLI bundle plan --plan-mode=local +title "Job reads during 'bundle plan --plan-mode=local':\n" trace print_requests.py --get //jobs/get -# Rename bar out-of-band (simulates remote drift). --local plan still shows +# Rename bar out-of-band (simulates remote drift). --plan-mode=local plan still shows # no changes: it never reads remote state, so the rename is invisible to it. edit_resource.py jobs $BAR_ID <<'EOF' r["name"] = r["name"] + "-drifted" EOF rm -f out.requests.txt -title "After out-of-band rename of bar: --local plan still shows no drift:\n" -trace $CLI bundle plan --local -title "Job reads during --local plan after drift:\n" +title "After out-of-band rename of bar: --plan-mode=local plan still shows no drift:\n" +trace $CLI bundle plan --plan-mode=local +title "Job reads during --plan-mode=local plan after drift:\n" trace print_requests.py --get //jobs/get # The JSON plan is self-describing: local_only is true, so deploy --plan can warn # before applying it. remote_state is the saved local state (used as the stand-in -# for remote in --local), not a fresh read. -title "Plan --local as JSON:\n" -trace $CLI bundle plan --local -o json | tee plan.local.json -title "Job reads during 'bundle plan --local -o json':\n" +# for remote in --plan-mode=local), not a fresh read. +title "Plan --plan-mode=local as JSON:\n" +trace $CLI bundle plan --plan-mode=local -o json | tee plan.local.json +title "Job reads during 'bundle plan --plan-mode=local -o json':\n" trace print_requests.py --get //jobs/get -# deploy --plan with a --local plan warns that the plan may miss out-of-band drift. +# deploy --plan with a --plan-mode=local plan warns that the plan may miss out-of-band drift. # READPLAN matrix runs this twice: once applying the saved plan (warns), once without. -title "Deploy --plan with --local plan (warns):\n" +title "Deploy --plan with --plan-mode=local plan (warns):\n" $CLI bundle deploy $(readplanarg plan.local.json) > LOG.deploy_plan 2>&1 # contains.py echoes stdin, so route its passthrough to a LOG file: the deploy -# output (and the --local warning, present only when READPLAN=1) must not leak +# output (and the --plan-mode=local warning, present only when READPLAN=1) must not leak # into output.txt or the two matrix variants would diverge. cat LOG.deploy_plan | contains.py '!panic' '!internal error' > LOG.contains if [[ -n "$READPLAN" ]]; then @@ -53,9 +53,9 @@ if [[ -n "$READPLAN" ]]; then fi rm -f out.requests.txt -# A --local deploy likewise does not read remote state up front and reports its use via telemetry. -trace $CLI bundle deploy --local -title "Job reads during 'bundle deploy --local':\n" +# A --plan-mode=local deploy likewise does not read remote state up front and reports its use via telemetry. +trace $CLI bundle deploy --plan-mode=local +title "Job reads during 'bundle deploy --plan-mode=local':\n" trace print_requests.py --get //jobs/get --keep title "Telemetry:\n" -print_telemetry_bool_values | grep '^local_used ' +print_telemetry_bool_values | grep '^plan_mode_used_local ' diff --git a/acceptance/bundle/local/basic/test.toml b/acceptance/bundle/local/basic/test.toml index c5943235881..4913bbb9147 100644 --- a/acceptance/bundle/local/basic/test.toml +++ b/acceptance/bundle/local/basic/test.toml @@ -1,9 +1,9 @@ Local = true Cloud = true RecordRequests = true -# --local skips the per-resource remote read, which only the direct engine performs. +# --plan-mode=local skips the per-resource remote read, which only the direct engine performs. EnvMatrix.DATABRICKS_BUNDLE_ENGINE = ["direct"] -# READPLAN=1 feeds the saved --local plan to deploy --plan; the warning is asserted in script. +# READPLAN=1 feeds the saved local plan to deploy --plan; the warning is asserted in script. EnvMatrix.READPLAN = ["", "1"] # databricks.yml is generated at runtime from the template. Ignore = [".databricks", ".gitignore", "databricks.yml", "plan.local.json"] diff --git a/acceptance/bundle/local/references/output.txt b/acceptance/bundle/local/references/output.txt index 39bb5bff2ac..5d572d5eb4e 100644 --- a/acceptance/bundle/local/references/output.txt +++ b/acceptance/bundle/local/references/output.txt @@ -5,10 +5,10 @@ Deploying resources... Updating deployment state... Deployment complete! ->>> [CLI] bundle plan --local +>>> [CLI] bundle plan --plan-mode=local Plan: 0 to add, 0 to change, 0 to delete, 2 unchanged -=== Job reads during 'bundle plan --local': +=== Job reads during 'bundle plan --plan-mode=local': >>> print_requests.py --get //jobs/get { @@ -19,12 +19,12 @@ Plan: 0 to add, 0 to change, 0 to delete, 2 unchanged } } -=== After out-of-band rename of bar: --local plan still shows no drift: +=== After out-of-band rename of bar: --plan-mode=local plan still shows no drift: ->>> [CLI] bundle plan --local +>>> [CLI] bundle plan --plan-mode=local Plan: 0 to add, 0 to change, 0 to delete, 2 unchanged -=== Job reads during --local plan after drift: +=== Job reads during --plan-mode=local plan after drift: >>> print_requests.py --get //jobs/get { diff --git a/acceptance/bundle/local/references/script b/acceptance/bundle/local/references/script index e308fe1b21c..8ec736ef93e 100644 --- a/acceptance/bundle/local/references/script +++ b/acceptance/bundle/local/references/script @@ -12,11 +12,11 @@ rm -f out.requests.txt BAR_ID=$($CLI bundle summary -o json | jq -r '.resources.jobs.bar.id') -# A --local plan skips proactive remote reads but still resolves references. +# A --plan-mode=local plan skips proactive remote reads but still resolves references. # foo references bar.creator_user_name, which is remote-only (absent from config), # so remoteStateForRef fetches bar on demand. Only that one GET is issued. -trace $CLI bundle plan --local -title "Job reads during 'bundle plan --local':\n" +trace $CLI bundle plan --plan-mode=local +title "Job reads during 'bundle plan --plan-mode=local':\n" trace print_requests.py --get //jobs/get # Rename bar out-of-band (simulates remote drift). @@ -25,11 +25,11 @@ r["name"] = r["name"] + "-drifted" EOF rm -f out.requests.txt -# --local plan still reports no drift: it compares config against saved local +# --plan-mode=local plan still reports no drift: it compares config against saved local # state and never reads the remote, so the out-of-band rename is invisible. -title "After out-of-band rename of bar: --local plan still shows no drift:\n" -trace $CLI bundle plan --local -title "Job reads during --local plan after drift:\n" +title "After out-of-band rename of bar: --plan-mode=local plan still shows no drift:\n" +trace $CLI bundle plan --plan-mode=local +title "Job reads during --plan-mode=local plan after drift:\n" trace print_requests.py --get //jobs/get # Normal plan reads remote and detects the drift. diff --git a/acceptance/bundle/local/rejected/output.txt b/acceptance/bundle/local/rejected/output.txt index a51d51b27d3..ed51c27290f 100644 --- a/acceptance/bundle/local/rejected/output.txt +++ b/acceptance/bundle/local/rejected/output.txt @@ -1,12 +1,12 @@ ->>> [CLI] bundle plan --local -Error: --local is only supported with the direct engine. See https://docs.databricks.com/aws/en/dev-tools/bundles/direct +>>> [CLI] bundle plan --plan-mode=local +Error: --plan-mode=local is only supported with the direct engine. See https://docs.databricks.com/aws/en/dev-tools/bundles/direct Exit code: 1 ->>> [CLI] bundle deploy --local -Error: --local is only supported with the direct engine. See https://docs.databricks.com/aws/en/dev-tools/bundles/direct +>>> [CLI] bundle deploy --plan-mode=local +Error: --plan-mode=local is only supported with the direct engine. See https://docs.databricks.com/aws/en/dev-tools/bundles/direct Exit code: 1 diff --git a/acceptance/bundle/local/rejected/script b/acceptance/bundle/local/rejected/script index 722f6ea3ae3..4d6a50af883 100644 --- a/acceptance/bundle/local/rejected/script +++ b/acceptance/bundle/local/rejected/script @@ -1,3 +1,3 @@ -# --local is only supported by the direct engine; both plan and deploy reject it. -errcode trace $CLI bundle plan --local -errcode trace $CLI bundle deploy --local +# --plan-mode=local is only supported by the direct engine; both plan and deploy reject it. +errcode trace $CLI bundle plan --plan-mode=local +errcode trace $CLI bundle deploy --plan-mode=local diff --git a/acceptance/bundle/resources/catalogs/basic/out.test.toml b/acceptance/bundle/resources/catalogs/basic/out.test.toml index 5e66915254d..15ac5620b02 100644 --- a/acceptance/bundle/resources/catalogs/basic/out.test.toml +++ b/acceptance/bundle/resources/catalogs/basic/out.test.toml @@ -4,3 +4,4 @@ RequiresUnityCatalog = true GOOSOnPR.darwin = false GOOSOnPR.windows = false EnvMatrix.DATABRICKS_BUNDLE_ENGINE = ["direct"] +EnvMatrix.PLANMODE = ["", "--plan-mode=local"] diff --git a/acceptance/bundle/resources/catalogs/basic/script b/acceptance/bundle/resources/catalogs/basic/script index 37e773b80a4..d8fb43d0934 100644 --- a/acceptance/bundle/resources/catalogs/basic/script +++ b/acceptance/bundle/resources/catalogs/basic/script @@ -12,7 +12,7 @@ cleanup() { trap cleanup EXIT title "Deploy bundle with catalog" -trace $CLI bundle deploy $LOCAL +trace $CLI bundle deploy $PLANMODE title "Assert the catalog is created" trace $CLI catalogs get "${CATALOG_NAME}" | jq "{name, comment, properties}" @@ -21,7 +21,7 @@ title "Update catalog comment" update_file.py databricks.yml "This catalog was created from DABs" "Updated comment from DABs" title "Redeploy with updated comment" -trace $CLI bundle deploy $LOCAL +trace $CLI bundle deploy $PLANMODE title "Assert the catalog comment is updated" trace $CLI catalogs get "${CATALOG_NAME}" | jq "{name, comment}" diff --git a/acceptance/bundle/resources/catalogs/basic/test.toml b/acceptance/bundle/resources/catalogs/basic/test.toml index b5748fa464d..4df5b29a598 100644 --- a/acceptance/bundle/resources/catalogs/basic/test.toml +++ b/acceptance/bundle/resources/catalogs/basic/test.toml @@ -8,14 +8,14 @@ Ignore = [ "databricks.yml", ] -# Also run with --local: plan/deploy issue the same requests with or without --local +# Also run with --plan-mode=local: plan/deploy issue the same requests with or without --plan-mode=local # so the recorded output is identical across variants. -EnvRepl.LOCAL = false +EnvRepl.PLANMODE = false [EnvMatrix] DATABRICKS_BUNDLE_ENGINE = ["direct"] - LOCAL = ["", "--local"] + PLANMODE = ["", "--plan-mode=local"] [[Repls]] -Old = " --local" +Old = " --plan-mode=local" New = "" diff --git a/acceptance/bundle/resources/catalogs/with-schemas/out.test.toml b/acceptance/bundle/resources/catalogs/with-schemas/out.test.toml index 5e66915254d..15ac5620b02 100644 --- a/acceptance/bundle/resources/catalogs/with-schemas/out.test.toml +++ b/acceptance/bundle/resources/catalogs/with-schemas/out.test.toml @@ -4,3 +4,4 @@ RequiresUnityCatalog = true GOOSOnPR.darwin = false GOOSOnPR.windows = false EnvMatrix.DATABRICKS_BUNDLE_ENGINE = ["direct"] +EnvMatrix.PLANMODE = ["", "--plan-mode=local"] diff --git a/acceptance/bundle/resources/catalogs/with-schemas/script b/acceptance/bundle/resources/catalogs/with-schemas/script index cc6c5031b18..450637df32a 100644 --- a/acceptance/bundle/resources/catalogs/with-schemas/script +++ b/acceptance/bundle/resources/catalogs/with-schemas/script @@ -16,7 +16,7 @@ cleanup() { trap cleanup EXIT title "Deploy bundle with catalog and schema" -trace $CLI bundle deploy $LOCAL +trace $CLI bundle deploy $PLANMODE title "Assert the catalog is created" trace $CLI catalogs get "${CATALOG_NAME}" | jq "{name, comment, properties}" @@ -36,7 +36,7 @@ title "Update catalog comment" update_file.py databricks.yml "Catalog created from DABs" "Updated catalog comment" title "Redeploy with updated catalog" -trace $CLI bundle deploy $LOCAL +trace $CLI bundle deploy $PLANMODE title "Assert catalog comment is updated" trace $CLI catalogs get "${CATALOG_NAME}" | jq "{name, comment}" diff --git a/acceptance/bundle/resources/catalogs/with-schemas/test.toml b/acceptance/bundle/resources/catalogs/with-schemas/test.toml index b5748fa464d..4df5b29a598 100644 --- a/acceptance/bundle/resources/catalogs/with-schemas/test.toml +++ b/acceptance/bundle/resources/catalogs/with-schemas/test.toml @@ -8,14 +8,14 @@ Ignore = [ "databricks.yml", ] -# Also run with --local: plan/deploy issue the same requests with or without --local +# Also run with --plan-mode=local: plan/deploy issue the same requests with or without --plan-mode=local # so the recorded output is identical across variants. -EnvRepl.LOCAL = false +EnvRepl.PLANMODE = false [EnvMatrix] DATABRICKS_BUNDLE_ENGINE = ["direct"] - LOCAL = ["", "--local"] + PLANMODE = ["", "--plan-mode=local"] [[Repls]] -Old = " --local" +Old = " --plan-mode=local" New = "" diff --git a/acceptance/bundle/resources/external_locations/out.test.toml b/acceptance/bundle/resources/external_locations/out.test.toml index dacaf56fd57..82a6b01214e 100644 --- a/acceptance/bundle/resources/external_locations/out.test.toml +++ b/acceptance/bundle/resources/external_locations/out.test.toml @@ -4,3 +4,4 @@ RequiresUnityCatalog = true GOOSOnPR.darwin = false GOOSOnPR.windows = false EnvMatrix.DATABRICKS_BUNDLE_ENGINE = ["direct"] +EnvMatrix.PLANMODE = ["", "--plan-mode=local"] diff --git a/acceptance/bundle/resources/external_locations/script b/acceptance/bundle/resources/external_locations/script index 8bb789de93b..5c725f31598 100755 --- a/acceptance/bundle/resources/external_locations/script +++ b/acceptance/bundle/resources/external_locations/script @@ -12,8 +12,8 @@ cleanup() { trap cleanup EXIT title "Deploy bundle with catalog and external location" -trace $CLI bundle plan $LOCAL -trace $CLI bundle deploy $LOCAL +trace $CLI bundle plan $PLANMODE +trace $CLI bundle deploy $PLANMODE title "Assert the catalog is created with grants" trace $CLI catalogs get "${CATALOG_NAME}" | jq "{name, comment, properties}" @@ -27,8 +27,8 @@ title "Update external location comment" update_file.py databricks.yml "Test external location from DABs" "Updated external location from DABs" title "Redeploy with updated comment" -trace $CLI bundle plan $LOCAL -trace $CLI bundle deploy $LOCAL +trace $CLI bundle plan $PLANMODE +trace $CLI bundle deploy $PLANMODE title "Assert the external location comment is updated" trace $CLI external-locations get "${EXT_LOCATION_NAME}" | jq "{name, comment}" @@ -37,8 +37,8 @@ title "Update catalog comment" update_file.py databricks.yml "Test catalog for external locations" "Updated catalog for external locations" title "Redeploy with updated catalog comment" -trace $CLI bundle plan $LOCAL -trace $CLI bundle deploy $LOCAL +trace $CLI bundle plan $PLANMODE +trace $CLI bundle deploy $PLANMODE title "Assert the catalog comment is updated" trace $CLI catalogs get "${CATALOG_NAME}" | jq "{name, comment}" diff --git a/acceptance/bundle/resources/external_locations/test.toml b/acceptance/bundle/resources/external_locations/test.toml index d8e87eaa000..fdcf4a30259 100644 --- a/acceptance/bundle/resources/external_locations/test.toml +++ b/acceptance/bundle/resources/external_locations/test.toml @@ -10,14 +10,14 @@ Ignore = [ "databricks.yml", ] -# Also run with --local: plan/deploy issue the same requests with or without --local +# Also run with --plan-mode=local: plan/deploy issue the same requests with or without --plan-mode=local # so the recorded output is identical across variants. -EnvRepl.LOCAL = false +EnvRepl.PLANMODE = false [EnvMatrix] DATABRICKS_BUNDLE_ENGINE = ["direct"] - LOCAL = ["", "--local"] + PLANMODE = ["", "--plan-mode=local"] [[Repls]] -Old = " --local" +Old = " --plan-mode=local" New = "" diff --git a/acceptance/bundle/resources/jobs/num_workers/out.test.toml b/acceptance/bundle/resources/jobs/num_workers/out.test.toml index 67759662971..f0a9130c5bc 100644 --- a/acceptance/bundle/resources/jobs/num_workers/out.test.toml +++ b/acceptance/bundle/resources/jobs/num_workers/out.test.toml @@ -3,3 +3,4 @@ Cloud = false GOOSOnPR.darwin = false GOOSOnPR.windows = false EnvMatrix.DATABRICKS_BUNDLE_ENGINE = ["terraform", "direct"] +EnvMatrix.PLANMODE = ["", "--plan-mode=local"] diff --git a/acceptance/bundle/resources/jobs/num_workers/script b/acceptance/bundle/resources/jobs/num_workers/script index 45b9270143b..d1819be1ecc 100644 --- a/acceptance/bundle/resources/jobs/num_workers/script +++ b/acceptance/bundle/resources/jobs/num_workers/script @@ -1,6 +1,6 @@ envsubst < databricks.yml.tmpl > databricks.yml -trace $CLI bundle deploy $LOCAL +trace $CLI bundle deploy $PLANMODE trace print_requests.py //jobs -trace $CLI bundle plan $LOCAL +trace $CLI bundle plan $PLANMODE rm out.requests.txt diff --git a/acceptance/bundle/resources/jobs/num_workers/test.toml b/acceptance/bundle/resources/jobs/num_workers/test.toml index 8c3547c70b4..f743b113807 100644 --- a/acceptance/bundle/resources/jobs/num_workers/test.toml +++ b/acceptance/bundle/resources/jobs/num_workers/test.toml @@ -1,12 +1,12 @@ -# Also run plan/deploy with --local (direct engine only; rejected on terraform). -# Deploy issues the same mutating requests with or without --local — only the +# Also run plan/deploy with --plan-mode=local (direct engine only; rejected on terraform). +# Deploy issues the same mutating requests with or without --plan-mode=local — only the # remote reads (GETs, excluded from print_requests.py) differ — so the recorded -# output is identical across variants. The " --local" token is stripped from the -# command echo so the >>> lines match the non-local variant. -EnvMatrix.LOCAL = ["", "--local"] -EnvMatrixExclude.no_local_on_terraform = ["LOCAL=--local", "DATABRICKS_BUNDLE_ENGINE=terraform"] -EnvRepl.LOCAL = false +# output is identical across variants. The " --plan-mode=local" token is stripped from the +# command echo so the >>> lines match the non-plan-mode variant. +EnvMatrix.PLANMODE = ["", "--plan-mode=local"] +EnvMatrixExclude.no_local_on_terraform = ["PLANMODE=--plan-mode=local", "DATABRICKS_BUNDLE_ENGINE=terraform"] +EnvRepl.PLANMODE = false [[Repls]] -Old = " --local" +Old = " --plan-mode=local" New = "" diff --git a/acceptance/bundle/resources/schemas/update/out.test.toml b/acceptance/bundle/resources/schemas/update/out.test.toml index 67759662971..f0a9130c5bc 100644 --- a/acceptance/bundle/resources/schemas/update/out.test.toml +++ b/acceptance/bundle/resources/schemas/update/out.test.toml @@ -3,3 +3,4 @@ Cloud = false GOOSOnPR.darwin = false GOOSOnPR.windows = false EnvMatrix.DATABRICKS_BUNDLE_ENGINE = ["terraform", "direct"] +EnvMatrix.PLANMODE = ["", "--plan-mode=local"] diff --git a/acceptance/bundle/resources/schemas/update/script b/acceptance/bundle/resources/schemas/update/script index 6bafac9ae6c..bcf7a58f51e 100644 --- a/acceptance/bundle/resources/schemas/update/script +++ b/acceptance/bundle/resources/schemas/update/script @@ -1,12 +1,12 @@ echo "*" > .gitignore -trace $CLI bundle deploy $LOCAL +trace $CLI bundle deploy $PLANMODE trace print_requests.py //unity read_state.py schemas schema1 id name catalog_name comment title "Update comment and re-deploy" trace update_file.py databricks.yml COMMENT1 COMMENT2 -trace $CLI bundle deploy $LOCAL +trace $CLI bundle deploy $PLANMODE # Why the first time request match for direct & terraform, the requests from second deploy no longer match: # Terraform also sends "enable_predictive_optimization": "INHERIT" which is remote value that it stored in the state. trace print_requests.py //unity | gron.py | grep -v enable_predictive_optimization @@ -14,7 +14,7 @@ read_state.py schemas schema1 id name catalog_name comment title "Restore comment to original value and re-deploy" trace update_file.py databricks.yml COMMENT2 COMMENT1 -trace $CLI bundle deploy $LOCAL +trace $CLI bundle deploy $PLANMODE trace print_requests.py //unity | gron.py | grep -v enable_predictive_optimization read_state.py schemas schema1 id name catalog_name comment diff --git a/acceptance/bundle/resources/schemas/update/test.toml b/acceptance/bundle/resources/schemas/update/test.toml index 8c3547c70b4..f743b113807 100644 --- a/acceptance/bundle/resources/schemas/update/test.toml +++ b/acceptance/bundle/resources/schemas/update/test.toml @@ -1,12 +1,12 @@ -# Also run plan/deploy with --local (direct engine only; rejected on terraform). -# Deploy issues the same mutating requests with or without --local — only the +# Also run plan/deploy with --plan-mode=local (direct engine only; rejected on terraform). +# Deploy issues the same mutating requests with or without --plan-mode=local — only the # remote reads (GETs, excluded from print_requests.py) differ — so the recorded -# output is identical across variants. The " --local" token is stripped from the -# command echo so the >>> lines match the non-local variant. -EnvMatrix.LOCAL = ["", "--local"] -EnvMatrixExclude.no_local_on_terraform = ["LOCAL=--local", "DATABRICKS_BUNDLE_ENGINE=terraform"] -EnvRepl.LOCAL = false +# output is identical across variants. The " --plan-mode=local" token is stripped from the +# command echo so the >>> lines match the non-plan-mode variant. +EnvMatrix.PLANMODE = ["", "--plan-mode=local"] +EnvMatrixExclude.no_local_on_terraform = ["PLANMODE=--plan-mode=local", "DATABRICKS_BUNDLE_ENGINE=terraform"] +EnvRepl.PLANMODE = false [[Repls]] -Old = " --local" +Old = " --plan-mode=local" New = "" diff --git a/acceptance/bundle/resources/volumes/change-name/out.test.toml b/acceptance/bundle/resources/volumes/change-name/out.test.toml index 67759662971..f0a9130c5bc 100644 --- a/acceptance/bundle/resources/volumes/change-name/out.test.toml +++ b/acceptance/bundle/resources/volumes/change-name/out.test.toml @@ -3,3 +3,4 @@ Cloud = false GOOSOnPR.darwin = false GOOSOnPR.windows = false EnvMatrix.DATABRICKS_BUNDLE_ENGINE = ["terraform", "direct"] +EnvMatrix.PLANMODE = ["", "--plan-mode=local"] diff --git a/acceptance/bundle/resources/volumes/change-name/script b/acceptance/bundle/resources/volumes/change-name/script index 8c4b1289d61..6c186c7255e 100644 --- a/acceptance/bundle/resources/volumes/change-name/script +++ b/acceptance/bundle/resources/volumes/change-name/script @@ -1,4 +1,4 @@ -trace $CLI bundle deploy $LOCAL +trace $CLI bundle deploy $PLANMODE trace print_requests.py //unity @@ -8,10 +8,10 @@ $CLI bundle summary -o json | jq .resources title "Update name" trace update_file.py databricks.yml myvolume mynewvolume -trace $CLI bundle plan $LOCAL +trace $CLI bundle plan $PLANMODE # terraform marks this as "update", direct marks this as "update_with_id" $CLI bundle plan -o json > out.plan.$DATABRICKS_BUNDLE_ENGINE.json -trace $CLI bundle deploy $LOCAL +trace $CLI bundle deploy $PLANMODE trace print_requests.py //unity trace $CLI volumes read main.myschema.mynewvolume diff --git a/acceptance/bundle/resources/volumes/change-name/test.toml b/acceptance/bundle/resources/volumes/change-name/test.toml index 866e7b2f13c..fa93981e208 100644 --- a/acceptance/bundle/resources/volumes/change-name/test.toml +++ b/acceptance/bundle/resources/volumes/change-name/test.toml @@ -2,16 +2,16 @@ Ignore = [ ".databricks", ] -# Also run plan/deploy with --local (direct engine only; rejected on terraform). -# Deploy issues the same mutating requests with or without --local — only the +# Also run plan/deploy with --plan-mode=local (direct engine only; rejected on terraform). +# Deploy issues the same mutating requests with or without --plan-mode=local — only the # remote reads (GETs, excluded from print_requests.py) differ — so the recorded -# output is identical across variants. The " --local" token is stripped from the -# command echo so the >>> lines match the non-local variant. Note: the JSON plan -# (`bundle plan -o json`) keeps no --local: its remote_state would differ. -EnvMatrix.LOCAL = ["", "--local"] -EnvMatrixExclude.no_local_on_terraform = ["LOCAL=--local", "DATABRICKS_BUNDLE_ENGINE=terraform"] -EnvRepl.LOCAL = false +# output is identical across variants. The " --plan-mode=local" token is stripped from the +# command echo so the >>> lines match the non-plan-mode variant. Note: the JSON plan +# (`bundle plan -o json`) keeps no --plan-mode=local: its remote_state would differ. +EnvMatrix.PLANMODE = ["", "--plan-mode=local"] +EnvMatrixExclude.no_local_on_terraform = ["PLANMODE=--plan-mode=local", "DATABRICKS_BUNDLE_ENGINE=terraform"] +EnvRepl.PLANMODE = false [[Repls]] -Old = " --local" +Old = " --plan-mode=local" New = "" diff --git a/bundle/bundle.go b/bundle/bundle.go index 60b9309468f..27131f9c38a 100644 --- a/bundle/bundle.go +++ b/bundle/bundle.go @@ -15,6 +15,7 @@ import ( "time" "github.com/databricks/cli/bundle/config" + "github.com/databricks/cli/bundle/deployplan" "github.com/databricks/cli/bundle/direct" "github.com/databricks/cli/bundle/env" "github.com/databricks/cli/bundle/metadata" @@ -162,9 +163,9 @@ type Bundle struct { // When non-empty, only the specified resources are included in deployment. Select []string - // Local, when set via the --local flag, plans and deploys using only the local - // state. The remote state of resources is neither fetched nor considered. - Local bool + // PlanMode is the plan-computation mode selected via --plan-mode. Empty is + // the default (full remote-aware planning). See deployplan.PlanMode. + PlanMode deployplan.PlanMode // SkipLocalFileValidation makes path translation tolerant of missing local files. // When set, TranslatePaths computes workspace paths without verifying files exist. diff --git a/bundle/deployplan/plan.go b/bundle/deployplan/plan.go index fe7eef64f9e..696286e542f 100644 --- a/bundle/deployplan/plan.go +++ b/bundle/deployplan/plan.go @@ -15,16 +15,57 @@ import ( const currentPlanVersion = 2 +// PlanMode determines how much the planner talks to the workspace when +// computing a plan. +// +// - Full (default): the per-resource remote read runs; drift detection is +// complete. +// - Local: the per-resource remote read is skipped. Cross-resource references +// resolve from local state; a reference to a remote-only field on an +// otherwise-unchanged target fetches that one target on demand. +// - Offline: no remote reads at all during plan. References to changing +// targets stay unresolved; references to unchanged targets read from the +// saved local state. Deploy of an Offline plan is allowed — Offline is a +// plan-time property, not a deploy-time restriction. +type PlanMode string + +const ( + PlanModeFull PlanMode = "" + PlanModeLocal PlanMode = "local" + PlanModeOffline PlanMode = "offline" +) + +// SkipsRemoteReads reports whether the mode avoids the proactive per-resource +// remote read (Local and Offline). +func (m PlanMode) SkipsRemoteReads() bool { + return m == PlanModeLocal || m == PlanModeOffline +} + +// ParsePlanMode parses the value of the --plan-mode flag. An empty value is +// PlanModeFull; "full", "local", and "offline" are accepted. Unknown values +// produce an actionable error. +func ParsePlanMode(s string) (PlanMode, error) { + switch s { + case "", "full": + return PlanModeFull, nil + case "local": + return PlanModeLocal, nil + case "offline": + return PlanModeOffline, nil + default: + return "", fmt.Errorf("invalid --plan-mode %q (want full, local, or offline)", s) + } +} + type Plan struct { PlanVersion int `json:"plan_version,omitempty"` CLIVersion string `json:"cli_version,omitempty"` Lineage string `json:"lineage,omitempty"` Serial int `json:"serial,omitempty"` - // LocalOnly is set when the plan was computed with --local, i.e. without - // fetching the remote state of resources. Such a plan can miss out-of-band - // drift, so consumers like "deploy --plan" warn before applying it. - LocalOnly bool `json:"local_only,omitempty"` + // Mode records how the plan was computed. Consumers like "deploy --plan" + // warn before applying a non-Full plan since it may miss out-of-band drift. + Mode PlanMode `json:"plan_mode,omitempty"` Plan map[string]*PlanEntry `json:"plan,omitzero"` diff --git a/bundle/direct/bind.go b/bundle/direct/bind.go index fa55701e92c..c286f9e4dc7 100644 --- a/bundle/direct/bind.go +++ b/bundle/direct/bind.go @@ -114,7 +114,7 @@ func (b *DeploymentBundle) Bind(ctx context.Context, client *databricks.Workspac os.Remove(tmpStatePath) return nil, err } - plan, err := b.CalculatePlan(ctx, client, configRoot, false) + plan, err := b.CalculatePlan(ctx, client, configRoot, deployplan.PlanModeFull) if err != nil { os.Remove(tmpStatePath) return nil, err @@ -170,7 +170,7 @@ func (b *DeploymentBundle) Bind(ctx context.Context, client *databricks.Workspac os.Remove(tmpStatePath) return nil, err } - plan, err = b.CalculatePlan(ctx, client, configRoot, false) + plan, err = b.CalculatePlan(ctx, client, configRoot, deployplan.PlanModeFull) if _, ferr := b.StateDB.Finalize(ctx); ferr != nil { log.Warnf(ctx, "failed to finalize state: %v", ferr) } diff --git a/bundle/direct/bundle_plan.go b/bundle/direct/bundle_plan.go index bdd5777288a..2f2a0acdd15 100644 --- a/bundle/direct/bundle_plan.go +++ b/bundle/direct/bundle_plan.go @@ -117,9 +117,8 @@ func (b *DeploymentBundle) InitForApply(ctx context.Context, client *databricks. // CalculatePlan computes the deployment plan by comparing local config against remote state. // StateDB must already be open for read before calling this function. // -// When localOnly is true, the remote state of resources is neither fetched nor considered: -// the plan is computed solely from the difference between the saved local state and the config. -func (b *DeploymentBundle) CalculatePlan(ctx context.Context, client *databricks.WorkspaceClient, configRoot *config.Root, localOnly bool) (*deployplan.Plan, error) { +// mode controls how much of the remote state is consulted. See deployplan.PlanMode. +func (b *DeploymentBundle) CalculatePlan(ctx context.Context, client *databricks.WorkspaceClient, configRoot *config.Root, mode deployplan.PlanMode) (*deployplan.Plan, error) { b.StateDB.AssertOpenedForRead() err := b.init(client) @@ -132,7 +131,8 @@ func (b *DeploymentBundle) CalculatePlan(ctx context.Context, client *databricks return nil, fmt.Errorf("reading config: %w", err) } - plan.LocalOnly = localOnly + plan.Mode = mode + skipsRemoteReads := mode.SkipsRemoteReads() b.Plan = plan g, err := makeGraph(plan) @@ -182,7 +182,7 @@ func (b *DeploymentBundle) CalculatePlan(ctx context.Context, client *databricks return false } - if localOnly { + if skipsRemoteReads { // The resource is being deleted because it is absent from config; // its remote status is irrelevant, so skip the remote read. return true @@ -251,7 +251,7 @@ func (b *DeploymentBundle) CalculatePlan(ctx context.Context, client *databricks var remoteDiff []structdiff.Change var remoteStateComparable any - if localOnly { + if skipsRemoteReads { // --local skips the remote read. Treat the saved state as the remote: // it is our last recorded snapshot of remote, so drift is computed // purely from saved-state vs config. This also lets OverrideChangeDesc @@ -303,7 +303,7 @@ func (b *DeploymentBundle) CalculatePlan(ctx context.Context, client *databricks // is not. OverrideChangeDesc hooks read the reconciled value from // ch.Remote (populated from saved state above) instead. var rawRemote any - if !localOnly { + if !skipsRemoteReads { rawRemote = entry.RemoteState } err = addPerFieldActions(ctx, adapter, entry.Changes, rawRemote) @@ -312,7 +312,7 @@ func (b *DeploymentBundle) CalculatePlan(ctx context.Context, client *databricks return false } - if entry.RemoteState == nil && !localOnly { + if entry.RemoteState == nil && !skipsRemoteReads { // Even if local action is "recreate" which is higher than "create", we should still pick "create" here // because we know remote does not exist. action = deployplan.Create @@ -325,7 +325,7 @@ func (b *DeploymentBundle) CalculatePlan(ctx context.Context, client *databricks // Note, remoteState may be updated post-deploy, so whether it can be used for // variable resolution depends on several factors, see canReadRemoteCache in LookupReferencePreDeploy. // In --local mode the store is skipped so remoteStateForRef fetches on demand (it keys off cache absence). - if !localOnly { + if !skipsRemoteReads { b.RemoteStateCache.Store(resourceKey, entry.RemoteState) } @@ -349,7 +349,7 @@ func (b *DeploymentBundle) CalculatePlan(ctx context.Context, client *databricks // after the parallel walk so the write to entry.RemoteState is single-threaded: // during the walk a target is fetched from a dependent's goroutine under the // target's read lock, where writing its entry would race with sibling dependents. - if localOnly { + if skipsRemoteReads { for key, entry := range plan.Plan { if remoteState, ok := b.RemoteStateCache.Load(key); ok { entry.RemoteState = remoteState @@ -856,9 +856,9 @@ func (b *DeploymentBundle) LookupReferencePreDeploy(ctx context.Context, path *s // remoteStateForRef returns the remote state of a referenced target resource for // reference resolution. Normally the state was cached when the target was processed -// (targets precede their dependents in DAG order). In --local mode that proactive +// (targets precede their dependents in DAG order). In --plan-mode=local the proactive // read is skipped, so fetch it on demand here: a reference to a remote-only field -// genuinely needs the remote state, so we ignore --local for that target. +// genuinely needs the remote state, so we ignore --plan-mode=local for that target. // // The bool reports whether a value is available. In non-local mode a cache miss // returns (nil, false, nil) and the caller surfaces its own internal error. @@ -867,7 +867,7 @@ func (b *DeploymentBundle) remoteStateForRef(ctx context.Context, targetResource return remoteState, true, nil } - if !b.Plan.LocalOnly { + if b.Plan.Mode != deployplan.PlanModeLocal { return nil, false, nil } diff --git a/bundle/direct/dresources/app_test.go b/bundle/direct/dresources/app_test.go index 7fc6f766b78..dc01482b3f4 100644 --- a/bundle/direct/dresources/app_test.go +++ b/bundle/direct/dresources/app_test.go @@ -195,39 +195,10 @@ func TestAppOverrideChangeDescActiveDeployment(t *testing.T) { } for _, tc := range tests { t.Run(tc.name, func(t *testing.T) { - - change := &ChangeDesc{} + change := &ChangeDesc{Action: deployplan.Update} require.NoError(t, r.OverrideChangeDesc(t.Context(), tc.path, change, tc.remote)) assert.Equal(t, tc.wantAction, change.Action) }) } } -func TestAppOverrideChangeDescSourceCodePath(t *testing.T) { - r := &ResourceApp{} - pathSCP := structpath.MustParsePath("source_code_path") - pathOther := structpath.MustParsePath("name") - - // Every case passes a typed nil for the raw remote param — this matches what - // calladapt delivers when the remote read is skipped in --local mode or the - // resource does not exist. If the hook regresses to dereferencing that param, - // every row panics. - tests := []struct { - name string - path *structpath.PathNode - remote any - wantAction deployplan.ActionType - }{ - {"Skip when remote is empty", pathSCP, "", deployplan.Skip}, - {`Skip when remote is "null"`, pathSCP, "null", deployplan.Skip}, - {"Untouched when remote is a real path", pathSCP, "/actual", deployplan.Update}, - {"Other paths untouched", pathOther, "", deployplan.Update}, - } - for _, tc := range tests { - t.Run(tc.name, func(t *testing.T) { - change := &ChangeDesc{Action: deployplan.Update, Old: "/old", New: "/new", Remote: tc.remote} - require.NoError(t, r.OverrideChangeDesc(t.Context(), tc.path, change, (*AppRemote)(nil))) - assert.Equal(t, tc.wantAction, change.Action) - }) - } -} diff --git a/bundle/metrics/metrics.go b/bundle/metrics/metrics.go index 5fa0815fd53..b0607f17073 100644 --- a/bundle/metrics/metrics.go +++ b/bundle/metrics/metrics.go @@ -10,7 +10,10 @@ const ( ClusterLifecycleStarted = "cluster_lifecycle_started" SqlWarehouseLifecycleStarted = "sql_warehouse_lifecycle_started" SelectUsed = "select_used" - LocalUsed = "local_used" + + // PlanModeUsed is a metric-key prefix; the mode value ("local"/"offline") is + // appended per deploy, producing metric keys like plan_mode_used_local. + PlanModeUsed = "plan_mode_used" // Outcome of the dry-run migration to the direct engine attempted after a // successful terraform deploy WHEN THE USER DID NOT OPT IN. Only recorded diff --git a/bundle/phases/deploy.go b/bundle/phases/deploy.go index d64996a9c8a..515d3e8880c 100644 --- a/bundle/phases/deploy.go +++ b/bundle/phases/deploy.go @@ -270,7 +270,7 @@ func Deploy(ctx context.Context, b *bundle.Bundle, outputHandler sync.OutputHand func RunPlan(ctx context.Context, b *bundle.Bundle, engine engine.EngineType) *deployplan.Plan { if engine.IsDirect() { - plan, err := b.DeploymentBundle.CalculatePlan(ctx, b.WorkspaceClient(ctx), &b.Config, b.Local) + plan, err := b.DeploymentBundle.CalculatePlan(ctx, b.WorkspaceClient(ctx), &b.Config, b.PlanMode) if err != nil { logdiag.LogError(ctx, err) return nil diff --git a/bundle/phases/destroy.go b/bundle/phases/destroy.go index c6cbbc3bef9..9ec41e8e324 100644 --- a/bundle/phases/destroy.go +++ b/bundle/phases/destroy.go @@ -155,7 +155,7 @@ func Destroy(ctx context.Context, b *bundle.Bundle, engine engine.EngineType) { var plan *deployplan.Plan if engine.IsDirect() { - plan, err = b.DeploymentBundle.CalculatePlan(ctx, b.WorkspaceClient(ctx), nil, false) + plan, err = b.DeploymentBundle.CalculatePlan(ctx, b.WorkspaceClient(ctx), nil, deployplan.PlanModeFull) if err != nil { logdiag.LogError(ctx, err) return diff --git a/cmd/bundle/config_remote_sync.go b/cmd/bundle/config_remote_sync.go index 8e62748bb74..9fe1e35b146 100644 --- a/cmd/bundle/config_remote_sync.go +++ b/cmd/bundle/config_remote_sync.go @@ -9,6 +9,7 @@ import ( "github.com/databricks/cli/bundle" "github.com/databricks/cli/bundle/configsync" + "github.com/databricks/cli/bundle/deployplan" "github.com/databricks/cli/bundle/statemgmt" "github.com/databricks/cli/cmd/bundle/utils" "github.com/databricks/cli/cmd/root" @@ -87,7 +88,7 @@ Examples: return err } - plan, err := deployBundle.CalculatePlan(ctx, b.WorkspaceClient(ctx), &b.Config, false) + plan, err := deployBundle.CalculatePlan(ctx, b.WorkspaceClient(ctx), &b.Config, deployplan.PlanModeFull) if err != nil { stats.ErrorCategory = protos.BundleConfigRemoteSyncErrorCategoryDetectChangesFailed return fmt.Errorf("failed to detect changes: %w", err) diff --git a/cmd/bundle/deploy.go b/cmd/bundle/deploy.go index 8286e9072e7..7af0ea28387 100644 --- a/cmd/bundle/deploy.go +++ b/cmd/bundle/deploy.go @@ -4,6 +4,7 @@ package bundle import ( "github.com/databricks/cli/bundle" + "github.com/databricks/cli/bundle/deployplan" "github.com/databricks/cli/cmd/bundle/utils" "github.com/databricks/cli/cmd/root" "github.com/spf13/cobra" @@ -32,7 +33,7 @@ See https://docs.databricks.com/en/dev-tools/bundles/index.html for more informa var verbose bool var readPlanPath string var selectResources []string - var local bool + var planMode string cmd.Flags().BoolVar(&force, "force", false, "Force-override Git branch validation.") cmd.Flags().BoolVar(&forceLock, "force-lock", false, "Force acquisition of deployment lock.") cmd.Flags().BoolVar(&failOnActiveRuns, "fail-on-active-runs", false, "Fail if there are running jobs or pipelines in the deployment.") @@ -43,19 +44,23 @@ See https://docs.databricks.com/en/dev-tools/bundles/index.html for more informa cmd.Flags().BoolVar(&verbose, "verbose", false, "Enable verbose output.") cmd.Flags().StringVar(&readPlanPath, "plan", "", "Path to a JSON plan file to apply instead of planning (direct engine only).") cmd.Flags().StringSliceVar(&selectResources, "select", nil, "Deploy only the specified resource (e.g. 'my_job' or 'jobs.my_job'). Can be repeated or comma-separated.") - cmd.Flags().BoolVar(&local, "local", false, "Deploy using only the local state, without fetching the remote state of resources.") - cmd.Flags().MarkHidden("local") + cmd.Flags().StringVar(&planMode, "plan-mode", "", "How much of the remote state to consult when planning the deploy: full (default), local, offline.") + cmd.Flags().MarkHidden("plan-mode") // Verbose flag currently only affects file sync output, it's used by the vscode extension cmd.Flags().MarkHidden("verbose") cmd.RunE = func(cmd *cobra.Command, args []string) error { - _, err := utils.ProcessBundle(cmd, utils.ProcessOptions{ + mode, err := deployplan.ParsePlanMode(planMode) + if err != nil { + return err + } + _, err = utils.ProcessBundle(cmd, utils.ProcessOptions{ InitFunc: func(b *bundle.Bundle) { b.Config.Bundle.Force = force b.Config.Bundle.Deployment.Lock.Force = forceLock b.AutoApprove = autoApprove b.Select = selectResources - b.Local = local + b.PlanMode = mode if cmd.Flag("compute-id").Changed { b.Config.Bundle.ClusterId = clusterId diff --git a/cmd/bundle/plan.go b/cmd/bundle/plan.go index 952de22c8a1..efde1e7cca4 100644 --- a/cmd/bundle/plan.go +++ b/cmd/bundle/plan.go @@ -29,16 +29,20 @@ It is useful for previewing changes before running 'bundle deploy'.`, var force bool var clusterId string var selectResources []string - var local bool + var planMode string cmd.Flags().BoolVar(&force, "force", false, "Force-override Git branch validation.") cmd.Flags().StringVar(&clusterId, "compute-id", "", "Override cluster in the deployment with the given compute ID.") cmd.Flags().StringVarP(&clusterId, "cluster-id", "c", "", "Override cluster in the deployment with the given cluster ID.") cmd.Flags().MarkDeprecated("compute-id", "use --cluster-id instead") cmd.Flags().StringSliceVar(&selectResources, "select", nil, "Plan only the specified resource (e.g. 'my_job' or 'jobs.my_job'). Can be repeated or comma-separated.") - cmd.Flags().BoolVar(&local, "local", false, "Plan using only the local state, without fetching the remote state of resources.") - cmd.Flags().MarkHidden("local") + cmd.Flags().StringVar(&planMode, "plan-mode", "", "How much of the remote state to consult during plan: full (default), local, offline.") + cmd.Flags().MarkHidden("plan-mode") cmd.RunE = func(cmd *cobra.Command, args []string) error { + mode, err := deployplan.ParsePlanMode(planMode) + if err != nil { + return err + } opts := utils.ProcessOptions{ AlwaysPull: true, FastValidate: true, @@ -47,7 +51,7 @@ It is useful for previewing changes before running 'bundle deploy'.`, InitFunc: func(b *bundle.Bundle) { b.Config.Bundle.Force = force b.Select = selectResources - b.Local = local + b.PlanMode = mode if cmd.Flag("compute-id").Changed { b.Config.Bundle.ClusterId = clusterId diff --git a/cmd/bundle/utils/process.go b/cmd/bundle/utils/process.go index abafd8c6e0f..2c96adecca6 100644 --- a/cmd/bundle/utils/process.go +++ b/cmd/bundle/utils/process.go @@ -208,13 +208,13 @@ func ProcessBundleRet(cmd *cobra.Command, opts ProcessOptions) (b *bundle.Bundle return b, stateDesc, root.ErrAlreadyPrinted } - // --local skips the per-resource remote read, which only the direct engine performs. - if b.Local { + // --plan-mode local/offline skip the per-resource remote read; only the direct engine performs it. + if b.PlanMode.SkipsRemoteReads() { if !stateDesc.Engine.IsDirect() { - logdiag.LogError(ctx, errors.New("--local is only supported with the direct engine. See https://docs.databricks.com/aws/en/dev-tools/bundles/direct")) + logdiag.LogError(ctx, fmt.Errorf("--plan-mode=%s is only supported with the direct engine. See https://docs.databricks.com/aws/en/dev-tools/bundles/direct", b.PlanMode)) return b, stateDesc, root.ErrAlreadyPrinted } - b.Metrics.SetBoolValue(metrics.LocalUsed, true) + b.Metrics.SetBoolValue(metrics.PlanModeUsed+"_"+string(b.PlanMode), true) } // Open direct engine state once for all subsequent operations (ExportState, CalculatePlan, Apply, etc.) @@ -278,8 +278,8 @@ func ProcessBundleRet(cmd *cobra.Command, opts ProcessOptions) (b *bundle.Bundle if plan.CLIVersion != currentVersion { log.Warnf(ctx, "Plan was created with CLI version %s but current version is %s", plan.CLIVersion, currentVersion) } - if plan.LocalOnly { - log.Warnf(ctx, "Plan was created with --local and does not reflect the remote state of resources; applying it may miss out-of-band drift") + if plan.Mode.SkipsRemoteReads() { + log.Warnf(ctx, "Plan was created with --plan-mode=%s and does not reflect the remote state of resources; applying it may miss out-of-band drift", plan.Mode) } // Validate that the plan's lineage and serial match the current state From 301308cd507e41c0d1a56de767d7822b0fe83600 Mon Sep 17 00:00:00 2001 From: Denis Bilenko Date: Mon, 13 Jul 2026 18:56:27 +0200 Subject: [PATCH 17/25] direct: don't put StateType in entry.RemoteState; reject offline mode MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Two fixes from the cursor-agent review: 1. In --plan-mode=local, entry.RemoteState was being set to savedState (state type, e.g. *AppState). Apply-time consumers like remoteIsStarted type-assert to the remote type (*AppRemote) and silently returned false, which made manageLifecycle skip a Stop when config toggled lifecycle.started true → false. Leave entry.RemoteState nil in local mode; classification still uses savedState via the local remoteStateComparable variable that feeds change.Remote. 2. --plan-mode=offline was accepted at flag-parse but not wired: a reference to a remote-only field on an unchanged target hit an internal error in LookupReferencePreDeploy. Reject the value at parse time until Offline semantics are implemented. SkipsRemoteReads() narrowed to Local only. acc: local/rejected covers the offline rejection and unknown values. acc: local/basic output.txt regenerated (remote_state no longer present in local-mode plan JSON). Co-authored-by: Isaac --- acceptance/bundle/local/basic/output.txt | 38 ++------------------- acceptance/bundle/local/basic/script | 6 ++-- acceptance/bundle/local/rejected/output.txt | 15 ++++++++ acceptance/bundle/local/rejected/script | 7 ++++ bundle/deployplan/plan.go | 14 ++++---- bundle/direct/bundle_plan.go | 17 ++++++--- 6 files changed, 47 insertions(+), 50 deletions(-) diff --git a/acceptance/bundle/local/basic/output.txt b/acceptance/bundle/local/basic/output.txt index ea0353fe62e..51555a9d5a5 100644 --- a/acceptance/bundle/local/basic/output.txt +++ b/acceptance/bundle/local/basic/output.txt @@ -32,20 +32,7 @@ Plan: 0 to add, 0 to change, 0 to delete, 2 unchanged "plan_mode": "local", "plan": { "resources.jobs.bar": { - "action": "skip", - "remote_state": { - "deployment": { - "kind": "BUNDLE", - "metadata_file_path": "/Workspace/Users/[USERNAME]/.bundle/local-[UNIQUE_NAME]/default/state/metadata.json" - }, - "edit_mode": "UI_LOCKED", - "format": "MULTI_TASK", - "max_concurrent_runs": 1, - "name": "bar-[UNIQUE_NAME]", - "queue": { - "enabled": true - } - } + "action": "skip" }, "resources.jobs.foo": { "depends_on": [ @@ -54,28 +41,7 @@ Plan: 0 to add, 0 to change, 0 to delete, 2 unchanged "label": "${resources.jobs.bar.id}" } ], - "action": "skip", - "remote_state": { - "deployment": { - "kind": "BUNDLE", - "metadata_file_path": "/Workspace/Users/[USERNAME]/.bundle/local-[UNIQUE_NAME]/default/state/metadata.json" - }, - "edit_mode": "UI_LOCKED", - "format": "MULTI_TASK", - "max_concurrent_runs": 1, - "name": "foo-[UNIQUE_NAME]", - "queue": { - "enabled": true - }, - "tasks": [ - { - "run_job_task": { - "job_id": [NUMID] - }, - "task_key": "run_bar" - } - ] - } + "action": "skip" } } } diff --git a/acceptance/bundle/local/basic/script b/acceptance/bundle/local/basic/script index a3d77d4417b..24e44a32a04 100644 --- a/acceptance/bundle/local/basic/script +++ b/acceptance/bundle/local/basic/script @@ -32,9 +32,9 @@ trace $CLI bundle plan --plan-mode=local title "Job reads during --plan-mode=local plan after drift:\n" trace print_requests.py --get //jobs/get -# The JSON plan is self-describing: local_only is true, so deploy --plan can warn -# before applying it. remote_state is the saved local state (used as the stand-in -# for remote in --plan-mode=local), not a fresh read. +# The JSON plan is self-describing: plan_mode is "local", so deploy --plan can +# warn before applying it. remote_state is absent (nothing was fetched); drift +# classification runs against the saved local state internally. title "Plan --plan-mode=local as JSON:\n" trace $CLI bundle plan --plan-mode=local -o json | tee plan.local.json title "Job reads during 'bundle plan --plan-mode=local -o json':\n" diff --git a/acceptance/bundle/local/rejected/output.txt b/acceptance/bundle/local/rejected/output.txt index ed51c27290f..8137399f515 100644 --- a/acceptance/bundle/local/rejected/output.txt +++ b/acceptance/bundle/local/rejected/output.txt @@ -9,4 +9,19 @@ Exit code: 1 Error: --plan-mode=local is only supported with the direct engine. See https://docs.databricks.com/aws/en/dev-tools/bundles/direct +Exit code: 1 + +>>> [CLI] bundle plan --plan-mode=offline +Error: --plan-mode=offline is not yet implemented + +Exit code: 1 + +>>> [CLI] bundle deploy --plan-mode=offline +Error: --plan-mode=offline is not yet implemented + +Exit code: 1 + +>>> [CLI] bundle plan --plan-mode=bogus +Error: invalid --plan-mode "bogus" (want full or local) + Exit code: 1 diff --git a/acceptance/bundle/local/rejected/script b/acceptance/bundle/local/rejected/script index 4d6a50af883..6e0af5e6bcd 100644 --- a/acceptance/bundle/local/rejected/script +++ b/acceptance/bundle/local/rejected/script @@ -1,3 +1,10 @@ # --plan-mode=local is only supported by the direct engine; both plan and deploy reject it. errcode trace $CLI bundle plan --plan-mode=local errcode trace $CLI bundle deploy --plan-mode=local + +# --plan-mode=offline is reserved but not yet implemented; both plan and deploy reject it. +errcode trace $CLI bundle plan --plan-mode=offline +errcode trace $CLI bundle deploy --plan-mode=offline + +# Unknown --plan-mode values are rejected with an actionable error. +errcode trace $CLI bundle plan --plan-mode=bogus diff --git a/bundle/deployplan/plan.go b/bundle/deployplan/plan.go index 696286e542f..24454fe5bf5 100644 --- a/bundle/deployplan/plan.go +++ b/bundle/deployplan/plan.go @@ -3,6 +3,7 @@ package deployplan import ( "cmp" "encoding/json" + "errors" "fmt" "os" "slices" @@ -36,14 +37,15 @@ const ( ) // SkipsRemoteReads reports whether the mode avoids the proactive per-resource -// remote read (Local and Offline). +// remote read. Local skips it (references still fetch on-demand). Offline is +// reserved and rejected at flag-parse time until its semantics are wired up. func (m PlanMode) SkipsRemoteReads() bool { - return m == PlanModeLocal || m == PlanModeOffline + return m == PlanModeLocal } // ParsePlanMode parses the value of the --plan-mode flag. An empty value is -// PlanModeFull; "full", "local", and "offline" are accepted. Unknown values -// produce an actionable error. +// PlanModeFull; "full" and "local" are accepted. "offline" is reserved but not +// yet implemented and is rejected. Unknown values produce an actionable error. func ParsePlanMode(s string) (PlanMode, error) { switch s { case "", "full": @@ -51,9 +53,9 @@ func ParsePlanMode(s string) (PlanMode, error) { case "local": return PlanModeLocal, nil case "offline": - return PlanModeOffline, nil + return "", errors.New("--plan-mode=offline is not yet implemented") default: - return "", fmt.Errorf("invalid --plan-mode %q (want full, local, or offline)", s) + return "", fmt.Errorf("invalid --plan-mode %q (want full or local)", s) } } diff --git a/bundle/direct/bundle_plan.go b/bundle/direct/bundle_plan.go index 2f2a0acdd15..fee3013c918 100644 --- a/bundle/direct/bundle_plan.go +++ b/bundle/direct/bundle_plan.go @@ -252,13 +252,20 @@ func (b *DeploymentBundle) CalculatePlan(ctx context.Context, client *databricks var remoteStateComparable any if skipsRemoteReads { - // --local skips the remote read. Treat the saved state as the remote: - // it is our last recorded snapshot of remote, so drift is computed - // purely from saved-state vs config. This also lets OverrideChangeDesc - // hooks (etag, endpoint_uuid) reconcile state-only fields against their + // --plan-mode=local skips the remote read. Feed the saved state into + // drift classification as the "comparable remote": it is our last + // recorded snapshot of remote, so drift is computed purely from + // saved-state vs config. This also lets OverrideChangeDesc hooks + // (etag, endpoint_uuid) reconcile state-only fields against their // saved value instead of nil, avoiding spurious drift. + // + // Do NOT write savedState to entry.RemoteState: that field is typed + // as the remote type at apply time (e.g. *AppRemote, *ClusterRemote) + // and apply-time consumers type-assert on it. savedState is the state + // type (e.g. *AppState), so writing it here would cause silent type + // assertion failures at apply time — for example, remoteIsStarted + // would return false regardless of the real remote lifecycle. remoteStateComparable = savedState - entry.RemoteState = savedState } else { var remoteState any remoteState, err = retryOnTransient(ctx, func() (any, error) { From af8596b13d835c6754131757c500604f1187cec4 Mon Sep 17 00:00:00 2001 From: Denis Bilenko Date: Tue, 21 Jul 2026 10:32:20 +0200 Subject: [PATCH 18/25] direct: split PlanEntry state into PriorState (StateType) and RemoteState (RemoteType) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fixes three apply-time bugs in --plan-mode=local where entry.RemoteState was left nil to avoid type confusion: 1. grants.go removedGrantPrincipals returned nil, so config that removed a grant silently kept it in place. 2. cluster/sql_warehouse lifecycle: remoteXIsRunning(entry) returned false, causing Start/Stop decisions to be wrong and WaitAfterUpdate to poll for a state that never happens. 3. app.go manageLifecycle called with alreadyStarted=false regardless of the real remote lifecycle state. Design: - PlanEntry.PriorState (new, StateType) — always the last saved local state. Populated in every mode. Consumers that read state-shaped fields (grants principals, dashboard/genie etag) read this via RemoteOrPrior. - PlanEntry.RemoteState (existing, RemoteType) — a fresh remote read. Nil in --plan-mode=local. Consumers that read remote-only fields (cluster.State, app.ComputeStatus) read this; the reasonable behavior on nil is to skip whatever depends on live status. - PlanEntry.RemoteOrPrior(adapter) — helper preferring the freshly- remapped RemoteState, falling back to PriorState. Uses a small RemapStater interface to keep bundle/deployplan free of dresources. Consumer changes: - grants.go: read prior grants from RemoteState with PriorState fallback. Local-mode grants now correctly remove principals absent from config. - bind.go: etag lookup falls back to PriorState (safe: dashboard/genie have StateType == RemoteType). - cluster.go, app.go, sql_warehouse.go: DoUpdate skips lifecycle management when entry.RemoteState is nil. cluster/sql_warehouse WaitAfterUpdate skips its poll as well; app has no separate WaitAfter. - WaitAfterUpdate signature bumped to include *PlanEntry (cluster, sql_warehouse, model_serving_endpoint). - model.go: ModelId carryforward stays on RemoteState (only place it lives); documented that same-run refs to model_id resolve to empty in --plan-mode=local. Tests: - New acceptance/bundle/local/lifecycle-skip: cluster with lifecycle toggle; local-mode deploy issues zero /clusters requests. - New acceptance/bundle/local/grants-remove: schema grants with a principal removed from config; local-mode deploy correctly revokes it. - All out.plan.*.json regenerated: full-mode plans now include both prior_state and remote_state; local-mode plans include only prior_state. Co-authored-by: Isaac --- .../whl_dynamic/out.plan_update.direct.json | 66 +++++++++ .../deploy/readplan/basic/out.plan_skip.json | 13 ++ .../out.plan.grants.json | 18 +++ acceptance/bundle/local/basic/output.txt | 38 ++++- acceptance/bundle/local/basic/script | 5 +- .../local/grants-remove/databricks.yml.tmpl | 15 ++ .../bundle/local/grants-remove/out.test.toml | 3 + .../bundle/local/grants-remove/output.txt | 53 +++++++ acceptance/bundle/local/grants-remove/script | 29 ++++ .../bundle/local/grants-remove/test.toml | 7 + .../local/lifecycle-skip/databricks.yml.tmpl | 16 +++ .../bundle/local/lifecycle-skip/out.test.toml | 3 + .../bundle/local/lifecycle-skip/output.txt | 44 ++++++ acceptance/bundle/local/lifecycle-skip/script | 25 ++++ .../bundle/local/lifecycle-skip/test.toml | 11 ++ .../out.plan_update.direct.json | 13 ++ .../bundle/migrate/basic/out.plan_update.json | 51 +++++++ .../dashboards/out.plan_after_migrate.json | 9 ++ .../default-python/out.plan_after_deploy.json | 123 ++++++++++++++++ .../out.plan_after_migration.json | 135 +++++++++++++++++- acceptance/bundle/migrate/runas/out.plan.json | 35 +++++ .../id_chain/out.plan_skip.direct.json | 70 +++++++++ .../id_chain/out.plan_update.direct.json | 70 +++++++++ .../out.plan_delete.direct.json | 21 +++ .../out.plan_delete.direct.json | 13 ++ .../out.plan_update.direct.json | 43 ++++++ .../out.plan_noop.direct.json | 24 ++++ .../out.plan_update.direct.json | 24 ++++ .../remote_pipeline/out.plan_skip.direct.json | 36 +++++ .../out.plan_.direct.json | 37 +++++ .../update-and-resize/out.plan_.direct.json | 30 ++++ .../out.plan.direct.json | 11 ++ .../out.plan.direct.json | 14 +- .../detect-change/out.plan.direct.json | 9 ++ .../publish-failure-stale-content/output.txt | 4 + .../dashboards/simple/out.plan.direct.json | 9 ++ .../out.plan.direct.json | 9 ++ .../genie_spaces/inline/out.plan.json | 8 ++ .../grants/catalogs/out.plan2.direct.json | 16 +++ .../change_privilege/out.plan2.direct.json | 17 +++ .../duplicate_principals/out.plan.direct.json | 16 +++ .../out.plan.direct.json | 16 +++ .../out.plan2.direct.json | 16 +++ .../grants/volumes/out.plan2.direct.json | 23 +++ .../resources/job_runs/redeploy/output.txt | 6 + .../delete_task/out.plan_update.direct.json | 47 ++++++ .../out.plan_post_update.direct.json | 31 ++++ .../remote_delete/deploy/out.plan.direct.json | 29 ++++ .../out.plan.direct.json | 29 ++++ .../jobs/update/out.plan_skip.direct.json | 29 ++++ .../jobs/update/out.plan_update.direct.json | 29 ++++ .../out.plan_skip.direct.json | 36 +++++ .../out.plan_update.direct.json | 36 +++++ .../basic/out.second-plan.direct.txt | 6 + .../catalog-name/out.second-plan.direct.json | 23 +++ .../name-change/out.second-plan.direct.json | 18 +++ .../out.second-plan.direct.json | 15 ++ .../schema-name/out.second-plan.direct.json | 23 +++ .../table-prefix/out.second-plan.direct.json | 23 +++ .../update/ai-gateway/out.plan.direct.json | 23 +++ .../out.plan.direct.json | 29 ++++ .../update/config/out.plan.direct.json | 26 ++++ .../email-notifications/out.plan.direct.json | 23 +++ .../update/tags/out.plan.direct.json | 24 ++++ .../jobs/added_remotely/out.plan.direct.json | 35 +++++ .../out.plan.direct.txt | 22 +++ .../out.plan_restore.direct.json | 39 +++++ .../update/out.plan_delete_all.direct.json | 22 +++ .../update/out.plan_delete_one.direct.json | 39 +++++ .../update/out.plan_post_create.direct.json | 39 +++++ .../jobs/update/out.plan_restore.direct.json | 22 +++ .../jobs/update/out.plan_update.direct.json | 39 +++++ .../update/out.plan_delete_all.direct.json | 9 ++ .../update/out.plan_delete_one.direct.json | 26 ++++ .../update/out.plan_restore.direct.json | 9 ++ .../update/out.plan_update.direct.json | 26 ++++ .../out.plan_recreate.direct.json | 22 +++ .../out.plan_recreate.direct.json | 17 +++ .../change_assets_dir/out.plan.direct.json | 7 + .../out.plan.direct.json | 7 + .../change_table_name/out.plan.direct.json | 7 + .../create/out.plan_noop.direct.json | 7 + .../secret_scopes/basic/out.plan2.direct.txt | 7 + .../basic/out.plan_verify_no_drift.direct.txt | 7 + .../recreate/with_endpoint/output.txt | 20 +++ .../volumes/change-name/out.plan.direct.json | 7 + .../out.plan.direct.json | 26 ++++ .../out.plan_after_deploy_dev.direct.json | 123 ++++++++++++++++ .../out.plan_after_deploy_prod.direct.json | 134 +++++++++++++++++ .../out.plan_after_deploy_dev.direct.json | 111 ++++++++++++++ .../out.plan_after_deploy_prod.direct.json | 122 ++++++++++++++++ bundle/deployplan/plan.go | 40 +++++- bundle/direct/apply.go | 8 +- bundle/direct/bind.go | 21 ++- bundle/direct/bundle_plan.go | 102 +++++++------ bundle/direct/dresources/adapter.go | 9 +- bundle/direct/dresources/all_test.go | 2 +- bundle/direct/dresources/app.go | 6 + bundle/direct/dresources/cluster.go | 14 +- bundle/direct/dresources/grants.go | 17 ++- bundle/direct/dresources/model.go | 7 + .../dresources/model_serving_endpoint.go | 2 +- bundle/direct/dresources/sql_warehouse.go | 14 +- 103 files changed, 2869 insertions(+), 77 deletions(-) create mode 100644 acceptance/bundle/local/grants-remove/databricks.yml.tmpl create mode 100644 acceptance/bundle/local/grants-remove/out.test.toml create mode 100644 acceptance/bundle/local/grants-remove/output.txt create mode 100644 acceptance/bundle/local/grants-remove/script create mode 100644 acceptance/bundle/local/grants-remove/test.toml create mode 100644 acceptance/bundle/local/lifecycle-skip/databricks.yml.tmpl create mode 100644 acceptance/bundle/local/lifecycle-skip/out.test.toml create mode 100644 acceptance/bundle/local/lifecycle-skip/output.txt create mode 100644 acceptance/bundle/local/lifecycle-skip/script create mode 100644 acceptance/bundle/local/lifecycle-skip/test.toml diff --git a/acceptance/bundle/artifacts/whl_dynamic/out.plan_update.direct.json b/acceptance/bundle/artifacts/whl_dynamic/out.plan_update.direct.json index b8d5ada22e7..1d662d3d4c9 100644 --- a/acceptance/bundle/artifacts/whl_dynamic/out.plan_update.direct.json +++ b/acceptance/bundle/artifacts/whl_dynamic/out.plan_update.direct.json @@ -74,6 +74,72 @@ ] } }, + "prior_state": { + "deployment": { + "kind": "BUNDLE", + "metadata_file_path": "/Workspace/Users/[USERNAME]/.bundle/test-bundle/default/state/metadata.json" + }, + "edit_mode": "UI_LOCKED", + "environments": [ + { + "environment_key": "test_env", + "spec": { + "client": "1", + "dependencies": [ + "/Workspace/Users/[USERNAME]/.bundle/test-bundle/default/artifacts/.internal/my_test_code-0.0.1+[UNIX_TIME_NANOS][2]-py3-none-any.whl" + ] + } + } + ], + "format": "MULTI_TASK", + "max_concurrent_runs": 1, + "name": "[default] My Wheel Job", + "queue": { + "enabled": true + }, + "tasks": [ + { + "environment_key": "test_env", + "python_wheel_task": { + "entry_point": "run", + "package_name": "my_test_code" + }, + "task_key": "ServerlessTestTask" + }, + { + "existing_cluster_id": "0717-132531-5opeqon1", + "for_each_task": { + "inputs": "[1]", + "task": { + "existing_cluster_id": "0717-132531-5opeqon1", + "libraries": [ + { + "whl": "/Workspace/Users/[USERNAME]/.bundle/test-bundle/default/artifacts/.internal/my_test_code-0.0.1+[UNIX_TIME_NANOS][2]-py3-none-any.whl" + } + ], + "python_wheel_task": { + "entry_point": "run", + "package_name": "my_test_code" + }, + "task_key": "SubTask" + } + }, + "libraries": [ + { + "whl": "/Workspace/Users/[USERNAME]/.bundle/test-bundle/default/artifacts/.internal/my_test_code-0.0.1+[UNIX_TIME_NANOS][2]-py3-none-any.whl" + }, + { + "whl": "/Workspace/Users/[USERNAME]/.bundle/test-bundle/default/artifacts/.internal/other_test_code-0.0.1+[UNIX_TIME_NANOS][1]-py3-none-any.whl" + } + ], + "python_wheel_task": { + "entry_point": "run", + "package_name": "my_test_code" + }, + "task_key": "TestTask" + } + ] + }, "remote_state": { "created_time": [UNIX_TIME_MILLIS], "creator_user_name": "[USERNAME]", diff --git a/acceptance/bundle/deploy/readplan/basic/out.plan_skip.json b/acceptance/bundle/deploy/readplan/basic/out.plan_skip.json index a6b4e835bb9..0e18d2544ba 100644 --- a/acceptance/bundle/deploy/readplan/basic/out.plan_skip.json +++ b/acceptance/bundle/deploy/readplan/basic/out.plan_skip.json @@ -6,6 +6,19 @@ "plan": { "resources.jobs.job": { "action": "skip", + "prior_state": { + "deployment": { + "kind": "BUNDLE", + "metadata_file_path": "/Workspace/Users/[USERNAME]/.bundle/test-bundle/default/state/metadata.json" + }, + "edit_mode": "UI_LOCKED", + "format": "MULTI_TASK", + "max_concurrent_runs": 1, + "name": "test-job", + "queue": { + "enabled": true + } + }, "remote_state": { "created_time": [UNIX_TIME_MILLIS], "creator_user_name": "[USERNAME]", diff --git a/acceptance/bundle/deploy/readplan/grants-remove-principal/out.plan.grants.json b/acceptance/bundle/deploy/readplan/grants-remove-principal/out.plan.grants.json index 0b90f0b19e6..044fe9ed44e 100644 --- a/acceptance/bundle/deploy/readplan/grants-remove-principal/out.plan.grants.json +++ b/acceptance/bundle/deploy/readplan/grants-remove-principal/out.plan.grants.json @@ -20,6 +20,24 @@ ] } }, + "prior_state": { + "securable_type": "schema", + "full_name": "main.myschema", + "__embed__": [ + { + "principal": "[USERNAME]", + "privileges": [ + "USE_SCHEMA" + ] + }, + { + "principal": "extra@example.test", + "privileges": [ + "CREATE_TABLE" + ] + } + ] + }, "remote_state": { "securable_type": "schema", "full_name": "main.myschema", diff --git a/acceptance/bundle/local/basic/output.txt b/acceptance/bundle/local/basic/output.txt index 51555a9d5a5..cd8dee776b6 100644 --- a/acceptance/bundle/local/basic/output.txt +++ b/acceptance/bundle/local/basic/output.txt @@ -32,7 +32,20 @@ Plan: 0 to add, 0 to change, 0 to delete, 2 unchanged "plan_mode": "local", "plan": { "resources.jobs.bar": { - "action": "skip" + "action": "skip", + "prior_state": { + "deployment": { + "kind": "BUNDLE", + "metadata_file_path": "/Workspace/Users/[USERNAME]/.bundle/local-[UNIQUE_NAME]/default/state/metadata.json" + }, + "edit_mode": "UI_LOCKED", + "format": "MULTI_TASK", + "max_concurrent_runs": 1, + "name": "bar-[UNIQUE_NAME]", + "queue": { + "enabled": true + } + } }, "resources.jobs.foo": { "depends_on": [ @@ -41,7 +54,28 @@ Plan: 0 to add, 0 to change, 0 to delete, 2 unchanged "label": "${resources.jobs.bar.id}" } ], - "action": "skip" + "action": "skip", + "prior_state": { + "deployment": { + "kind": "BUNDLE", + "metadata_file_path": "/Workspace/Users/[USERNAME]/.bundle/local-[UNIQUE_NAME]/default/state/metadata.json" + }, + "edit_mode": "UI_LOCKED", + "format": "MULTI_TASK", + "max_concurrent_runs": 1, + "name": "foo-[UNIQUE_NAME]", + "queue": { + "enabled": true + }, + "tasks": [ + { + "run_job_task": { + "job_id": [NUMID] + }, + "task_key": "run_bar" + } + ] + } } } } diff --git a/acceptance/bundle/local/basic/script b/acceptance/bundle/local/basic/script index 24e44a32a04..7e5a9b668ca 100644 --- a/acceptance/bundle/local/basic/script +++ b/acceptance/bundle/local/basic/script @@ -33,8 +33,9 @@ title "Job reads during --plan-mode=local plan after drift:\n" trace print_requests.py --get //jobs/get # The JSON plan is self-describing: plan_mode is "local", so deploy --plan can -# warn before applying it. remote_state is absent (nothing was fetched); drift -# classification runs against the saved local state internally. +# warn before applying it. remote_state is absent (nothing was fetched); +# prior_state carries the last saved local state and is what drift classification +# and apply-time consumers read in local mode. title "Plan --plan-mode=local as JSON:\n" trace $CLI bundle plan --plan-mode=local -o json | tee plan.local.json title "Job reads during 'bundle plan --plan-mode=local -o json':\n" diff --git a/acceptance/bundle/local/grants-remove/databricks.yml.tmpl b/acceptance/bundle/local/grants-remove/databricks.yml.tmpl new file mode 100644 index 00000000000..9762601ad4c --- /dev/null +++ b/acceptance/bundle/local/grants-remove/databricks.yml.tmpl @@ -0,0 +1,15 @@ +bundle: + name: grants-remove-$UNIQUE_NAME + +resources: + schemas: + myschema: + catalog_name: main + name: schema_grants_remove_$UNIQUE_NAME + grants: + - principal: account users + privileges: + - USE_SCHEMA + - principal: deco-test-user@databricks.com + privileges: + - USE_SCHEMA diff --git a/acceptance/bundle/local/grants-remove/out.test.toml b/acceptance/bundle/local/grants-remove/out.test.toml new file mode 100644 index 00000000000..e90b6d5d1ba --- /dev/null +++ b/acceptance/bundle/local/grants-remove/out.test.toml @@ -0,0 +1,3 @@ +Local = true +Cloud = false +EnvMatrix.DATABRICKS_BUNDLE_ENGINE = ["direct"] diff --git a/acceptance/bundle/local/grants-remove/output.txt b/acceptance/bundle/local/grants-remove/output.txt new file mode 100644 index 00000000000..73fa741d9ab --- /dev/null +++ b/acceptance/bundle/local/grants-remove/output.txt @@ -0,0 +1,53 @@ + +>>> [CLI] bundle deploy +Uploading bundle files to /Workspace/Users/[USERNAME]/.bundle/grants-remove-[UNIQUE_NAME]/default/files... +Deploying resources... +Updating deployment state... +Deployment complete! + +>>> update_file.py databricks.yml principal: deco-test-user@databricks.com principal: deco-test-user@databricks.com # removed + +>>> [CLI] bundle deploy --plan-mode=local +Uploading bundle files to /Workspace/Users/[USERNAME]/.bundle/grants-remove-[UNIQUE_NAME]/default/files... +Deploying resources... +Updating deployment state... +Deployment complete! + +=== Permissions requests during 'bundle deploy --plan-mode=local': + +>>> print_requests.py //permissions +{ + "method": "PATCH", + "path": "/api/2.1/unity-catalog/permissions/schema/main.schema_grants_remove_[UNIQUE_NAME]", + "body": { + "changes": [ + { + "add": [ + "USE_SCHEMA" + ], + "principal": "account users", + "remove": [ + "ALL_PRIVILEGES" + ] + }, + { + "principal": "deco-test-user@databricks.com", + "remove": [ + "ALL_PRIVILEGES" + ] + } + ] + } +} + +>>> [CLI] bundle destroy --auto-approve +The following resources will be deleted: + delete resources.schemas.myschema + +This action will result in the deletion of the following UC schemas. Any underlying data may be lost: + delete resources.schemas.myschema + +All files and directories at the following location will be deleted: /Workspace/Users/[USERNAME]/.bundle/grants-remove-[UNIQUE_NAME]/default + +Deleting files... +Destroy complete! diff --git a/acceptance/bundle/local/grants-remove/script b/acceptance/bundle/local/grants-remove/script new file mode 100644 index 00000000000..b55faf920db --- /dev/null +++ b/acceptance/bundle/local/grants-remove/script @@ -0,0 +1,29 @@ +envsubst < databricks.yml.tmpl > databricks.yml + +cleanup() { + trace $CLI bundle destroy --auto-approve + rm -f out.requests.txt +} +trap cleanup EXIT + +# Full-mode deploy: two principals granted. +trace $CLI bundle deploy +rm -f out.requests.txt + +# Remove one principal from config and redeploy under --plan-mode=local. +# The removed principal must be revoked: removedGrantPrincipals reads from +# entry.PriorState in local mode (entry.RemoteState is nil), so it computes +# the removal set from the last saved state. +trace update_file.py databricks.yml "principal: deco-test-user@databricks.com" "principal: deco-test-user@databricks.com # removed" +# Now drop the removed-principal block entirely by pruning the two lines below the marker. +python3 -c " +import re +p = 'databricks.yml' +s = open(p).read() +s = re.sub(r' - principal: deco-test-user@databricks.com # removed\n privileges:\n - USE_SCHEMA\n', '', s) +open(p, 'w').write(s) +" + +trace $CLI bundle deploy --plan-mode=local +title "Permissions requests during 'bundle deploy --plan-mode=local':\n" +trace print_requests.py //permissions diff --git a/acceptance/bundle/local/grants-remove/test.toml b/acceptance/bundle/local/grants-remove/test.toml new file mode 100644 index 00000000000..60e79c5fb32 --- /dev/null +++ b/acceptance/bundle/local/grants-remove/test.toml @@ -0,0 +1,7 @@ +Local = true +Cloud = false +RecordRequests = true +# --plan-mode=local skips the per-resource remote read, which only the direct engine performs. +EnvMatrix.DATABRICKS_BUNDLE_ENGINE = ["direct"] + +Ignore = [".databricks", "databricks.yml"] diff --git a/acceptance/bundle/local/lifecycle-skip/databricks.yml.tmpl b/acceptance/bundle/local/lifecycle-skip/databricks.yml.tmpl new file mode 100644 index 00000000000..fa1f8465a34 --- /dev/null +++ b/acceptance/bundle/local/lifecycle-skip/databricks.yml.tmpl @@ -0,0 +1,16 @@ +bundle: + name: lifecycle-skip-$UNIQUE_NAME + +workspace: + root_path: ~/.bundle/$UNIQUE_NAME + +resources: + clusters: + mycluster: + cluster_name: $UNIQUE_NAME + spark_version: 15.4.x-scala2.12 + node_type_id: $NODE_TYPE_ID + instance_pool_id: $TEST_INSTANCE_POOL_ID + num_workers: 1 + lifecycle: + started: false diff --git a/acceptance/bundle/local/lifecycle-skip/out.test.toml b/acceptance/bundle/local/lifecycle-skip/out.test.toml new file mode 100644 index 00000000000..9cfad3fb0d5 --- /dev/null +++ b/acceptance/bundle/local/lifecycle-skip/out.test.toml @@ -0,0 +1,3 @@ +Local = true +Cloud = true +EnvMatrix.DATABRICKS_BUNDLE_ENGINE = ["direct"] diff --git a/acceptance/bundle/local/lifecycle-skip/output.txt b/acceptance/bundle/local/lifecycle-skip/output.txt new file mode 100644 index 00000000000..e0f17f86e1d --- /dev/null +++ b/acceptance/bundle/local/lifecycle-skip/output.txt @@ -0,0 +1,44 @@ + +>>> errcode [CLI] bundle deploy +Uploading bundle files to /Workspace/Users/[USERNAME]/.bundle/[UNIQUE_NAME]/files... +Deploying resources... +Updating deployment state... +Deployment complete! + +>>> update_file.py databricks.yml started: false started: true + +>>> errcode [CLI] bundle deploy --plan-mode=local +Uploading bundle files to /Workspace/Users/[USERNAME]/.bundle/[UNIQUE_NAME]/files... +Deploying resources... +Updating deployment state... +Deployment complete! + +=== Cluster requests during 'bundle deploy --plan-mode=local' (should be empty): + +>>> print_requests.py //clusters + +>>> errcode [CLI] bundle deploy +Uploading bundle files to /Workspace/Users/[USERNAME]/.bundle/[UNIQUE_NAME]/files... +Deploying resources... +Updating deployment state... +Deployment complete! + +=== Cluster requests during full-mode deploy that follows (Start expected): + +>>> print_requests.py //clusters +{ + "method": "POST", + "path": "/api/2.1/clusters/start", + "body": { + "cluster_id": "[UUID]" + } +} + +>>> [CLI] bundle destroy --auto-approve +The following resources will be deleted: + delete resources.clusters.mycluster + +All files and directories at the following location will be deleted: /Workspace/Users/[USERNAME]/.bundle/[UNIQUE_NAME] + +Deleting files... +Destroy complete! diff --git a/acceptance/bundle/local/lifecycle-skip/script b/acceptance/bundle/local/lifecycle-skip/script new file mode 100644 index 00000000000..e2a622fa85c --- /dev/null +++ b/acceptance/bundle/local/lifecycle-skip/script @@ -0,0 +1,25 @@ +envsubst < databricks.yml.tmpl > databricks.yml + +cleanup() { + trace $CLI bundle destroy --auto-approve + rm -f out.requests.txt +} +trap cleanup EXIT + +# Full-mode deploy: cluster created and stopped per lifecycle.started=false. +trace errcode $CLI bundle deploy +rm -f out.requests.txt + +# Toggle to started=true; redeploy under --plan-mode=local. +# In local mode entry.RemoteState is nil, so DoUpdate must skip the Start call +# entirely and WaitAfterUpdate must skip its poll. Nothing else has changed, so +# no /clusters requests should be issued at all. +trace update_file.py databricks.yml "started: false" "started: true" +trace errcode $CLI bundle deploy --plan-mode=local +title "Cluster requests during 'bundle deploy --plan-mode=local' (should be empty):\n" +trace print_requests.py //clusters + +# The next full-mode deploy applies the real transition. +trace errcode $CLI bundle deploy +title "Cluster requests during full-mode deploy that follows (Start expected):\n" +trace print_requests.py //clusters diff --git a/acceptance/bundle/local/lifecycle-skip/test.toml b/acceptance/bundle/local/lifecycle-skip/test.toml new file mode 100644 index 00000000000..78e09d14628 --- /dev/null +++ b/acceptance/bundle/local/lifecycle-skip/test.toml @@ -0,0 +1,11 @@ +Local = true +Cloud = true +RecordRequests = true +# --plan-mode=local skips the per-resource remote read, which only the direct engine performs. +EnvMatrix.DATABRICKS_BUNDLE_ENGINE = ["direct"] + +Ignore = [".databricks", "databricks.yml"] + +[[Repls]] +Old = "[0-9]{4}-[0-9]{6}-[0-9a-z]{8}" +New = "[UUID]" diff --git a/acceptance/bundle/migrate/auto-migrate-clean/out.plan_update.direct.json b/acceptance/bundle/migrate/auto-migrate-clean/out.plan_update.direct.json index cbaa60b7ace..d1e620039bb 100644 --- a/acceptance/bundle/migrate/auto-migrate-clean/out.plan_update.direct.json +++ b/acceptance/bundle/migrate/auto-migrate-clean/out.plan_update.direct.json @@ -21,6 +21,19 @@ } } }, + "prior_state": { + "deployment": { + "kind": "BUNDLE", + "metadata_file_path": "/Workspace/Users/[USERNAME]/.bundle/test-bundle/default/state/metadata.json" + }, + "edit_mode": "UI_LOCKED", + "format": "MULTI_TASK", + "max_concurrent_runs": 1, + "name": "Test Auto-Migrate Job", + "queue": { + "enabled": true + } + }, "remote_state": { "created_time": [UNIX_TIME_MILLIS], "creator_user_name": "[USERNAME]", diff --git a/acceptance/bundle/migrate/basic/out.plan_update.json b/acceptance/bundle/migrate/basic/out.plan_update.json index 7b9967a085d..17aa678c859 100644 --- a/acceptance/bundle/migrate/basic/out.plan_update.json +++ b/acceptance/bundle/migrate/basic/out.plan_update.json @@ -29,6 +29,27 @@ ] } }, + "prior_state": { + "deployment": { + "kind": "BUNDLE", + "metadata_file_path": "/Workspace/Users/[USERNAME]/.bundle/migrate-basic-test/dev/state/metadata.json" + }, + "edit_mode": "UI_LOCKED", + "format": "MULTI_TASK", + "max_concurrent_runs": 1, + "name": "Test Migration Job", + "queue": { + "enabled": true + }, + "tasks": [ + { + "notebook_task": { + "notebook_path": "/Workspace/Users/[USERNAME]/.bundle/migrate-basic-test/dev/files/notebook" + }, + "task_key": "main" + } + ] + }, "remote_state": { "created_time": [UNIX_TIME_MILLIS][0], "creator_user_name": "[USERNAME]", @@ -162,6 +183,30 @@ "tags.myjob_timeout": "${resources.jobs.test_job.timeout_seconds}" } }, + "prior_state": { + "channel": "CURRENT", + "deployment": { + "kind": "BUNDLE", + "metadata_file_path": "/Workspace/Users/[USERNAME]/.bundle/migrate-basic-test/dev/state/metadata.json" + }, + "edition": "ADVANCED", + "libraries": [ + { + "notebook": { + "path": "/Workspace/Users/[USERNAME]/.bundle/migrate-basic-test/dev/files/pipeline" + } + } + ], + "name": "Test Migration Pipeline", + "tags": { + "myjob_id": "[NUMID]", + "myjob_name": "Test Migration Job", + "myjob_timeout": "0", + "myvolume_id": "mycat.myschema.myvol", + "volume_catalog_name": "mycat", + "volume_storage_location": "s3://[METASTORE_NAME]/metastore/[UUID]/volumes/[UUID]" + } + }, "remote_state": { "channel": "CURRENT", "creator_user_name": "[USERNAME]", @@ -222,6 +267,12 @@ }, "resources.volumes.test_volume": { "action": "skip", + "prior_state": { + "catalog_name": "mycat", + "name": "myvol", + "schema_name": "myschema", + "volume_type": "MANAGED" + }, "remote_state": { "catalog_name": "mycat", "created_at": [UNIX_TIME_MILLIS][2], diff --git a/acceptance/bundle/migrate/dashboards/out.plan_after_migrate.json b/acceptance/bundle/migrate/dashboards/out.plan_after_migrate.json index cbdc8b8203b..0114d93df89 100644 --- a/acceptance/bundle/migrate/dashboards/out.plan_after_migrate.json +++ b/acceptance/bundle/migrate/dashboards/out.plan_after_migrate.json @@ -6,6 +6,15 @@ "plan": { "resources.dashboards.dashboard1": { "action": "skip", + "prior_state": { + "display_name": "my dashboard", + "embed_credentials": true, + "etag": "[NUMID]", + "parent_path": "/Workspace/Users/[USERNAME]", + "published": true, + "serialized_dashboard": "{\"pages\":[{\"name\":\"02724bf2\",\"displayName\":\"Dashboard test bundle-deploy-dashboard\"}]}\n", + "warehouse_id": "123456" + }, "remote_state": { "create_time": "[TIMESTAMP]", "dashboard_id": "[DASHBOARD1_ID]", diff --git a/acceptance/bundle/migrate/default-python/out.plan_after_deploy.json b/acceptance/bundle/migrate/default-python/out.plan_after_deploy.json index 3e01413959f..40895001e05 100644 --- a/acceptance/bundle/migrate/default-python/out.plan_after_deploy.json +++ b/acceptance/bundle/migrate/default-python/out.plan_after_deploy.json @@ -110,6 +110,102 @@ } } }, + "prior_state": { + "deployment": { + "kind": "BUNDLE", + "metadata_file_path": "/Workspace/Users/[USERNAME]/.bundle/my_default_python/dev/state/metadata.json" + }, + "edit_mode": "UI_LOCKED", + "format": "MULTI_TASK", + "job_clusters": [ + { + "job_cluster_key": "job_cluster", + "new_cluster": { + "autoscale": { + "max_workers": 4, + "min_workers": 1 + }, + "data_security_mode": "DATA_SECURITY_MODE_AUTO", + "node_type_id": "[NODE_TYPE_ID]", + "spark_version": "16.4.x-scala2.12" + } + } + ], + "max_concurrent_runs": 4, + "name": "[dev [USERNAME]] sample_job", + "parameters": [ + { + "default": "hive_metastore", + "name": "catalog" + }, + { + "default": "[USERNAME]", + "name": "schema" + } + ], + "queue": { + "enabled": true + }, + "tags": { + "dev": "[USERNAME]" + }, + "tasks": [ + { + "job_cluster_key": "job_cluster", + "libraries": [ + { + "whl": "/Workspace/Users/[USERNAME]/.bundle/my_default_python/dev/artifacts/.internal/my_default_python-0.0.1+[UNIX_TIME_NANOS][1]-py3-none-any.whl" + } + ], + "notebook_task": { + "notebook_path": "/Workspace/Users/[USERNAME]/.bundle/my_default_python/dev/files/src/sample_notebook" + }, + "task_key": "notebook_task" + }, + { + "depends_on": [ + { + "task_key": "notebook_task" + } + ], + "job_cluster_key": "job_cluster", + "libraries": [ + { + "whl": "/Workspace/Users/[USERNAME]/.bundle/my_default_python/dev/artifacts/.internal/my_default_python-0.0.1+[UNIX_TIME_NANOS][1]-py3-none-any.whl" + } + ], + "python_wheel_task": { + "entry_point": "main", + "package_name": "my_default_python", + "parameters": [ + "--catalog", + "hive_metastore", + "--schema", + "[USERNAME]" + ] + }, + "task_key": "python_wheel_task" + }, + { + "depends_on": [ + { + "task_key": "notebook_task" + } + ], + "pipeline_task": { + "pipeline_id": "[UUID]" + }, + "task_key": "refresh_pipeline" + } + ], + "trigger": { + "pause_status": "PAUSED", + "periodic": { + "interval": 1, + "unit": "DAYS" + } + } + }, "remote_state": { "created_time": [UNIX_TIME_MILLIS][0], "creator_user_name": "[USERNAME]", @@ -305,6 +401,33 @@ }, "resources.pipelines.my_default_python_etl": { "action": "skip", + "prior_state": { + "channel": "CURRENT", + "deployment": { + "kind": "BUNDLE", + "metadata_file_path": "/Workspace/Users/[USERNAME]/.bundle/my_default_python/dev/state/metadata.json" + }, + "development": true, + "edition": "ADVANCED", + "environment": { + "dependencies": [ + "--editable /Workspace/Users/[USERNAME]/.bundle/my_default_python/dev/files" + ] + }, + "libraries": [ + { + "glob": { + "include": "/Workspace/Users/[USERNAME]/.bundle/my_default_python/dev/files/src/my_default_python_etl/transformations/**" + } + } + ], + "name": "[dev [USERNAME]] my_default_python_etl", + "root_path": "/Workspace/Users/[USERNAME]/.bundle/my_default_python/dev/files/src/my_default_python_etl", + "schema": "[USERNAME]", + "tags": { + "dev": "[USERNAME]" + } + }, "remote_state": { "channel": "CURRENT", "creator_user_name": "[USERNAME]", diff --git a/acceptance/bundle/migrate/default-python/out.plan_after_migration.json b/acceptance/bundle/migrate/default-python/out.plan_after_migration.json index e21c3b33069..d08755bd068 100644 --- a/acceptance/bundle/migrate/default-python/out.plan_after_migration.json +++ b/acceptance/bundle/migrate/default-python/out.plan_after_migration.json @@ -110,6 +110,102 @@ } } }, + "prior_state": { + "deployment": { + "kind": "BUNDLE", + "metadata_file_path": "/Workspace/Users/[USERNAME]/.bundle/my_default_python/dev/state/metadata.json" + }, + "edit_mode": "UI_LOCKED", + "format": "MULTI_TASK", + "job_clusters": [ + { + "job_cluster_key": "job_cluster", + "new_cluster": { + "autoscale": { + "max_workers": 4, + "min_workers": 1 + }, + "data_security_mode": "DATA_SECURITY_MODE_AUTO", + "node_type_id": "[NODE_TYPE_ID]", + "spark_version": "16.4.x-scala2.12" + } + } + ], + "max_concurrent_runs": 4, + "name": "[dev [USERNAME]] sample_job", + "parameters": [ + { + "default": "hive_metastore", + "name": "catalog" + }, + { + "default": "[USERNAME]", + "name": "schema" + } + ], + "queue": { + "enabled": true + }, + "tags": { + "dev": "[USERNAME]" + }, + "tasks": [ + { + "job_cluster_key": "job_cluster", + "libraries": [ + { + "whl": "/Workspace/Users/[USERNAME]/.bundle/my_default_python/dev/artifacts/.internal/my_default_python-0.0.1+[UNIX_TIME_NANOS][1]-py3-none-any.whl" + } + ], + "notebook_task": { + "notebook_path": "/Workspace/Users/[USERNAME]/.bundle/my_default_python/dev/files/src/sample_notebook" + }, + "task_key": "notebook_task" + }, + { + "depends_on": [ + { + "task_key": "notebook_task" + } + ], + "job_cluster_key": "job_cluster", + "libraries": [ + { + "whl": "/Workspace/Users/[USERNAME]/.bundle/my_default_python/dev/artifacts/.internal/my_default_python-0.0.1+[UNIX_TIME_NANOS][1]-py3-none-any.whl" + } + ], + "python_wheel_task": { + "entry_point": "main", + "package_name": "my_default_python", + "parameters": [ + "--catalog", + "hive_metastore", + "--schema", + "[USERNAME]" + ] + }, + "task_key": "python_wheel_task" + }, + { + "depends_on": [ + { + "task_key": "notebook_task" + } + ], + "pipeline_task": { + "pipeline_id": "[UUID]" + }, + "task_key": "refresh_pipeline" + } + ], + "trigger": { + "pause_status": "PAUSED", + "periodic": { + "interval": 1, + "unit": "DAYS" + } + } + }, "remote_state": { "created_time": [UNIX_TIME_MILLIS][0], "creator_user_name": "[USERNAME]", @@ -160,7 +256,7 @@ "job_cluster_key": "job_cluster", "libraries": [ { - "whl": "/Workspace/Users/[USERNAME]/.bundle/my_default_python/dev/artifacts/.internal/my_default_python-0.0.1+[UNIX_TIME_NANOS][1]-py3-none-any.whl" + "whl": "/Workspace/Users/[USERNAME]/.bundle/my_default_python/dev/artifacts/.internal/my_default_python-0.0.1+[UNIX_TIME_NANOS][2]-py3-none-any.whl" } ], "notebook_task": { @@ -181,7 +277,7 @@ "job_cluster_key": "job_cluster", "libraries": [ { - "whl": "/Workspace/Users/[USERNAME]/.bundle/my_default_python/dev/artifacts/.internal/my_default_python-0.0.1+[UNIX_TIME_NANOS][1]-py3-none-any.whl" + "whl": "/Workspace/Users/[USERNAME]/.bundle/my_default_python/dev/artifacts/.internal/my_default_python-0.0.1+[UNIX_TIME_NANOS][2]-py3-none-any.whl" } ], "python_wheel_task": { @@ -236,9 +332,9 @@ }, "tasks[task_key='notebook_task'].libraries[0].whl": { "action": "update", - "old": "/Workspace/Users/[USERNAME]/.bundle/my_default_python/dev/artifacts/.internal/my_default_python-0.0.1+[UNIX_TIME_NANOS][2]-py3-none-any.whl", + "old": "/Workspace/Users/[USERNAME]/.bundle/my_default_python/dev/artifacts/.internal/my_default_python-0.0.1+[UNIX_TIME_NANOS][1]-py3-none-any.whl", "new": "/Workspace/Users/[USERNAME]/.bundle/my_default_python/dev/artifacts/.internal/my_default_python-0.0.1+[UNIX_TIME_NANOS][0]-py3-none-any.whl", - "remote": "/Workspace/Users/[USERNAME]/.bundle/my_default_python/dev/artifacts/.internal/my_default_python-0.0.1+[UNIX_TIME_NANOS][1]-py3-none-any.whl" + "remote": "/Workspace/Users/[USERNAME]/.bundle/my_default_python/dev/artifacts/.internal/my_default_python-0.0.1+[UNIX_TIME_NANOS][2]-py3-none-any.whl" }, "tasks[task_key='notebook_task'].notebook_task.source": { "action": "skip", @@ -262,9 +358,9 @@ }, "tasks[task_key='python_wheel_task'].libraries[0].whl": { "action": "update", - "old": "/Workspace/Users/[USERNAME]/.bundle/my_default_python/dev/artifacts/.internal/my_default_python-0.0.1+[UNIX_TIME_NANOS][2]-py3-none-any.whl", + "old": "/Workspace/Users/[USERNAME]/.bundle/my_default_python/dev/artifacts/.internal/my_default_python-0.0.1+[UNIX_TIME_NANOS][1]-py3-none-any.whl", "new": "/Workspace/Users/[USERNAME]/.bundle/my_default_python/dev/artifacts/.internal/my_default_python-0.0.1+[UNIX_TIME_NANOS][0]-py3-none-any.whl", - "remote": "/Workspace/Users/[USERNAME]/.bundle/my_default_python/dev/artifacts/.internal/my_default_python-0.0.1+[UNIX_TIME_NANOS][1]-py3-none-any.whl" + "remote": "/Workspace/Users/[USERNAME]/.bundle/my_default_python/dev/artifacts/.internal/my_default_python-0.0.1+[UNIX_TIME_NANOS][2]-py3-none-any.whl" }, "tasks[task_key='python_wheel_task'].run_if": { "action": "skip", @@ -305,6 +401,33 @@ }, "resources.pipelines.my_default_python_etl": { "action": "skip", + "prior_state": { + "channel": "CURRENT", + "deployment": { + "kind": "BUNDLE", + "metadata_file_path": "/Workspace/Users/[USERNAME]/.bundle/my_default_python/dev/state/metadata.json" + }, + "development": true, + "edition": "ADVANCED", + "environment": { + "dependencies": [ + "--editable /Workspace/Users/[USERNAME]/.bundle/my_default_python/dev/files" + ] + }, + "libraries": [ + { + "glob": { + "include": "/Workspace/Users/[USERNAME]/.bundle/my_default_python/dev/files/src/my_default_python_etl/transformations/**" + } + } + ], + "name": "[dev [USERNAME]] my_default_python_etl", + "root_path": "/Workspace/Users/[USERNAME]/.bundle/my_default_python/dev/files/src/my_default_python_etl", + "schema": "[USERNAME]", + "tags": { + "dev": "[USERNAME]" + } + }, "remote_state": { "channel": "CURRENT", "creator_user_name": "[USERNAME]", diff --git a/acceptance/bundle/migrate/runas/out.plan.json b/acceptance/bundle/migrate/runas/out.plan.json index 231903729b8..ac610c839e5 100644 --- a/acceptance/bundle/migrate/runas/out.plan.json +++ b/acceptance/bundle/migrate/runas/out.plan.json @@ -6,6 +6,28 @@ "plan": { "resources.pipelines.foo": { "action": "skip", + "prior_state": { + "catalog": "main", + "channel": "CURRENT", + "deployment": { + "kind": "BUNDLE", + "metadata_file_path": "/Workspace/Users/[USERNAME]/.bundle/dabs_revenue-[UNIQUE_NAME]/production/state/metadata.json" + }, + "edition": "ADVANCED", + "libraries": [ + { + "notebook": { + "path": "/Workspace/Users/[USERNAME]/.bundle/dabs_revenue-[UNIQUE_NAME]/production/files/sql" + } + } + ], + "name": "DABs Revenue Pipeline", + "run_as": { + "service_principal_name": "[UUID]" + }, + "serverless": true, + "target": "team_eng_deco" + }, "remote_state": { "catalog": "main", "channel": "CURRENT", @@ -53,6 +75,19 @@ } ], "action": "skip", + "prior_state": { + "object_id": "/pipelines/[UUID]", + "__embed__": [ + { + "level": "CAN_VIEW", + "group_name": "users" + }, + { + "level": "IS_OWNER", + "user_name": "[USERNAME]" + } + ] + }, "remote_state": { "object_id": "/pipelines/[UUID]", "__embed__": [ diff --git a/acceptance/bundle/resource_deps/id_chain/out.plan_skip.direct.json b/acceptance/bundle/resource_deps/id_chain/out.plan_skip.direct.json index fa72eb2700b..0894b26a1f0 100644 --- a/acceptance/bundle/resource_deps/id_chain/out.plan_skip.direct.json +++ b/acceptance/bundle/resource_deps/id_chain/out.plan_skip.direct.json @@ -6,6 +6,20 @@ "plan": { "resources.jobs.a": { "action": "skip", + "prior_state": { + "deployment": { + "kind": "BUNDLE", + "metadata_file_path": "/Workspace/Users/[USERNAME]/.bundle/test-bundle/default/state/metadata.json" + }, + "description": "aa_new_desc", + "edit_mode": "UI_LOCKED", + "format": "MULTI_TASK", + "max_concurrent_runs": 1, + "name": "aa", + "queue": { + "enabled": true + } + }, "remote_state": { "created_time": [UNIX_TIME_MILLIS][0], "creator_user_name": "[USERNAME]", @@ -53,6 +67,20 @@ } ], "action": "skip", + "prior_state": { + "deployment": { + "kind": "BUNDLE", + "metadata_file_path": "/Workspace/Users/[USERNAME]/.bundle/test-bundle/default/state/metadata.json" + }, + "description": "new_prefix [NUMID]", + "edit_mode": "UI_LOCKED", + "format": "MULTI_TASK", + "max_concurrent_runs": 1, + "name": "bb", + "queue": { + "enabled": true + } + }, "remote_state": { "created_time": [UNIX_TIME_MILLIS][1], "creator_user_name": "[USERNAME]", @@ -100,6 +128,20 @@ } ], "action": "skip", + "prior_state": { + "deployment": { + "kind": "BUNDLE", + "metadata_file_path": "/Workspace/Users/[USERNAME]/.bundle/test-bundle/default/state/metadata.json" + }, + "description": "new_prefix [NUMID]", + "edit_mode": "UI_LOCKED", + "format": "MULTI_TASK", + "max_concurrent_runs": 1, + "name": "cc", + "queue": { + "enabled": true + } + }, "remote_state": { "created_time": [UNIX_TIME_MILLIS][2], "creator_user_name": "[USERNAME]", @@ -147,6 +189,20 @@ } ], "action": "skip", + "prior_state": { + "deployment": { + "kind": "BUNDLE", + "metadata_file_path": "/Workspace/Users/[USERNAME]/.bundle/test-bundle/default/state/metadata.json" + }, + "description": "new_prefix [NUMID]", + "edit_mode": "UI_LOCKED", + "format": "MULTI_TASK", + "max_concurrent_runs": 1, + "name": "dd", + "queue": { + "enabled": true + } + }, "remote_state": { "created_time": [UNIX_TIME_MILLIS][3], "creator_user_name": "[USERNAME]", @@ -194,6 +250,20 @@ } ], "action": "skip", + "prior_state": { + "deployment": { + "kind": "BUNDLE", + "metadata_file_path": "/Workspace/Users/[USERNAME]/.bundle/test-bundle/default/state/metadata.json" + }, + "description": "new_prefix [NUMID]", + "edit_mode": "UI_LOCKED", + "format": "MULTI_TASK", + "max_concurrent_runs": 1, + "name": "ee", + "queue": { + "enabled": true + } + }, "remote_state": { "created_time": [UNIX_TIME_MILLIS][4], "creator_user_name": "[USERNAME]", diff --git a/acceptance/bundle/resource_deps/id_chain/out.plan_update.direct.json b/acceptance/bundle/resource_deps/id_chain/out.plan_update.direct.json index 0c9904aec79..7e208cbd4be 100644 --- a/acceptance/bundle/resource_deps/id_chain/out.plan_update.direct.json +++ b/acceptance/bundle/resource_deps/id_chain/out.plan_update.direct.json @@ -22,6 +22,20 @@ } } }, + "prior_state": { + "deployment": { + "kind": "BUNDLE", + "metadata_file_path": "/Workspace/Users/[USERNAME]/.bundle/test-bundle/default/state/metadata.json" + }, + "description": "aa_desc", + "edit_mode": "UI_LOCKED", + "format": "MULTI_TASK", + "max_concurrent_runs": 1, + "name": "aa", + "queue": { + "enabled": true + } + }, "remote_state": { "created_time": [UNIX_TIME_MILLIS][0], "creator_user_name": "[USERNAME]", @@ -91,6 +105,20 @@ } } }, + "prior_state": { + "deployment": { + "kind": "BUNDLE", + "metadata_file_path": "/Workspace/Users/[USERNAME]/.bundle/test-bundle/default/state/metadata.json" + }, + "description": "prefix [NUMID]", + "edit_mode": "UI_LOCKED", + "format": "MULTI_TASK", + "max_concurrent_runs": 1, + "name": "bb", + "queue": { + "enabled": true + } + }, "remote_state": { "created_time": [UNIX_TIME_MILLIS][1], "creator_user_name": "[USERNAME]", @@ -160,6 +188,20 @@ } } }, + "prior_state": { + "deployment": { + "kind": "BUNDLE", + "metadata_file_path": "/Workspace/Users/[USERNAME]/.bundle/test-bundle/default/state/metadata.json" + }, + "description": "prefix [NUMID]", + "edit_mode": "UI_LOCKED", + "format": "MULTI_TASK", + "max_concurrent_runs": 1, + "name": "cc", + "queue": { + "enabled": true + } + }, "remote_state": { "created_time": [UNIX_TIME_MILLIS][2], "creator_user_name": "[USERNAME]", @@ -229,6 +271,20 @@ } } }, + "prior_state": { + "deployment": { + "kind": "BUNDLE", + "metadata_file_path": "/Workspace/Users/[USERNAME]/.bundle/test-bundle/default/state/metadata.json" + }, + "description": "prefix [NUMID]", + "edit_mode": "UI_LOCKED", + "format": "MULTI_TASK", + "max_concurrent_runs": 1, + "name": "dd", + "queue": { + "enabled": true + } + }, "remote_state": { "created_time": [UNIX_TIME_MILLIS][3], "creator_user_name": "[USERNAME]", @@ -298,6 +354,20 @@ } } }, + "prior_state": { + "deployment": { + "kind": "BUNDLE", + "metadata_file_path": "/Workspace/Users/[USERNAME]/.bundle/test-bundle/default/state/metadata.json" + }, + "description": "prefix [NUMID]", + "edit_mode": "UI_LOCKED", + "format": "MULTI_TASK", + "max_concurrent_runs": 1, + "name": "ee", + "queue": { + "enabled": true + } + }, "remote_state": { "created_time": [UNIX_TIME_MILLIS][4], "creator_user_name": "[USERNAME]", diff --git a/acceptance/bundle/resource_deps/job_id_delete_bar/out.plan_delete.direct.json b/acceptance/bundle/resource_deps/job_id_delete_bar/out.plan_delete.direct.json index 64087a8c63c..f43c219a748 100644 --- a/acceptance/bundle/resource_deps/job_id_delete_bar/out.plan_delete.direct.json +++ b/acceptance/bundle/resource_deps/job_id_delete_bar/out.plan_delete.direct.json @@ -44,6 +44,27 @@ } } }, + "prior_state": { + "deployment": { + "kind": "BUNDLE", + "metadata_file_path": "/Workspace/Users/[USERNAME]/.bundle/test-bundle/default/state/metadata.json" + }, + "edit_mode": "UI_LOCKED", + "format": "MULTI_TASK", + "max_concurrent_runs": 1, + "name": "job foo", + "queue": { + "enabled": true + }, + "tasks": [ + { + "run_job_task": { + "job_id": [BAR_ID] + }, + "task_key": "job_task" + } + ] + }, "remote_state": { "created_time": [UNIX_TIME_MILLIS][1], "creator_user_name": "[USERNAME]", diff --git a/acceptance/bundle/resource_deps/job_id_delete_foo/out.plan_delete.direct.json b/acceptance/bundle/resource_deps/job_id_delete_foo/out.plan_delete.direct.json index 6c6c9577e8f..0f72b1a6d8b 100644 --- a/acceptance/bundle/resource_deps/job_id_delete_foo/out.plan_delete.direct.json +++ b/acceptance/bundle/resource_deps/job_id_delete_foo/out.plan_delete.direct.json @@ -6,6 +6,19 @@ "plan": { "resources.jobs.bar": { "action": "skip", + "prior_state": { + "deployment": { + "kind": "BUNDLE", + "metadata_file_path": "/Workspace/Users/[USERNAME]/.bundle/test-bundle/default/state/metadata.json" + }, + "edit_mode": "UI_LOCKED", + "format": "MULTI_TASK", + "max_concurrent_runs": 1, + "name": "job bar", + "queue": { + "enabled": true + } + }, "remote_state": { "created_time": [UNIX_TIME_MILLIS][0], "creator_user_name": "[USERNAME]", diff --git a/acceptance/bundle/resource_deps/jobs_update_remote/out.plan_update.direct.json b/acceptance/bundle/resource_deps/jobs_update_remote/out.plan_update.direct.json index 77e77c19eb1..1a42b24c4f4 100644 --- a/acceptance/bundle/resource_deps/jobs_update_remote/out.plan_update.direct.json +++ b/acceptance/bundle/resource_deps/jobs_update_remote/out.plan_update.direct.json @@ -12,6 +12,20 @@ } ], "action": "skip", + "prior_state": { + "deployment": { + "kind": "BUNDLE", + "metadata_file_path": "/Workspace/Users/[USERNAME]/.bundle/test-bundle/default/state/metadata.json" + }, + "description": "depends on foo id [FOO_ID]", + "edit_mode": "UI_LOCKED", + "format": "MULTI_TASK", + "max_concurrent_runs": 1, + "name": "bar", + "queue": { + "enabled": true + } + }, "remote_state": { "created_time": [UNIX_TIME_MILLIS][0], "creator_user_name": "[USERNAME]", @@ -84,6 +98,35 @@ } } }, + "prior_state": { + "deployment": { + "kind": "BUNDLE", + "metadata_file_path": "/Workspace/Users/[USERNAME]/.bundle/test-bundle/default/state/metadata.json" + }, + "edit_mode": "UI_LOCKED", + "format": "MULTI_TASK", + "job_clusters": [ + { + "job_cluster_key": "key", + "new_cluster": { + "num_workers": 0, + "spark_version": "13.3.x-scala2.12" + } + } + ], + "max_concurrent_runs": 1, + "name": "foo", + "queue": { + "enabled": true + }, + "trigger": { + "pause_status": "UNPAUSED", + "periodic": { + "interval": 1, + "unit": "DAYS" + } + } + }, "remote_state": { "created_time": [UNIX_TIME_MILLIS][1], "creator_user_name": "[USERNAME]", diff --git a/acceptance/bundle/resource_deps/pipelines_recreate/out.plan_noop.direct.json b/acceptance/bundle/resource_deps/pipelines_recreate/out.plan_noop.direct.json index 7b3f986f02c..1bd5b25f5c9 100644 --- a/acceptance/bundle/resource_deps/pipelines_recreate/out.plan_noop.direct.json +++ b/acceptance/bundle/resource_deps/pipelines_recreate/out.plan_noop.direct.json @@ -12,6 +12,20 @@ } ], "action": "skip", + "prior_state": { + "deployment": { + "kind": "BUNDLE", + "metadata_file_path": "/Workspace/Users/[USERNAME]/.bundle/test-bundle/default/state/metadata.json" + }, + "description": "depends on foo id [FOO_ID_2]", + "edit_mode": "UI_LOCKED", + "format": "MULTI_TASK", + "max_concurrent_runs": 1, + "name": "job bar", + "queue": { + "enabled": true + } + }, "remote_state": { "created_time": [UNIX_TIME_MILLIS][0], "creator_user_name": "[USERNAME]", @@ -53,6 +67,16 @@ }, "resources.pipelines.foo": { "action": "skip", + "prior_state": { + "channel": "CURRENT", + "deployment": { + "kind": "BUNDLE", + "metadata_file_path": "/Workspace/Users/[USERNAME]/.bundle/test-bundle/default/state/metadata.json" + }, + "edition": "ADVANCED", + "name": "pipeline foo", + "storage": "dbfs:/my-new-storage" + }, "remote_state": { "channel": "CURRENT", "creator_user_name": "[USERNAME]", diff --git a/acceptance/bundle/resource_deps/pipelines_recreate/out.plan_update.direct.json b/acceptance/bundle/resource_deps/pipelines_recreate/out.plan_update.direct.json index 4f7329005fb..868df1a98ec 100644 --- a/acceptance/bundle/resource_deps/pipelines_recreate/out.plan_update.direct.json +++ b/acceptance/bundle/resource_deps/pipelines_recreate/out.plan_update.direct.json @@ -31,6 +31,20 @@ "description": "depends on foo id ${resources.pipelines.foo.id}" } }, + "prior_state": { + "deployment": { + "kind": "BUNDLE", + "metadata_file_path": "/Workspace/Users/[USERNAME]/.bundle/test-bundle/default/state/metadata.json" + }, + "description": "depends on foo id [FOO_ID]", + "edit_mode": "UI_LOCKED", + "format": "MULTI_TASK", + "max_concurrent_runs": 1, + "name": "job bar", + "queue": { + "enabled": true + } + }, "remote_state": { "created_time": [UNIX_TIME_MILLIS][0], "creator_user_name": "[USERNAME]", @@ -90,6 +104,16 @@ "storage": "dbfs:/my-new-storage" } }, + "prior_state": { + "channel": "CURRENT", + "deployment": { + "kind": "BUNDLE", + "metadata_file_path": "/Workspace/Users/[USERNAME]/.bundle/test-bundle/default/state/metadata.json" + }, + "edition": "ADVANCED", + "name": "pipeline foo", + "storage": "dbfs:/my-storage" + }, "remote_state": { "channel": "CURRENT", "creator_user_name": "[USERNAME]", diff --git a/acceptance/bundle/resource_deps/remote_pipeline/out.plan_skip.direct.json b/acceptance/bundle/resource_deps/remote_pipeline/out.plan_skip.direct.json index 0bb3be878f6..6e801123088 100644 --- a/acceptance/bundle/resource_deps/remote_pipeline/out.plan_skip.direct.json +++ b/acceptance/bundle/resource_deps/remote_pipeline/out.plan_skip.direct.json @@ -6,6 +6,15 @@ "plan": { "resources.pipelines.foo1": { "action": "skip", + "prior_state": { + "channel": "CURRENT", + "deployment": { + "kind": "BUNDLE", + "metadata_file_path": "/Workspace/Users/[USERNAME]/.bundle/test-bundle/default/state/metadata.json" + }, + "edition": "ADVANCED", + "name": "foo1 name" + }, "remote_state": { "channel": "CURRENT", "creator_user_name": "[USERNAME]", @@ -39,6 +48,15 @@ } ], "action": "skip", + "prior_state": { + "channel": "CURRENT", + "deployment": { + "kind": "BUNDLE", + "metadata_file_path": "/Workspace/Users/[USERNAME]/.bundle/test-bundle/default/state/metadata.json" + }, + "edition": "ADVANCED", + "name": "foo2 foo1.creator_user_name=[USERNAME]" + }, "remote_state": { "channel": "CURRENT", "creator_user_name": "[USERNAME]", @@ -72,6 +90,15 @@ } ], "action": "skip", + "prior_state": { + "channel": "CURRENT", + "deployment": { + "kind": "BUNDLE", + "metadata_file_path": "/Workspace/Users/[USERNAME]/.bundle/test-bundle/default/state/metadata.json" + }, + "edition": "ADVANCED", + "name": "foo3 foo2.state=IDLE" + }, "remote_state": { "channel": "CURRENT", "creator_user_name": "[USERNAME]", @@ -105,6 +132,15 @@ } ], "action": "skip", + "prior_state": { + "channel": "CURRENT", + "deployment": { + "kind": "BUNDLE", + "metadata_file_path": "/Workspace/Users/[USERNAME]/.bundle/test-bundle/default/state/metadata.json" + }, + "edition": "ADVANCED", + "name": "foo4 foo3.last_modified=[UNIX_TIME_MILLIS]" + }, "remote_state": { "channel": "CURRENT", "creator_user_name": "[USERNAME]", diff --git a/acceptance/bundle/resources/clusters/deploy/update-and-resize-autoscale/out.plan_.direct.json b/acceptance/bundle/resources/clusters/deploy/update-and-resize-autoscale/out.plan_.direct.json index c7af4b9a333..d4797d42dd7 100644 --- a/acceptance/bundle/resources/clusters/deploy/update-and-resize-autoscale/out.plan_.direct.json +++ b/acceptance/bundle/resources/clusters/deploy/update-and-resize-autoscale/out.plan_.direct.json @@ -36,6 +36,13 @@ "spark_version": "13.3.x-snapshot-scala2.12" } }, + "prior_state": { + "autotermination_minutes": 60, + "cluster_name": "test-cluster-[UNIQUE_NAME]", + "node_type_id": "[NODE_TYPE_ID]", + "num_workers": 2, + "spark_version": "13.3.x-snapshot-scala2.12" + }, "remote_state": { "autotermination_minutes": 60, "aws_attributes": { @@ -116,6 +123,16 @@ "spark_version": "13.3.x-snapshot-scala2.12" } }, + "prior_state": { + "autoscale": { + "max_workers": 4, + "min_workers": 2 + }, + "autotermination_minutes": 60, + "cluster_name": "test-cluster-[UNIQUE_NAME]", + "node_type_id": "[NODE_TYPE_ID]", + "spark_version": "13.3.x-snapshot-scala2.12" + }, "remote_state": { "autoscale": { "max_workers": 4, @@ -199,6 +216,16 @@ "spark_version": "13.3.x-snapshot-scala2.12" } }, + "prior_state": { + "autoscale": { + "max_workers": 5, + "min_workers": 3 + }, + "autotermination_minutes": 60, + "cluster_name": "test-cluster-[UNIQUE_NAME]", + "node_type_id": "[NODE_TYPE_ID]", + "spark_version": "13.3.x-snapshot-scala2.12" + }, "remote_state": { "autoscale": { "max_workers": 5, @@ -281,6 +308,16 @@ "spark_version": "13.3.x-snapshot-scala2.12" } }, + "prior_state": { + "autoscale": { + "max_workers": 6, + "min_workers": 4 + }, + "autotermination_minutes": 60, + "cluster_name": "test-cluster-[UNIQUE_NAME]", + "node_type_id": "[NODE_TYPE_ID]", + "spark_version": "13.3.x-snapshot-scala2.12" + }, "remote_state": { "autoscale": { "max_workers": 6, diff --git a/acceptance/bundle/resources/clusters/deploy/update-and-resize/out.plan_.direct.json b/acceptance/bundle/resources/clusters/deploy/update-and-resize/out.plan_.direct.json index b4ba1c76152..d42158e044e 100644 --- a/acceptance/bundle/resources/clusters/deploy/update-and-resize/out.plan_.direct.json +++ b/acceptance/bundle/resources/clusters/deploy/update-and-resize/out.plan_.direct.json @@ -39,6 +39,16 @@ "spark_version": "13.3.x-snapshot-scala2.12" } }, + "prior_state": { + "autotermination_minutes": 60, + "cluster_name": "test-cluster-[UNIQUE_NAME]", + "instance_pool_id": "[TEST_INSTANCE_POOL_ID]", + "num_workers": 2, + "spark_conf": { + "spark.executor.memory": "2g" + }, + "spark_version": "13.3.x-snapshot-scala2.12" + }, "remote_state": { "autotermination_minutes": 60, "aws_attributes": { @@ -111,6 +121,16 @@ "spark_version": "13.3.x-snapshot-scala2.12" } }, + "prior_state": { + "autotermination_minutes": 60, + "cluster_name": "test-cluster-[UNIQUE_NAME]", + "instance_pool_id": "[TEST_INSTANCE_POOL_ID]", + "num_workers": 3, + "spark_conf": { + "spark.executor.memory": "2g" + }, + "spark_version": "13.3.x-snapshot-scala2.12" + }, "remote_state": { "autotermination_minutes": 60, "aws_attributes": { @@ -183,6 +203,16 @@ "spark_version": "13.3.x-snapshot-scala2.12" } }, + "prior_state": { + "autotermination_minutes": 60, + "cluster_name": "test-cluster-[UNIQUE_NAME]", + "instance_pool_id": "[TEST_INSTANCE_POOL_ID]", + "num_workers": 4, + "spark_conf": { + "spark.executor.memory": "2g" + }, + "spark_version": "13.3.x-snapshot-scala2.12" + }, "remote_state": { "autotermination_minutes": 60, "aws_attributes": { diff --git a/acceptance/bundle/resources/dashboards/dataset-catalog-schema/out.plan.direct.json b/acceptance/bundle/resources/dashboards/dataset-catalog-schema/out.plan.direct.json index 01e4ab17548..6e6b4749037 100644 --- a/acceptance/bundle/resources/dashboards/dataset-catalog-schema/out.plan.direct.json +++ b/acceptance/bundle/resources/dashboards/dataset-catalog-schema/out.plan.direct.json @@ -6,6 +6,17 @@ "plan": { "resources.dashboards.dashboard1": { "action": "skip", + "prior_state": { + "dataset_catalog": "main", + "dataset_schema": "default", + "display_name": "test bundle-deploy-dashboard-dataset [UUID]", + "embed_credentials": true, + "etag": "[ETAG]", + "parent_path": "/Workspace/Users/[USERNAME]", + "published": true, + "serialized_dashboard": "{\n \"pages\": [\n {\n \"name\": \"test_page\",\n \"displayName\": \"Test Page\",\n \"pageType\": \"PAGE_TYPE_CANVAS\"\n }\n ],\n \"datasets\": [\n {\n \"name\": \"bf8f76f4\",\n \"displayName\": \"Test Dataset\",\n \"queryLines\": [\n \"SELECT 1\\n\"\n ],\n \"catalog\": \"foobar\",\n \"schema\": \"foobar\"\n }\n ]\n}\n", + "warehouse_id": "[TEST_DEFAULT_WAREHOUSE_ID]" + }, "remote_state": { "create_time": "[TIMESTAMP]", "dashboard_id": "[DASHBOARD_ID]", diff --git a/acceptance/bundle/resources/dashboards/delete-trashed-out-of-band/out.plan.direct.json b/acceptance/bundle/resources/dashboards/delete-trashed-out-of-band/out.plan.direct.json index 6cedd195b0f..b4ed7bba40b 100644 --- a/acceptance/bundle/resources/dashboards/delete-trashed-out-of-band/out.plan.direct.json +++ b/acceptance/bundle/resources/dashboards/delete-trashed-out-of-band/out.plan.direct.json @@ -16,11 +16,21 @@ "warehouse_id": "[TEST_DEFAULT_WAREHOUSE_ID]" } }, + "prior_state": { + "display_name": "test bundle-deploy-dashboard [UNIQUE_NAME])", + "embed_credentials": false, + "etag": "[ETAG]", + "parent_path": "/Workspace/Users/[USERNAME]/.bundle/delete-trashed-out-of-band-[UNIQUE_NAME]/default/resources", + "published": true, + "serialized_dashboard": "{\"pages\":[{\"name\":\"test-page\",\"displayName\":\"Test Dashboard\"}]}\n", + "warehouse_id": "[TEST_DEFAULT_WAREHOUSE_ID]" + }, "changes": { "etag": { - "action": "update", + "action": "skip", "reason": "custom", - "old": "[ETAG]" + "old": "[ETAG]", + "remote": "[ETAG]" } } } diff --git a/acceptance/bundle/resources/dashboards/detect-change/out.plan.direct.json b/acceptance/bundle/resources/dashboards/detect-change/out.plan.direct.json index b00e44d4fe8..02f69b79052 100644 --- a/acceptance/bundle/resources/dashboards/detect-change/out.plan.direct.json +++ b/acceptance/bundle/resources/dashboards/detect-change/out.plan.direct.json @@ -16,6 +16,15 @@ "warehouse_id": "[TEST_DEFAULT_WAREHOUSE_ID]" } }, + "prior_state": { + "display_name": "test-dashboard-[UNIQUE_NAME]", + "embed_credentials": false, + "etag": "[ETAG_1]", + "parent_path": "/Workspace/Users/[USERNAME]/.bundle/[UNIQUE_NAME]/resources", + "published": true, + "serialized_dashboard": "{\n \"pages\": [\n {\n \"displayName\": \"New Page\",\n \"layout\": [\n {\n \"position\": {\n \"height\": 2,\n \"width\": 6,\n \"x\": 0,\n \"y\": 0\n },\n \"widget\": {\n \"name\": \"82eb9107\",\n \"textbox_spec\": \"# I'm a title\"\n }\n },\n {\n \"position\": {\n \"height\": 2,\n \"width\": 6,\n \"x\": 0,\n \"y\": 2\n },\n \"widget\": {\n \"name\": \"ffa6de4f\",\n \"textbox_spec\": \"Text\"\n }\n }\n ],\n \"name\": \"fdd21a3c\"\n }\n ]\n}\n", + "warehouse_id": "[TEST_DEFAULT_WAREHOUSE_ID]" + }, "remote_state": { "create_time": "[TIMESTAMP]", "dashboard_id": "[DASHBOARD_ID]", diff --git a/acceptance/bundle/resources/dashboards/publish-failure-stale-content/output.txt b/acceptance/bundle/resources/dashboards/publish-failure-stale-content/output.txt index 8b0f79427d2..f1e6555eb5d 100644 --- a/acceptance/bundle/resources/dashboards/publish-failure-stale-content/output.txt +++ b/acceptance/bundle/resources/dashboards/publish-failure-stale-content/output.txt @@ -15,6 +15,8 @@ Deployment complete! } >>> [CLI] bundle plan -o json +json.plan.resources.dashboards.dashboard1.prior_state.etag = "[ETAG_1]"; +json.plan.resources.dashboards.dashboard1.prior_state.published = true; json.plan.resources.dashboards.dashboard1.remote_state.etag = "[ETAG_1]"; json.plan.resources.dashboards.dashboard1.remote_state.published = true; json.plan.resources.dashboards.dashboard1.changes.etag.action = "skip"; @@ -83,6 +85,8 @@ To overwrite the remote changes with your local version, use --force. The remote modifications will be lost. json.plan.resources.dashboards.dashboard1.new_state.value.published = true; +json.plan.resources.dashboards.dashboard1.prior_state.etag = "[ETAG_1]"; +json.plan.resources.dashboards.dashboard1.prior_state.published = true; json.plan.resources.dashboards.dashboard1.remote_state.etag = "[ETAG_2]"; json.plan.resources.dashboards.dashboard1.remote_state.published = true; json.plan.resources.dashboards.dashboard1.changes.etag.action = "update"; diff --git a/acceptance/bundle/resources/dashboards/simple/out.plan.direct.json b/acceptance/bundle/resources/dashboards/simple/out.plan.direct.json index 5e6ad9eb0a6..2960eb06179 100644 --- a/acceptance/bundle/resources/dashboards/simple/out.plan.direct.json +++ b/acceptance/bundle/resources/dashboards/simple/out.plan.direct.json @@ -6,6 +6,15 @@ "plan": { "resources.dashboards.dashboard1": { "action": "skip", + "prior_state": { + "display_name": "test bundle-deploy-dashboard [UUID]", + "embed_credentials": true, + "etag": "[ETAG]", + "parent_path": "/Workspace/Users/[USERNAME]", + "published": true, + "serialized_dashboard": "{ }\n", + "warehouse_id": "[TEST_DEFAULT_WAREHOUSE_ID]" + }, "remote_state": { "create_time": "[TIMESTAMP]", "dashboard_id": "[DASHBOARD_ID]", diff --git a/acceptance/bundle/resources/dashboards/unpublish-out-of-band/out.plan.direct.json b/acceptance/bundle/resources/dashboards/unpublish-out-of-band/out.plan.direct.json index 852cc492879..2d6afba9589 100644 --- a/acceptance/bundle/resources/dashboards/unpublish-out-of-band/out.plan.direct.json +++ b/acceptance/bundle/resources/dashboards/unpublish-out-of-band/out.plan.direct.json @@ -16,6 +16,15 @@ "warehouse_id": "[TEST_DEFAULT_WAREHOUSE_ID]" } }, + "prior_state": { + "display_name": "test bundle-deploy-dashboard [UNIQUE_NAME]", + "embed_credentials": false, + "etag": "[ETAG]", + "parent_path": "/Workspace/Users/[USERNAME]/.bundle/unpublish-out-of-band-[UNIQUE_NAME]/default/resources", + "published": true, + "serialized_dashboard": "{\"pages\":[{\"displayName\":\"Test Dashboard\",\"name\":\"test-page\"}]}", + "warehouse_id": "[TEST_DEFAULT_WAREHOUSE_ID]" + }, "remote_state": { "create_time": "[TIMESTAMP]", "dashboard_id": "[DASHBOARD1_ID]", diff --git a/acceptance/bundle/resources/genie_spaces/inline/out.plan.json b/acceptance/bundle/resources/genie_spaces/inline/out.plan.json index 02b174d3869..6f2ff723193 100644 --- a/acceptance/bundle/resources/genie_spaces/inline/out.plan.json +++ b/acceptance/bundle/resources/genie_spaces/inline/out.plan.json @@ -6,6 +6,14 @@ "plan": { "resources.genie_spaces.sales_analytics": { "action": "skip", + "prior_state": { + "description": "Inline serialized_space test", + "etag": "1", + "parent_path": "/Workspace/Users/[USERNAME]/.bundle/deploy-genie-space-inline-[UNIQUE_NAME]/default/resources", + "serialized_space": "{\"config\":{\"sample_questions\":[{\"id\":\"sq-001\",\"question\":[\"What is the total revenue?\"]}]},\"data_sources\":{\"tables\":[{\"column_configs\":[{\"column_name\":\"amount\",\"get_example_values\":true}],\"identifier\":\"main.sales.orders\"}]},\"version\":1}", + "title": "Sales Analytics Inline Genie", + "warehouse_id": "test-warehouse-id" + }, "remote_state": { "description": "Inline serialized_space test", "etag": "1", diff --git a/acceptance/bundle/resources/grants/catalogs/out.plan2.direct.json b/acceptance/bundle/resources/grants/catalogs/out.plan2.direct.json index fa674375af2..2957ba68e83 100644 --- a/acceptance/bundle/resources/grants/catalogs/out.plan2.direct.json +++ b/acceptance/bundle/resources/grants/catalogs/out.plan2.direct.json @@ -6,6 +6,10 @@ "plan": { "resources.catalogs.grants_catalog": { "action": "skip", + "prior_state": { + "comment": "Test catalog for grants", + "name": "catalog_grants_[UNIQUE_NAME]" + }, "remote_state": { "catalog_type": "MANAGED_CATALOG", "comment": "Test catalog for grants", @@ -36,6 +40,18 @@ ] } }, + "prior_state": { + "full_name": "catalog_grants_[UNIQUE_NAME]", + "__embed__": [ + { + "principal": "deco-test-user@databricks.com", + "privileges": [ + "CREATE_SCHEMA", + "USE_CATALOG" + ] + } + ] + }, "remote_state": { "full_name": "catalog_grants_[UNIQUE_NAME]", "__embed__": [ diff --git a/acceptance/bundle/resources/grants/schemas/change_privilege/out.plan2.direct.json b/acceptance/bundle/resources/grants/schemas/change_privilege/out.plan2.direct.json index d8bbf97ffd6..013432d7a28 100644 --- a/acceptance/bundle/resources/grants/schemas/change_privilege/out.plan2.direct.json +++ b/acceptance/bundle/resources/grants/schemas/change_privilege/out.plan2.direct.json @@ -6,6 +6,10 @@ "plan": { "resources.schemas.grants_schema": { "action": "skip", + "prior_state": { + "catalog_name": "main", + "name": "schema_grants_[UNIQUE_NAME]" + }, "remote_state": { "browse_only": false, "catalog_name": "main", @@ -40,6 +44,19 @@ ] } }, + "prior_state": { + "securable_type": "schema", + "full_name": "main.schema_grants_[UNIQUE_NAME]", + "__embed__": [ + { + "principal": "deco-test-user@databricks.com", + "privileges": [ + "CREATE_TABLE", + "USE_SCHEMA" + ] + } + ] + }, "remote_state": { "securable_type": "schema", "full_name": "main.schema_grants_[UNIQUE_NAME]", diff --git a/acceptance/bundle/resources/grants/schemas/duplicate_principals/out.plan.direct.json b/acceptance/bundle/resources/grants/schemas/duplicate_principals/out.plan.direct.json index 84fca9f95c8..68d14a2d156 100644 --- a/acceptance/bundle/resources/grants/schemas/duplicate_principals/out.plan.direct.json +++ b/acceptance/bundle/resources/grants/schemas/duplicate_principals/out.plan.direct.json @@ -6,6 +6,10 @@ "plan": { "resources.schemas.apps_schema": { "action": "skip", + "prior_state": { + "catalog_name": "main", + "name": "schema_dup_grants_[UNIQUE_NAME]" + }, "remote_state": { "browse_only": false, "catalog_name": "main", @@ -30,6 +34,18 @@ } ], "action": "skip", + "prior_state": { + "securable_type": "schema", + "full_name": "main.schema_dup_grants_[UNIQUE_NAME]", + "__embed__": [ + { + "principal": "deco-test-user@databricks.com", + "privileges": [ + "CREATE_TABLE" + ] + } + ] + }, "remote_state": { "securable_type": "schema", "full_name": "main.schema_dup_grants_[UNIQUE_NAME]", diff --git a/acceptance/bundle/resources/grants/schemas/out_of_band_principal/out.plan.direct.json b/acceptance/bundle/resources/grants/schemas/out_of_band_principal/out.plan.direct.json index fc7ceb399af..33703a3295f 100644 --- a/acceptance/bundle/resources/grants/schemas/out_of_band_principal/out.plan.direct.json +++ b/acceptance/bundle/resources/grants/schemas/out_of_band_principal/out.plan.direct.json @@ -6,6 +6,10 @@ "plan": { "resources.schemas.grants_schema": { "action": "skip", + "prior_state": { + "catalog_name": "main", + "name": "schema_out_of_band_principal_[UNIQUE_NAME]" + }, "remote_state": { "browse_only": false, "catalog_name": "main", @@ -44,6 +48,18 @@ ] } }, + "prior_state": { + "securable_type": "schema", + "full_name": "main.schema_out_of_band_principal_[UNIQUE_NAME]", + "__embed__": [ + { + "principal": "[USERNAME]", + "privileges": [ + "CREATE_TABLE" + ] + } + ] + }, "remote_state": { "securable_type": "schema", "full_name": "main.schema_out_of_band_principal_[UNIQUE_NAME]" diff --git a/acceptance/bundle/resources/grants/schemas/out_of_band_principal/out.plan2.direct.json b/acceptance/bundle/resources/grants/schemas/out_of_band_principal/out.plan2.direct.json index 90586b63a61..487efd8d2d8 100644 --- a/acceptance/bundle/resources/grants/schemas/out_of_band_principal/out.plan2.direct.json +++ b/acceptance/bundle/resources/grants/schemas/out_of_band_principal/out.plan2.direct.json @@ -6,6 +6,10 @@ "plan": { "resources.schemas.grants_schema": { "action": "skip", + "prior_state": { + "catalog_name": "main", + "name": "schema_out_of_band_principal_[UNIQUE_NAME]" + }, "remote_state": { "browse_only": false, "catalog_name": "main", @@ -30,6 +34,18 @@ } ], "action": "skip", + "prior_state": { + "securable_type": "schema", + "full_name": "main.schema_out_of_band_principal_[UNIQUE_NAME]", + "__embed__": [ + { + "principal": "[USERNAME]", + "privileges": [ + "CREATE_TABLE" + ] + } + ] + }, "remote_state": { "securable_type": "schema", "full_name": "main.schema_out_of_band_principal_[UNIQUE_NAME]", diff --git a/acceptance/bundle/resources/grants/volumes/out.plan2.direct.json b/acceptance/bundle/resources/grants/volumes/out.plan2.direct.json index 1daacee25b4..736a04fce73 100644 --- a/acceptance/bundle/resources/grants/volumes/out.plan2.direct.json +++ b/acceptance/bundle/resources/grants/volumes/out.plan2.direct.json @@ -6,6 +6,10 @@ "plan": { "resources.schemas.grants_schema": { "action": "skip", + "prior_state": { + "catalog_name": "main", + "name": "schema_grants_[UNIQUE_NAME]" + }, "remote_state": { "browse_only": false, "catalog_name": "main", @@ -25,6 +29,12 @@ } ], "action": "skip", + "prior_state": { + "catalog_name": "main", + "name": "volume_name", + "schema_name": "schema_grants_[UNIQUE_NAME]", + "volume_type": "MANAGED" + }, "remote_state": { "catalog_name": "main", "created_at": [UNIX_TIME_MILLIS][1], @@ -67,6 +77,19 @@ ] } }, + "prior_state": { + "securable_type": "volume", + "full_name": "main.schema_grants_[UNIQUE_NAME].volume_name", + "__embed__": [ + { + "principal": "deco-test-user@databricks.com", + "privileges": [ + "READ_VOLUME", + "WRITE_VOLUME" + ] + } + ] + }, "remote_state": { "securable_type": "volume", "full_name": "main.schema_grants_[UNIQUE_NAME].volume_name", diff --git a/acceptance/bundle/resources/job_runs/redeploy/output.txt b/acceptance/bundle/resources/job_runs/redeploy/output.txt index 6ec19be8bce..b78e1898abb 100644 --- a/acceptance/bundle/resources/job_runs/redeploy/output.txt +++ b/acceptance/bundle/resources/job_runs/redeploy/output.txt @@ -57,6 +57,12 @@ Resources: } } }, + "prior_state": { + "job_id": [MY_JOB_ID], + "job_parameters": { + "env": "dev" + } + }, "remote_state": { "job_id": [MY_JOB_ID], "job_parameters": { diff --git a/acceptance/bundle/resources/jobs/delete_task/out.plan_update.direct.json b/acceptance/bundle/resources/jobs/delete_task/out.plan_update.direct.json index 7a64f0a18d6..0f8c77c3a05 100644 --- a/acceptance/bundle/resources/jobs/delete_task/out.plan_update.direct.json +++ b/acceptance/bundle/resources/jobs/delete_task/out.plan_update.direct.json @@ -42,6 +42,53 @@ ] } }, + "prior_state": { + "deployment": { + "kind": "BUNDLE", + "metadata_file_path": "/Workspace/Users/[USERNAME]/.bundle/test-bundle/default/state/metadata.json" + }, + "edit_mode": "UI_LOCKED", + "format": "MULTI_TASK", + "max_concurrent_runs": 1, + "name": "Untitled", + "queue": { + "enabled": true + }, + "tasks": [ + { + "existing_cluster_id": "0717-132531-5opeqon1", + "libraries": [ + { + "whl": "/Workspace/Users/foo@bar.test/mywheel.whl" + } + ], + "python_wheel_task": { + "entry_point": "run", + "package_name": "whl" + }, + "task_key": "TestTask1" + }, + { + "for_each_task": { + "inputs": "[1]", + "task": { + "existing_cluster_id": "0717-132531-5opeqon1", + "libraries": [ + { + "whl": "/Workspace/Users/foo@bar.test/mywheel.whl" + } + ], + "python_wheel_task": { + "entry_point": "run", + "package_name": "whl" + }, + "task_key": "TestTask2" + } + }, + "task_key": "TestTask2" + } + ] + }, "remote_state": { "created_time": [UNIX_TIME_MILLIS], "creator_user_name": "[USERNAME]", diff --git a/acceptance/bundle/resources/jobs/remote_add_tag/out.plan_post_update.direct.json b/acceptance/bundle/resources/jobs/remote_add_tag/out.plan_post_update.direct.json index 693492859fc..21c695211e7 100644 --- a/acceptance/bundle/resources/jobs/remote_add_tag/out.plan_post_update.direct.json +++ b/acceptance/bundle/resources/jobs/remote_add_tag/out.plan_post_update.direct.json @@ -39,6 +39,37 @@ ] } }, + "prior_state": { + "deployment": { + "kind": "BUNDLE", + "metadata_file_path": "/Workspace/Users/[USERNAME]/.bundle/test-bundle/default/state/metadata.json" + }, + "edit_mode": "UI_LOCKED", + "format": "MULTI_TASK", + "max_concurrent_runs": 1, + "name": "My Wheel Job", + "queue": { + "enabled": true + }, + "tags": { + "tag1": "tag value" + }, + "tasks": [ + { + "environment_key": "test_env", + "libraries": [ + { + "whl": "/Workspace/Users/[USERNAME]/.bundle/test-bundle/default/artifacts/.internal/hello.whl" + } + ], + "python_wheel_task": { + "entry_point": "run", + "package_name": "my_test_code" + }, + "task_key": "TestTask" + } + ] + }, "remote_state": { "created_time": [UNIX_TIME_MILLIS], "creator_user_name": "[USERNAME]", diff --git a/acceptance/bundle/resources/jobs/remote_delete/deploy/out.plan.direct.json b/acceptance/bundle/resources/jobs/remote_delete/deploy/out.plan.direct.json index c9493e8a21c..c27ee2bd04c 100644 --- a/acceptance/bundle/resources/jobs/remote_delete/deploy/out.plan.direct.json +++ b/acceptance/bundle/resources/jobs/remote_delete/deploy/out.plan.direct.json @@ -36,6 +36,35 @@ } } } + }, + "prior_state": { + "deployment": { + "kind": "BUNDLE", + "metadata_file_path": "/Workspace/Users/[USERNAME]/.bundle/test-bundle/default/state/metadata.json" + }, + "edit_mode": "UI_LOCKED", + "format": "MULTI_TASK", + "job_clusters": [ + { + "job_cluster_key": "key", + "new_cluster": { + "num_workers": 0, + "spark_version": "13.3.x-scala2.12" + } + } + ], + "max_concurrent_runs": 1, + "name": "foo", + "queue": { + "enabled": true + }, + "trigger": { + "pause_status": "UNPAUSED", + "periodic": { + "interval": 1, + "unit": "DAYS" + } + } } } } diff --git a/acceptance/bundle/resources/jobs/remote_matches_config/out.plan.direct.json b/acceptance/bundle/resources/jobs/remote_matches_config/out.plan.direct.json index 3af240a0ed0..9d51840d19b 100644 --- a/acceptance/bundle/resources/jobs/remote_matches_config/out.plan.direct.json +++ b/acceptance/bundle/resources/jobs/remote_matches_config/out.plan.direct.json @@ -6,6 +6,35 @@ "plan": { "resources.jobs.my_job": { "action": "skip", + "prior_state": { + "deployment": { + "kind": "BUNDLE", + "metadata_file_path": "/Workspace/Users/[USERNAME]/.bundle/test-bundle/default/state/metadata.json" + }, + "edit_mode": "UI_LOCKED", + "format": "MULTI_TASK", + "max_concurrent_runs": 1, + "name": "Test Job for Conflict Detection", + "queue": { + "enabled": true + }, + "tags": { + "environment": "dev" + }, + "tasks": [ + { + "new_cluster": { + "node_type_id": "[NODE_TYPE_ID]", + "num_workers": 1, + "spark_version": "13.3.x-scala2.12" + }, + "notebook_task": { + "notebook_path": "/Users/{{workspace_user_name}}/test_notebook" + }, + "task_key": "main_task" + } + ] + }, "remote_state": { "created_time": [UNIX_TIME_MILLIS], "creator_user_name": "[USERNAME]", diff --git a/acceptance/bundle/resources/jobs/update/out.plan_skip.direct.json b/acceptance/bundle/resources/jobs/update/out.plan_skip.direct.json index 7aecad7102e..4153409fff5 100644 --- a/acceptance/bundle/resources/jobs/update/out.plan_skip.direct.json +++ b/acceptance/bundle/resources/jobs/update/out.plan_skip.direct.json @@ -6,6 +6,35 @@ "plan": { "resources.jobs.foo": { "action": "skip", + "prior_state": { + "deployment": { + "kind": "BUNDLE", + "metadata_file_path": "/Workspace/Users/[USERNAME]/.bundle/test-bundle/default/state/metadata.json" + }, + "edit_mode": "UI_LOCKED", + "format": "MULTI_TASK", + "job_clusters": [ + { + "job_cluster_key": "key", + "new_cluster": { + "num_workers": 0, + "spark_version": "13.3.x-scala2.12" + } + } + ], + "max_concurrent_runs": 1, + "name": "foo", + "queue": { + "enabled": true + }, + "trigger": { + "pause_status": "UNPAUSED", + "periodic": { + "interval": 1, + "unit": "DAYS" + } + } + }, "remote_state": { "created_time": [UNIX_TIME_MILLIS], "creator_user_name": "[USERNAME]", diff --git a/acceptance/bundle/resources/jobs/update/out.plan_update.direct.json b/acceptance/bundle/resources/jobs/update/out.plan_update.direct.json index 56eb1211e99..925d766e223 100644 --- a/acceptance/bundle/resources/jobs/update/out.plan_update.direct.json +++ b/acceptance/bundle/resources/jobs/update/out.plan_update.direct.json @@ -37,6 +37,35 @@ } } }, + "prior_state": { + "deployment": { + "kind": "BUNDLE", + "metadata_file_path": "/Workspace/Users/[USERNAME]/.bundle/test-bundle/default/state/metadata.json" + }, + "edit_mode": "UI_LOCKED", + "format": "MULTI_TASK", + "job_clusters": [ + { + "job_cluster_key": "key", + "new_cluster": { + "num_workers": 0, + "spark_version": "13.3.x-scala2.12" + } + } + ], + "max_concurrent_runs": 1, + "name": "foo", + "queue": { + "enabled": true + }, + "trigger": { + "pause_status": "UNPAUSED", + "periodic": { + "interval": 1, + "unit": "DAYS" + } + } + }, "remote_state": { "created_time": [UNIX_TIME_MILLIS], "creator_user_name": "[USERNAME]", diff --git a/acceptance/bundle/resources/jobs/update_single_node/out.plan_skip.direct.json b/acceptance/bundle/resources/jobs/update_single_node/out.plan_skip.direct.json index bed35fb5c8c..53c5a13dc18 100644 --- a/acceptance/bundle/resources/jobs/update_single_node/out.plan_skip.direct.json +++ b/acceptance/bundle/resources/jobs/update_single_node/out.plan_skip.direct.json @@ -6,6 +6,42 @@ "plan": { "resources.jobs.foo": { "action": "skip", + "prior_state": { + "deployment": { + "kind": "BUNDLE", + "metadata_file_path": "/Workspace/Users/[USERNAME]/.bundle/test-bundle/default/state/metadata.json" + }, + "edit_mode": "UI_LOCKED", + "format": "MULTI_TASK", + "job_clusters": [ + { + "job_cluster_key": "key", + "new_cluster": { + "custom_tags": { + "ResourceClass": "SingleNode" + }, + "num_workers": 0, + "spark_conf": { + "spark.databricks.cluster.profile": "singleNode", + "spark.master": "local[*]" + }, + "spark_version": "13.3.x-scala2.12" + } + } + ], + "max_concurrent_runs": 1, + "name": "foo", + "queue": { + "enabled": true + }, + "trigger": { + "pause_status": "UNPAUSED", + "periodic": { + "interval": 1, + "unit": "DAYS" + } + } + }, "remote_state": { "created_time": [UNIX_TIME_MILLIS], "creator_user_name": "[USERNAME]", diff --git a/acceptance/bundle/resources/jobs/update_single_node/out.plan_update.direct.json b/acceptance/bundle/resources/jobs/update_single_node/out.plan_update.direct.json index 330ae5d5c17..c2380d43522 100644 --- a/acceptance/bundle/resources/jobs/update_single_node/out.plan_update.direct.json +++ b/acceptance/bundle/resources/jobs/update_single_node/out.plan_update.direct.json @@ -44,6 +44,42 @@ } } }, + "prior_state": { + "deployment": { + "kind": "BUNDLE", + "metadata_file_path": "/Workspace/Users/[USERNAME]/.bundle/test-bundle/default/state/metadata.json" + }, + "edit_mode": "UI_LOCKED", + "format": "MULTI_TASK", + "job_clusters": [ + { + "job_cluster_key": "key", + "new_cluster": { + "custom_tags": { + "ResourceClass": "SingleNode" + }, + "num_workers": 0, + "spark_conf": { + "spark.databricks.cluster.profile": "singleNode", + "spark.master": "local[*]" + }, + "spark_version": "13.3.x-scala2.12" + } + } + ], + "max_concurrent_runs": 1, + "name": "foo", + "queue": { + "enabled": true + }, + "trigger": { + "pause_status": "UNPAUSED", + "periodic": { + "interval": 1, + "unit": "DAYS" + } + } + }, "remote_state": { "created_time": [UNIX_TIME_MILLIS], "creator_user_name": "[USERNAME]", diff --git a/acceptance/bundle/resources/model_serving_endpoints/basic/out.second-plan.direct.txt b/acceptance/bundle/resources/model_serving_endpoints/basic/out.second-plan.direct.txt index 7b4362bacbe..518dab2da23 100644 --- a/acceptance/bundle/resources/model_serving_endpoints/basic/out.second-plan.direct.txt +++ b/acceptance/bundle/resources/model_serving_endpoints/basic/out.second-plan.direct.txt @@ -4,6 +4,7 @@ json.lineage = "[UUID]"; json.serial = 1; json.plan.resources.model_serving_endpoints.my_endpoint.action = "recreate"; json.plan.resources.model_serving_endpoints.my_endpoint.new_state.value.name = "[ENDPOINT_NAME_2]"; +json.plan.resources.model_serving_endpoints.my_endpoint.prior_state.name = "[ENDPOINT_NAME_1]"; json.plan.resources.model_serving_endpoints.my_endpoint.remote_state.endpoint_details.creation_timestamp = [UNIX_TIME_MILLIS][0]; json.plan.resources.model_serving_endpoints.my_endpoint.remote_state.endpoint_details.creator = "[USERNAME]"; json.plan.resources.model_serving_endpoints.my_endpoint.remote_state.endpoint_details.description = ""; @@ -36,6 +37,11 @@ json.plan.resources.model_serving_endpoints.my_endpoint.permissions.new_state.va json.plan.resources.model_serving_endpoints.my_endpoint.permissions.new_state.value.__embed__[1].level = "CAN_VIEW"; json.plan.resources.model_serving_endpoints.my_endpoint.permissions.new_state.value.__embed__[1].user_name = "deco-test-user@databricks.com"; json.plan.resources.model_serving_endpoints.my_endpoint.permissions.new_state.vars.object_id = "/serving-endpoints/${resources.model_serving_endpoints.my_endpoint.endpoint_id}"; +json.plan.resources.model_serving_endpoints.my_endpoint.permissions.prior_state.object_id = "/serving-endpoints/[ENDPOINT_ID_1]"; +json.plan.resources.model_serving_endpoints.my_endpoint.permissions.prior_state.__embed__[0].level = "CAN_MANAGE"; +json.plan.resources.model_serving_endpoints.my_endpoint.permissions.prior_state.__embed__[0].service_principal_name = "[USERNAME]"; +json.plan.resources.model_serving_endpoints.my_endpoint.permissions.prior_state.__embed__[1].level = "CAN_VIEW"; +json.plan.resources.model_serving_endpoints.my_endpoint.permissions.prior_state.__embed__[1].user_name = "deco-test-user@databricks.com"; json.plan.resources.model_serving_endpoints.my_endpoint.permissions.remote_state.object_id = "/serving-endpoints/[ENDPOINT_ID_1]"; json.plan.resources.model_serving_endpoints.my_endpoint.permissions.remote_state.__embed__[0].level = "CAN_MANAGE"; json.plan.resources.model_serving_endpoints.my_endpoint.permissions.remote_state.__embed__[0].service_principal_name = "[USERNAME]"; diff --git a/acceptance/bundle/resources/model_serving_endpoints/recreate/catalog-name/out.second-plan.direct.json b/acceptance/bundle/resources/model_serving_endpoints/recreate/catalog-name/out.second-plan.direct.json index 86932f72ce6..a8c94e08c93 100644 --- a/acceptance/bundle/resources/model_serving_endpoints/recreate/catalog-name/out.second-plan.direct.json +++ b/acceptance/bundle/resources/model_serving_endpoints/recreate/catalog-name/out.second-plan.direct.json @@ -31,6 +31,29 @@ "name": "[ORIGINAL_ENDPOINT_ID]" } }, + "prior_state": { + "config": { + "auto_capture_config": { + "catalog_name": "main", + "schema_name": "default", + "table_name_prefix": "my_table" + }, + "served_entities": [ + { + "external_model": { + "name": "gpt-4o-mini", + "openai_config": { + "openai_api_key": "{{secrets/test-scope/openai-key}}" + }, + "provider": "openai", + "task": "llm/v1/chat" + }, + "name": "prod" + } + ] + }, + "name": "[ORIGINAL_ENDPOINT_ID]" + }, "remote_state": { "endpoint_details": { "config": { diff --git a/acceptance/bundle/resources/model_serving_endpoints/recreate/name-change/out.second-plan.direct.json b/acceptance/bundle/resources/model_serving_endpoints/recreate/name-change/out.second-plan.direct.json index 3e424ed3fc8..806b3fc6a2e 100644 --- a/acceptance/bundle/resources/model_serving_endpoints/recreate/name-change/out.second-plan.direct.json +++ b/acceptance/bundle/resources/model_serving_endpoints/recreate/name-change/out.second-plan.direct.json @@ -26,6 +26,24 @@ "name": "[NEW_ENDPOINT_ID]" } }, + "prior_state": { + "config": { + "served_entities": [ + { + "external_model": { + "name": "gpt-4o-mini", + "openai_config": { + "openai_api_key": "{{secrets/test-scope/openai-key}}" + }, + "provider": "openai", + "task": "llm/v1/chat" + }, + "name": "prod" + } + ] + }, + "name": "[ORIGINAL_ENDPOINT_ID]" + }, "remote_state": { "endpoint_details": { "config": { diff --git a/acceptance/bundle/resources/model_serving_endpoints/recreate/route-optimized/out.second-plan.direct.json b/acceptance/bundle/resources/model_serving_endpoints/recreate/route-optimized/out.second-plan.direct.json index f8dcb1c5510..1a367153b5a 100644 --- a/acceptance/bundle/resources/model_serving_endpoints/recreate/route-optimized/out.second-plan.direct.json +++ b/acceptance/bundle/resources/model_serving_endpoints/recreate/route-optimized/out.second-plan.direct.json @@ -23,6 +23,21 @@ "route_optimized": true } }, + "prior_state": { + "config": { + "served_entities": [ + { + "entity_name": "system.ai.llama_v3_2_1b_instruct", + "entity_version": "1", + "name": "llama", + "scale_to_zero_enabled": true, + "workload_size": "Small" + } + ] + }, + "name": "[ORIGINAL_ENDPOINT_ID]", + "route_optimized": false + }, "remote_state": { "endpoint_details": { "config": { diff --git a/acceptance/bundle/resources/model_serving_endpoints/recreate/schema-name/out.second-plan.direct.json b/acceptance/bundle/resources/model_serving_endpoints/recreate/schema-name/out.second-plan.direct.json index eeacb3be087..77505e20318 100644 --- a/acceptance/bundle/resources/model_serving_endpoints/recreate/schema-name/out.second-plan.direct.json +++ b/acceptance/bundle/resources/model_serving_endpoints/recreate/schema-name/out.second-plan.direct.json @@ -31,6 +31,29 @@ "name": "[ORIGINAL_ENDPOINT_ID]" } }, + "prior_state": { + "config": { + "auto_capture_config": { + "catalog_name": "main", + "schema_name": "default", + "table_name_prefix": "my_table" + }, + "served_entities": [ + { + "external_model": { + "name": "gpt-4o-mini", + "openai_config": { + "openai_api_key": "{{secrets/test-scope/openai-key}}" + }, + "provider": "openai", + "task": "llm/v1/chat" + }, + "name": "prod" + } + ] + }, + "name": "[ORIGINAL_ENDPOINT_ID]" + }, "remote_state": { "endpoint_details": { "config": { diff --git a/acceptance/bundle/resources/model_serving_endpoints/recreate/table-prefix/out.second-plan.direct.json b/acceptance/bundle/resources/model_serving_endpoints/recreate/table-prefix/out.second-plan.direct.json index e29d17e4dde..6d475b8efd0 100644 --- a/acceptance/bundle/resources/model_serving_endpoints/recreate/table-prefix/out.second-plan.direct.json +++ b/acceptance/bundle/resources/model_serving_endpoints/recreate/table-prefix/out.second-plan.direct.json @@ -31,6 +31,29 @@ "name": "[ORIGINAL_ENDPOINT_ID]" } }, + "prior_state": { + "config": { + "auto_capture_config": { + "catalog_name": "main", + "schema_name": "default", + "table_name_prefix": "my_table" + }, + "served_entities": [ + { + "external_model": { + "name": "gpt-4o-mini", + "openai_config": { + "openai_api_key": "{{secrets/test-scope/openai-key}}" + }, + "provider": "openai", + "task": "llm/v1/chat" + }, + "name": "prod" + } + ] + }, + "name": "[ORIGINAL_ENDPOINT_ID]" + }, "remote_state": { "endpoint_details": { "config": { diff --git a/acceptance/bundle/resources/model_serving_endpoints/update/ai-gateway/out.plan.direct.json b/acceptance/bundle/resources/model_serving_endpoints/update/ai-gateway/out.plan.direct.json index f305ce97719..47b0079d194 100644 --- a/acceptance/bundle/resources/model_serving_endpoints/update/ai-gateway/out.plan.direct.json +++ b/acceptance/bundle/resources/model_serving_endpoints/update/ai-gateway/out.plan.direct.json @@ -31,6 +31,29 @@ "name": "[ENDPOINT_ID]" } }, + "prior_state": { + "ai_gateway": { + "inference_table_config": { + "catalog_name": "first-inference-catalog" + } + }, + "config": { + "served_entities": [ + { + "external_model": { + "name": "gpt-4o-mini", + "openai_config": { + "openai_api_key": "{{secrets/test-scope/openai-key}}" + }, + "provider": "openai", + "task": "llm/v1/chat" + }, + "name": "prod" + } + ] + }, + "name": "[ENDPOINT_ID]" + }, "remote_state": { "endpoint_details": { "ai_gateway": { diff --git a/acceptance/bundle/resources/model_serving_endpoints/update/both_gateway_and_tags/out.plan.direct.json b/acceptance/bundle/resources/model_serving_endpoints/update/both_gateway_and_tags/out.plan.direct.json index 394377f07f8..9d8fdf62dfa 100644 --- a/acceptance/bundle/resources/model_serving_endpoints/update/both_gateway_and_tags/out.plan.direct.json +++ b/acceptance/bundle/resources/model_serving_endpoints/update/both_gateway_and_tags/out.plan.direct.json @@ -37,6 +37,35 @@ ] } }, + "prior_state": { + "ai_gateway": { + "inference_table_config": { + "catalog_name": "first-inference-catalog" + } + }, + "config": { + "served_entities": [ + { + "external_model": { + "name": "gpt-4o-mini", + "openai_config": { + "openai_api_key": "{{secrets/test-scope/openai-key}}" + }, + "provider": "openai", + "task": "llm/v1/chat" + }, + "name": "prod" + } + ] + }, + "name": "[ENDPOINT_ID]", + "tags": [ + { + "key": "team", + "value": "my-team-one" + } + ] + }, "remote_state": { "endpoint_details": { "ai_gateway": { diff --git a/acceptance/bundle/resources/model_serving_endpoints/update/config/out.plan.direct.json b/acceptance/bundle/resources/model_serving_endpoints/update/config/out.plan.direct.json index 47e992c1cf9..bfeba86343e 100644 --- a/acceptance/bundle/resources/model_serving_endpoints/update/config/out.plan.direct.json +++ b/acceptance/bundle/resources/model_serving_endpoints/update/config/out.plan.direct.json @@ -34,6 +34,32 @@ "name": "[ENDPOINT_ID]" } }, + "prior_state": { + "config": { + "served_entities": [ + { + "external_model": { + "name": "gpt-4o-mini", + "openai_config": { + "openai_api_key": "{{secrets/test-scope/openai-key}}" + }, + "provider": "openai", + "task": "llm/v1/chat" + }, + "name": "prod" + } + ], + "traffic_config": { + "routes": [ + { + "served_model_name": "prod", + "traffic_percentage": 100 + } + ] + } + }, + "name": "[ENDPOINT_ID]" + }, "remote_state": { "endpoint_details": { "config": { diff --git a/acceptance/bundle/resources/model_serving_endpoints/update/email-notifications/out.plan.direct.json b/acceptance/bundle/resources/model_serving_endpoints/update/email-notifications/out.plan.direct.json index cf8c8b3f0ca..1f96f4cfd52 100644 --- a/acceptance/bundle/resources/model_serving_endpoints/update/email-notifications/out.plan.direct.json +++ b/acceptance/bundle/resources/model_serving_endpoints/update/email-notifications/out.plan.direct.json @@ -31,6 +31,29 @@ "name": "[ENDPOINT_ID]" } }, + "prior_state": { + "config": { + "served_entities": [ + { + "external_model": { + "name": "gpt-4o-mini", + "openai_config": { + "openai_api_key": "{{secrets/test-scope/openai-key}}" + }, + "provider": "openai", + "task": "llm/v1/chat" + }, + "name": "prod" + } + ] + }, + "email_notifications": { + "on_update_success": [ + "user1@example.com" + ] + }, + "name": "[ENDPOINT_ID]" + }, "remote_state": { "endpoint_details": { "config": { diff --git a/acceptance/bundle/resources/model_serving_endpoints/update/tags/out.plan.direct.json b/acceptance/bundle/resources/model_serving_endpoints/update/tags/out.plan.direct.json index 73202db539d..0a3c607f58a 100644 --- a/acceptance/bundle/resources/model_serving_endpoints/update/tags/out.plan.direct.json +++ b/acceptance/bundle/resources/model_serving_endpoints/update/tags/out.plan.direct.json @@ -32,6 +32,30 @@ ] } }, + "prior_state": { + "config": { + "served_entities": [ + { + "external_model": { + "name": "gpt-4o-mini", + "openai_config": { + "openai_api_key": "{{secrets/test-scope/openai-key}}" + }, + "provider": "openai", + "task": "llm/v1/chat" + }, + "name": "prod" + } + ] + }, + "name": "[ENDPOINT_ID]", + "tags": [ + { + "key": "team", + "value": "my-team-one" + } + ] + }, "remote_state": { "endpoint_details": { "config": { diff --git a/acceptance/bundle/resources/permissions/jobs/added_remotely/out.plan.direct.json b/acceptance/bundle/resources/permissions/jobs/added_remotely/out.plan.direct.json index f048f3e6f48..dd0e34fa4af 100644 --- a/acceptance/bundle/resources/permissions/jobs/added_remotely/out.plan.direct.json +++ b/acceptance/bundle/resources/permissions/jobs/added_remotely/out.plan.direct.json @@ -6,6 +6,28 @@ "plan": { "resources.jobs.job_with_permissions": { "action": "skip", + "prior_state": { + "deployment": { + "kind": "BUNDLE", + "metadata_file_path": "/Workspace/Users/[USERNAME]/.bundle/test-bundle/default/state/metadata.json" + }, + "edit_mode": "UI_LOCKED", + "format": "MULTI_TASK", + "max_concurrent_runs": 1, + "name": "job permissions added remotely", + "queue": { + "enabled": true + }, + "tasks": [ + { + "notebook_task": { + "notebook_path": "/Workspace/Users/user@example.com/notebook", + "source": "WORKSPACE" + }, + "task_key": "main" + } + ] + }, "remote_state": { "created_time": [UNIX_TIME_MILLIS], "creator_user_name": "[USERNAME]", @@ -94,6 +116,19 @@ ] } }, + "prior_state": { + "object_id": "/jobs/[JOB_WITH_PERMISSIONS_ID]", + "__embed__": [ + { + "level": "CAN_VIEW", + "user_name": "viewer@example.com" + }, + { + "level": "IS_OWNER", + "user_name": "[USERNAME]" + } + ] + }, "remote_state": { "object_id": "/jobs/[JOB_WITH_PERMISSIONS_ID]", "__embed__": [ diff --git a/acceptance/bundle/resources/permissions/jobs/current_can_manage_run/out.plan.direct.txt b/acceptance/bundle/resources/permissions/jobs/current_can_manage_run/out.plan.direct.txt index 4b289dbd158..75ad5529387 100644 --- a/acceptance/bundle/resources/permissions/jobs/current_can_manage_run/out.plan.direct.txt +++ b/acceptance/bundle/resources/permissions/jobs/current_can_manage_run/out.plan.direct.txt @@ -6,6 +6,19 @@ "plan": { "resources.jobs.interim_gold_layer_job": { "action": "skip", + "prior_state": { + "deployment": { + "kind": "BUNDLE", + "metadata_file_path": "/Workspace/Users/[USERNAME]/.bundle/test-bundle-[UNIQUE_NAME]/green/state/metadata.json" + }, + "edit_mode": "UI_LOCKED", + "format": "MULTI_TASK", + "max_concurrent_runs": 1, + "name": "Untitled", + "queue": { + "enabled": true + } + }, "remote_state": { "created_time": [UNIX_TIME_MILLIS], "creator_user_name": "[USERNAME]", @@ -52,6 +65,15 @@ } ], "action": "skip", + "prior_state": { + "object_id": "/jobs/[NUMID]", + "__embed__": [ + { + "level": "IS_OWNER", + "service_principal_name": "[USERNAME]" + } + ] + }, "remote_state": { "object_id": "/jobs/[NUMID]", "__embed__": [ diff --git a/acceptance/bundle/resources/permissions/jobs/deleted_remotely/out.plan_restore.direct.json b/acceptance/bundle/resources/permissions/jobs/deleted_remotely/out.plan_restore.direct.json index cda86e4ceb4..6d7fbcceb99 100644 --- a/acceptance/bundle/resources/permissions/jobs/deleted_remotely/out.plan_restore.direct.json +++ b/acceptance/bundle/resources/permissions/jobs/deleted_remotely/out.plan_restore.direct.json @@ -6,6 +6,28 @@ "plan": { "resources.jobs.job_with_permissions": { "action": "skip", + "prior_state": { + "deployment": { + "kind": "BUNDLE", + "metadata_file_path": "/Workspace/Users/[USERNAME]/.bundle/jobs-permissions-deleted-remotely/default/state/metadata.json" + }, + "edit_mode": "UI_LOCKED", + "format": "MULTI_TASK", + "max_concurrent_runs": 1, + "name": "job permissions deleted remotely", + "queue": { + "enabled": true + }, + "tasks": [ + { + "notebook_task": { + "notebook_path": "/Workspace/Users/user@example.com/notebook", + "source": "WORKSPACE" + }, + "task_key": "main" + } + ] + }, "remote_state": { "created_time": [UNIX_TIME_MILLIS], "creator_user_name": "[USERNAME]", @@ -98,6 +120,23 @@ ] } }, + "prior_state": { + "object_id": "/jobs/[JOB_WITH_PERMISSIONS_ID]", + "__embed__": [ + { + "level": "CAN_VIEW", + "user_name": "viewer@example.com" + }, + { + "level": "CAN_MANAGE", + "group_name": "data-team" + }, + { + "level": "IS_OWNER", + "user_name": "[USERNAME]" + } + ] + }, "remote_state": { "object_id": "/jobs/[JOB_WITH_PERMISSIONS_ID]", "__embed__": [ diff --git a/acceptance/bundle/resources/permissions/jobs/update/out.plan_delete_all.direct.json b/acceptance/bundle/resources/permissions/jobs/update/out.plan_delete_all.direct.json index e7bfda922b8..a3e302d7c38 100644 --- a/acceptance/bundle/resources/permissions/jobs/update/out.plan_delete_all.direct.json +++ b/acceptance/bundle/resources/permissions/jobs/update/out.plan_delete_all.direct.json @@ -6,6 +6,28 @@ "plan": { "resources.jobs.job_with_permissions": { "action": "skip", + "prior_state": { + "deployment": { + "kind": "BUNDLE", + "metadata_file_path": "/Workspace/Users/[USERNAME]/.bundle/jobs-permissions-test/default/state/metadata.json" + }, + "edit_mode": "UI_LOCKED", + "format": "MULTI_TASK", + "max_concurrent_runs": 1, + "name": "job with permissions", + "queue": { + "enabled": true + }, + "tasks": [ + { + "notebook_task": { + "notebook_path": "/Workspace/Users/user@example.com/notebook", + "source": "WORKSPACE" + }, + "task_key": "main" + } + ] + }, "remote_state": { "created_time": [UNIX_TIME_MILLIS], "creator_user_name": "[USERNAME]", diff --git a/acceptance/bundle/resources/permissions/jobs/update/out.plan_delete_one.direct.json b/acceptance/bundle/resources/permissions/jobs/update/out.plan_delete_one.direct.json index a2e93e298eb..4b962b2bd92 100644 --- a/acceptance/bundle/resources/permissions/jobs/update/out.plan_delete_one.direct.json +++ b/acceptance/bundle/resources/permissions/jobs/update/out.plan_delete_one.direct.json @@ -6,6 +6,28 @@ "plan": { "resources.jobs.job_with_permissions": { "action": "skip", + "prior_state": { + "deployment": { + "kind": "BUNDLE", + "metadata_file_path": "/Workspace/Users/[USERNAME]/.bundle/jobs-permissions-test/default/state/metadata.json" + }, + "edit_mode": "UI_LOCKED", + "format": "MULTI_TASK", + "max_concurrent_runs": 1, + "name": "job with permissions", + "queue": { + "enabled": true + }, + "tasks": [ + { + "notebook_task": { + "notebook_path": "/Workspace/Users/user@example.com/notebook", + "source": "WORKSPACE" + }, + "task_key": "main" + } + ] + }, "remote_state": { "created_time": [UNIX_TIME_MILLIS], "creator_user_name": "[USERNAME]", @@ -94,6 +116,23 @@ ] } }, + "prior_state": { + "object_id": "/jobs/[JOB_WITH_PERMISSIONS_ID]", + "__embed__": [ + { + "level": "CAN_MANAGE", + "user_name": "viewer@example.com" + }, + { + "level": "CAN_MANAGE", + "group_name": "data-team" + }, + { + "level": "IS_OWNER", + "user_name": "[USERNAME]" + } + ] + }, "remote_state": { "object_id": "/jobs/[JOB_WITH_PERMISSIONS_ID]", "__embed__": [ diff --git a/acceptance/bundle/resources/permissions/jobs/update/out.plan_post_create.direct.json b/acceptance/bundle/resources/permissions/jobs/update/out.plan_post_create.direct.json index 02ffe2db63a..7b6b2938121 100644 --- a/acceptance/bundle/resources/permissions/jobs/update/out.plan_post_create.direct.json +++ b/acceptance/bundle/resources/permissions/jobs/update/out.plan_post_create.direct.json @@ -6,6 +6,28 @@ "plan": { "resources.jobs.job_with_permissions": { "action": "skip", + "prior_state": { + "deployment": { + "kind": "BUNDLE", + "metadata_file_path": "/Workspace/Users/[USERNAME]/.bundle/jobs-permissions-test/default/state/metadata.json" + }, + "edit_mode": "UI_LOCKED", + "format": "MULTI_TASK", + "max_concurrent_runs": 1, + "name": "job with permissions", + "queue": { + "enabled": true + }, + "tasks": [ + { + "notebook_task": { + "notebook_path": "/Workspace/Users/user@example.com/notebook", + "source": "WORKSPACE" + }, + "task_key": "main" + } + ] + }, "remote_state": { "created_time": [UNIX_TIME_MILLIS], "creator_user_name": "[USERNAME]", @@ -79,6 +101,23 @@ } ], "action": "skip", + "prior_state": { + "object_id": "/jobs/[JOB_WITH_PERMISSIONS_ID]", + "__embed__": [ + { + "level": "CAN_VIEW", + "user_name": "viewer@example.com" + }, + { + "level": "CAN_MANAGE", + "group_name": "data-team" + }, + { + "level": "IS_OWNER", + "user_name": "[USERNAME]" + } + ] + }, "remote_state": { "object_id": "/jobs/[JOB_WITH_PERMISSIONS_ID]", "__embed__": [ diff --git a/acceptance/bundle/resources/permissions/jobs/update/out.plan_restore.direct.json b/acceptance/bundle/resources/permissions/jobs/update/out.plan_restore.direct.json index 1b25b762637..dad2dac379e 100644 --- a/acceptance/bundle/resources/permissions/jobs/update/out.plan_restore.direct.json +++ b/acceptance/bundle/resources/permissions/jobs/update/out.plan_restore.direct.json @@ -6,6 +6,28 @@ "plan": { "resources.jobs.job_with_permissions": { "action": "skip", + "prior_state": { + "deployment": { + "kind": "BUNDLE", + "metadata_file_path": "/Workspace/Users/[USERNAME]/.bundle/jobs-permissions-test/default/state/metadata.json" + }, + "edit_mode": "UI_LOCKED", + "format": "MULTI_TASK", + "max_concurrent_runs": 1, + "name": "job with permissions", + "queue": { + "enabled": true + }, + "tasks": [ + { + "notebook_task": { + "notebook_path": "/Workspace/Users/user@example.com/notebook", + "source": "WORKSPACE" + }, + "task_key": "main" + } + ] + }, "remote_state": { "created_time": [UNIX_TIME_MILLIS], "creator_user_name": "[USERNAME]", diff --git a/acceptance/bundle/resources/permissions/jobs/update/out.plan_update.direct.json b/acceptance/bundle/resources/permissions/jobs/update/out.plan_update.direct.json index 89b3cf0f302..46a607e3cbb 100644 --- a/acceptance/bundle/resources/permissions/jobs/update/out.plan_update.direct.json +++ b/acceptance/bundle/resources/permissions/jobs/update/out.plan_update.direct.json @@ -6,6 +6,28 @@ "plan": { "resources.jobs.job_with_permissions": { "action": "skip", + "prior_state": { + "deployment": { + "kind": "BUNDLE", + "metadata_file_path": "/Workspace/Users/[USERNAME]/.bundle/jobs-permissions-test/default/state/metadata.json" + }, + "edit_mode": "UI_LOCKED", + "format": "MULTI_TASK", + "max_concurrent_runs": 1, + "name": "job with permissions", + "queue": { + "enabled": true + }, + "tasks": [ + { + "notebook_task": { + "notebook_path": "/Workspace/Users/user@example.com/notebook", + "source": "WORKSPACE" + }, + "task_key": "main" + } + ] + }, "remote_state": { "created_time": [UNIX_TIME_MILLIS], "creator_user_name": "[USERNAME]", @@ -98,6 +120,23 @@ ] } }, + "prior_state": { + "object_id": "/jobs/[JOB_WITH_PERMISSIONS_ID]", + "__embed__": [ + { + "level": "CAN_VIEW", + "user_name": "viewer@example.com" + }, + { + "level": "CAN_MANAGE", + "group_name": "data-team" + }, + { + "level": "IS_OWNER", + "user_name": "[USERNAME]" + } + ] + }, "remote_state": { "object_id": "/jobs/[JOB_WITH_PERMISSIONS_ID]", "__embed__": [ diff --git a/acceptance/bundle/resources/permissions/pipelines/update/out.plan_delete_all.direct.json b/acceptance/bundle/resources/permissions/pipelines/update/out.plan_delete_all.direct.json index db74caabfca..95c664db954 100644 --- a/acceptance/bundle/resources/permissions/pipelines/update/out.plan_delete_all.direct.json +++ b/acceptance/bundle/resources/permissions/pipelines/update/out.plan_delete_all.direct.json @@ -6,6 +6,15 @@ "plan": { "resources.pipelines.foo": { "action": "skip", + "prior_state": { + "channel": "CURRENT", + "deployment": { + "kind": "BUNDLE", + "metadata_file_path": "/Workspace/Users/[USERNAME]/.bundle/permissions-test/default/state/metadata.json" + }, + "edition": "ADVANCED", + "name": "foo" + }, "remote_state": { "channel": "CURRENT", "creator_user_name": "[USERNAME]", diff --git a/acceptance/bundle/resources/permissions/pipelines/update/out.plan_delete_one.direct.json b/acceptance/bundle/resources/permissions/pipelines/update/out.plan_delete_one.direct.json index 4586f292b32..9e80be6da47 100644 --- a/acceptance/bundle/resources/permissions/pipelines/update/out.plan_delete_one.direct.json +++ b/acceptance/bundle/resources/permissions/pipelines/update/out.plan_delete_one.direct.json @@ -6,6 +6,15 @@ "plan": { "resources.pipelines.foo": { "action": "skip", + "prior_state": { + "channel": "CURRENT", + "deployment": { + "kind": "BUNDLE", + "metadata_file_path": "/Workspace/Users/[USERNAME]/.bundle/permissions-test/default/state/metadata.json" + }, + "edition": "ADVANCED", + "name": "foo" + }, "remote_state": { "channel": "CURRENT", "creator_user_name": "[USERNAME]", @@ -54,6 +63,23 @@ ] } }, + "prior_state": { + "object_id": "/pipelines/[FOO_ID]", + "__embed__": [ + { + "level": "CAN_MANAGE", + "user_name": "viewer@example.com" + }, + { + "level": "CAN_MANAGE", + "group_name": "data-team" + }, + { + "level": "IS_OWNER", + "user_name": "[USERNAME]" + } + ] + }, "remote_state": { "object_id": "/pipelines/[FOO_ID]", "__embed__": [ diff --git a/acceptance/bundle/resources/permissions/pipelines/update/out.plan_restore.direct.json b/acceptance/bundle/resources/permissions/pipelines/update/out.plan_restore.direct.json index 7e20625e706..68f258bb0cb 100644 --- a/acceptance/bundle/resources/permissions/pipelines/update/out.plan_restore.direct.json +++ b/acceptance/bundle/resources/permissions/pipelines/update/out.plan_restore.direct.json @@ -6,6 +6,15 @@ "plan": { "resources.pipelines.foo": { "action": "skip", + "prior_state": { + "channel": "CURRENT", + "deployment": { + "kind": "BUNDLE", + "metadata_file_path": "/Workspace/Users/[USERNAME]/.bundle/permissions-test/default/state/metadata.json" + }, + "edition": "ADVANCED", + "name": "foo" + }, "remote_state": { "channel": "CURRENT", "creator_user_name": "[USERNAME]", diff --git a/acceptance/bundle/resources/permissions/pipelines/update/out.plan_update.direct.json b/acceptance/bundle/resources/permissions/pipelines/update/out.plan_update.direct.json index f4419563280..f3bc1726c5c 100644 --- a/acceptance/bundle/resources/permissions/pipelines/update/out.plan_update.direct.json +++ b/acceptance/bundle/resources/permissions/pipelines/update/out.plan_update.direct.json @@ -6,6 +6,15 @@ "plan": { "resources.pipelines.foo": { "action": "skip", + "prior_state": { + "channel": "CURRENT", + "deployment": { + "kind": "BUNDLE", + "metadata_file_path": "/Workspace/Users/[USERNAME]/.bundle/permissions-test/default/state/metadata.json" + }, + "edition": "ADVANCED", + "name": "foo" + }, "remote_state": { "channel": "CURRENT", "creator_user_name": "[USERNAME]", @@ -58,6 +67,23 @@ ] } }, + "prior_state": { + "object_id": "/pipelines/[FOO_ID]", + "__embed__": [ + { + "level": "CAN_VIEW", + "user_name": "viewer@example.com" + }, + { + "level": "CAN_MANAGE", + "group_name": "data-team" + }, + { + "level": "IS_OWNER", + "user_name": "[USERNAME]" + } + ] + }, "remote_state": { "object_id": "/pipelines/[FOO_ID]", "__embed__": [ diff --git a/acceptance/bundle/resources/pipelines/recreate-keys/change-ingestion-definition/out.plan_recreate.direct.json b/acceptance/bundle/resources/pipelines/recreate-keys/change-ingestion-definition/out.plan_recreate.direct.json index a2bf3b724c7..c568ca2e7c1 100644 --- a/acceptance/bundle/resources/pipelines/recreate-keys/change-ingestion-definition/out.plan_recreate.direct.json +++ b/acceptance/bundle/resources/pipelines/recreate-keys/change-ingestion-definition/out.plan_recreate.direct.json @@ -30,6 +30,28 @@ "name": "test-pipeline-[UNIQUE_NAME]" } }, + "prior_state": { + "channel": "CURRENT", + "deployment": { + "kind": "BUNDLE", + "metadata_file_path": "/Workspace/Users/[USERNAME]/.bundle/acc-[UNIQUE_NAME]/default/state/metadata.json" + }, + "edition": "ADVANCED", + "ingestion_definition": { + "connection_name": "my_connection", + "objects": [ + {} + ] + }, + "libraries": [ + { + "file": { + "path": "/Workspace/Users/[USERNAME]/.bundle/acc-[UNIQUE_NAME]/default/files/foo.py" + } + } + ], + "name": "test-pipeline-[UNIQUE_NAME]" + }, "remote_state": { "channel": "CURRENT", "creator_user_name": "[USERNAME]", diff --git a/acceptance/bundle/resources/pipelines/recreate-keys/change-storage/out.plan_recreate.direct.json b/acceptance/bundle/resources/pipelines/recreate-keys/change-storage/out.plan_recreate.direct.json index 6987c3ad761..6ae78e1c24f 100644 --- a/acceptance/bundle/resources/pipelines/recreate-keys/change-storage/out.plan_recreate.direct.json +++ b/acceptance/bundle/resources/pipelines/recreate-keys/change-storage/out.plan_recreate.direct.json @@ -25,6 +25,23 @@ "storage": "dbfs:/pipelines/newcustom" } }, + "prior_state": { + "channel": "CURRENT", + "deployment": { + "kind": "BUNDLE", + "metadata_file_path": "/Workspace/Users/[USERNAME]/.bundle/acc-[UNIQUE_NAME]/default/state/metadata.json" + }, + "edition": "ADVANCED", + "libraries": [ + { + "file": { + "path": "/Workspace/Users/[USERNAME]/.bundle/acc-[UNIQUE_NAME]/default/files/foo.py" + } + } + ], + "name": "test-pipeline-[UNIQUE_NAME]", + "storage": "dbfs:/pipelines/custom" + }, "remote_state": { "channel": "CURRENT", "creator_user_name": "[USERNAME]", diff --git a/acceptance/bundle/resources/quality_monitors/change_assets_dir/out.plan.direct.json b/acceptance/bundle/resources/quality_monitors/change_assets_dir/out.plan.direct.json index e840a5f3161..fdade720954 100644 --- a/acceptance/bundle/resources/quality_monitors/change_assets_dir/out.plan.direct.json +++ b/acceptance/bundle/resources/quality_monitors/change_assets_dir/out.plan.direct.json @@ -17,6 +17,13 @@ "warehouse_id": "[TEST_DEFAULT_WAREHOUSE_ID]" } }, + "prior_state": { + "assets_dir": "/Workspace/Users/[USERNAME]/monitor_assets_[UNIQUE_NAME]", + "output_schema_name": "main.qm_test_[UNIQUE_NAME]", + "snapshot": {}, + "table_name": "main.qm_test_[UNIQUE_NAME].test_table", + "warehouse_id": "[TEST_DEFAULT_WAREHOUSE_ID]" + }, "remote_state": { "assets_dir": "/Workspace/Users/[USERNAME]/monitor_assets_[UNIQUE_NAME]", "dashboard_id": "(redacted)", diff --git a/acceptance/bundle/resources/quality_monitors/change_output_schema_name/out.plan.direct.json b/acceptance/bundle/resources/quality_monitors/change_output_schema_name/out.plan.direct.json index cfaff9efccb..b716b14c150 100644 --- a/acceptance/bundle/resources/quality_monitors/change_output_schema_name/out.plan.direct.json +++ b/acceptance/bundle/resources/quality_monitors/change_output_schema_name/out.plan.direct.json @@ -15,6 +15,13 @@ "warehouse_id": "[TEST_DEFAULT_WAREHOUSE_ID]" } }, + "prior_state": { + "assets_dir": "/Workspace/Users/[USERNAME]/monitor_assets_[UNIQUE_NAME]", + "output_schema_name": "main.qm_test_[UNIQUE_NAME]", + "snapshot": {}, + "table_name": "main.qm_test_[UNIQUE_NAME].test_table", + "warehouse_id": "[TEST_DEFAULT_WAREHOUSE_ID]" + }, "remote_state": { "assets_dir": "/Workspace/Users/[USERNAME]/monitor_assets_[UNIQUE_NAME]", "dashboard_id": "(redacted)", diff --git a/acceptance/bundle/resources/quality_monitors/change_table_name/out.plan.direct.json b/acceptance/bundle/resources/quality_monitors/change_table_name/out.plan.direct.json index 9b233a1fdbb..c8010d3e3be 100644 --- a/acceptance/bundle/resources/quality_monitors/change_table_name/out.plan.direct.json +++ b/acceptance/bundle/resources/quality_monitors/change_table_name/out.plan.direct.json @@ -17,6 +17,13 @@ "warehouse_id": "[TEST_DEFAULT_WAREHOUSE_ID]" } }, + "prior_state": { + "assets_dir": "/Workspace/Users/[USERNAME]/monitor_assets_[UNIQUE_NAME]", + "output_schema_name": "main.qm_test_[UNIQUE_NAME]", + "snapshot": {}, + "table_name": "main.qm_test_[UNIQUE_NAME].test_table", + "warehouse_id": "[TEST_DEFAULT_WAREHOUSE_ID]" + }, "remote_state": { "assets_dir": "/Workspace/Users/[USERNAME]/monitor_assets_[UNIQUE_NAME]", "dashboard_id": "(redacted)", diff --git a/acceptance/bundle/resources/quality_monitors/create/out.plan_noop.direct.json b/acceptance/bundle/resources/quality_monitors/create/out.plan_noop.direct.json index bb26c592f1d..1a85fc4114c 100644 --- a/acceptance/bundle/resources/quality_monitors/create/out.plan_noop.direct.json +++ b/acceptance/bundle/resources/quality_monitors/create/out.plan_noop.direct.json @@ -6,6 +6,13 @@ "plan": { "resources.quality_monitors.monitor1": { "action": "skip", + "prior_state": { + "assets_dir": "/Workspace/Users/[USERNAME]/monitor_assets_[UNIQUE_NAME]", + "output_schema_name": "main.qm_test_[UNIQUE_NAME]", + "snapshot": {}, + "table_name": "main.qm_test_[UNIQUE_NAME].test_table", + "warehouse_id": "[TEST_DEFAULT_WAREHOUSE_ID]" + }, "remote_state": { "assets_dir": "/Workspace/Users/[USERNAME]/monitor_assets_[UNIQUE_NAME]", "dashboard_id": "(redacted)", diff --git a/acceptance/bundle/resources/secret_scopes/basic/out.plan2.direct.txt b/acceptance/bundle/resources/secret_scopes/basic/out.plan2.direct.txt index 44b7e2831ca..12761c51d57 100644 --- a/acceptance/bundle/resources/secret_scopes/basic/out.plan2.direct.txt +++ b/acceptance/bundle/resources/secret_scopes/basic/out.plan2.direct.txt @@ -5,6 +5,8 @@ json.serial = 1; json.plan.resources.secret_scopes.my_scope.action = "recreate"; json.plan.resources.secret_scopes.my_scope.new_state.value.scope = "test-scope-[UNIQUE_NAME]-2"; json.plan.resources.secret_scopes.my_scope.new_state.value.scope_backend_type = "DATABRICKS"; +json.plan.resources.secret_scopes.my_scope.prior_state.scope = "test-scope-[UNIQUE_NAME]-1"; +json.plan.resources.secret_scopes.my_scope.prior_state.scope_backend_type = "DATABRICKS"; json.plan.resources.secret_scopes.my_scope.remote_state.backend_type = "DATABRICKS"; json.plan.resources.secret_scopes.my_scope.remote_state.name = "test-scope-[UNIQUE_NAME]-1"; json.plan.resources.secret_scopes.my_scope.changes.scope.action = "recreate"; @@ -21,6 +23,11 @@ json.plan.resources.secret_scopes.my_scope.permissions.new_state.value.acls[0].p json.plan.resources.secret_scopes.my_scope.permissions.new_state.value.acls[1].permission = "WRITE"; json.plan.resources.secret_scopes.my_scope.permissions.new_state.value.acls[1].principal = "deco-test-user@databricks.com"; json.plan.resources.secret_scopes.my_scope.permissions.new_state.vars.scope_name = "${resources.secret_scopes.my_scope.name}"; +json.plan.resources.secret_scopes.my_scope.permissions.prior_state.scope_name = "test-scope-[UNIQUE_NAME]-1"; +json.plan.resources.secret_scopes.my_scope.permissions.prior_state.acls[0].permission = "MANAGE"; +json.plan.resources.secret_scopes.my_scope.permissions.prior_state.acls[0].principal = "[USERNAME]"; +json.plan.resources.secret_scopes.my_scope.permissions.prior_state.acls[1].permission = "WRITE"; +json.plan.resources.secret_scopes.my_scope.permissions.prior_state.acls[1].principal = "deco-test-user@databricks.com"; json.plan.resources.secret_scopes.my_scope.permissions.remote_state.scope_name = "test-scope-[UNIQUE_NAME]-1"; json.plan.resources.secret_scopes.my_scope.permissions.remote_state.acls[0].permission = "MANAGE"; json.plan.resources.secret_scopes.my_scope.permissions.remote_state.acls[0].principal = "[USERNAME]"; diff --git a/acceptance/bundle/resources/secret_scopes/basic/out.plan_verify_no_drift.direct.txt b/acceptance/bundle/resources/secret_scopes/basic/out.plan_verify_no_drift.direct.txt index 8745d467735..b852f8d79b4 100644 --- a/acceptance/bundle/resources/secret_scopes/basic/out.plan_verify_no_drift.direct.txt +++ b/acceptance/bundle/resources/secret_scopes/basic/out.plan_verify_no_drift.direct.txt @@ -3,11 +3,18 @@ json.cli_version = "[CLI_VERSION]"; json.lineage = "[UUID]"; json.serial = 2; json.plan.resources.secret_scopes.my_scope.action = "skip"; +json.plan.resources.secret_scopes.my_scope.prior_state.scope = "test-scope-[UNIQUE_NAME]-2"; +json.plan.resources.secret_scopes.my_scope.prior_state.scope_backend_type = "DATABRICKS"; json.plan.resources.secret_scopes.my_scope.remote_state.backend_type = "DATABRICKS"; json.plan.resources.secret_scopes.my_scope.remote_state.name = "test-scope-[UNIQUE_NAME]-2"; json.plan.resources.secret_scopes.my_scope.permissions.depends_on[0].node = "resources.secret_scopes.my_scope"; json.plan.resources.secret_scopes.my_scope.permissions.depends_on[0].label = "${resources.secret_scopes.my_scope.name}"; json.plan.resources.secret_scopes.my_scope.permissions.action = "skip"; +json.plan.resources.secret_scopes.my_scope.permissions.prior_state.scope_name = "test-scope-[UNIQUE_NAME]-2"; +json.plan.resources.secret_scopes.my_scope.permissions.prior_state.acls[0].permission = "MANAGE"; +json.plan.resources.secret_scopes.my_scope.permissions.prior_state.acls[0].principal = "[USERNAME]"; +json.plan.resources.secret_scopes.my_scope.permissions.prior_state.acls[1].permission = "WRITE"; +json.plan.resources.secret_scopes.my_scope.permissions.prior_state.acls[1].principal = "deco-test-user@databricks.com"; json.plan.resources.secret_scopes.my_scope.permissions.remote_state.scope_name = "test-scope-[UNIQUE_NAME]-2"; json.plan.resources.secret_scopes.my_scope.permissions.remote_state.acls[0].permission = "MANAGE"; json.plan.resources.secret_scopes.my_scope.permissions.remote_state.acls[0].principal = "[USERNAME]"; diff --git a/acceptance/bundle/resources/vector_search_indexes/recreate/with_endpoint/output.txt b/acceptance/bundle/resources/vector_search_indexes/recreate/with_endpoint/output.txt index 5272e7695c5..3b1a37fe65d 100644 --- a/acceptance/bundle/resources/vector_search_indexes/recreate/with_endpoint/output.txt +++ b/acceptance/bundle/resources/vector_search_indexes/recreate/with_endpoint/output.txt @@ -29,6 +29,10 @@ Plan: 1 to add, 0 to change, 1 to delete, 1 unchanged "name": "vs-endpoint-[UNIQUE_NAME]" } }, + "prior_state": { + "endpoint_type": "STANDARD", + "name": "vs-endpoint-[UNIQUE_NAME]" + }, "remote_state": { "creation_timestamp": [UNIX_TIME_MILLIS][0], "creator": "[USERNAME]", @@ -61,6 +65,22 @@ Plan: 1 to add, 0 to change, 1 to delete, 1 unchanged } ], "action": "skip", + "prior_state": { + "direct_access_index_spec": { + "embedding_vector_columns": [ + { + "embedding_dimension": 768, + "name": "vector" + } + ], + "schema_json": "{\"id\":\"integer\",\"vector\":\"array\u003cfloat\u003e\"}" + }, + "endpoint_name": "vs-endpoint-[UNIQUE_NAME]", + "endpoint_uuid": "[UUID]", + "index_type": "DIRECT_ACCESS", + "name": "main.default.vs_index_[UNIQUE_NAME]", + "primary_key": "id" + }, "remote_state": { "creator": "[USERNAME]", "direct_access_index_spec": { diff --git a/acceptance/bundle/resources/volumes/change-name/out.plan.direct.json b/acceptance/bundle/resources/volumes/change-name/out.plan.direct.json index 68e26c30d44..d88d7fed310 100644 --- a/acceptance/bundle/resources/volumes/change-name/out.plan.direct.json +++ b/acceptance/bundle/resources/volumes/change-name/out.plan.direct.json @@ -15,6 +15,13 @@ "volume_type": "MANAGED" } }, + "prior_state": { + "catalog_name": "main", + "comment": "COMMENT1", + "name": "myvolume", + "schema_name": "myschema", + "volume_type": "MANAGED" + }, "remote_state": { "catalog_name": "main", "comment": "COMMENT1", diff --git a/acceptance/bundle/state/permission_level_migration/out.plan.direct.json b/acceptance/bundle/state/permission_level_migration/out.plan.direct.json index 33d6194c91e..c0d3e3011a2 100644 --- a/acceptance/bundle/state/permission_level_migration/out.plan.direct.json +++ b/acceptance/bundle/state/permission_level_migration/out.plan.direct.json @@ -20,6 +20,19 @@ "enabled": true } } + }, + "prior_state": { + "deployment": { + "kind": "BUNDLE", + "metadata_file_path": "/Workspace/Users/[USERNAME]/.bundle/test-bundle/default/state/metadata.json" + }, + "edit_mode": "UI_LOCKED", + "format": "MULTI_TASK", + "max_concurrent_runs": 1, + "name": "my job", + "queue": { + "enabled": true + } } }, "resources.jobs.my_job.permissions": { @@ -48,6 +61,19 @@ "object_id": "/jobs/${resources.jobs.my_job.id}" } }, + "prior_state": { + "object_id": "/jobs/123", + "__embed__": [ + { + "level": "CAN_VIEW", + "group_name": "viewers" + }, + { + "level": "IS_OWNER", + "user_name": "[USERNAME]" + } + ] + }, "remote_state": { "object_id": "/jobs/123" }, diff --git a/acceptance/bundle/templates/default-python/classic/out.plan_after_deploy_dev.direct.json b/acceptance/bundle/templates/default-python/classic/out.plan_after_deploy_dev.direct.json index 49c706fc239..0b2ea803fd1 100644 --- a/acceptance/bundle/templates/default-python/classic/out.plan_after_deploy_dev.direct.json +++ b/acceptance/bundle/templates/default-python/classic/out.plan_after_deploy_dev.direct.json @@ -110,6 +110,102 @@ } } }, + "prior_state": { + "deployment": { + "kind": "BUNDLE", + "metadata_file_path": "/Workspace/Users/[USERNAME]/.bundle/my_default_python/dev/state/metadata.json" + }, + "edit_mode": "UI_LOCKED", + "format": "MULTI_TASK", + "job_clusters": [ + { + "job_cluster_key": "job_cluster", + "new_cluster": { + "autoscale": { + "max_workers": 4, + "min_workers": 1 + }, + "data_security_mode": "DATA_SECURITY_MODE_AUTO", + "node_type_id": "[NODE_TYPE_ID]", + "spark_version": "16.4.x-scala2.12" + } + } + ], + "max_concurrent_runs": 4, + "name": "[dev [USERNAME]] sample_job", + "parameters": [ + { + "default": "hive_metastore", + "name": "catalog" + }, + { + "default": "[USERNAME]", + "name": "schema" + } + ], + "queue": { + "enabled": true + }, + "tags": { + "dev": "[USERNAME]" + }, + "tasks": [ + { + "job_cluster_key": "job_cluster", + "libraries": [ + { + "whl": "/Workspace/Users/[USERNAME]/.bundle/my_default_python/dev/artifacts/.internal/my_default_python-0.0.1+[UNIX_TIME_NANOS][1]-py3-none-any.whl" + } + ], + "notebook_task": { + "notebook_path": "/Workspace/Users/[USERNAME]/.bundle/my_default_python/dev/files/src/sample_notebook" + }, + "task_key": "notebook_task" + }, + { + "depends_on": [ + { + "task_key": "notebook_task" + } + ], + "job_cluster_key": "job_cluster", + "libraries": [ + { + "whl": "/Workspace/Users/[USERNAME]/.bundle/my_default_python/dev/artifacts/.internal/my_default_python-0.0.1+[UNIX_TIME_NANOS][1]-py3-none-any.whl" + } + ], + "python_wheel_task": { + "entry_point": "main", + "package_name": "my_default_python", + "parameters": [ + "--catalog", + "hive_metastore", + "--schema", + "[USERNAME]" + ] + }, + "task_key": "python_wheel_task" + }, + { + "depends_on": [ + { + "task_key": "notebook_task" + } + ], + "pipeline_task": { + "pipeline_id": "[UUID]" + }, + "task_key": "refresh_pipeline" + } + ], + "trigger": { + "pause_status": "PAUSED", + "periodic": { + "interval": 1, + "unit": "DAYS" + } + } + }, "remote_state": { "created_time": [UNIX_TIME_MILLIS][0], "creator_user_name": "[USERNAME]", @@ -305,6 +401,33 @@ }, "resources.pipelines.my_default_python_etl": { "action": "skip", + "prior_state": { + "channel": "CURRENT", + "deployment": { + "kind": "BUNDLE", + "metadata_file_path": "/Workspace/Users/[USERNAME]/.bundle/my_default_python/dev/state/metadata.json" + }, + "development": true, + "edition": "ADVANCED", + "environment": { + "dependencies": [ + "--editable /Workspace/Users/[USERNAME]/.bundle/my_default_python/dev/files" + ] + }, + "libraries": [ + { + "glob": { + "include": "/Workspace/Users/[USERNAME]/.bundle/my_default_python/dev/files/src/my_default_python_etl/transformations/**" + } + } + ], + "name": "[dev [USERNAME]] my_default_python_etl", + "root_path": "/Workspace/Users/[USERNAME]/.bundle/my_default_python/dev/files/src/my_default_python_etl", + "schema": "[USERNAME]", + "tags": { + "dev": "[USERNAME]" + } + }, "remote_state": { "channel": "CURRENT", "creator_user_name": "[USERNAME]", diff --git a/acceptance/bundle/templates/default-python/classic/out.plan_after_deploy_prod.direct.json b/acceptance/bundle/templates/default-python/classic/out.plan_after_deploy_prod.direct.json index 30918164e2c..439b0d40b8c 100644 --- a/acceptance/bundle/templates/default-python/classic/out.plan_after_deploy_prod.direct.json +++ b/acceptance/bundle/templates/default-python/classic/out.plan_after_deploy_prod.direct.json @@ -12,6 +12,99 @@ } ], "action": "skip", + "prior_state": { + "deployment": { + "kind": "BUNDLE", + "metadata_file_path": "/Workspace/Users/[USERNAME]/.bundle/my_default_python/prod/state/metadata.json" + }, + "edit_mode": "UI_LOCKED", + "format": "MULTI_TASK", + "job_clusters": [ + { + "job_cluster_key": "job_cluster", + "new_cluster": { + "autoscale": { + "max_workers": 4, + "min_workers": 1 + }, + "data_security_mode": "DATA_SECURITY_MODE_AUTO", + "node_type_id": "[NODE_TYPE_ID]", + "spark_version": "16.4.x-scala2.12" + } + } + ], + "max_concurrent_runs": 1, + "name": "sample_job", + "parameters": [ + { + "default": "hive_metastore", + "name": "catalog" + }, + { + "default": "prod", + "name": "schema" + } + ], + "queue": { + "enabled": true + }, + "tasks": [ + { + "job_cluster_key": "job_cluster", + "libraries": [ + { + "whl": "/Workspace/Users/[USERNAME]/.bundle/my_default_python/prod/artifacts/.internal/my_default_python-0.0.1-py3-none-any.whl" + } + ], + "notebook_task": { + "notebook_path": "/Workspace/Users/[USERNAME]/.bundle/my_default_python/prod/files/src/sample_notebook" + }, + "task_key": "notebook_task" + }, + { + "depends_on": [ + { + "task_key": "notebook_task" + } + ], + "job_cluster_key": "job_cluster", + "libraries": [ + { + "whl": "/Workspace/Users/[USERNAME]/.bundle/my_default_python/prod/artifacts/.internal/my_default_python-0.0.1-py3-none-any.whl" + } + ], + "python_wheel_task": { + "entry_point": "main", + "package_name": "my_default_python", + "parameters": [ + "--catalog", + "hive_metastore", + "--schema", + "prod" + ] + }, + "task_key": "python_wheel_task" + }, + { + "depends_on": [ + { + "task_key": "notebook_task" + } + ], + "pipeline_task": { + "pipeline_id": "[UUID]" + }, + "task_key": "refresh_pipeline" + } + ], + "trigger": { + "pause_status": "UNPAUSED", + "periodic": { + "interval": 1, + "unit": "DAYS" + } + } + }, "remote_state": { "created_time": [UNIX_TIME_MILLIS][0], "creator_user_name": "[USERNAME]", @@ -198,6 +291,15 @@ } ], "action": "skip", + "prior_state": { + "object_id": "/jobs/[NUMID]", + "__embed__": [ + { + "level": "IS_OWNER", + "user_name": "[USERNAME]" + } + ] + }, "remote_state": { "object_id": "/jobs/[NUMID]", "__embed__": [ @@ -210,6 +312,29 @@ }, "resources.pipelines.my_default_python_etl": { "action": "skip", + "prior_state": { + "channel": "CURRENT", + "deployment": { + "kind": "BUNDLE", + "metadata_file_path": "/Workspace/Users/[USERNAME]/.bundle/my_default_python/prod/state/metadata.json" + }, + "edition": "ADVANCED", + "environment": { + "dependencies": [ + "--editable /Workspace/Users/[USERNAME]/.bundle/my_default_python/prod/files" + ] + }, + "libraries": [ + { + "glob": { + "include": "/Workspace/Users/[USERNAME]/.bundle/my_default_python/prod/files/src/my_default_python_etl/transformations/**" + } + } + ], + "name": "my_default_python_etl", + "root_path": "/Workspace/Users/[USERNAME]/.bundle/my_default_python/prod/files/src/my_default_python_etl", + "schema": "prod" + }, "remote_state": { "channel": "CURRENT", "creator_user_name": "[USERNAME]", @@ -257,6 +382,15 @@ } ], "action": "skip", + "prior_state": { + "object_id": "/pipelines/[UUID]", + "__embed__": [ + { + "level": "IS_OWNER", + "user_name": "[USERNAME]" + } + ] + }, "remote_state": { "object_id": "/pipelines/[UUID]", "__embed__": [ diff --git a/acceptance/bundle/templates/default-python/serverless/out.plan_after_deploy_dev.direct.json b/acceptance/bundle/templates/default-python/serverless/out.plan_after_deploy_dev.direct.json index 992402b9e54..3bb627c9d2b 100644 --- a/acceptance/bundle/templates/default-python/serverless/out.plan_after_deploy_dev.direct.json +++ b/acceptance/bundle/templates/default-python/serverless/out.plan_after_deploy_dev.direct.json @@ -12,6 +12,88 @@ } ], "action": "skip", + "prior_state": { + "deployment": { + "kind": "BUNDLE", + "metadata_file_path": "/Workspace/Users/[USERNAME]/.bundle/my_default_python/dev/state/metadata.json" + }, + "edit_mode": "UI_LOCKED", + "environments": [ + { + "environment_key": "default", + "spec": { + "dependencies": [ + "/Workspace/Users/[USERNAME]/.bundle/my_default_python/dev/artifacts/.internal/my_default_python-0.0.1-py3-none-any.whl" + ], + "environment_version": "4" + } + } + ], + "format": "MULTI_TASK", + "max_concurrent_runs": 4, + "name": "[dev [USERNAME]] sample_job", + "parameters": [ + { + "default": "hive_metastore", + "name": "catalog" + }, + { + "default": "[USERNAME]", + "name": "schema" + } + ], + "queue": { + "enabled": true + }, + "tags": { + "dev": "[USERNAME]" + }, + "tasks": [ + { + "notebook_task": { + "notebook_path": "/Workspace/Users/[USERNAME]/.bundle/my_default_python/dev/files/src/sample_notebook" + }, + "task_key": "notebook_task" + }, + { + "depends_on": [ + { + "task_key": "notebook_task" + } + ], + "environment_key": "default", + "python_wheel_task": { + "entry_point": "main", + "package_name": "my_default_python", + "parameters": [ + "--catalog", + "hive_metastore", + "--schema", + "[USERNAME]" + ] + }, + "task_key": "python_wheel_task" + }, + { + "depends_on": [ + { + "task_key": "notebook_task" + } + ], + "pipeline_task": { + "pipeline_id": "[UUID]" + }, + "task_key": "refresh_pipeline" + } + ], + "trigger": { + "pause_status": "PAUSED", + "periodic": { + "interval": 1, + "unit": "DAYS" + } + } + }, "remote_state": { "created_time": [UNIX_TIME_MILLIS][0], "creator_user_name": "[USERNAME]", @@ -181,6 +263,35 @@ }, "resources.pipelines.my_default_python_etl": { "action": "skip", + "prior_state": { + "catalog": "main", + "channel": "CURRENT", + "deployment": { + "kind": "BUNDLE", + "metadata_file_path": "/Workspace/Users/[USERNAME]/.bundle/my_default_python/dev/state/metadata.json" + }, + "development": true, + "edition": "ADVANCED", + "environment": { + "dependencies": [ + "--editable /Workspace/Users/[USERNAME]/.bundle/my_default_python/dev/files" + ] + }, + "libraries": [ + { + "glob": { + "include": "/Workspace/Users/[USERNAME]/.bundle/my_default_python/dev/files/src/my_default_python_etl/transformations/**" + } + } + ], + "name": "[dev [USERNAME]] my_default_python_etl", + "root_path": "/Workspace/Users/[USERNAME]/.bundle/my_default_python/dev/files/src/my_default_python_etl", + "schema": "[USERNAME]", + "serverless": true, + "tags": { + "dev": "[USERNAME]" + } + }, "remote_state": { "catalog": "main", "channel": "CURRENT", diff --git a/acceptance/bundle/templates/default-python/serverless/out.plan_after_deploy_prod.direct.json b/acceptance/bundle/templates/default-python/serverless/out.plan_after_deploy_prod.direct.json index 6cb1b237e85..3778afb2fec 100644 --- a/acceptance/bundle/templates/default-python/serverless/out.plan_after_deploy_prod.direct.json +++ b/acceptance/bundle/templates/default-python/serverless/out.plan_after_deploy_prod.direct.json @@ -12,6 +12,85 @@ } ], "action": "skip", + "prior_state": { + "deployment": { + "kind": "BUNDLE", + "metadata_file_path": "/Workspace/Users/[USERNAME]/.bundle/my_default_python/prod/state/metadata.json" + }, + "edit_mode": "UI_LOCKED", + "environments": [ + { + "environment_key": "default", + "spec": { + "dependencies": [ + "/Workspace/Users/[USERNAME]/.bundle/my_default_python/prod/artifacts/.internal/my_default_python-0.0.1-py3-none-any.whl" + ], + "environment_version": "4" + } + } + ], + "format": "MULTI_TASK", + "max_concurrent_runs": 1, + "name": "sample_job", + "parameters": [ + { + "default": "hive_metastore", + "name": "catalog" + }, + { + "default": "prod", + "name": "schema" + } + ], + "queue": { + "enabled": true + }, + "tasks": [ + { + "notebook_task": { + "notebook_path": "/Workspace/Users/[USERNAME]/.bundle/my_default_python/prod/files/src/sample_notebook" + }, + "task_key": "notebook_task" + }, + { + "depends_on": [ + { + "task_key": "notebook_task" + } + ], + "environment_key": "default", + "python_wheel_task": { + "entry_point": "main", + "package_name": "my_default_python", + "parameters": [ + "--catalog", + "hive_metastore", + "--schema", + "prod" + ] + }, + "task_key": "python_wheel_task" + }, + { + "depends_on": [ + { + "task_key": "notebook_task" + } + ], + "pipeline_task": { + "pipeline_id": "[UUID]" + }, + "task_key": "refresh_pipeline" + } + ], + "trigger": { + "pause_status": "UNPAUSED", + "periodic": { + "interval": 1, + "unit": "DAYS" + } + } + }, "remote_state": { "created_time": [UNIX_TIME_MILLIS][0], "creator_user_name": "[USERNAME]", @@ -184,6 +263,15 @@ } ], "action": "skip", + "prior_state": { + "object_id": "/jobs/[NUMID]", + "__embed__": [ + { + "level": "IS_OWNER", + "user_name": "[USERNAME]" + } + ] + }, "remote_state": { "object_id": "/jobs/[NUMID]", "__embed__": [ @@ -196,6 +284,31 @@ }, "resources.pipelines.my_default_python_etl": { "action": "skip", + "prior_state": { + "catalog": "main", + "channel": "CURRENT", + "deployment": { + "kind": "BUNDLE", + "metadata_file_path": "/Workspace/Users/[USERNAME]/.bundle/my_default_python/prod/state/metadata.json" + }, + "edition": "ADVANCED", + "environment": { + "dependencies": [ + "--editable /Workspace/Users/[USERNAME]/.bundle/my_default_python/prod/files" + ] + }, + "libraries": [ + { + "glob": { + "include": "/Workspace/Users/[USERNAME]/.bundle/my_default_python/prod/files/src/my_default_python_etl/transformations/**" + } + } + ], + "name": "my_default_python_etl", + "root_path": "/Workspace/Users/[USERNAME]/.bundle/my_default_python/prod/files/src/my_default_python_etl", + "schema": "prod", + "serverless": true + }, "remote_state": { "catalog": "main", "channel": "CURRENT", @@ -237,6 +350,15 @@ } ], "action": "skip", + "prior_state": { + "object_id": "/pipelines/[UUID]", + "__embed__": [ + { + "level": "IS_OWNER", + "user_name": "[USERNAME]" + } + ] + }, "remote_state": { "object_id": "/pipelines/[UUID]", "__embed__": [ diff --git a/bundle/deployplan/plan.go b/bundle/deployplan/plan.go index 24454fe5bf5..e19dbb86aeb 100644 --- a/bundle/deployplan/plan.go +++ b/bundle/deployplan/plan.go @@ -128,10 +128,42 @@ type PlanEntry struct { // Gone is set on Delete entries when planning confirmed the resource no longer // exists remotely. Applying such an entry only removes it from the state, without // calling the delete API, and approval prompts do not list it as a deletion. - Gone bool `json:"gone,omitempty"` - NewState *structvar.StructVarJSON `json:"new_state,omitempty"` - RemoteState any `json:"remote_state,omitempty"` - Changes Changes `json:"changes,omitempty"` + Gone bool `json:"gone,omitempty"` + NewState *structvar.StructVarJSON `json:"new_state,omitempty"` + + // PriorState is the last saved local state — always StateType. Populated for + // every previously-deployed resource in every plan mode. Consumers that need + // state-shaped data (prior grants principals, prior etag) read this. + PriorState any `json:"prior_state,omitempty"` + + // RemoteState is a freshly-read remote state — RemoteType. Nil when the plan + // was computed without reading remote (--plan-mode=local, unless a reference + // fetch happens to populate it). Consumers that need live-remote-only fields + // (cluster.State, app.ComputeStatus, model.ModelId) read this; the reasonable + // behavior on nil is to skip whatever depends on live status. + RemoteState any `json:"remote_state,omitempty"` + + Changes Changes `json:"changes,omitempty"` +} + +// RemapStater is the subset of dresources.Adapter that RemoteOrPrior needs. +// Declared here to keep bundle/deployplan free of a dresources import. +type RemapStater interface { + RemapState(remoteState any) (any, error) +} + +// RemoteOrPrior returns state-shaped data suitable for consumers that don't +// need remote-only fields. It prefers the freshly-remapped RemoteState when +// available (full mode, or when a reference fetch populated it); otherwise it +// falls back to PriorState (the last saved state). +// +// Returns (nil, nil) only when the resource was never deployed AND no remote +// was read — i.e. a Create action. +func (e *PlanEntry) RemoteOrPrior(adapter RemapStater) (any, error) { + if e.RemoteState != nil { + return adapter.RemapState(e.RemoteState) + } + return e.PriorState, nil } type DependsOnEntry struct { diff --git a/bundle/direct/apply.go b/bundle/direct/apply.go index d227d7f564c..e64c100671f 100644 --- a/bundle/direct/apply.go +++ b/bundle/direct/apply.go @@ -42,7 +42,7 @@ func (d *DeploymentUnit) Deploy(ctx context.Context, db *dstate.DeploymentState, case deployplan.Update: return d.Update(ctx, db, oldID, newState, planEntry) case deployplan.UpdateWithID: - return d.UpdateWithID(ctx, db, oldID, newState) + return d.UpdateWithID(ctx, db, oldID, newState, planEntry) case deployplan.Resize: return d.Resize(ctx, db, oldID, newState, planEntry) default: @@ -152,7 +152,7 @@ func (d *DeploymentUnit) Update(ctx context.Context, db *dstate.DeploymentState, } waitRemoteState, err := retryOnTransient(ctx, func() (any, error) { - return d.Adapter.WaitAfterUpdate(ctx, id, newState) + return d.Adapter.WaitAfterUpdate(ctx, id, newState, planEntry) }) if err != nil { return fmt.Errorf("waiting after updating id=%s: %w", id, err) @@ -167,7 +167,7 @@ func (d *DeploymentUnit) Update(ctx context.Context, db *dstate.DeploymentState, return nil } -func (d *DeploymentUnit) UpdateWithID(ctx context.Context, db *dstate.DeploymentState, oldID string, newState any) error { +func (d *DeploymentUnit) UpdateWithID(ctx context.Context, db *dstate.DeploymentState, oldID string, newState any, planEntry *deployplan.PlanEntry) error { var newID string var remoteState any err := retryOnTransientErr(ctx, func() error { @@ -196,7 +196,7 @@ func (d *DeploymentUnit) UpdateWithID(ctx context.Context, db *dstate.Deployment } waitRemoteState, err := retryOnTransient(ctx, func() (any, error) { - return d.Adapter.WaitAfterUpdate(ctx, newID, newState) + return d.Adapter.WaitAfterUpdate(ctx, newID, newState, planEntry) }) if err != nil { return fmt.Errorf("waiting after updating id=%s: %w", newID, err) diff --git a/bundle/direct/bind.go b/bundle/direct/bind.go index c286f9e4dc7..3a34645a200 100644 --- a/bundle/direct/bind.go +++ b/bundle/direct/bind.go @@ -136,11 +136,22 @@ func (b *DeploymentBundle) Bind(ctx context.Context, client *databricks.Workspac // detection (dashboards and genie spaces). The etag is not provided by the // user; it comes from remote. If we don't store it in state, we won't // detect remote drift correctly and the next plan shows a bogus update. - if (strings.Contains(resourceKey, ".dashboards.") || strings.Contains(resourceKey, ".genie_spaces.")) && entry != nil && entry.RemoteState != nil { - etag, err := structaccess.Get(entry.RemoteState, structpath.NewStringKey(nil, "etag")) - if err == nil && etag != nil { - if etagStr, ok := etag.(string); ok && etagStr != "" { - _ = structaccess.Set(sv.Value, structpath.NewStringKey(nil, "etag"), etagStr) + // + // Prefer RemoteState (fresh remote read, always populated here because + // bind runs in full mode). PriorState carries the same field for these + // resources (StateType == RemoteType), so it's a safe fallback if a + // future call path invokes bind without a fresh remote. + if strings.Contains(resourceKey, ".dashboards.") || strings.Contains(resourceKey, ".genie_spaces.") { + priorOrRemote := entry.RemoteState + if priorOrRemote == nil { + priorOrRemote = entry.PriorState + } + if entry != nil && priorOrRemote != nil { + etag, err := structaccess.Get(priorOrRemote, structpath.NewStringKey(nil, "etag")) + if err == nil && etag != nil { + if etagStr, ok := etag.(string); ok && etagStr != "" { + _ = structaccess.Set(sv.Value, structpath.NewStringKey(nil, "etag"), etagStr) + } } } } diff --git a/bundle/direct/bundle_plan.go b/bundle/direct/bundle_plan.go index fee3013c918..3d9a5f77e98 100644 --- a/bundle/direct/bundle_plan.go +++ b/bundle/direct/bundle_plan.go @@ -72,13 +72,15 @@ func (b *DeploymentBundle) InitForApply(ctx context.Context, client *databricks. // Eagerly parse plan entries loaded from JSON: // - NewState.Value contains raw JSON bytes; parse into typed structs and cache. // - RemoteState is decoded as map[string]interface{}; round-trip through the - // adapter's StateType to recover the correct typed struct so that type - // assertions in resource adapters (e.g. entry.RemoteState.(*GrantsState)) + // adapter's RemoteType to recover the correct typed struct so that type + // assertions in resource adapters (e.g. entry.RemoteState.(*AppRemote)) // work identically whether the plan came from a file or from memory. + // - PriorState is likewise round-tripped through the adapter's StateType. for resourceKey, entry := range plan.Plan { hasNewState := entry.NewState != nil && len(entry.NewState.Value) > 0 hasRemoteState := entry.RemoteState != nil - if !hasNewState && !hasRemoteState { + hasPriorState := entry.PriorState != nil + if !hasNewState && !hasRemoteState && !hasPriorState { continue } @@ -96,24 +98,42 @@ func (b *DeploymentBundle) InitForApply(ctx context.Context, client *databricks. } if hasRemoteState { - data, err := json.Marshal(entry.RemoteState) + typed, err := reMaterialize(entry.RemoteState, adapter.RemoteType()) if err != nil { - return fmt.Errorf("re-serializing remote state for %s: %w", resourceKey, err) - } - // RemoteType() returns a pointer type (e.g. *AppRemote); Elem() gives - // the struct type so reflect.New produces a single pointer, not double. - typed := reflect.New(adapter.RemoteType().Elem()).Interface() - if err := json.Unmarshal(data, typed); err != nil { return fmt.Errorf("loading remote state for %s: %w", resourceKey, err) } entry.RemoteState = typed } + + if hasPriorState { + typed, err := reMaterialize(entry.PriorState, adapter.StateType()) + if err != nil { + return fmt.Errorf("loading prior state for %s: %w", resourceKey, err) + } + entry.PriorState = typed + } } b.Plan = plan return nil } +// reMaterialize round-trips a JSON-decoded map[string]interface{} through the +// given typed pointer so subsequent type assertions on the value succeed. +// ptrType must be a pointer type (e.g. *AppRemote); Elem() gives the struct +// type so reflect.New produces a single pointer, not double. +func reMaterialize(v any, ptrType reflect.Type) (any, error) { + data, err := json.Marshal(v) + if err != nil { + return nil, fmt.Errorf("re-serializing: %w", err) + } + typed := reflect.New(ptrType.Elem()).Interface() + if err := json.Unmarshal(data, typed); err != nil { + return nil, err + } + return typed, nil +} + // CalculatePlan computes the deployment plan by comparing local config against remote state. // StateDB must already be open for read before calling this function. // @@ -247,26 +267,16 @@ func (b *DeploymentBundle) CalculatePlan(ctx context.Context, client *databricks return false } + // PriorState is the last saved local state. It's the same value every + // consumer needs when they want "what did we think this looked like + // before this plan?" (drift classification, prior-grants removal, + // prior-etag reconciliation) — regardless of plan mode. + entry.PriorState = savedState + var action deployplan.ActionType var remoteDiff []structdiff.Change - var remoteStateComparable any - - if skipsRemoteReads { - // --plan-mode=local skips the remote read. Feed the saved state into - // drift classification as the "comparable remote": it is our last - // recorded snapshot of remote, so drift is computed purely from - // saved-state vs config. This also lets OverrideChangeDesc hooks - // (etag, endpoint_uuid) reconcile state-only fields against their - // saved value instead of nil, avoiding spurious drift. - // - // Do NOT write savedState to entry.RemoteState: that field is typed - // as the remote type at apply time (e.g. *AppRemote, *ClusterRemote) - // and apply-time consumers type-assert on it. savedState is the state - // type (e.g. *AppState), so writing it here would cause silent type - // assertion failures at apply time — for example, remoteIsStarted - // would return false regardless of the real remote lifecycle. - remoteStateComparable = savedState - } else { + + if !skipsRemoteReads { var remoteState any remoteState, err = retryOnTransient(ctx, func() (any, error) { return adapter.DoRead(ctx, dbentry.ID) @@ -280,22 +290,32 @@ func (b *DeploymentBundle) CalculatePlan(ctx context.Context, client *databricks } } - // We have a choice whether to include remoteState or remoteStateComparable from below. - // Including remoteState because in the near future remoteState is expected to become a superset struct of remoteStateComparable + // entry.RemoteState carries the raw remote (RemoteType). Apply-time + // consumers type-assert on it for remote-only fields (cluster.State, + // app.ComputeStatus). Left nil in --plan-mode=local — apply-time + // consumers must handle nil by skipping their remote-only paths. entry.RemoteState = remoteState + } - if remoteState != nil { - remoteStateComparable, err = adapter.RemapState(remoteState) - if err != nil { - logdiag.LogError(ctx, fmt.Errorf("%s: interpreting remote state id=%q: %w", errorPrefix, dbentry.ID, err)) - return false - } + // remoteStateComparable is the state-shaped remote used for drift + // classification. In full mode it comes from RemapState(remoteRead); in + // local mode from savedState (via PriorState). RemoteOrPrior encapsulates + // this choice. + remoteStateComparable, err := entry.RemoteOrPrior(adapter) + if err != nil { + logdiag.LogError(ctx, fmt.Errorf("%s: interpreting remote state id=%q: %w", errorPrefix, dbentry.ID, err)) + return false + } - remoteDiff, err = structdiff.GetStructDiff(remoteStateComparable, sv.Value, adapter.KeyedSlices()) - if err != nil { - logdiag.LogError(ctx, fmt.Errorf("%s: diffing remote state: %w", errorPrefix, err)) - return false - } + if remoteStateComparable != nil && !skipsRemoteReads { + // In full mode with a live remote, compare the remapped remote + // against the desired state to detect out-of-band drift. In local + // mode remoteStateComparable is savedState which by construction + // matches the local diff, so there is nothing extra to detect. + remoteDiff, err = structdiff.GetStructDiff(remoteStateComparable, sv.Value, adapter.KeyedSlices()) + if err != nil { + logdiag.LogError(ctx, fmt.Errorf("%s: diffing remote state: %w", errorPrefix, err)) + return false } } diff --git a/bundle/direct/dresources/adapter.go b/bundle/direct/dresources/adapter.go index 70a9f1f5e3d..0c9514e769a 100644 --- a/bundle/direct/dresources/adapter.go +++ b/bundle/direct/dresources/adapter.go @@ -72,7 +72,10 @@ type IResource interface { WaitAfterCreate(ctx context.Context, id string, newState any) (remoteState any, e error) // [Optional] WaitAfterUpdate waits for the resource to become ready after update. Returns optionally updated remote state. - WaitAfterUpdate(ctx context.Context, id string, newState any) (remoteState any, e error) + // entry is the plan entry being applied; implementations may inspect + // entry.RemoteState (nil in --plan-mode=local) to decide whether a wait + // that depends on live remote status should be skipped. + WaitAfterUpdate(ctx context.Context, id string, newState any, entry *PlanEntry) (remoteState any, e error) // [Optional] WaitAfterDelete waits for the resource to be fully removed after DoDelete returns. // Useful for backends with asynchronous deletion: a follow-up create on the same name (recreate path) @@ -523,12 +526,12 @@ func (a *Adapter) WaitAfterCreate(ctx context.Context, id string, newState any) // WaitAfterUpdate waits for the resource to become ready after update. // If the resource doesn't implement this method, this is a no-op. // Returns the updated remoteState if available, otherwise returns nil. -func (a *Adapter) WaitAfterUpdate(ctx context.Context, id string, newState any) (any, error) { +func (a *Adapter) WaitAfterUpdate(ctx context.Context, id string, newState any, entry *PlanEntry) (any, error) { if a.waitAfterUpdate == nil { return nil, nil // no-op if not implemented } - outs, err := a.waitAfterUpdate.Call(ctx, id, newState) + outs, err := a.waitAfterUpdate.Call(ctx, id, newState, entry) if err != nil { return nil, err } diff --git a/bundle/direct/dresources/all_test.go b/bundle/direct/dresources/all_test.go index a960e168fec..e4a78c416df 100644 --- a/bundle/direct/dresources/all_test.go +++ b/bundle/direct/dresources/all_test.go @@ -1026,7 +1026,7 @@ func testCRUD(t *testing.T, group string, adapter *Adapter, client *databricks.W remappedState = remappedStateFromUpdate } - remoteStateFromWaitUpdate, err := adapter.WaitAfterUpdate(ctx, createdID, newState) + remoteStateFromWaitUpdate, err := adapter.WaitAfterUpdate(ctx, createdID, newState, &deployplan.PlanEntry{}) require.NoError(t, err) if remoteStateFromWaitUpdate != nil { remappedStateFromWaitUpdate, err := adapter.RemapState(remoteStateFromWaitUpdate) diff --git a/bundle/direct/dresources/app.go b/bundle/direct/dresources/app.go index 8ab64272894..43e88583eab 100644 --- a/bundle/direct/dresources/app.go +++ b/bundle/direct/dresources/app.go @@ -196,6 +196,12 @@ func (r *ResourceApp) DoUpdate(ctx context.Context, id string, config *AppState, } } + // entry.RemoteState is nil in --plan-mode=local: we have no live status, + // so skip lifecycle management (don't Start, don't Stop, don't redeploy code). + if entry.RemoteState == nil { + return nil, nil + } + return nil, r.manageLifecycle(ctx, id, config, remoteIsStarted(entry)) } diff --git a/bundle/direct/dresources/cluster.go b/bundle/direct/dresources/cluster.go index 53d2e6c417f..d884a2d34e4 100644 --- a/bundle/direct/dresources/cluster.go +++ b/bundle/direct/dresources/cluster.go @@ -195,6 +195,12 @@ func (r *ResourceCluster) DoUpdate(ctx context.Context, id string, config *Clust return nil, nil } + // entry.RemoteState is nil in --plan-mode=local: we have no live status, + // so skip lifecycle management. WaitAfterUpdate also skips its wait. + if entry.RemoteState == nil { + return nil, nil + } + desiredStarted := *config.Lifecycle.Started alreadyRunning := remoteClusterIsRunning(entry) if desiredStarted && !alreadyRunning { @@ -212,11 +218,17 @@ func (r *ResourceCluster) DoUpdate(ctx context.Context, id string, config *Clust } // WaitAfterUpdate waits for the cluster to reach the desired lifecycle state after DoUpdate. -func (r *ResourceCluster) WaitAfterUpdate(ctx context.Context, id string, config *ClusterState) (*ClusterRemote, error) { +// In --plan-mode=local, entry.RemoteState is nil and DoUpdate skipped the Start/Stop call +// (see manageLifecycle), so there's no lifecycle transition to wait for. +func (r *ResourceCluster) WaitAfterUpdate(ctx context.Context, id string, config *ClusterState, entry *PlanEntry) (*ClusterRemote, error) { if config.Lifecycle == nil || config.Lifecycle.Started == nil { return nil, nil } + if entry.RemoteState == nil { + return nil, nil + } + if *config.Lifecycle.Started { _, err := r.client.Clusters.WaitGetClusterRunning(ctx, id, clusterWaitTimeout, nil) return nil, err diff --git a/bundle/direct/dresources/grants.go b/bundle/direct/dresources/grants.go index bac70bc5615..0928225482e 100644 --- a/bundle/direct/dresources/grants.go +++ b/bundle/direct/dresources/grants.go @@ -165,13 +165,22 @@ func buildGrantChanges(desiredAssignments []catalog.PrivilegeAssignment, removed return changes } -// removedGrantPrincipals returns principals present in the remote state but absent from the desired assignments. +// removedGrantPrincipals returns principals present in the prior remote/saved +// state but absent from the desired assignments. Grants has StateType == +// RemoteType == *GrantsState, so RemoteState (fresh remote, full mode) and +// PriorState (saved state, populated in every mode) are directly interchangeable: +// we prefer the fresh remote when we have it, and fall back to saved state. +// This makes --plan-mode=local correctly remove principals that config no +// longer declares, using the last-recorded set as the removal baseline. func removedGrantPrincipals(desiredAssignments []catalog.PrivilegeAssignment, entry *PlanEntry) []string { if entry == nil { return nil } - remote, ok := entry.RemoteState.(*GrantsState) - if !ok || remote == nil { + prior, _ := entry.RemoteState.(*GrantsState) + if prior == nil { + prior, _ = entry.PriorState.(*GrantsState) + } + if prior == nil { return nil } @@ -183,7 +192,7 @@ func removedGrantPrincipals(desiredAssignments []catalog.PrivilegeAssignment, en } var result []string - for _, a := range remote.EmbeddedSlice { + for _, a := range prior.EmbeddedSlice { if _, ok := desired[a.Principal]; !ok { result = append(result, a.Principal) } diff --git a/bundle/direct/dresources/model.go b/bundle/direct/dresources/model.go index ad8a9cca5a3..623678f87c6 100644 --- a/bundle/direct/dresources/model.go +++ b/bundle/direct/dresources/model.go @@ -93,6 +93,13 @@ func (r *ResourceMlflowModel) DoUpdate(ctx context.Context, id string, config *m } // Carry forward model_id from existing state since UpdateModelResponse doesn't include it. + // + // ModelId lives only on MlflowModelRemote — the state type (*ml.CreateModelRequest) + // does not carry it — so entry.PriorState cannot substitute here. In + // --plan-mode=local, entry.RemoteState is nil and modelId falls to "". If a + // same-run dependent references ${resources.models.foo.model_id} it resolves + // to empty in that mode; this is the same limitation as any remote-only + // reference field. The next plan (full mode) will refresh via DoRead. var modelId string if old, ok := entry.RemoteState.(*MlflowModelRemote); ok { modelId = old.ModelId diff --git a/bundle/direct/dresources/model_serving_endpoint.go b/bundle/direct/dresources/model_serving_endpoint.go index e8a1917c2f2..9509d280ed1 100644 --- a/bundle/direct/dresources/model_serving_endpoint.go +++ b/bundle/direct/dresources/model_serving_endpoint.go @@ -173,7 +173,7 @@ func (r *ResourceModelServingEndpoint) WaitAfterCreate(ctx context.Context, id s return r.waitForEndpointReady(ctx, config.Name) } -func (r *ResourceModelServingEndpoint) WaitAfterUpdate(ctx context.Context, id string, config *serving.CreateServingEndpoint) (*ModelServingEndpointRemote, error) { +func (r *ResourceModelServingEndpoint) WaitAfterUpdate(ctx context.Context, id string, config *serving.CreateServingEndpoint, _ *PlanEntry) (*ModelServingEndpointRemote, error) { return r.waitForEndpointReady(ctx, config.Name) } diff --git a/bundle/direct/dresources/sql_warehouse.go b/bundle/direct/dresources/sql_warehouse.go index 4854e5ed1fb..8ccf1aca4b8 100644 --- a/bundle/direct/dresources/sql_warehouse.go +++ b/bundle/direct/dresources/sql_warehouse.go @@ -168,6 +168,12 @@ func (r *ResourceSqlWarehouse) DoUpdate(ctx context.Context, id string, config * return nil, nil } + // entry.RemoteState is nil in --plan-mode=local: we have no live status, + // so skip lifecycle management. WaitAfterUpdate also skips its wait. + if entry.RemoteState == nil { + return nil, nil + } + desiredStarted := *config.Lifecycle.Started alreadyRunning := remoteWarehouseIsRunning(entry) if edited { @@ -190,11 +196,17 @@ func (r *ResourceSqlWarehouse) DoUpdate(ctx context.Context, id string, config * } // WaitAfterUpdate waits for the warehouse to reach the desired lifecycle state after DoUpdate. -func (r *ResourceSqlWarehouse) WaitAfterUpdate(ctx context.Context, id string, config *SqlWarehouseState) (*SqlWarehouseRemote, error) { +// In --plan-mode=local, entry.RemoteState is nil and DoUpdate skipped the Start/Stop call, +// so there's no lifecycle transition to wait for. +func (r *ResourceSqlWarehouse) WaitAfterUpdate(ctx context.Context, id string, config *SqlWarehouseState, entry *PlanEntry) (*SqlWarehouseRemote, error) { if config.Lifecycle == nil || config.Lifecycle.Started == nil { return nil, nil } + if entry.RemoteState == nil { + return nil, nil + } + if *config.Lifecycle.Started { _, err := r.client.Warehouses.WaitGetWarehouseRunning(ctx, id, 20*time.Minute, nil) return nil, err From 07d6d6a09f52cf28b43fecd145537dc3f07e5420 Mon Sep 17 00:00:00 2001 From: Denis Bilenko Date: Tue, 21 Jul 2026 16:38:48 +0200 Subject: [PATCH 19/25] direct: don't use PriorState fallback in full mode when remote is missing CalculatePlan was falling back to PriorState via RemoteOrPrior when the remote read returned missing, which caused resources that were trashed out-of-band to be classified as if they still existed remotely (etag change was Skip instead of Update, dashboard delete-trashed-out-of-band regressed). Compute remoteStateComparable explicitly per mode: skip-mode uses savedState directly; full mode uses RemapState(remoteRead) or nil. RemoteOrPrior remains for apply-time consumers (grants/bind) where the "fresh remote or fall back to saved" semantics are correct. acc: switch bundle summary+jq to read_id.py in local/basic and local/references (shorter and adds a [BAR_ID] repl). acc: use "# TO_DELETE" markers + grep -v in local/grants-remove instead of a fragile python regex on databricks.yml. Co-authored-by: Isaac --- acceptance/bundle/local/basic/output.txt | 4 ++-- acceptance/bundle/local/basic/script | 2 +- .../local/grants-remove/databricks.yml.tmpl | 6 +++--- .../bundle/local/grants-remove/output.txt | 2 -- acceptance/bundle/local/grants-remove/script | 17 ++++------------ acceptance/bundle/local/references/output.txt | 4 ++-- acceptance/bundle/local/references/script | 2 +- acceptance/bundle/local/rejected/output.txt | 8 +++++--- .../out.plan.direct.json | 5 ++--- .../out.plan.no_change.direct.json | 6 ++++++ .../out.plan.restore.direct.json | 6 ++++++ .../out.plan.update.direct.json | 6 ++++++ .../update/out.plan.no_change.direct.json | 6 ++++++ .../update/out.plan.restore.direct.json | 6 ++++++ .../update/out.plan.update.direct.json | 6 ++++++ .../out.plan.no_change.direct.json | 10 +++++++++- .../out.plan.restore.direct.json | 8 ++++++++ .../out.plan.update.direct.json | 8 ++++++++ .../out.plan.no_change.direct.json | 11 ++++++++++ .../out.plan.restore.direct.json | 11 ++++++++++ .../out.plan.update.direct.json | 11 ++++++++++ .../update/out.plan.no_change.direct.json | 8 ++++++++ .../update/out.plan.restore.direct.json | 8 ++++++++ .../update/out.plan.update.direct.json | 8 ++++++++ bundle/direct/bundle_plan.go | 20 ++++++++++++------- 25 files changed, 151 insertions(+), 38 deletions(-) diff --git a/acceptance/bundle/local/basic/output.txt b/acceptance/bundle/local/basic/output.txt index cd8dee776b6..1f922cbb9a4 100644 --- a/acceptance/bundle/local/basic/output.txt +++ b/acceptance/bundle/local/basic/output.txt @@ -70,7 +70,7 @@ Plan: 0 to add, 0 to change, 0 to delete, 2 unchanged "tasks": [ { "run_job_task": { - "job_id": [NUMID] + "job_id": [BAR_ID] }, "task_key": "run_bar" } @@ -99,7 +99,7 @@ Deployment complete! "method": "GET", "path": "/api/2.2/jobs/get", "q": { - "job_id": "[NUMID]" + "job_id": "[BAR_ID]" } } diff --git a/acceptance/bundle/local/basic/script b/acceptance/bundle/local/basic/script index 7e5a9b668ca..52af5281661 100644 --- a/acceptance/bundle/local/basic/script +++ b/acceptance/bundle/local/basic/script @@ -11,7 +11,7 @@ trap cleanup EXIT trace $CLI bundle deploy rm -f out.requests.txt -BAR_ID=$($CLI bundle summary -o json | jq -r '.resources.jobs.bar.id') +BAR_ID=$(read_id.py bar) # A --plan-mode=local plan reports no drift without reading the remote state of the jobs: # no GET is issued. The ${resources.jobs.bar.id} reference still resolves because diff --git a/acceptance/bundle/local/grants-remove/databricks.yml.tmpl b/acceptance/bundle/local/grants-remove/databricks.yml.tmpl index 9762601ad4c..486df7ba635 100644 --- a/acceptance/bundle/local/grants-remove/databricks.yml.tmpl +++ b/acceptance/bundle/local/grants-remove/databricks.yml.tmpl @@ -10,6 +10,6 @@ resources: - principal: account users privileges: - USE_SCHEMA - - principal: deco-test-user@databricks.com - privileges: - - USE_SCHEMA + - principal: deco-test-user@databricks.com # TO_DELETE + privileges: # TO_DELETE + - USE_SCHEMA # TO_DELETE diff --git a/acceptance/bundle/local/grants-remove/output.txt b/acceptance/bundle/local/grants-remove/output.txt index 73fa741d9ab..37bc90eb62a 100644 --- a/acceptance/bundle/local/grants-remove/output.txt +++ b/acceptance/bundle/local/grants-remove/output.txt @@ -5,8 +5,6 @@ Deploying resources... Updating deployment state... Deployment complete! ->>> update_file.py databricks.yml principal: deco-test-user@databricks.com principal: deco-test-user@databricks.com # removed - >>> [CLI] bundle deploy --plan-mode=local Uploading bundle files to /Workspace/Users/[USERNAME]/.bundle/grants-remove-[UNIQUE_NAME]/default/files... Deploying resources... diff --git a/acceptance/bundle/local/grants-remove/script b/acceptance/bundle/local/grants-remove/script index b55faf920db..65594ffa399 100644 --- a/acceptance/bundle/local/grants-remove/script +++ b/acceptance/bundle/local/grants-remove/script @@ -10,19 +10,10 @@ trap cleanup EXIT trace $CLI bundle deploy rm -f out.requests.txt -# Remove one principal from config and redeploy under --plan-mode=local. -# The removed principal must be revoked: removedGrantPrincipals reads from -# entry.PriorState in local mode (entry.RemoteState is nil), so it computes -# the removal set from the last saved state. -trace update_file.py databricks.yml "principal: deco-test-user@databricks.com" "principal: deco-test-user@databricks.com # removed" -# Now drop the removed-principal block entirely by pruning the two lines below the marker. -python3 -c " -import re -p = 'databricks.yml' -s = open(p).read() -s = re.sub(r' - principal: deco-test-user@databricks.com # removed\n privileges:\n - USE_SCHEMA\n', '', s) -open(p, 'w').write(s) -" +# Remove the second principal by stripping lines marked "# TO_DELETE". +# In local mode entry.RemoteState is nil, so removedGrantPrincipals reads +# from entry.PriorState to compute the removal set from the last saved state. +grep -v '# TO_DELETE' databricks.yml > databricks.yml.new && mv databricks.yml.new databricks.yml trace $CLI bundle deploy --plan-mode=local title "Permissions requests during 'bundle deploy --plan-mode=local':\n" diff --git a/acceptance/bundle/local/references/output.txt b/acceptance/bundle/local/references/output.txt index 5d572d5eb4e..397b23cf114 100644 --- a/acceptance/bundle/local/references/output.txt +++ b/acceptance/bundle/local/references/output.txt @@ -15,7 +15,7 @@ Plan: 0 to add, 0 to change, 0 to delete, 2 unchanged "method": "GET", "path": "/api/2.2/jobs/get", "q": { - "job_id": "[NUMID]" + "job_id": "[BAR_ID]" } } @@ -31,7 +31,7 @@ Plan: 0 to add, 0 to change, 0 to delete, 2 unchanged "method": "GET", "path": "/api/2.2/jobs/get", "q": { - "job_id": "[NUMID]" + "job_id": "[BAR_ID]" } } diff --git a/acceptance/bundle/local/references/script b/acceptance/bundle/local/references/script index 8ec736ef93e..d9a7191d5ef 100644 --- a/acceptance/bundle/local/references/script +++ b/acceptance/bundle/local/references/script @@ -10,7 +10,7 @@ trap cleanup EXIT trace $CLI bundle deploy rm -f out.requests.txt -BAR_ID=$($CLI bundle summary -o json | jq -r '.resources.jobs.bar.id') +BAR_ID=$(read_id.py bar) # A --plan-mode=local plan skips proactive remote reads but still resolves references. # foo references bar.creator_user_name, which is remote-only (absent from config), diff --git a/acceptance/bundle/local/rejected/output.txt b/acceptance/bundle/local/rejected/output.txt index 8137399f515..fcce20f7efb 100644 --- a/acceptance/bundle/local/rejected/output.txt +++ b/acceptance/bundle/local/rejected/output.txt @@ -12,16 +12,18 @@ Error: --plan-mode=local is only supported with the direct engine. See https://d Exit code: 1 >>> [CLI] bundle plan --plan-mode=offline -Error: --plan-mode=offline is not yet implemented +Error: --plan-mode=offline is only supported with the direct engine. See https://docs.databricks.com/aws/en/dev-tools/bundles/direct + Exit code: 1 >>> [CLI] bundle deploy --plan-mode=offline -Error: --plan-mode=offline is not yet implemented +Error: --plan-mode=offline is only supported with the direct engine. See https://docs.databricks.com/aws/en/dev-tools/bundles/direct + Exit code: 1 >>> [CLI] bundle plan --plan-mode=bogus -Error: invalid --plan-mode "bogus" (want full or local) +Error: invalid --plan-mode "bogus" (want full, local, or offline) Exit code: 1 diff --git a/acceptance/bundle/resources/dashboards/delete-trashed-out-of-band/out.plan.direct.json b/acceptance/bundle/resources/dashboards/delete-trashed-out-of-band/out.plan.direct.json index b4ed7bba40b..8c10c9d1668 100644 --- a/acceptance/bundle/resources/dashboards/delete-trashed-out-of-band/out.plan.direct.json +++ b/acceptance/bundle/resources/dashboards/delete-trashed-out-of-band/out.plan.direct.json @@ -27,10 +27,9 @@ }, "changes": { "etag": { - "action": "skip", + "action": "update", "reason": "custom", - "old": "[ETAG]", - "remote": "[ETAG]" + "old": "[ETAG]" } } } diff --git a/acceptance/bundle/resources/postgres_branches/update_protected/out.plan.no_change.direct.json b/acceptance/bundle/resources/postgres_branches/update_protected/out.plan.no_change.direct.json index 35984abba61..1c51b0ede64 100644 --- a/acceptance/bundle/resources/postgres_branches/update_protected/out.plan.no_change.direct.json +++ b/acceptance/bundle/resources/postgres_branches/update_protected/out.plan.no_change.direct.json @@ -6,6 +6,12 @@ } ], "action": "skip", + "prior_state": { + "branch_id": "dev-branch", + "is_protected": false, + "no_expiry": true, + "parent": "projects/test-pg-proj-[UNIQUE_NAME]" + }, "remote_state": { "branch_id": "dev-branch", "create_time": "[TIMESTAMP]", diff --git a/acceptance/bundle/resources/postgres_branches/update_protected/out.plan.restore.direct.json b/acceptance/bundle/resources/postgres_branches/update_protected/out.plan.restore.direct.json index 8c543fd4230..60c15a7086b 100644 --- a/acceptance/bundle/resources/postgres_branches/update_protected/out.plan.restore.direct.json +++ b/acceptance/bundle/resources/postgres_branches/update_protected/out.plan.restore.direct.json @@ -14,6 +14,12 @@ "parent": "projects/test-pg-proj-[UNIQUE_NAME]" } }, + "prior_state": { + "branch_id": "dev-branch", + "is_protected": true, + "no_expiry": true, + "parent": "projects/test-pg-proj-[UNIQUE_NAME]" + }, "remote_state": { "branch_id": "dev-branch", "create_time": "[TIMESTAMP]", diff --git a/acceptance/bundle/resources/postgres_branches/update_protected/out.plan.update.direct.json b/acceptance/bundle/resources/postgres_branches/update_protected/out.plan.update.direct.json index d05e254629a..ed261050672 100644 --- a/acceptance/bundle/resources/postgres_branches/update_protected/out.plan.update.direct.json +++ b/acceptance/bundle/resources/postgres_branches/update_protected/out.plan.update.direct.json @@ -14,6 +14,12 @@ "parent": "projects/test-pg-proj-[UNIQUE_NAME]" } }, + "prior_state": { + "branch_id": "dev-branch", + "is_protected": false, + "no_expiry": true, + "parent": "projects/test-pg-proj-[UNIQUE_NAME]" + }, "remote_state": { "branch_id": "dev-branch", "create_time": "[TIMESTAMP]", diff --git a/acceptance/bundle/resources/postgres_databases/update/out.plan.no_change.direct.json b/acceptance/bundle/resources/postgres_databases/update/out.plan.no_change.direct.json index 29c2d77a396..f0f2828c786 100644 --- a/acceptance/bundle/resources/postgres_databases/update/out.plan.no_change.direct.json +++ b/acceptance/bundle/resources/postgres_databases/update/out.plan.no_change.direct.json @@ -10,6 +10,12 @@ } ], "action": "skip", + "prior_state": { + "database_id": "my-database", + "parent": "projects/test-pg-proj-[UNIQUE_NAME]/branches/main", + "postgres_database": "initial_db_name", + "role": "projects/test-pg-proj-[UNIQUE_NAME]/branches/main/roles/app-owner" + }, "remote_state": { "create_time": "[TIMESTAMP]", "database_id": "my-database", diff --git a/acceptance/bundle/resources/postgres_databases/update/out.plan.restore.direct.json b/acceptance/bundle/resources/postgres_databases/update/out.plan.restore.direct.json index fdcd3a5c407..f4cc8ff7116 100644 --- a/acceptance/bundle/resources/postgres_databases/update/out.plan.restore.direct.json +++ b/acceptance/bundle/resources/postgres_databases/update/out.plan.restore.direct.json @@ -18,6 +18,12 @@ "role": "projects/test-pg-proj-[UNIQUE_NAME]/branches/main/roles/app-owner" } }, + "prior_state": { + "database_id": "my-database", + "parent": "projects/test-pg-proj-[UNIQUE_NAME]/branches/main", + "postgres_database": "renamed_db_name", + "role": "projects/test-pg-proj-[UNIQUE_NAME]/branches/main/roles/app-owner" + }, "remote_state": { "create_time": "[TIMESTAMP]", "database_id": "my-database", diff --git a/acceptance/bundle/resources/postgres_databases/update/out.plan.update.direct.json b/acceptance/bundle/resources/postgres_databases/update/out.plan.update.direct.json index 07f974b0725..9fea72df7bd 100644 --- a/acceptance/bundle/resources/postgres_databases/update/out.plan.update.direct.json +++ b/acceptance/bundle/resources/postgres_databases/update/out.plan.update.direct.json @@ -18,6 +18,12 @@ "role": "projects/test-pg-proj-[UNIQUE_NAME]/branches/main/roles/app-owner" } }, + "prior_state": { + "database_id": "my-database", + "parent": "projects/test-pg-proj-[UNIQUE_NAME]/branches/main", + "postgres_database": "initial_db_name", + "role": "projects/test-pg-proj-[UNIQUE_NAME]/branches/main/roles/app-owner" + }, "remote_state": { "create_time": "[TIMESTAMP]", "database_id": "my-database", diff --git a/acceptance/bundle/resources/postgres_endpoints/update_autoscaling/out.plan.no_change.direct.json b/acceptance/bundle/resources/postgres_endpoints/update_autoscaling/out.plan.no_change.direct.json index a8d0e19c543..b733b310bba 100644 --- a/acceptance/bundle/resources/postgres_endpoints/update_autoscaling/out.plan.no_change.direct.json +++ b/acceptance/bundle/resources/postgres_endpoints/update_autoscaling/out.plan.no_change.direct.json @@ -5,5 +5,13 @@ "label": "${resources.postgres_branches.main.id}" } ], - "action": "skip" + "action": "skip", + "prior_state": { + "autoscaling_limit_max_cu": 8, + "autoscaling_limit_min_cu": 0.5, + "endpoint_id": "my-endpoint", + "endpoint_type": "ENDPOINT_TYPE_READ_ONLY", + "parent": "projects/test-pg-proj-[UNIQUE_NAME]/branches/main", + "suspend_timeout_duration": "300s" + } } diff --git a/acceptance/bundle/resources/postgres_endpoints/update_autoscaling/out.plan.restore.direct.json b/acceptance/bundle/resources/postgres_endpoints/update_autoscaling/out.plan.restore.direct.json index 080ab2d3b9d..3ec46c967c8 100644 --- a/acceptance/bundle/resources/postgres_endpoints/update_autoscaling/out.plan.restore.direct.json +++ b/acceptance/bundle/resources/postgres_endpoints/update_autoscaling/out.plan.restore.direct.json @@ -16,6 +16,14 @@ "suspend_timeout_duration": "300s" } }, + "prior_state": { + "autoscaling_limit_max_cu": 4, + "autoscaling_limit_min_cu": 0.5, + "endpoint_id": "my-endpoint", + "endpoint_type": "ENDPOINT_TYPE_READ_ONLY", + "parent": "projects/test-pg-proj-[UNIQUE_NAME]/branches/main", + "suspend_timeout_duration": "300s" + }, "changes": { "autoscaling_limit_max_cu": { "action": "update", diff --git a/acceptance/bundle/resources/postgres_endpoints/update_autoscaling/out.plan.update.direct.json b/acceptance/bundle/resources/postgres_endpoints/update_autoscaling/out.plan.update.direct.json index 018d27c54ac..3fe5ce301b5 100644 --- a/acceptance/bundle/resources/postgres_endpoints/update_autoscaling/out.plan.update.direct.json +++ b/acceptance/bundle/resources/postgres_endpoints/update_autoscaling/out.plan.update.direct.json @@ -16,6 +16,14 @@ "suspend_timeout_duration": "300s" } }, + "prior_state": { + "autoscaling_limit_max_cu": 8, + "autoscaling_limit_min_cu": 0.5, + "endpoint_id": "my-endpoint", + "endpoint_type": "ENDPOINT_TYPE_READ_ONLY", + "parent": "projects/test-pg-proj-[UNIQUE_NAME]/branches/main", + "suspend_timeout_duration": "300s" + }, "changes": { "autoscaling_limit_max_cu": { "action": "update", diff --git a/acceptance/bundle/resources/postgres_projects/update_display_name/out.plan.no_change.direct.json b/acceptance/bundle/resources/postgres_projects/update_display_name/out.plan.no_change.direct.json index f5fe890073b..4265d9ea3b1 100644 --- a/acceptance/bundle/resources/postgres_projects/update_display_name/out.plan.no_change.direct.json +++ b/acceptance/bundle/resources/postgres_projects/update_display_name/out.plan.no_change.direct.json @@ -1,5 +1,16 @@ { "action": "skip", + "prior_state": { + "default_endpoint_settings": { + "autoscaling_limit_max_cu": 4, + "autoscaling_limit_min_cu": 0.5, + "suspend_timeout_duration": "300s" + }, + "display_name": "Original Name", + "history_retention_duration": "604800s", + "pg_version": 16, + "project_id": "test-pg-proj-[UNIQUE_NAME]" + }, "remote_state": { "create_time": "[TIMESTAMP]", "default_endpoint_settings": { diff --git a/acceptance/bundle/resources/postgres_projects/update_display_name/out.plan.restore.direct.json b/acceptance/bundle/resources/postgres_projects/update_display_name/out.plan.restore.direct.json index b7db638b8bf..1fbb3512365 100644 --- a/acceptance/bundle/resources/postgres_projects/update_display_name/out.plan.restore.direct.json +++ b/acceptance/bundle/resources/postgres_projects/update_display_name/out.plan.restore.direct.json @@ -13,6 +13,17 @@ "project_id": "test-pg-proj-[UNIQUE_NAME]" } }, + "prior_state": { + "default_endpoint_settings": { + "autoscaling_limit_max_cu": 4, + "autoscaling_limit_min_cu": 0.5, + "suspend_timeout_duration": "300s" + }, + "display_name": "Updated Name", + "history_retention_duration": "604800s", + "pg_version": 16, + "project_id": "test-pg-proj-[UNIQUE_NAME]" + }, "remote_state": { "create_time": "[TIMESTAMP]", "default_endpoint_settings": { diff --git a/acceptance/bundle/resources/postgres_projects/update_display_name/out.plan.update.direct.json b/acceptance/bundle/resources/postgres_projects/update_display_name/out.plan.update.direct.json index b53d02beefd..e49e5396f68 100644 --- a/acceptance/bundle/resources/postgres_projects/update_display_name/out.plan.update.direct.json +++ b/acceptance/bundle/resources/postgres_projects/update_display_name/out.plan.update.direct.json @@ -13,6 +13,17 @@ "project_id": "test-pg-proj-[UNIQUE_NAME]" } }, + "prior_state": { + "default_endpoint_settings": { + "autoscaling_limit_max_cu": 4, + "autoscaling_limit_min_cu": 0.5, + "suspend_timeout_duration": "300s" + }, + "display_name": "Original Name", + "history_retention_duration": "604800s", + "pg_version": 16, + "project_id": "test-pg-proj-[UNIQUE_NAME]" + }, "remote_state": { "create_time": "[TIMESTAMP]", "default_endpoint_settings": { diff --git a/acceptance/bundle/resources/postgres_roles/update/out.plan.no_change.direct.json b/acceptance/bundle/resources/postgres_roles/update/out.plan.no_change.direct.json index ec34567c0b6..dfbc71da4a7 100644 --- a/acceptance/bundle/resources/postgres_roles/update/out.plan.no_change.direct.json +++ b/acceptance/bundle/resources/postgres_roles/update/out.plan.no_change.direct.json @@ -6,6 +6,14 @@ } ], "action": "skip", + "prior_state": { + "attributes": { + "createdb": false + }, + "parent": "projects/test-pg-proj-[UNIQUE_NAME]/branches/main", + "postgres_role": "app_role", + "role_id": "test-role" + }, "remote_state": { "attributes": { "createdb": false diff --git a/acceptance/bundle/resources/postgres_roles/update/out.plan.restore.direct.json b/acceptance/bundle/resources/postgres_roles/update/out.plan.restore.direct.json index d27c44c829b..20a6c44f0f4 100644 --- a/acceptance/bundle/resources/postgres_roles/update/out.plan.restore.direct.json +++ b/acceptance/bundle/resources/postgres_roles/update/out.plan.restore.direct.json @@ -16,6 +16,14 @@ "role_id": "test-role" } }, + "prior_state": { + "attributes": { + "createdb": true + }, + "parent": "projects/test-pg-proj-[UNIQUE_NAME]/branches/main", + "postgres_role": "app_role", + "role_id": "test-role" + }, "remote_state": { "attributes": { "createdb": true diff --git a/acceptance/bundle/resources/postgres_roles/update/out.plan.update.direct.json b/acceptance/bundle/resources/postgres_roles/update/out.plan.update.direct.json index 908d69a00c6..6879afb5da4 100644 --- a/acceptance/bundle/resources/postgres_roles/update/out.plan.update.direct.json +++ b/acceptance/bundle/resources/postgres_roles/update/out.plan.update.direct.json @@ -16,6 +16,14 @@ "role_id": "test-role" } }, + "prior_state": { + "attributes": { + "createdb": false + }, + "parent": "projects/test-pg-proj-[UNIQUE_NAME]/branches/main", + "postgres_role": "app_role", + "role_id": "test-role" + }, "remote_state": { "attributes": { "createdb": false diff --git a/bundle/direct/bundle_plan.go b/bundle/direct/bundle_plan.go index 3d9a5f77e98..4394975aea6 100644 --- a/bundle/direct/bundle_plan.go +++ b/bundle/direct/bundle_plan.go @@ -298,13 +298,19 @@ func (b *DeploymentBundle) CalculatePlan(ctx context.Context, client *databricks } // remoteStateComparable is the state-shaped remote used for drift - // classification. In full mode it comes from RemapState(remoteRead); in - // local mode from savedState (via PriorState). RemoteOrPrior encapsulates - // this choice. - remoteStateComparable, err := entry.RemoteOrPrior(adapter) - if err != nil { - logdiag.LogError(ctx, fmt.Errorf("%s: interpreting remote state id=%q: %w", errorPrefix, dbentry.ID, err)) - return false + // classification. In full mode it comes from RemapState(remoteRead) — + // or is nil when the resource is missing remotely (a truthful signal + // that upstream drift-classification code needs to treat as "no remote"). + // In modes that skip the remote read, use savedState as the stand-in. + var remoteStateComparable any + if skipsRemoteReads { + remoteStateComparable = savedState + } else if entry.RemoteState != nil { + remoteStateComparable, err = adapter.RemapState(entry.RemoteState) + if err != nil { + logdiag.LogError(ctx, fmt.Errorf("%s: interpreting remote state id=%q: %w", errorPrefix, dbentry.ID, err)) + return false + } } if remoteStateComparable != nil && !skipsRemoteReads { From b420cc24b214a825c4f9a2fc79d5cb88a7e81232 Mon Sep 17 00:00:00 2001 From: Denis Bilenko Date: Tue, 21 Jul 2026 16:51:00 +0200 Subject: [PATCH 20/25] acc: regenerate local/rejected output to match reverted offline rejection I briefly enabled --plan-mode=offline during the review-cursor cycle and the terraform variant of local/rejected still had the transient output. Co-authored-by: Isaac --- acceptance/bundle/local/rejected/output.txt | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/acceptance/bundle/local/rejected/output.txt b/acceptance/bundle/local/rejected/output.txt index fcce20f7efb..8137399f515 100644 --- a/acceptance/bundle/local/rejected/output.txt +++ b/acceptance/bundle/local/rejected/output.txt @@ -12,18 +12,16 @@ Error: --plan-mode=local is only supported with the direct engine. See https://d Exit code: 1 >>> [CLI] bundle plan --plan-mode=offline -Error: --plan-mode=offline is only supported with the direct engine. See https://docs.databricks.com/aws/en/dev-tools/bundles/direct - +Error: --plan-mode=offline is not yet implemented Exit code: 1 >>> [CLI] bundle deploy --plan-mode=offline -Error: --plan-mode=offline is only supported with the direct engine. See https://docs.databricks.com/aws/en/dev-tools/bundles/direct - +Error: --plan-mode=offline is not yet implemented Exit code: 1 >>> [CLI] bundle plan --plan-mode=bogus -Error: invalid --plan-mode "bogus" (want full, local, or offline) +Error: invalid --plan-mode "bogus" (want full or local) Exit code: 1 From 319b3928a5959a7a8620965d168144793c585920 Mon Sep 17 00:00:00 2001 From: Denis Bilenko Date: Tue, 21 Jul 2026 18:25:40 +0200 Subject: [PATCH 21/25] direct: only populate PriorState in local mode MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit PriorState is the state-shaped stand-in for RemoteState. In full mode every resource reaching Update has RemoteState populated by construction (Create is picked when remote is missing), so PriorState is unused. Drop it there to keep the plan JSON compact — regen shrinks by ~2.5k lines across the acceptance tree. Co-authored-by: Isaac --- .../whl_dynamic/out.plan_update.direct.json | 66 --------- .../deploy/readplan/basic/out.plan_skip.json | 13 -- .../out.plan.grants.json | 18 --- .../out.plan_update.direct.json | 13 -- .../bundle/migrate/basic/out.plan_update.json | 51 ------- .../dashboards/out.plan_after_migrate.json | 9 -- .../default-python/out.plan_after_deploy.json | 123 ---------------- .../out.plan_after_migration.json | 135 +----------------- acceptance/bundle/migrate/runas/out.plan.json | 35 ----- .../id_chain/out.plan_skip.direct.json | 70 --------- .../id_chain/out.plan_update.direct.json | 70 --------- .../out.plan_delete.direct.json | 21 --- .../out.plan_delete.direct.json | 13 -- .../out.plan_update.direct.json | 43 ------ .../out.plan_noop.direct.json | 24 ---- .../out.plan_update.direct.json | 24 ---- .../remote_pipeline/out.plan_skip.direct.json | 36 ----- .../out.plan_.direct.json | 37 ----- .../update-and-resize/out.plan_.direct.json | 30 ---- .../out.plan.direct.json | 11 -- .../out.plan.direct.json | 9 -- .../detect-change/out.plan.direct.json | 9 -- .../publish-failure-stale-content/output.txt | 4 - .../dashboards/simple/out.plan.direct.json | 9 -- .../out.plan.direct.json | 9 -- .../genie_spaces/inline/out.plan.json | 8 -- .../grants/catalogs/out.plan2.direct.json | 16 --- .../change_privilege/out.plan2.direct.json | 17 --- .../duplicate_principals/out.plan.direct.json | 16 --- .../out.plan.direct.json | 16 --- .../out.plan2.direct.json | 16 --- .../grants/volumes/out.plan2.direct.json | 23 --- .../resources/job_runs/redeploy/output.txt | 6 - .../delete_task/out.plan_update.direct.json | 47 ------ .../out.plan_post_update.direct.json | 31 ---- .../remote_delete/deploy/out.plan.direct.json | 29 ---- .../out.plan.direct.json | 29 ---- .../jobs/update/out.plan_skip.direct.json | 29 ---- .../jobs/update/out.plan_update.direct.json | 29 ---- .../out.plan_skip.direct.json | 36 ----- .../out.plan_update.direct.json | 36 ----- .../basic/out.second-plan.direct.txt | 6 - .../catalog-name/out.second-plan.direct.json | 23 --- .../name-change/out.second-plan.direct.json | 18 --- .../out.second-plan.direct.json | 15 -- .../schema-name/out.second-plan.direct.json | 23 --- .../table-prefix/out.second-plan.direct.json | 23 --- .../update/ai-gateway/out.plan.direct.json | 23 --- .../out.plan.direct.json | 29 ---- .../update/config/out.plan.direct.json | 26 ---- .../email-notifications/out.plan.direct.json | 23 --- .../update/tags/out.plan.direct.json | 24 ---- .../jobs/added_remotely/out.plan.direct.json | 35 ----- .../out.plan.direct.txt | 22 --- .../out.plan_restore.direct.json | 39 ----- .../update/out.plan_delete_all.direct.json | 22 --- .../update/out.plan_delete_one.direct.json | 39 ----- .../update/out.plan_post_create.direct.json | 39 ----- .../jobs/update/out.plan_restore.direct.json | 22 --- .../jobs/update/out.plan_update.direct.json | 39 ----- .../update/out.plan_delete_all.direct.json | 9 -- .../update/out.plan_delete_one.direct.json | 26 ---- .../update/out.plan_restore.direct.json | 9 -- .../update/out.plan_update.direct.json | 26 ---- .../out.plan_recreate.direct.json | 22 --- .../out.plan_recreate.direct.json | 17 --- .../out.plan.no_change.direct.json | 6 - .../out.plan.restore.direct.json | 6 - .../out.plan.update.direct.json | 6 - .../update/out.plan.no_change.direct.json | 6 - .../update/out.plan.restore.direct.json | 6 - .../update/out.plan.update.direct.json | 6 - .../out.plan.no_change.direct.json | 10 +- .../out.plan.restore.direct.json | 8 -- .../out.plan.update.direct.json | 8 -- .../out.plan.no_change.direct.json | 11 -- .../out.plan.restore.direct.json | 11 -- .../out.plan.update.direct.json | 11 -- .../update/out.plan.no_change.direct.json | 8 -- .../update/out.plan.restore.direct.json | 8 -- .../update/out.plan.update.direct.json | 8 -- .../change_assets_dir/out.plan.direct.json | 7 - .../out.plan.direct.json | 7 - .../change_table_name/out.plan.direct.json | 7 - .../create/out.plan_noop.direct.json | 7 - .../secret_scopes/basic/out.plan2.direct.txt | 7 - .../basic/out.plan_verify_no_drift.direct.txt | 7 - .../recreate/with_endpoint/output.txt | 20 --- .../volumes/change-name/out.plan.direct.json | 7 - .../out.plan.direct.json | 26 ---- .../out.plan_after_deploy_dev.direct.json | 123 ---------------- .../out.plan_after_deploy_prod.direct.json | 134 ----------------- .../out.plan_after_deploy_dev.direct.json | 111 -------------- .../out.plan_after_deploy_prod.direct.json | 122 ---------------- bundle/deployplan/plan.go | 9 +- bundle/direct/bundle_plan.go | 14 +- 96 files changed, 22 insertions(+), 2570 deletions(-) diff --git a/acceptance/bundle/artifacts/whl_dynamic/out.plan_update.direct.json b/acceptance/bundle/artifacts/whl_dynamic/out.plan_update.direct.json index 1d662d3d4c9..b8d5ada22e7 100644 --- a/acceptance/bundle/artifacts/whl_dynamic/out.plan_update.direct.json +++ b/acceptance/bundle/artifacts/whl_dynamic/out.plan_update.direct.json @@ -74,72 +74,6 @@ ] } }, - "prior_state": { - "deployment": { - "kind": "BUNDLE", - "metadata_file_path": "/Workspace/Users/[USERNAME]/.bundle/test-bundle/default/state/metadata.json" - }, - "edit_mode": "UI_LOCKED", - "environments": [ - { - "environment_key": "test_env", - "spec": { - "client": "1", - "dependencies": [ - "/Workspace/Users/[USERNAME]/.bundle/test-bundle/default/artifacts/.internal/my_test_code-0.0.1+[UNIX_TIME_NANOS][2]-py3-none-any.whl" - ] - } - } - ], - "format": "MULTI_TASK", - "max_concurrent_runs": 1, - "name": "[default] My Wheel Job", - "queue": { - "enabled": true - }, - "tasks": [ - { - "environment_key": "test_env", - "python_wheel_task": { - "entry_point": "run", - "package_name": "my_test_code" - }, - "task_key": "ServerlessTestTask" - }, - { - "existing_cluster_id": "0717-132531-5opeqon1", - "for_each_task": { - "inputs": "[1]", - "task": { - "existing_cluster_id": "0717-132531-5opeqon1", - "libraries": [ - { - "whl": "/Workspace/Users/[USERNAME]/.bundle/test-bundle/default/artifacts/.internal/my_test_code-0.0.1+[UNIX_TIME_NANOS][2]-py3-none-any.whl" - } - ], - "python_wheel_task": { - "entry_point": "run", - "package_name": "my_test_code" - }, - "task_key": "SubTask" - } - }, - "libraries": [ - { - "whl": "/Workspace/Users/[USERNAME]/.bundle/test-bundle/default/artifacts/.internal/my_test_code-0.0.1+[UNIX_TIME_NANOS][2]-py3-none-any.whl" - }, - { - "whl": "/Workspace/Users/[USERNAME]/.bundle/test-bundle/default/artifacts/.internal/other_test_code-0.0.1+[UNIX_TIME_NANOS][1]-py3-none-any.whl" - } - ], - "python_wheel_task": { - "entry_point": "run", - "package_name": "my_test_code" - }, - "task_key": "TestTask" - } - ] - }, "remote_state": { "created_time": [UNIX_TIME_MILLIS], "creator_user_name": "[USERNAME]", diff --git a/acceptance/bundle/deploy/readplan/basic/out.plan_skip.json b/acceptance/bundle/deploy/readplan/basic/out.plan_skip.json index 0e18d2544ba..a6b4e835bb9 100644 --- a/acceptance/bundle/deploy/readplan/basic/out.plan_skip.json +++ b/acceptance/bundle/deploy/readplan/basic/out.plan_skip.json @@ -6,19 +6,6 @@ "plan": { "resources.jobs.job": { "action": "skip", - "prior_state": { - "deployment": { - "kind": "BUNDLE", - "metadata_file_path": "/Workspace/Users/[USERNAME]/.bundle/test-bundle/default/state/metadata.json" - }, - "edit_mode": "UI_LOCKED", - "format": "MULTI_TASK", - "max_concurrent_runs": 1, - "name": "test-job", - "queue": { - "enabled": true - } - }, "remote_state": { "created_time": [UNIX_TIME_MILLIS], "creator_user_name": "[USERNAME]", diff --git a/acceptance/bundle/deploy/readplan/grants-remove-principal/out.plan.grants.json b/acceptance/bundle/deploy/readplan/grants-remove-principal/out.plan.grants.json index 044fe9ed44e..0b90f0b19e6 100644 --- a/acceptance/bundle/deploy/readplan/grants-remove-principal/out.plan.grants.json +++ b/acceptance/bundle/deploy/readplan/grants-remove-principal/out.plan.grants.json @@ -20,24 +20,6 @@ ] } }, - "prior_state": { - "securable_type": "schema", - "full_name": "main.myschema", - "__embed__": [ - { - "principal": "[USERNAME]", - "privileges": [ - "USE_SCHEMA" - ] - }, - { - "principal": "extra@example.test", - "privileges": [ - "CREATE_TABLE" - ] - } - ] - }, "remote_state": { "securable_type": "schema", "full_name": "main.myschema", diff --git a/acceptance/bundle/migrate/auto-migrate-clean/out.plan_update.direct.json b/acceptance/bundle/migrate/auto-migrate-clean/out.plan_update.direct.json index d1e620039bb..cbaa60b7ace 100644 --- a/acceptance/bundle/migrate/auto-migrate-clean/out.plan_update.direct.json +++ b/acceptance/bundle/migrate/auto-migrate-clean/out.plan_update.direct.json @@ -21,19 +21,6 @@ } } }, - "prior_state": { - "deployment": { - "kind": "BUNDLE", - "metadata_file_path": "/Workspace/Users/[USERNAME]/.bundle/test-bundle/default/state/metadata.json" - }, - "edit_mode": "UI_LOCKED", - "format": "MULTI_TASK", - "max_concurrent_runs": 1, - "name": "Test Auto-Migrate Job", - "queue": { - "enabled": true - } - }, "remote_state": { "created_time": [UNIX_TIME_MILLIS], "creator_user_name": "[USERNAME]", diff --git a/acceptance/bundle/migrate/basic/out.plan_update.json b/acceptance/bundle/migrate/basic/out.plan_update.json index 17aa678c859..7b9967a085d 100644 --- a/acceptance/bundle/migrate/basic/out.plan_update.json +++ b/acceptance/bundle/migrate/basic/out.plan_update.json @@ -29,27 +29,6 @@ ] } }, - "prior_state": { - "deployment": { - "kind": "BUNDLE", - "metadata_file_path": "/Workspace/Users/[USERNAME]/.bundle/migrate-basic-test/dev/state/metadata.json" - }, - "edit_mode": "UI_LOCKED", - "format": "MULTI_TASK", - "max_concurrent_runs": 1, - "name": "Test Migration Job", - "queue": { - "enabled": true - }, - "tasks": [ - { - "notebook_task": { - "notebook_path": "/Workspace/Users/[USERNAME]/.bundle/migrate-basic-test/dev/files/notebook" - }, - "task_key": "main" - } - ] - }, "remote_state": { "created_time": [UNIX_TIME_MILLIS][0], "creator_user_name": "[USERNAME]", @@ -183,30 +162,6 @@ "tags.myjob_timeout": "${resources.jobs.test_job.timeout_seconds}" } }, - "prior_state": { - "channel": "CURRENT", - "deployment": { - "kind": "BUNDLE", - "metadata_file_path": "/Workspace/Users/[USERNAME]/.bundle/migrate-basic-test/dev/state/metadata.json" - }, - "edition": "ADVANCED", - "libraries": [ - { - "notebook": { - "path": "/Workspace/Users/[USERNAME]/.bundle/migrate-basic-test/dev/files/pipeline" - } - } - ], - "name": "Test Migration Pipeline", - "tags": { - "myjob_id": "[NUMID]", - "myjob_name": "Test Migration Job", - "myjob_timeout": "0", - "myvolume_id": "mycat.myschema.myvol", - "volume_catalog_name": "mycat", - "volume_storage_location": "s3://[METASTORE_NAME]/metastore/[UUID]/volumes/[UUID]" - } - }, "remote_state": { "channel": "CURRENT", "creator_user_name": "[USERNAME]", @@ -267,12 +222,6 @@ }, "resources.volumes.test_volume": { "action": "skip", - "prior_state": { - "catalog_name": "mycat", - "name": "myvol", - "schema_name": "myschema", - "volume_type": "MANAGED" - }, "remote_state": { "catalog_name": "mycat", "created_at": [UNIX_TIME_MILLIS][2], diff --git a/acceptance/bundle/migrate/dashboards/out.plan_after_migrate.json b/acceptance/bundle/migrate/dashboards/out.plan_after_migrate.json index 0114d93df89..cbdc8b8203b 100644 --- a/acceptance/bundle/migrate/dashboards/out.plan_after_migrate.json +++ b/acceptance/bundle/migrate/dashboards/out.plan_after_migrate.json @@ -6,15 +6,6 @@ "plan": { "resources.dashboards.dashboard1": { "action": "skip", - "prior_state": { - "display_name": "my dashboard", - "embed_credentials": true, - "etag": "[NUMID]", - "parent_path": "/Workspace/Users/[USERNAME]", - "published": true, - "serialized_dashboard": "{\"pages\":[{\"name\":\"02724bf2\",\"displayName\":\"Dashboard test bundle-deploy-dashboard\"}]}\n", - "warehouse_id": "123456" - }, "remote_state": { "create_time": "[TIMESTAMP]", "dashboard_id": "[DASHBOARD1_ID]", diff --git a/acceptance/bundle/migrate/default-python/out.plan_after_deploy.json b/acceptance/bundle/migrate/default-python/out.plan_after_deploy.json index 40895001e05..3e01413959f 100644 --- a/acceptance/bundle/migrate/default-python/out.plan_after_deploy.json +++ b/acceptance/bundle/migrate/default-python/out.plan_after_deploy.json @@ -110,102 +110,6 @@ } } }, - "prior_state": { - "deployment": { - "kind": "BUNDLE", - "metadata_file_path": "/Workspace/Users/[USERNAME]/.bundle/my_default_python/dev/state/metadata.json" - }, - "edit_mode": "UI_LOCKED", - "format": "MULTI_TASK", - "job_clusters": [ - { - "job_cluster_key": "job_cluster", - "new_cluster": { - "autoscale": { - "max_workers": 4, - "min_workers": 1 - }, - "data_security_mode": "DATA_SECURITY_MODE_AUTO", - "node_type_id": "[NODE_TYPE_ID]", - "spark_version": "16.4.x-scala2.12" - } - } - ], - "max_concurrent_runs": 4, - "name": "[dev [USERNAME]] sample_job", - "parameters": [ - { - "default": "hive_metastore", - "name": "catalog" - }, - { - "default": "[USERNAME]", - "name": "schema" - } - ], - "queue": { - "enabled": true - }, - "tags": { - "dev": "[USERNAME]" - }, - "tasks": [ - { - "job_cluster_key": "job_cluster", - "libraries": [ - { - "whl": "/Workspace/Users/[USERNAME]/.bundle/my_default_python/dev/artifacts/.internal/my_default_python-0.0.1+[UNIX_TIME_NANOS][1]-py3-none-any.whl" - } - ], - "notebook_task": { - "notebook_path": "/Workspace/Users/[USERNAME]/.bundle/my_default_python/dev/files/src/sample_notebook" - }, - "task_key": "notebook_task" - }, - { - "depends_on": [ - { - "task_key": "notebook_task" - } - ], - "job_cluster_key": "job_cluster", - "libraries": [ - { - "whl": "/Workspace/Users/[USERNAME]/.bundle/my_default_python/dev/artifacts/.internal/my_default_python-0.0.1+[UNIX_TIME_NANOS][1]-py3-none-any.whl" - } - ], - "python_wheel_task": { - "entry_point": "main", - "package_name": "my_default_python", - "parameters": [ - "--catalog", - "hive_metastore", - "--schema", - "[USERNAME]" - ] - }, - "task_key": "python_wheel_task" - }, - { - "depends_on": [ - { - "task_key": "notebook_task" - } - ], - "pipeline_task": { - "pipeline_id": "[UUID]" - }, - "task_key": "refresh_pipeline" - } - ], - "trigger": { - "pause_status": "PAUSED", - "periodic": { - "interval": 1, - "unit": "DAYS" - } - } - }, "remote_state": { "created_time": [UNIX_TIME_MILLIS][0], "creator_user_name": "[USERNAME]", @@ -401,33 +305,6 @@ }, "resources.pipelines.my_default_python_etl": { "action": "skip", - "prior_state": { - "channel": "CURRENT", - "deployment": { - "kind": "BUNDLE", - "metadata_file_path": "/Workspace/Users/[USERNAME]/.bundle/my_default_python/dev/state/metadata.json" - }, - "development": true, - "edition": "ADVANCED", - "environment": { - "dependencies": [ - "--editable /Workspace/Users/[USERNAME]/.bundle/my_default_python/dev/files" - ] - }, - "libraries": [ - { - "glob": { - "include": "/Workspace/Users/[USERNAME]/.bundle/my_default_python/dev/files/src/my_default_python_etl/transformations/**" - } - } - ], - "name": "[dev [USERNAME]] my_default_python_etl", - "root_path": "/Workspace/Users/[USERNAME]/.bundle/my_default_python/dev/files/src/my_default_python_etl", - "schema": "[USERNAME]", - "tags": { - "dev": "[USERNAME]" - } - }, "remote_state": { "channel": "CURRENT", "creator_user_name": "[USERNAME]", diff --git a/acceptance/bundle/migrate/default-python/out.plan_after_migration.json b/acceptance/bundle/migrate/default-python/out.plan_after_migration.json index d08755bd068..e21c3b33069 100644 --- a/acceptance/bundle/migrate/default-python/out.plan_after_migration.json +++ b/acceptance/bundle/migrate/default-python/out.plan_after_migration.json @@ -110,102 +110,6 @@ } } }, - "prior_state": { - "deployment": { - "kind": "BUNDLE", - "metadata_file_path": "/Workspace/Users/[USERNAME]/.bundle/my_default_python/dev/state/metadata.json" - }, - "edit_mode": "UI_LOCKED", - "format": "MULTI_TASK", - "job_clusters": [ - { - "job_cluster_key": "job_cluster", - "new_cluster": { - "autoscale": { - "max_workers": 4, - "min_workers": 1 - }, - "data_security_mode": "DATA_SECURITY_MODE_AUTO", - "node_type_id": "[NODE_TYPE_ID]", - "spark_version": "16.4.x-scala2.12" - } - } - ], - "max_concurrent_runs": 4, - "name": "[dev [USERNAME]] sample_job", - "parameters": [ - { - "default": "hive_metastore", - "name": "catalog" - }, - { - "default": "[USERNAME]", - "name": "schema" - } - ], - "queue": { - "enabled": true - }, - "tags": { - "dev": "[USERNAME]" - }, - "tasks": [ - { - "job_cluster_key": "job_cluster", - "libraries": [ - { - "whl": "/Workspace/Users/[USERNAME]/.bundle/my_default_python/dev/artifacts/.internal/my_default_python-0.0.1+[UNIX_TIME_NANOS][1]-py3-none-any.whl" - } - ], - "notebook_task": { - "notebook_path": "/Workspace/Users/[USERNAME]/.bundle/my_default_python/dev/files/src/sample_notebook" - }, - "task_key": "notebook_task" - }, - { - "depends_on": [ - { - "task_key": "notebook_task" - } - ], - "job_cluster_key": "job_cluster", - "libraries": [ - { - "whl": "/Workspace/Users/[USERNAME]/.bundle/my_default_python/dev/artifacts/.internal/my_default_python-0.0.1+[UNIX_TIME_NANOS][1]-py3-none-any.whl" - } - ], - "python_wheel_task": { - "entry_point": "main", - "package_name": "my_default_python", - "parameters": [ - "--catalog", - "hive_metastore", - "--schema", - "[USERNAME]" - ] - }, - "task_key": "python_wheel_task" - }, - { - "depends_on": [ - { - "task_key": "notebook_task" - } - ], - "pipeline_task": { - "pipeline_id": "[UUID]" - }, - "task_key": "refresh_pipeline" - } - ], - "trigger": { - "pause_status": "PAUSED", - "periodic": { - "interval": 1, - "unit": "DAYS" - } - } - }, "remote_state": { "created_time": [UNIX_TIME_MILLIS][0], "creator_user_name": "[USERNAME]", @@ -256,7 +160,7 @@ "job_cluster_key": "job_cluster", "libraries": [ { - "whl": "/Workspace/Users/[USERNAME]/.bundle/my_default_python/dev/artifacts/.internal/my_default_python-0.0.1+[UNIX_TIME_NANOS][2]-py3-none-any.whl" + "whl": "/Workspace/Users/[USERNAME]/.bundle/my_default_python/dev/artifacts/.internal/my_default_python-0.0.1+[UNIX_TIME_NANOS][1]-py3-none-any.whl" } ], "notebook_task": { @@ -277,7 +181,7 @@ "job_cluster_key": "job_cluster", "libraries": [ { - "whl": "/Workspace/Users/[USERNAME]/.bundle/my_default_python/dev/artifacts/.internal/my_default_python-0.0.1+[UNIX_TIME_NANOS][2]-py3-none-any.whl" + "whl": "/Workspace/Users/[USERNAME]/.bundle/my_default_python/dev/artifacts/.internal/my_default_python-0.0.1+[UNIX_TIME_NANOS][1]-py3-none-any.whl" } ], "python_wheel_task": { @@ -332,9 +236,9 @@ }, "tasks[task_key='notebook_task'].libraries[0].whl": { "action": "update", - "old": "/Workspace/Users/[USERNAME]/.bundle/my_default_python/dev/artifacts/.internal/my_default_python-0.0.1+[UNIX_TIME_NANOS][1]-py3-none-any.whl", + "old": "/Workspace/Users/[USERNAME]/.bundle/my_default_python/dev/artifacts/.internal/my_default_python-0.0.1+[UNIX_TIME_NANOS][2]-py3-none-any.whl", "new": "/Workspace/Users/[USERNAME]/.bundle/my_default_python/dev/artifacts/.internal/my_default_python-0.0.1+[UNIX_TIME_NANOS][0]-py3-none-any.whl", - "remote": "/Workspace/Users/[USERNAME]/.bundle/my_default_python/dev/artifacts/.internal/my_default_python-0.0.1+[UNIX_TIME_NANOS][2]-py3-none-any.whl" + "remote": "/Workspace/Users/[USERNAME]/.bundle/my_default_python/dev/artifacts/.internal/my_default_python-0.0.1+[UNIX_TIME_NANOS][1]-py3-none-any.whl" }, "tasks[task_key='notebook_task'].notebook_task.source": { "action": "skip", @@ -358,9 +262,9 @@ }, "tasks[task_key='python_wheel_task'].libraries[0].whl": { "action": "update", - "old": "/Workspace/Users/[USERNAME]/.bundle/my_default_python/dev/artifacts/.internal/my_default_python-0.0.1+[UNIX_TIME_NANOS][1]-py3-none-any.whl", + "old": "/Workspace/Users/[USERNAME]/.bundle/my_default_python/dev/artifacts/.internal/my_default_python-0.0.1+[UNIX_TIME_NANOS][2]-py3-none-any.whl", "new": "/Workspace/Users/[USERNAME]/.bundle/my_default_python/dev/artifacts/.internal/my_default_python-0.0.1+[UNIX_TIME_NANOS][0]-py3-none-any.whl", - "remote": "/Workspace/Users/[USERNAME]/.bundle/my_default_python/dev/artifacts/.internal/my_default_python-0.0.1+[UNIX_TIME_NANOS][2]-py3-none-any.whl" + "remote": "/Workspace/Users/[USERNAME]/.bundle/my_default_python/dev/artifacts/.internal/my_default_python-0.0.1+[UNIX_TIME_NANOS][1]-py3-none-any.whl" }, "tasks[task_key='python_wheel_task'].run_if": { "action": "skip", @@ -401,33 +305,6 @@ }, "resources.pipelines.my_default_python_etl": { "action": "skip", - "prior_state": { - "channel": "CURRENT", - "deployment": { - "kind": "BUNDLE", - "metadata_file_path": "/Workspace/Users/[USERNAME]/.bundle/my_default_python/dev/state/metadata.json" - }, - "development": true, - "edition": "ADVANCED", - "environment": { - "dependencies": [ - "--editable /Workspace/Users/[USERNAME]/.bundle/my_default_python/dev/files" - ] - }, - "libraries": [ - { - "glob": { - "include": "/Workspace/Users/[USERNAME]/.bundle/my_default_python/dev/files/src/my_default_python_etl/transformations/**" - } - } - ], - "name": "[dev [USERNAME]] my_default_python_etl", - "root_path": "/Workspace/Users/[USERNAME]/.bundle/my_default_python/dev/files/src/my_default_python_etl", - "schema": "[USERNAME]", - "tags": { - "dev": "[USERNAME]" - } - }, "remote_state": { "channel": "CURRENT", "creator_user_name": "[USERNAME]", diff --git a/acceptance/bundle/migrate/runas/out.plan.json b/acceptance/bundle/migrate/runas/out.plan.json index ac610c839e5..231903729b8 100644 --- a/acceptance/bundle/migrate/runas/out.plan.json +++ b/acceptance/bundle/migrate/runas/out.plan.json @@ -6,28 +6,6 @@ "plan": { "resources.pipelines.foo": { "action": "skip", - "prior_state": { - "catalog": "main", - "channel": "CURRENT", - "deployment": { - "kind": "BUNDLE", - "metadata_file_path": "/Workspace/Users/[USERNAME]/.bundle/dabs_revenue-[UNIQUE_NAME]/production/state/metadata.json" - }, - "edition": "ADVANCED", - "libraries": [ - { - "notebook": { - "path": "/Workspace/Users/[USERNAME]/.bundle/dabs_revenue-[UNIQUE_NAME]/production/files/sql" - } - } - ], - "name": "DABs Revenue Pipeline", - "run_as": { - "service_principal_name": "[UUID]" - }, - "serverless": true, - "target": "team_eng_deco" - }, "remote_state": { "catalog": "main", "channel": "CURRENT", @@ -75,19 +53,6 @@ } ], "action": "skip", - "prior_state": { - "object_id": "/pipelines/[UUID]", - "__embed__": [ - { - "level": "CAN_VIEW", - "group_name": "users" - }, - { - "level": "IS_OWNER", - "user_name": "[USERNAME]" - } - ] - }, "remote_state": { "object_id": "/pipelines/[UUID]", "__embed__": [ diff --git a/acceptance/bundle/resource_deps/id_chain/out.plan_skip.direct.json b/acceptance/bundle/resource_deps/id_chain/out.plan_skip.direct.json index 0894b26a1f0..fa72eb2700b 100644 --- a/acceptance/bundle/resource_deps/id_chain/out.plan_skip.direct.json +++ b/acceptance/bundle/resource_deps/id_chain/out.plan_skip.direct.json @@ -6,20 +6,6 @@ "plan": { "resources.jobs.a": { "action": "skip", - "prior_state": { - "deployment": { - "kind": "BUNDLE", - "metadata_file_path": "/Workspace/Users/[USERNAME]/.bundle/test-bundle/default/state/metadata.json" - }, - "description": "aa_new_desc", - "edit_mode": "UI_LOCKED", - "format": "MULTI_TASK", - "max_concurrent_runs": 1, - "name": "aa", - "queue": { - "enabled": true - } - }, "remote_state": { "created_time": [UNIX_TIME_MILLIS][0], "creator_user_name": "[USERNAME]", @@ -67,20 +53,6 @@ } ], "action": "skip", - "prior_state": { - "deployment": { - "kind": "BUNDLE", - "metadata_file_path": "/Workspace/Users/[USERNAME]/.bundle/test-bundle/default/state/metadata.json" - }, - "description": "new_prefix [NUMID]", - "edit_mode": "UI_LOCKED", - "format": "MULTI_TASK", - "max_concurrent_runs": 1, - "name": "bb", - "queue": { - "enabled": true - } - }, "remote_state": { "created_time": [UNIX_TIME_MILLIS][1], "creator_user_name": "[USERNAME]", @@ -128,20 +100,6 @@ } ], "action": "skip", - "prior_state": { - "deployment": { - "kind": "BUNDLE", - "metadata_file_path": "/Workspace/Users/[USERNAME]/.bundle/test-bundle/default/state/metadata.json" - }, - "description": "new_prefix [NUMID]", - "edit_mode": "UI_LOCKED", - "format": "MULTI_TASK", - "max_concurrent_runs": 1, - "name": "cc", - "queue": { - "enabled": true - } - }, "remote_state": { "created_time": [UNIX_TIME_MILLIS][2], "creator_user_name": "[USERNAME]", @@ -189,20 +147,6 @@ } ], "action": "skip", - "prior_state": { - "deployment": { - "kind": "BUNDLE", - "metadata_file_path": "/Workspace/Users/[USERNAME]/.bundle/test-bundle/default/state/metadata.json" - }, - "description": "new_prefix [NUMID]", - "edit_mode": "UI_LOCKED", - "format": "MULTI_TASK", - "max_concurrent_runs": 1, - "name": "dd", - "queue": { - "enabled": true - } - }, "remote_state": { "created_time": [UNIX_TIME_MILLIS][3], "creator_user_name": "[USERNAME]", @@ -250,20 +194,6 @@ } ], "action": "skip", - "prior_state": { - "deployment": { - "kind": "BUNDLE", - "metadata_file_path": "/Workspace/Users/[USERNAME]/.bundle/test-bundle/default/state/metadata.json" - }, - "description": "new_prefix [NUMID]", - "edit_mode": "UI_LOCKED", - "format": "MULTI_TASK", - "max_concurrent_runs": 1, - "name": "ee", - "queue": { - "enabled": true - } - }, "remote_state": { "created_time": [UNIX_TIME_MILLIS][4], "creator_user_name": "[USERNAME]", diff --git a/acceptance/bundle/resource_deps/id_chain/out.plan_update.direct.json b/acceptance/bundle/resource_deps/id_chain/out.plan_update.direct.json index 7e208cbd4be..0c9904aec79 100644 --- a/acceptance/bundle/resource_deps/id_chain/out.plan_update.direct.json +++ b/acceptance/bundle/resource_deps/id_chain/out.plan_update.direct.json @@ -22,20 +22,6 @@ } } }, - "prior_state": { - "deployment": { - "kind": "BUNDLE", - "metadata_file_path": "/Workspace/Users/[USERNAME]/.bundle/test-bundle/default/state/metadata.json" - }, - "description": "aa_desc", - "edit_mode": "UI_LOCKED", - "format": "MULTI_TASK", - "max_concurrent_runs": 1, - "name": "aa", - "queue": { - "enabled": true - } - }, "remote_state": { "created_time": [UNIX_TIME_MILLIS][0], "creator_user_name": "[USERNAME]", @@ -105,20 +91,6 @@ } } }, - "prior_state": { - "deployment": { - "kind": "BUNDLE", - "metadata_file_path": "/Workspace/Users/[USERNAME]/.bundle/test-bundle/default/state/metadata.json" - }, - "description": "prefix [NUMID]", - "edit_mode": "UI_LOCKED", - "format": "MULTI_TASK", - "max_concurrent_runs": 1, - "name": "bb", - "queue": { - "enabled": true - } - }, "remote_state": { "created_time": [UNIX_TIME_MILLIS][1], "creator_user_name": "[USERNAME]", @@ -188,20 +160,6 @@ } } }, - "prior_state": { - "deployment": { - "kind": "BUNDLE", - "metadata_file_path": "/Workspace/Users/[USERNAME]/.bundle/test-bundle/default/state/metadata.json" - }, - "description": "prefix [NUMID]", - "edit_mode": "UI_LOCKED", - "format": "MULTI_TASK", - "max_concurrent_runs": 1, - "name": "cc", - "queue": { - "enabled": true - } - }, "remote_state": { "created_time": [UNIX_TIME_MILLIS][2], "creator_user_name": "[USERNAME]", @@ -271,20 +229,6 @@ } } }, - "prior_state": { - "deployment": { - "kind": "BUNDLE", - "metadata_file_path": "/Workspace/Users/[USERNAME]/.bundle/test-bundle/default/state/metadata.json" - }, - "description": "prefix [NUMID]", - "edit_mode": "UI_LOCKED", - "format": "MULTI_TASK", - "max_concurrent_runs": 1, - "name": "dd", - "queue": { - "enabled": true - } - }, "remote_state": { "created_time": [UNIX_TIME_MILLIS][3], "creator_user_name": "[USERNAME]", @@ -354,20 +298,6 @@ } } }, - "prior_state": { - "deployment": { - "kind": "BUNDLE", - "metadata_file_path": "/Workspace/Users/[USERNAME]/.bundle/test-bundle/default/state/metadata.json" - }, - "description": "prefix [NUMID]", - "edit_mode": "UI_LOCKED", - "format": "MULTI_TASK", - "max_concurrent_runs": 1, - "name": "ee", - "queue": { - "enabled": true - } - }, "remote_state": { "created_time": [UNIX_TIME_MILLIS][4], "creator_user_name": "[USERNAME]", diff --git a/acceptance/bundle/resource_deps/job_id_delete_bar/out.plan_delete.direct.json b/acceptance/bundle/resource_deps/job_id_delete_bar/out.plan_delete.direct.json index f43c219a748..64087a8c63c 100644 --- a/acceptance/bundle/resource_deps/job_id_delete_bar/out.plan_delete.direct.json +++ b/acceptance/bundle/resource_deps/job_id_delete_bar/out.plan_delete.direct.json @@ -44,27 +44,6 @@ } } }, - "prior_state": { - "deployment": { - "kind": "BUNDLE", - "metadata_file_path": "/Workspace/Users/[USERNAME]/.bundle/test-bundle/default/state/metadata.json" - }, - "edit_mode": "UI_LOCKED", - "format": "MULTI_TASK", - "max_concurrent_runs": 1, - "name": "job foo", - "queue": { - "enabled": true - }, - "tasks": [ - { - "run_job_task": { - "job_id": [BAR_ID] - }, - "task_key": "job_task" - } - ] - }, "remote_state": { "created_time": [UNIX_TIME_MILLIS][1], "creator_user_name": "[USERNAME]", diff --git a/acceptance/bundle/resource_deps/job_id_delete_foo/out.plan_delete.direct.json b/acceptance/bundle/resource_deps/job_id_delete_foo/out.plan_delete.direct.json index 0f72b1a6d8b..6c6c9577e8f 100644 --- a/acceptance/bundle/resource_deps/job_id_delete_foo/out.plan_delete.direct.json +++ b/acceptance/bundle/resource_deps/job_id_delete_foo/out.plan_delete.direct.json @@ -6,19 +6,6 @@ "plan": { "resources.jobs.bar": { "action": "skip", - "prior_state": { - "deployment": { - "kind": "BUNDLE", - "metadata_file_path": "/Workspace/Users/[USERNAME]/.bundle/test-bundle/default/state/metadata.json" - }, - "edit_mode": "UI_LOCKED", - "format": "MULTI_TASK", - "max_concurrent_runs": 1, - "name": "job bar", - "queue": { - "enabled": true - } - }, "remote_state": { "created_time": [UNIX_TIME_MILLIS][0], "creator_user_name": "[USERNAME]", diff --git a/acceptance/bundle/resource_deps/jobs_update_remote/out.plan_update.direct.json b/acceptance/bundle/resource_deps/jobs_update_remote/out.plan_update.direct.json index 1a42b24c4f4..77e77c19eb1 100644 --- a/acceptance/bundle/resource_deps/jobs_update_remote/out.plan_update.direct.json +++ b/acceptance/bundle/resource_deps/jobs_update_remote/out.plan_update.direct.json @@ -12,20 +12,6 @@ } ], "action": "skip", - "prior_state": { - "deployment": { - "kind": "BUNDLE", - "metadata_file_path": "/Workspace/Users/[USERNAME]/.bundle/test-bundle/default/state/metadata.json" - }, - "description": "depends on foo id [FOO_ID]", - "edit_mode": "UI_LOCKED", - "format": "MULTI_TASK", - "max_concurrent_runs": 1, - "name": "bar", - "queue": { - "enabled": true - } - }, "remote_state": { "created_time": [UNIX_TIME_MILLIS][0], "creator_user_name": "[USERNAME]", @@ -98,35 +84,6 @@ } } }, - "prior_state": { - "deployment": { - "kind": "BUNDLE", - "metadata_file_path": "/Workspace/Users/[USERNAME]/.bundle/test-bundle/default/state/metadata.json" - }, - "edit_mode": "UI_LOCKED", - "format": "MULTI_TASK", - "job_clusters": [ - { - "job_cluster_key": "key", - "new_cluster": { - "num_workers": 0, - "spark_version": "13.3.x-scala2.12" - } - } - ], - "max_concurrent_runs": 1, - "name": "foo", - "queue": { - "enabled": true - }, - "trigger": { - "pause_status": "UNPAUSED", - "periodic": { - "interval": 1, - "unit": "DAYS" - } - } - }, "remote_state": { "created_time": [UNIX_TIME_MILLIS][1], "creator_user_name": "[USERNAME]", diff --git a/acceptance/bundle/resource_deps/pipelines_recreate/out.plan_noop.direct.json b/acceptance/bundle/resource_deps/pipelines_recreate/out.plan_noop.direct.json index 1bd5b25f5c9..7b3f986f02c 100644 --- a/acceptance/bundle/resource_deps/pipelines_recreate/out.plan_noop.direct.json +++ b/acceptance/bundle/resource_deps/pipelines_recreate/out.plan_noop.direct.json @@ -12,20 +12,6 @@ } ], "action": "skip", - "prior_state": { - "deployment": { - "kind": "BUNDLE", - "metadata_file_path": "/Workspace/Users/[USERNAME]/.bundle/test-bundle/default/state/metadata.json" - }, - "description": "depends on foo id [FOO_ID_2]", - "edit_mode": "UI_LOCKED", - "format": "MULTI_TASK", - "max_concurrent_runs": 1, - "name": "job bar", - "queue": { - "enabled": true - } - }, "remote_state": { "created_time": [UNIX_TIME_MILLIS][0], "creator_user_name": "[USERNAME]", @@ -67,16 +53,6 @@ }, "resources.pipelines.foo": { "action": "skip", - "prior_state": { - "channel": "CURRENT", - "deployment": { - "kind": "BUNDLE", - "metadata_file_path": "/Workspace/Users/[USERNAME]/.bundle/test-bundle/default/state/metadata.json" - }, - "edition": "ADVANCED", - "name": "pipeline foo", - "storage": "dbfs:/my-new-storage" - }, "remote_state": { "channel": "CURRENT", "creator_user_name": "[USERNAME]", diff --git a/acceptance/bundle/resource_deps/pipelines_recreate/out.plan_update.direct.json b/acceptance/bundle/resource_deps/pipelines_recreate/out.plan_update.direct.json index 868df1a98ec..4f7329005fb 100644 --- a/acceptance/bundle/resource_deps/pipelines_recreate/out.plan_update.direct.json +++ b/acceptance/bundle/resource_deps/pipelines_recreate/out.plan_update.direct.json @@ -31,20 +31,6 @@ "description": "depends on foo id ${resources.pipelines.foo.id}" } }, - "prior_state": { - "deployment": { - "kind": "BUNDLE", - "metadata_file_path": "/Workspace/Users/[USERNAME]/.bundle/test-bundle/default/state/metadata.json" - }, - "description": "depends on foo id [FOO_ID]", - "edit_mode": "UI_LOCKED", - "format": "MULTI_TASK", - "max_concurrent_runs": 1, - "name": "job bar", - "queue": { - "enabled": true - } - }, "remote_state": { "created_time": [UNIX_TIME_MILLIS][0], "creator_user_name": "[USERNAME]", @@ -104,16 +90,6 @@ "storage": "dbfs:/my-new-storage" } }, - "prior_state": { - "channel": "CURRENT", - "deployment": { - "kind": "BUNDLE", - "metadata_file_path": "/Workspace/Users/[USERNAME]/.bundle/test-bundle/default/state/metadata.json" - }, - "edition": "ADVANCED", - "name": "pipeline foo", - "storage": "dbfs:/my-storage" - }, "remote_state": { "channel": "CURRENT", "creator_user_name": "[USERNAME]", diff --git a/acceptance/bundle/resource_deps/remote_pipeline/out.plan_skip.direct.json b/acceptance/bundle/resource_deps/remote_pipeline/out.plan_skip.direct.json index 6e801123088..0bb3be878f6 100644 --- a/acceptance/bundle/resource_deps/remote_pipeline/out.plan_skip.direct.json +++ b/acceptance/bundle/resource_deps/remote_pipeline/out.plan_skip.direct.json @@ -6,15 +6,6 @@ "plan": { "resources.pipelines.foo1": { "action": "skip", - "prior_state": { - "channel": "CURRENT", - "deployment": { - "kind": "BUNDLE", - "metadata_file_path": "/Workspace/Users/[USERNAME]/.bundle/test-bundle/default/state/metadata.json" - }, - "edition": "ADVANCED", - "name": "foo1 name" - }, "remote_state": { "channel": "CURRENT", "creator_user_name": "[USERNAME]", @@ -48,15 +39,6 @@ } ], "action": "skip", - "prior_state": { - "channel": "CURRENT", - "deployment": { - "kind": "BUNDLE", - "metadata_file_path": "/Workspace/Users/[USERNAME]/.bundle/test-bundle/default/state/metadata.json" - }, - "edition": "ADVANCED", - "name": "foo2 foo1.creator_user_name=[USERNAME]" - }, "remote_state": { "channel": "CURRENT", "creator_user_name": "[USERNAME]", @@ -90,15 +72,6 @@ } ], "action": "skip", - "prior_state": { - "channel": "CURRENT", - "deployment": { - "kind": "BUNDLE", - "metadata_file_path": "/Workspace/Users/[USERNAME]/.bundle/test-bundle/default/state/metadata.json" - }, - "edition": "ADVANCED", - "name": "foo3 foo2.state=IDLE" - }, "remote_state": { "channel": "CURRENT", "creator_user_name": "[USERNAME]", @@ -132,15 +105,6 @@ } ], "action": "skip", - "prior_state": { - "channel": "CURRENT", - "deployment": { - "kind": "BUNDLE", - "metadata_file_path": "/Workspace/Users/[USERNAME]/.bundle/test-bundle/default/state/metadata.json" - }, - "edition": "ADVANCED", - "name": "foo4 foo3.last_modified=[UNIX_TIME_MILLIS]" - }, "remote_state": { "channel": "CURRENT", "creator_user_name": "[USERNAME]", diff --git a/acceptance/bundle/resources/clusters/deploy/update-and-resize-autoscale/out.plan_.direct.json b/acceptance/bundle/resources/clusters/deploy/update-and-resize-autoscale/out.plan_.direct.json index d4797d42dd7..c7af4b9a333 100644 --- a/acceptance/bundle/resources/clusters/deploy/update-and-resize-autoscale/out.plan_.direct.json +++ b/acceptance/bundle/resources/clusters/deploy/update-and-resize-autoscale/out.plan_.direct.json @@ -36,13 +36,6 @@ "spark_version": "13.3.x-snapshot-scala2.12" } }, - "prior_state": { - "autotermination_minutes": 60, - "cluster_name": "test-cluster-[UNIQUE_NAME]", - "node_type_id": "[NODE_TYPE_ID]", - "num_workers": 2, - "spark_version": "13.3.x-snapshot-scala2.12" - }, "remote_state": { "autotermination_minutes": 60, "aws_attributes": { @@ -123,16 +116,6 @@ "spark_version": "13.3.x-snapshot-scala2.12" } }, - "prior_state": { - "autoscale": { - "max_workers": 4, - "min_workers": 2 - }, - "autotermination_minutes": 60, - "cluster_name": "test-cluster-[UNIQUE_NAME]", - "node_type_id": "[NODE_TYPE_ID]", - "spark_version": "13.3.x-snapshot-scala2.12" - }, "remote_state": { "autoscale": { "max_workers": 4, @@ -216,16 +199,6 @@ "spark_version": "13.3.x-snapshot-scala2.12" } }, - "prior_state": { - "autoscale": { - "max_workers": 5, - "min_workers": 3 - }, - "autotermination_minutes": 60, - "cluster_name": "test-cluster-[UNIQUE_NAME]", - "node_type_id": "[NODE_TYPE_ID]", - "spark_version": "13.3.x-snapshot-scala2.12" - }, "remote_state": { "autoscale": { "max_workers": 5, @@ -308,16 +281,6 @@ "spark_version": "13.3.x-snapshot-scala2.12" } }, - "prior_state": { - "autoscale": { - "max_workers": 6, - "min_workers": 4 - }, - "autotermination_minutes": 60, - "cluster_name": "test-cluster-[UNIQUE_NAME]", - "node_type_id": "[NODE_TYPE_ID]", - "spark_version": "13.3.x-snapshot-scala2.12" - }, "remote_state": { "autoscale": { "max_workers": 6, diff --git a/acceptance/bundle/resources/clusters/deploy/update-and-resize/out.plan_.direct.json b/acceptance/bundle/resources/clusters/deploy/update-and-resize/out.plan_.direct.json index d42158e044e..b4ba1c76152 100644 --- a/acceptance/bundle/resources/clusters/deploy/update-and-resize/out.plan_.direct.json +++ b/acceptance/bundle/resources/clusters/deploy/update-and-resize/out.plan_.direct.json @@ -39,16 +39,6 @@ "spark_version": "13.3.x-snapshot-scala2.12" } }, - "prior_state": { - "autotermination_minutes": 60, - "cluster_name": "test-cluster-[UNIQUE_NAME]", - "instance_pool_id": "[TEST_INSTANCE_POOL_ID]", - "num_workers": 2, - "spark_conf": { - "spark.executor.memory": "2g" - }, - "spark_version": "13.3.x-snapshot-scala2.12" - }, "remote_state": { "autotermination_minutes": 60, "aws_attributes": { @@ -121,16 +111,6 @@ "spark_version": "13.3.x-snapshot-scala2.12" } }, - "prior_state": { - "autotermination_minutes": 60, - "cluster_name": "test-cluster-[UNIQUE_NAME]", - "instance_pool_id": "[TEST_INSTANCE_POOL_ID]", - "num_workers": 3, - "spark_conf": { - "spark.executor.memory": "2g" - }, - "spark_version": "13.3.x-snapshot-scala2.12" - }, "remote_state": { "autotermination_minutes": 60, "aws_attributes": { @@ -203,16 +183,6 @@ "spark_version": "13.3.x-snapshot-scala2.12" } }, - "prior_state": { - "autotermination_minutes": 60, - "cluster_name": "test-cluster-[UNIQUE_NAME]", - "instance_pool_id": "[TEST_INSTANCE_POOL_ID]", - "num_workers": 4, - "spark_conf": { - "spark.executor.memory": "2g" - }, - "spark_version": "13.3.x-snapshot-scala2.12" - }, "remote_state": { "autotermination_minutes": 60, "aws_attributes": { diff --git a/acceptance/bundle/resources/dashboards/dataset-catalog-schema/out.plan.direct.json b/acceptance/bundle/resources/dashboards/dataset-catalog-schema/out.plan.direct.json index 6e6b4749037..01e4ab17548 100644 --- a/acceptance/bundle/resources/dashboards/dataset-catalog-schema/out.plan.direct.json +++ b/acceptance/bundle/resources/dashboards/dataset-catalog-schema/out.plan.direct.json @@ -6,17 +6,6 @@ "plan": { "resources.dashboards.dashboard1": { "action": "skip", - "prior_state": { - "dataset_catalog": "main", - "dataset_schema": "default", - "display_name": "test bundle-deploy-dashboard-dataset [UUID]", - "embed_credentials": true, - "etag": "[ETAG]", - "parent_path": "/Workspace/Users/[USERNAME]", - "published": true, - "serialized_dashboard": "{\n \"pages\": [\n {\n \"name\": \"test_page\",\n \"displayName\": \"Test Page\",\n \"pageType\": \"PAGE_TYPE_CANVAS\"\n }\n ],\n \"datasets\": [\n {\n \"name\": \"bf8f76f4\",\n \"displayName\": \"Test Dataset\",\n \"queryLines\": [\n \"SELECT 1\\n\"\n ],\n \"catalog\": \"foobar\",\n \"schema\": \"foobar\"\n }\n ]\n}\n", - "warehouse_id": "[TEST_DEFAULT_WAREHOUSE_ID]" - }, "remote_state": { "create_time": "[TIMESTAMP]", "dashboard_id": "[DASHBOARD_ID]", diff --git a/acceptance/bundle/resources/dashboards/delete-trashed-out-of-band/out.plan.direct.json b/acceptance/bundle/resources/dashboards/delete-trashed-out-of-band/out.plan.direct.json index 8c10c9d1668..6cedd195b0f 100644 --- a/acceptance/bundle/resources/dashboards/delete-trashed-out-of-band/out.plan.direct.json +++ b/acceptance/bundle/resources/dashboards/delete-trashed-out-of-band/out.plan.direct.json @@ -16,15 +16,6 @@ "warehouse_id": "[TEST_DEFAULT_WAREHOUSE_ID]" } }, - "prior_state": { - "display_name": "test bundle-deploy-dashboard [UNIQUE_NAME])", - "embed_credentials": false, - "etag": "[ETAG]", - "parent_path": "/Workspace/Users/[USERNAME]/.bundle/delete-trashed-out-of-band-[UNIQUE_NAME]/default/resources", - "published": true, - "serialized_dashboard": "{\"pages\":[{\"name\":\"test-page\",\"displayName\":\"Test Dashboard\"}]}\n", - "warehouse_id": "[TEST_DEFAULT_WAREHOUSE_ID]" - }, "changes": { "etag": { "action": "update", diff --git a/acceptance/bundle/resources/dashboards/detect-change/out.plan.direct.json b/acceptance/bundle/resources/dashboards/detect-change/out.plan.direct.json index 02f69b79052..b00e44d4fe8 100644 --- a/acceptance/bundle/resources/dashboards/detect-change/out.plan.direct.json +++ b/acceptance/bundle/resources/dashboards/detect-change/out.plan.direct.json @@ -16,15 +16,6 @@ "warehouse_id": "[TEST_DEFAULT_WAREHOUSE_ID]" } }, - "prior_state": { - "display_name": "test-dashboard-[UNIQUE_NAME]", - "embed_credentials": false, - "etag": "[ETAG_1]", - "parent_path": "/Workspace/Users/[USERNAME]/.bundle/[UNIQUE_NAME]/resources", - "published": true, - "serialized_dashboard": "{\n \"pages\": [\n {\n \"displayName\": \"New Page\",\n \"layout\": [\n {\n \"position\": {\n \"height\": 2,\n \"width\": 6,\n \"x\": 0,\n \"y\": 0\n },\n \"widget\": {\n \"name\": \"82eb9107\",\n \"textbox_spec\": \"# I'm a title\"\n }\n },\n {\n \"position\": {\n \"height\": 2,\n \"width\": 6,\n \"x\": 0,\n \"y\": 2\n },\n \"widget\": {\n \"name\": \"ffa6de4f\",\n \"textbox_spec\": \"Text\"\n }\n }\n ],\n \"name\": \"fdd21a3c\"\n }\n ]\n}\n", - "warehouse_id": "[TEST_DEFAULT_WAREHOUSE_ID]" - }, "remote_state": { "create_time": "[TIMESTAMP]", "dashboard_id": "[DASHBOARD_ID]", diff --git a/acceptance/bundle/resources/dashboards/publish-failure-stale-content/output.txt b/acceptance/bundle/resources/dashboards/publish-failure-stale-content/output.txt index f1e6555eb5d..8b0f79427d2 100644 --- a/acceptance/bundle/resources/dashboards/publish-failure-stale-content/output.txt +++ b/acceptance/bundle/resources/dashboards/publish-failure-stale-content/output.txt @@ -15,8 +15,6 @@ Deployment complete! } >>> [CLI] bundle plan -o json -json.plan.resources.dashboards.dashboard1.prior_state.etag = "[ETAG_1]"; -json.plan.resources.dashboards.dashboard1.prior_state.published = true; json.plan.resources.dashboards.dashboard1.remote_state.etag = "[ETAG_1]"; json.plan.resources.dashboards.dashboard1.remote_state.published = true; json.plan.resources.dashboards.dashboard1.changes.etag.action = "skip"; @@ -85,8 +83,6 @@ To overwrite the remote changes with your local version, use --force. The remote modifications will be lost. json.plan.resources.dashboards.dashboard1.new_state.value.published = true; -json.plan.resources.dashboards.dashboard1.prior_state.etag = "[ETAG_1]"; -json.plan.resources.dashboards.dashboard1.prior_state.published = true; json.plan.resources.dashboards.dashboard1.remote_state.etag = "[ETAG_2]"; json.plan.resources.dashboards.dashboard1.remote_state.published = true; json.plan.resources.dashboards.dashboard1.changes.etag.action = "update"; diff --git a/acceptance/bundle/resources/dashboards/simple/out.plan.direct.json b/acceptance/bundle/resources/dashboards/simple/out.plan.direct.json index 2960eb06179..5e6ad9eb0a6 100644 --- a/acceptance/bundle/resources/dashboards/simple/out.plan.direct.json +++ b/acceptance/bundle/resources/dashboards/simple/out.plan.direct.json @@ -6,15 +6,6 @@ "plan": { "resources.dashboards.dashboard1": { "action": "skip", - "prior_state": { - "display_name": "test bundle-deploy-dashboard [UUID]", - "embed_credentials": true, - "etag": "[ETAG]", - "parent_path": "/Workspace/Users/[USERNAME]", - "published": true, - "serialized_dashboard": "{ }\n", - "warehouse_id": "[TEST_DEFAULT_WAREHOUSE_ID]" - }, "remote_state": { "create_time": "[TIMESTAMP]", "dashboard_id": "[DASHBOARD_ID]", diff --git a/acceptance/bundle/resources/dashboards/unpublish-out-of-band/out.plan.direct.json b/acceptance/bundle/resources/dashboards/unpublish-out-of-band/out.plan.direct.json index 2d6afba9589..852cc492879 100644 --- a/acceptance/bundle/resources/dashboards/unpublish-out-of-band/out.plan.direct.json +++ b/acceptance/bundle/resources/dashboards/unpublish-out-of-band/out.plan.direct.json @@ -16,15 +16,6 @@ "warehouse_id": "[TEST_DEFAULT_WAREHOUSE_ID]" } }, - "prior_state": { - "display_name": "test bundle-deploy-dashboard [UNIQUE_NAME]", - "embed_credentials": false, - "etag": "[ETAG]", - "parent_path": "/Workspace/Users/[USERNAME]/.bundle/unpublish-out-of-band-[UNIQUE_NAME]/default/resources", - "published": true, - "serialized_dashboard": "{\"pages\":[{\"displayName\":\"Test Dashboard\",\"name\":\"test-page\"}]}", - "warehouse_id": "[TEST_DEFAULT_WAREHOUSE_ID]" - }, "remote_state": { "create_time": "[TIMESTAMP]", "dashboard_id": "[DASHBOARD1_ID]", diff --git a/acceptance/bundle/resources/genie_spaces/inline/out.plan.json b/acceptance/bundle/resources/genie_spaces/inline/out.plan.json index 6f2ff723193..02b174d3869 100644 --- a/acceptance/bundle/resources/genie_spaces/inline/out.plan.json +++ b/acceptance/bundle/resources/genie_spaces/inline/out.plan.json @@ -6,14 +6,6 @@ "plan": { "resources.genie_spaces.sales_analytics": { "action": "skip", - "prior_state": { - "description": "Inline serialized_space test", - "etag": "1", - "parent_path": "/Workspace/Users/[USERNAME]/.bundle/deploy-genie-space-inline-[UNIQUE_NAME]/default/resources", - "serialized_space": "{\"config\":{\"sample_questions\":[{\"id\":\"sq-001\",\"question\":[\"What is the total revenue?\"]}]},\"data_sources\":{\"tables\":[{\"column_configs\":[{\"column_name\":\"amount\",\"get_example_values\":true}],\"identifier\":\"main.sales.orders\"}]},\"version\":1}", - "title": "Sales Analytics Inline Genie", - "warehouse_id": "test-warehouse-id" - }, "remote_state": { "description": "Inline serialized_space test", "etag": "1", diff --git a/acceptance/bundle/resources/grants/catalogs/out.plan2.direct.json b/acceptance/bundle/resources/grants/catalogs/out.plan2.direct.json index 2957ba68e83..fa674375af2 100644 --- a/acceptance/bundle/resources/grants/catalogs/out.plan2.direct.json +++ b/acceptance/bundle/resources/grants/catalogs/out.plan2.direct.json @@ -6,10 +6,6 @@ "plan": { "resources.catalogs.grants_catalog": { "action": "skip", - "prior_state": { - "comment": "Test catalog for grants", - "name": "catalog_grants_[UNIQUE_NAME]" - }, "remote_state": { "catalog_type": "MANAGED_CATALOG", "comment": "Test catalog for grants", @@ -40,18 +36,6 @@ ] } }, - "prior_state": { - "full_name": "catalog_grants_[UNIQUE_NAME]", - "__embed__": [ - { - "principal": "deco-test-user@databricks.com", - "privileges": [ - "CREATE_SCHEMA", - "USE_CATALOG" - ] - } - ] - }, "remote_state": { "full_name": "catalog_grants_[UNIQUE_NAME]", "__embed__": [ diff --git a/acceptance/bundle/resources/grants/schemas/change_privilege/out.plan2.direct.json b/acceptance/bundle/resources/grants/schemas/change_privilege/out.plan2.direct.json index 013432d7a28..d8bbf97ffd6 100644 --- a/acceptance/bundle/resources/grants/schemas/change_privilege/out.plan2.direct.json +++ b/acceptance/bundle/resources/grants/schemas/change_privilege/out.plan2.direct.json @@ -6,10 +6,6 @@ "plan": { "resources.schemas.grants_schema": { "action": "skip", - "prior_state": { - "catalog_name": "main", - "name": "schema_grants_[UNIQUE_NAME]" - }, "remote_state": { "browse_only": false, "catalog_name": "main", @@ -44,19 +40,6 @@ ] } }, - "prior_state": { - "securable_type": "schema", - "full_name": "main.schema_grants_[UNIQUE_NAME]", - "__embed__": [ - { - "principal": "deco-test-user@databricks.com", - "privileges": [ - "CREATE_TABLE", - "USE_SCHEMA" - ] - } - ] - }, "remote_state": { "securable_type": "schema", "full_name": "main.schema_grants_[UNIQUE_NAME]", diff --git a/acceptance/bundle/resources/grants/schemas/duplicate_principals/out.plan.direct.json b/acceptance/bundle/resources/grants/schemas/duplicate_principals/out.plan.direct.json index 68d14a2d156..84fca9f95c8 100644 --- a/acceptance/bundle/resources/grants/schemas/duplicate_principals/out.plan.direct.json +++ b/acceptance/bundle/resources/grants/schemas/duplicate_principals/out.plan.direct.json @@ -6,10 +6,6 @@ "plan": { "resources.schemas.apps_schema": { "action": "skip", - "prior_state": { - "catalog_name": "main", - "name": "schema_dup_grants_[UNIQUE_NAME]" - }, "remote_state": { "browse_only": false, "catalog_name": "main", @@ -34,18 +30,6 @@ } ], "action": "skip", - "prior_state": { - "securable_type": "schema", - "full_name": "main.schema_dup_grants_[UNIQUE_NAME]", - "__embed__": [ - { - "principal": "deco-test-user@databricks.com", - "privileges": [ - "CREATE_TABLE" - ] - } - ] - }, "remote_state": { "securable_type": "schema", "full_name": "main.schema_dup_grants_[UNIQUE_NAME]", diff --git a/acceptance/bundle/resources/grants/schemas/out_of_band_principal/out.plan.direct.json b/acceptance/bundle/resources/grants/schemas/out_of_band_principal/out.plan.direct.json index 33703a3295f..fc7ceb399af 100644 --- a/acceptance/bundle/resources/grants/schemas/out_of_band_principal/out.plan.direct.json +++ b/acceptance/bundle/resources/grants/schemas/out_of_band_principal/out.plan.direct.json @@ -6,10 +6,6 @@ "plan": { "resources.schemas.grants_schema": { "action": "skip", - "prior_state": { - "catalog_name": "main", - "name": "schema_out_of_band_principal_[UNIQUE_NAME]" - }, "remote_state": { "browse_only": false, "catalog_name": "main", @@ -48,18 +44,6 @@ ] } }, - "prior_state": { - "securable_type": "schema", - "full_name": "main.schema_out_of_band_principal_[UNIQUE_NAME]", - "__embed__": [ - { - "principal": "[USERNAME]", - "privileges": [ - "CREATE_TABLE" - ] - } - ] - }, "remote_state": { "securable_type": "schema", "full_name": "main.schema_out_of_band_principal_[UNIQUE_NAME]" diff --git a/acceptance/bundle/resources/grants/schemas/out_of_band_principal/out.plan2.direct.json b/acceptance/bundle/resources/grants/schemas/out_of_band_principal/out.plan2.direct.json index 487efd8d2d8..90586b63a61 100644 --- a/acceptance/bundle/resources/grants/schemas/out_of_band_principal/out.plan2.direct.json +++ b/acceptance/bundle/resources/grants/schemas/out_of_band_principal/out.plan2.direct.json @@ -6,10 +6,6 @@ "plan": { "resources.schemas.grants_schema": { "action": "skip", - "prior_state": { - "catalog_name": "main", - "name": "schema_out_of_band_principal_[UNIQUE_NAME]" - }, "remote_state": { "browse_only": false, "catalog_name": "main", @@ -34,18 +30,6 @@ } ], "action": "skip", - "prior_state": { - "securable_type": "schema", - "full_name": "main.schema_out_of_band_principal_[UNIQUE_NAME]", - "__embed__": [ - { - "principal": "[USERNAME]", - "privileges": [ - "CREATE_TABLE" - ] - } - ] - }, "remote_state": { "securable_type": "schema", "full_name": "main.schema_out_of_band_principal_[UNIQUE_NAME]", diff --git a/acceptance/bundle/resources/grants/volumes/out.plan2.direct.json b/acceptance/bundle/resources/grants/volumes/out.plan2.direct.json index 736a04fce73..1daacee25b4 100644 --- a/acceptance/bundle/resources/grants/volumes/out.plan2.direct.json +++ b/acceptance/bundle/resources/grants/volumes/out.plan2.direct.json @@ -6,10 +6,6 @@ "plan": { "resources.schemas.grants_schema": { "action": "skip", - "prior_state": { - "catalog_name": "main", - "name": "schema_grants_[UNIQUE_NAME]" - }, "remote_state": { "browse_only": false, "catalog_name": "main", @@ -29,12 +25,6 @@ } ], "action": "skip", - "prior_state": { - "catalog_name": "main", - "name": "volume_name", - "schema_name": "schema_grants_[UNIQUE_NAME]", - "volume_type": "MANAGED" - }, "remote_state": { "catalog_name": "main", "created_at": [UNIX_TIME_MILLIS][1], @@ -77,19 +67,6 @@ ] } }, - "prior_state": { - "securable_type": "volume", - "full_name": "main.schema_grants_[UNIQUE_NAME].volume_name", - "__embed__": [ - { - "principal": "deco-test-user@databricks.com", - "privileges": [ - "READ_VOLUME", - "WRITE_VOLUME" - ] - } - ] - }, "remote_state": { "securable_type": "volume", "full_name": "main.schema_grants_[UNIQUE_NAME].volume_name", diff --git a/acceptance/bundle/resources/job_runs/redeploy/output.txt b/acceptance/bundle/resources/job_runs/redeploy/output.txt index b78e1898abb..6ec19be8bce 100644 --- a/acceptance/bundle/resources/job_runs/redeploy/output.txt +++ b/acceptance/bundle/resources/job_runs/redeploy/output.txt @@ -57,12 +57,6 @@ Resources: } } }, - "prior_state": { - "job_id": [MY_JOB_ID], - "job_parameters": { - "env": "dev" - } - }, "remote_state": { "job_id": [MY_JOB_ID], "job_parameters": { diff --git a/acceptance/bundle/resources/jobs/delete_task/out.plan_update.direct.json b/acceptance/bundle/resources/jobs/delete_task/out.plan_update.direct.json index 0f8c77c3a05..7a64f0a18d6 100644 --- a/acceptance/bundle/resources/jobs/delete_task/out.plan_update.direct.json +++ b/acceptance/bundle/resources/jobs/delete_task/out.plan_update.direct.json @@ -42,53 +42,6 @@ ] } }, - "prior_state": { - "deployment": { - "kind": "BUNDLE", - "metadata_file_path": "/Workspace/Users/[USERNAME]/.bundle/test-bundle/default/state/metadata.json" - }, - "edit_mode": "UI_LOCKED", - "format": "MULTI_TASK", - "max_concurrent_runs": 1, - "name": "Untitled", - "queue": { - "enabled": true - }, - "tasks": [ - { - "existing_cluster_id": "0717-132531-5opeqon1", - "libraries": [ - { - "whl": "/Workspace/Users/foo@bar.test/mywheel.whl" - } - ], - "python_wheel_task": { - "entry_point": "run", - "package_name": "whl" - }, - "task_key": "TestTask1" - }, - { - "for_each_task": { - "inputs": "[1]", - "task": { - "existing_cluster_id": "0717-132531-5opeqon1", - "libraries": [ - { - "whl": "/Workspace/Users/foo@bar.test/mywheel.whl" - } - ], - "python_wheel_task": { - "entry_point": "run", - "package_name": "whl" - }, - "task_key": "TestTask2" - } - }, - "task_key": "TestTask2" - } - ] - }, "remote_state": { "created_time": [UNIX_TIME_MILLIS], "creator_user_name": "[USERNAME]", diff --git a/acceptance/bundle/resources/jobs/remote_add_tag/out.plan_post_update.direct.json b/acceptance/bundle/resources/jobs/remote_add_tag/out.plan_post_update.direct.json index 21c695211e7..693492859fc 100644 --- a/acceptance/bundle/resources/jobs/remote_add_tag/out.plan_post_update.direct.json +++ b/acceptance/bundle/resources/jobs/remote_add_tag/out.plan_post_update.direct.json @@ -39,37 +39,6 @@ ] } }, - "prior_state": { - "deployment": { - "kind": "BUNDLE", - "metadata_file_path": "/Workspace/Users/[USERNAME]/.bundle/test-bundle/default/state/metadata.json" - }, - "edit_mode": "UI_LOCKED", - "format": "MULTI_TASK", - "max_concurrent_runs": 1, - "name": "My Wheel Job", - "queue": { - "enabled": true - }, - "tags": { - "tag1": "tag value" - }, - "tasks": [ - { - "environment_key": "test_env", - "libraries": [ - { - "whl": "/Workspace/Users/[USERNAME]/.bundle/test-bundle/default/artifacts/.internal/hello.whl" - } - ], - "python_wheel_task": { - "entry_point": "run", - "package_name": "my_test_code" - }, - "task_key": "TestTask" - } - ] - }, "remote_state": { "created_time": [UNIX_TIME_MILLIS], "creator_user_name": "[USERNAME]", diff --git a/acceptance/bundle/resources/jobs/remote_delete/deploy/out.plan.direct.json b/acceptance/bundle/resources/jobs/remote_delete/deploy/out.plan.direct.json index c27ee2bd04c..c9493e8a21c 100644 --- a/acceptance/bundle/resources/jobs/remote_delete/deploy/out.plan.direct.json +++ b/acceptance/bundle/resources/jobs/remote_delete/deploy/out.plan.direct.json @@ -36,35 +36,6 @@ } } } - }, - "prior_state": { - "deployment": { - "kind": "BUNDLE", - "metadata_file_path": "/Workspace/Users/[USERNAME]/.bundle/test-bundle/default/state/metadata.json" - }, - "edit_mode": "UI_LOCKED", - "format": "MULTI_TASK", - "job_clusters": [ - { - "job_cluster_key": "key", - "new_cluster": { - "num_workers": 0, - "spark_version": "13.3.x-scala2.12" - } - } - ], - "max_concurrent_runs": 1, - "name": "foo", - "queue": { - "enabled": true - }, - "trigger": { - "pause_status": "UNPAUSED", - "periodic": { - "interval": 1, - "unit": "DAYS" - } - } } } } diff --git a/acceptance/bundle/resources/jobs/remote_matches_config/out.plan.direct.json b/acceptance/bundle/resources/jobs/remote_matches_config/out.plan.direct.json index 9d51840d19b..3af240a0ed0 100644 --- a/acceptance/bundle/resources/jobs/remote_matches_config/out.plan.direct.json +++ b/acceptance/bundle/resources/jobs/remote_matches_config/out.plan.direct.json @@ -6,35 +6,6 @@ "plan": { "resources.jobs.my_job": { "action": "skip", - "prior_state": { - "deployment": { - "kind": "BUNDLE", - "metadata_file_path": "/Workspace/Users/[USERNAME]/.bundle/test-bundle/default/state/metadata.json" - }, - "edit_mode": "UI_LOCKED", - "format": "MULTI_TASK", - "max_concurrent_runs": 1, - "name": "Test Job for Conflict Detection", - "queue": { - "enabled": true - }, - "tags": { - "environment": "dev" - }, - "tasks": [ - { - "new_cluster": { - "node_type_id": "[NODE_TYPE_ID]", - "num_workers": 1, - "spark_version": "13.3.x-scala2.12" - }, - "notebook_task": { - "notebook_path": "/Users/{{workspace_user_name}}/test_notebook" - }, - "task_key": "main_task" - } - ] - }, "remote_state": { "created_time": [UNIX_TIME_MILLIS], "creator_user_name": "[USERNAME]", diff --git a/acceptance/bundle/resources/jobs/update/out.plan_skip.direct.json b/acceptance/bundle/resources/jobs/update/out.plan_skip.direct.json index 4153409fff5..7aecad7102e 100644 --- a/acceptance/bundle/resources/jobs/update/out.plan_skip.direct.json +++ b/acceptance/bundle/resources/jobs/update/out.plan_skip.direct.json @@ -6,35 +6,6 @@ "plan": { "resources.jobs.foo": { "action": "skip", - "prior_state": { - "deployment": { - "kind": "BUNDLE", - "metadata_file_path": "/Workspace/Users/[USERNAME]/.bundle/test-bundle/default/state/metadata.json" - }, - "edit_mode": "UI_LOCKED", - "format": "MULTI_TASK", - "job_clusters": [ - { - "job_cluster_key": "key", - "new_cluster": { - "num_workers": 0, - "spark_version": "13.3.x-scala2.12" - } - } - ], - "max_concurrent_runs": 1, - "name": "foo", - "queue": { - "enabled": true - }, - "trigger": { - "pause_status": "UNPAUSED", - "periodic": { - "interval": 1, - "unit": "DAYS" - } - } - }, "remote_state": { "created_time": [UNIX_TIME_MILLIS], "creator_user_name": "[USERNAME]", diff --git a/acceptance/bundle/resources/jobs/update/out.plan_update.direct.json b/acceptance/bundle/resources/jobs/update/out.plan_update.direct.json index 925d766e223..56eb1211e99 100644 --- a/acceptance/bundle/resources/jobs/update/out.plan_update.direct.json +++ b/acceptance/bundle/resources/jobs/update/out.plan_update.direct.json @@ -37,35 +37,6 @@ } } }, - "prior_state": { - "deployment": { - "kind": "BUNDLE", - "metadata_file_path": "/Workspace/Users/[USERNAME]/.bundle/test-bundle/default/state/metadata.json" - }, - "edit_mode": "UI_LOCKED", - "format": "MULTI_TASK", - "job_clusters": [ - { - "job_cluster_key": "key", - "new_cluster": { - "num_workers": 0, - "spark_version": "13.3.x-scala2.12" - } - } - ], - "max_concurrent_runs": 1, - "name": "foo", - "queue": { - "enabled": true - }, - "trigger": { - "pause_status": "UNPAUSED", - "periodic": { - "interval": 1, - "unit": "DAYS" - } - } - }, "remote_state": { "created_time": [UNIX_TIME_MILLIS], "creator_user_name": "[USERNAME]", diff --git a/acceptance/bundle/resources/jobs/update_single_node/out.plan_skip.direct.json b/acceptance/bundle/resources/jobs/update_single_node/out.plan_skip.direct.json index 53c5a13dc18..bed35fb5c8c 100644 --- a/acceptance/bundle/resources/jobs/update_single_node/out.plan_skip.direct.json +++ b/acceptance/bundle/resources/jobs/update_single_node/out.plan_skip.direct.json @@ -6,42 +6,6 @@ "plan": { "resources.jobs.foo": { "action": "skip", - "prior_state": { - "deployment": { - "kind": "BUNDLE", - "metadata_file_path": "/Workspace/Users/[USERNAME]/.bundle/test-bundle/default/state/metadata.json" - }, - "edit_mode": "UI_LOCKED", - "format": "MULTI_TASK", - "job_clusters": [ - { - "job_cluster_key": "key", - "new_cluster": { - "custom_tags": { - "ResourceClass": "SingleNode" - }, - "num_workers": 0, - "spark_conf": { - "spark.databricks.cluster.profile": "singleNode", - "spark.master": "local[*]" - }, - "spark_version": "13.3.x-scala2.12" - } - } - ], - "max_concurrent_runs": 1, - "name": "foo", - "queue": { - "enabled": true - }, - "trigger": { - "pause_status": "UNPAUSED", - "periodic": { - "interval": 1, - "unit": "DAYS" - } - } - }, "remote_state": { "created_time": [UNIX_TIME_MILLIS], "creator_user_name": "[USERNAME]", diff --git a/acceptance/bundle/resources/jobs/update_single_node/out.plan_update.direct.json b/acceptance/bundle/resources/jobs/update_single_node/out.plan_update.direct.json index c2380d43522..330ae5d5c17 100644 --- a/acceptance/bundle/resources/jobs/update_single_node/out.plan_update.direct.json +++ b/acceptance/bundle/resources/jobs/update_single_node/out.plan_update.direct.json @@ -44,42 +44,6 @@ } } }, - "prior_state": { - "deployment": { - "kind": "BUNDLE", - "metadata_file_path": "/Workspace/Users/[USERNAME]/.bundle/test-bundle/default/state/metadata.json" - }, - "edit_mode": "UI_LOCKED", - "format": "MULTI_TASK", - "job_clusters": [ - { - "job_cluster_key": "key", - "new_cluster": { - "custom_tags": { - "ResourceClass": "SingleNode" - }, - "num_workers": 0, - "spark_conf": { - "spark.databricks.cluster.profile": "singleNode", - "spark.master": "local[*]" - }, - "spark_version": "13.3.x-scala2.12" - } - } - ], - "max_concurrent_runs": 1, - "name": "foo", - "queue": { - "enabled": true - }, - "trigger": { - "pause_status": "UNPAUSED", - "periodic": { - "interval": 1, - "unit": "DAYS" - } - } - }, "remote_state": { "created_time": [UNIX_TIME_MILLIS], "creator_user_name": "[USERNAME]", diff --git a/acceptance/bundle/resources/model_serving_endpoints/basic/out.second-plan.direct.txt b/acceptance/bundle/resources/model_serving_endpoints/basic/out.second-plan.direct.txt index 518dab2da23..7b4362bacbe 100644 --- a/acceptance/bundle/resources/model_serving_endpoints/basic/out.second-plan.direct.txt +++ b/acceptance/bundle/resources/model_serving_endpoints/basic/out.second-plan.direct.txt @@ -4,7 +4,6 @@ json.lineage = "[UUID]"; json.serial = 1; json.plan.resources.model_serving_endpoints.my_endpoint.action = "recreate"; json.plan.resources.model_serving_endpoints.my_endpoint.new_state.value.name = "[ENDPOINT_NAME_2]"; -json.plan.resources.model_serving_endpoints.my_endpoint.prior_state.name = "[ENDPOINT_NAME_1]"; json.plan.resources.model_serving_endpoints.my_endpoint.remote_state.endpoint_details.creation_timestamp = [UNIX_TIME_MILLIS][0]; json.plan.resources.model_serving_endpoints.my_endpoint.remote_state.endpoint_details.creator = "[USERNAME]"; json.plan.resources.model_serving_endpoints.my_endpoint.remote_state.endpoint_details.description = ""; @@ -37,11 +36,6 @@ json.plan.resources.model_serving_endpoints.my_endpoint.permissions.new_state.va json.plan.resources.model_serving_endpoints.my_endpoint.permissions.new_state.value.__embed__[1].level = "CAN_VIEW"; json.plan.resources.model_serving_endpoints.my_endpoint.permissions.new_state.value.__embed__[1].user_name = "deco-test-user@databricks.com"; json.plan.resources.model_serving_endpoints.my_endpoint.permissions.new_state.vars.object_id = "/serving-endpoints/${resources.model_serving_endpoints.my_endpoint.endpoint_id}"; -json.plan.resources.model_serving_endpoints.my_endpoint.permissions.prior_state.object_id = "/serving-endpoints/[ENDPOINT_ID_1]"; -json.plan.resources.model_serving_endpoints.my_endpoint.permissions.prior_state.__embed__[0].level = "CAN_MANAGE"; -json.plan.resources.model_serving_endpoints.my_endpoint.permissions.prior_state.__embed__[0].service_principal_name = "[USERNAME]"; -json.plan.resources.model_serving_endpoints.my_endpoint.permissions.prior_state.__embed__[1].level = "CAN_VIEW"; -json.plan.resources.model_serving_endpoints.my_endpoint.permissions.prior_state.__embed__[1].user_name = "deco-test-user@databricks.com"; json.plan.resources.model_serving_endpoints.my_endpoint.permissions.remote_state.object_id = "/serving-endpoints/[ENDPOINT_ID_1]"; json.plan.resources.model_serving_endpoints.my_endpoint.permissions.remote_state.__embed__[0].level = "CAN_MANAGE"; json.plan.resources.model_serving_endpoints.my_endpoint.permissions.remote_state.__embed__[0].service_principal_name = "[USERNAME]"; diff --git a/acceptance/bundle/resources/model_serving_endpoints/recreate/catalog-name/out.second-plan.direct.json b/acceptance/bundle/resources/model_serving_endpoints/recreate/catalog-name/out.second-plan.direct.json index a8c94e08c93..86932f72ce6 100644 --- a/acceptance/bundle/resources/model_serving_endpoints/recreate/catalog-name/out.second-plan.direct.json +++ b/acceptance/bundle/resources/model_serving_endpoints/recreate/catalog-name/out.second-plan.direct.json @@ -31,29 +31,6 @@ "name": "[ORIGINAL_ENDPOINT_ID]" } }, - "prior_state": { - "config": { - "auto_capture_config": { - "catalog_name": "main", - "schema_name": "default", - "table_name_prefix": "my_table" - }, - "served_entities": [ - { - "external_model": { - "name": "gpt-4o-mini", - "openai_config": { - "openai_api_key": "{{secrets/test-scope/openai-key}}" - }, - "provider": "openai", - "task": "llm/v1/chat" - }, - "name": "prod" - } - ] - }, - "name": "[ORIGINAL_ENDPOINT_ID]" - }, "remote_state": { "endpoint_details": { "config": { diff --git a/acceptance/bundle/resources/model_serving_endpoints/recreate/name-change/out.second-plan.direct.json b/acceptance/bundle/resources/model_serving_endpoints/recreate/name-change/out.second-plan.direct.json index 806b3fc6a2e..3e424ed3fc8 100644 --- a/acceptance/bundle/resources/model_serving_endpoints/recreate/name-change/out.second-plan.direct.json +++ b/acceptance/bundle/resources/model_serving_endpoints/recreate/name-change/out.second-plan.direct.json @@ -26,24 +26,6 @@ "name": "[NEW_ENDPOINT_ID]" } }, - "prior_state": { - "config": { - "served_entities": [ - { - "external_model": { - "name": "gpt-4o-mini", - "openai_config": { - "openai_api_key": "{{secrets/test-scope/openai-key}}" - }, - "provider": "openai", - "task": "llm/v1/chat" - }, - "name": "prod" - } - ] - }, - "name": "[ORIGINAL_ENDPOINT_ID]" - }, "remote_state": { "endpoint_details": { "config": { diff --git a/acceptance/bundle/resources/model_serving_endpoints/recreate/route-optimized/out.second-plan.direct.json b/acceptance/bundle/resources/model_serving_endpoints/recreate/route-optimized/out.second-plan.direct.json index 1a367153b5a..f8dcb1c5510 100644 --- a/acceptance/bundle/resources/model_serving_endpoints/recreate/route-optimized/out.second-plan.direct.json +++ b/acceptance/bundle/resources/model_serving_endpoints/recreate/route-optimized/out.second-plan.direct.json @@ -23,21 +23,6 @@ "route_optimized": true } }, - "prior_state": { - "config": { - "served_entities": [ - { - "entity_name": "system.ai.llama_v3_2_1b_instruct", - "entity_version": "1", - "name": "llama", - "scale_to_zero_enabled": true, - "workload_size": "Small" - } - ] - }, - "name": "[ORIGINAL_ENDPOINT_ID]", - "route_optimized": false - }, "remote_state": { "endpoint_details": { "config": { diff --git a/acceptance/bundle/resources/model_serving_endpoints/recreate/schema-name/out.second-plan.direct.json b/acceptance/bundle/resources/model_serving_endpoints/recreate/schema-name/out.second-plan.direct.json index 77505e20318..eeacb3be087 100644 --- a/acceptance/bundle/resources/model_serving_endpoints/recreate/schema-name/out.second-plan.direct.json +++ b/acceptance/bundle/resources/model_serving_endpoints/recreate/schema-name/out.second-plan.direct.json @@ -31,29 +31,6 @@ "name": "[ORIGINAL_ENDPOINT_ID]" } }, - "prior_state": { - "config": { - "auto_capture_config": { - "catalog_name": "main", - "schema_name": "default", - "table_name_prefix": "my_table" - }, - "served_entities": [ - { - "external_model": { - "name": "gpt-4o-mini", - "openai_config": { - "openai_api_key": "{{secrets/test-scope/openai-key}}" - }, - "provider": "openai", - "task": "llm/v1/chat" - }, - "name": "prod" - } - ] - }, - "name": "[ORIGINAL_ENDPOINT_ID]" - }, "remote_state": { "endpoint_details": { "config": { diff --git a/acceptance/bundle/resources/model_serving_endpoints/recreate/table-prefix/out.second-plan.direct.json b/acceptance/bundle/resources/model_serving_endpoints/recreate/table-prefix/out.second-plan.direct.json index 6d475b8efd0..e29d17e4dde 100644 --- a/acceptance/bundle/resources/model_serving_endpoints/recreate/table-prefix/out.second-plan.direct.json +++ b/acceptance/bundle/resources/model_serving_endpoints/recreate/table-prefix/out.second-plan.direct.json @@ -31,29 +31,6 @@ "name": "[ORIGINAL_ENDPOINT_ID]" } }, - "prior_state": { - "config": { - "auto_capture_config": { - "catalog_name": "main", - "schema_name": "default", - "table_name_prefix": "my_table" - }, - "served_entities": [ - { - "external_model": { - "name": "gpt-4o-mini", - "openai_config": { - "openai_api_key": "{{secrets/test-scope/openai-key}}" - }, - "provider": "openai", - "task": "llm/v1/chat" - }, - "name": "prod" - } - ] - }, - "name": "[ORIGINAL_ENDPOINT_ID]" - }, "remote_state": { "endpoint_details": { "config": { diff --git a/acceptance/bundle/resources/model_serving_endpoints/update/ai-gateway/out.plan.direct.json b/acceptance/bundle/resources/model_serving_endpoints/update/ai-gateway/out.plan.direct.json index 47b0079d194..f305ce97719 100644 --- a/acceptance/bundle/resources/model_serving_endpoints/update/ai-gateway/out.plan.direct.json +++ b/acceptance/bundle/resources/model_serving_endpoints/update/ai-gateway/out.plan.direct.json @@ -31,29 +31,6 @@ "name": "[ENDPOINT_ID]" } }, - "prior_state": { - "ai_gateway": { - "inference_table_config": { - "catalog_name": "first-inference-catalog" - } - }, - "config": { - "served_entities": [ - { - "external_model": { - "name": "gpt-4o-mini", - "openai_config": { - "openai_api_key": "{{secrets/test-scope/openai-key}}" - }, - "provider": "openai", - "task": "llm/v1/chat" - }, - "name": "prod" - } - ] - }, - "name": "[ENDPOINT_ID]" - }, "remote_state": { "endpoint_details": { "ai_gateway": { diff --git a/acceptance/bundle/resources/model_serving_endpoints/update/both_gateway_and_tags/out.plan.direct.json b/acceptance/bundle/resources/model_serving_endpoints/update/both_gateway_and_tags/out.plan.direct.json index 9d8fdf62dfa..394377f07f8 100644 --- a/acceptance/bundle/resources/model_serving_endpoints/update/both_gateway_and_tags/out.plan.direct.json +++ b/acceptance/bundle/resources/model_serving_endpoints/update/both_gateway_and_tags/out.plan.direct.json @@ -37,35 +37,6 @@ ] } }, - "prior_state": { - "ai_gateway": { - "inference_table_config": { - "catalog_name": "first-inference-catalog" - } - }, - "config": { - "served_entities": [ - { - "external_model": { - "name": "gpt-4o-mini", - "openai_config": { - "openai_api_key": "{{secrets/test-scope/openai-key}}" - }, - "provider": "openai", - "task": "llm/v1/chat" - }, - "name": "prod" - } - ] - }, - "name": "[ENDPOINT_ID]", - "tags": [ - { - "key": "team", - "value": "my-team-one" - } - ] - }, "remote_state": { "endpoint_details": { "ai_gateway": { diff --git a/acceptance/bundle/resources/model_serving_endpoints/update/config/out.plan.direct.json b/acceptance/bundle/resources/model_serving_endpoints/update/config/out.plan.direct.json index bfeba86343e..47e992c1cf9 100644 --- a/acceptance/bundle/resources/model_serving_endpoints/update/config/out.plan.direct.json +++ b/acceptance/bundle/resources/model_serving_endpoints/update/config/out.plan.direct.json @@ -34,32 +34,6 @@ "name": "[ENDPOINT_ID]" } }, - "prior_state": { - "config": { - "served_entities": [ - { - "external_model": { - "name": "gpt-4o-mini", - "openai_config": { - "openai_api_key": "{{secrets/test-scope/openai-key}}" - }, - "provider": "openai", - "task": "llm/v1/chat" - }, - "name": "prod" - } - ], - "traffic_config": { - "routes": [ - { - "served_model_name": "prod", - "traffic_percentage": 100 - } - ] - } - }, - "name": "[ENDPOINT_ID]" - }, "remote_state": { "endpoint_details": { "config": { diff --git a/acceptance/bundle/resources/model_serving_endpoints/update/email-notifications/out.plan.direct.json b/acceptance/bundle/resources/model_serving_endpoints/update/email-notifications/out.plan.direct.json index 1f96f4cfd52..cf8c8b3f0ca 100644 --- a/acceptance/bundle/resources/model_serving_endpoints/update/email-notifications/out.plan.direct.json +++ b/acceptance/bundle/resources/model_serving_endpoints/update/email-notifications/out.plan.direct.json @@ -31,29 +31,6 @@ "name": "[ENDPOINT_ID]" } }, - "prior_state": { - "config": { - "served_entities": [ - { - "external_model": { - "name": "gpt-4o-mini", - "openai_config": { - "openai_api_key": "{{secrets/test-scope/openai-key}}" - }, - "provider": "openai", - "task": "llm/v1/chat" - }, - "name": "prod" - } - ] - }, - "email_notifications": { - "on_update_success": [ - "user1@example.com" - ] - }, - "name": "[ENDPOINT_ID]" - }, "remote_state": { "endpoint_details": { "config": { diff --git a/acceptance/bundle/resources/model_serving_endpoints/update/tags/out.plan.direct.json b/acceptance/bundle/resources/model_serving_endpoints/update/tags/out.plan.direct.json index 0a3c607f58a..73202db539d 100644 --- a/acceptance/bundle/resources/model_serving_endpoints/update/tags/out.plan.direct.json +++ b/acceptance/bundle/resources/model_serving_endpoints/update/tags/out.plan.direct.json @@ -32,30 +32,6 @@ ] } }, - "prior_state": { - "config": { - "served_entities": [ - { - "external_model": { - "name": "gpt-4o-mini", - "openai_config": { - "openai_api_key": "{{secrets/test-scope/openai-key}}" - }, - "provider": "openai", - "task": "llm/v1/chat" - }, - "name": "prod" - } - ] - }, - "name": "[ENDPOINT_ID]", - "tags": [ - { - "key": "team", - "value": "my-team-one" - } - ] - }, "remote_state": { "endpoint_details": { "config": { diff --git a/acceptance/bundle/resources/permissions/jobs/added_remotely/out.plan.direct.json b/acceptance/bundle/resources/permissions/jobs/added_remotely/out.plan.direct.json index dd0e34fa4af..f048f3e6f48 100644 --- a/acceptance/bundle/resources/permissions/jobs/added_remotely/out.plan.direct.json +++ b/acceptance/bundle/resources/permissions/jobs/added_remotely/out.plan.direct.json @@ -6,28 +6,6 @@ "plan": { "resources.jobs.job_with_permissions": { "action": "skip", - "prior_state": { - "deployment": { - "kind": "BUNDLE", - "metadata_file_path": "/Workspace/Users/[USERNAME]/.bundle/test-bundle/default/state/metadata.json" - }, - "edit_mode": "UI_LOCKED", - "format": "MULTI_TASK", - "max_concurrent_runs": 1, - "name": "job permissions added remotely", - "queue": { - "enabled": true - }, - "tasks": [ - { - "notebook_task": { - "notebook_path": "/Workspace/Users/user@example.com/notebook", - "source": "WORKSPACE" - }, - "task_key": "main" - } - ] - }, "remote_state": { "created_time": [UNIX_TIME_MILLIS], "creator_user_name": "[USERNAME]", @@ -116,19 +94,6 @@ ] } }, - "prior_state": { - "object_id": "/jobs/[JOB_WITH_PERMISSIONS_ID]", - "__embed__": [ - { - "level": "CAN_VIEW", - "user_name": "viewer@example.com" - }, - { - "level": "IS_OWNER", - "user_name": "[USERNAME]" - } - ] - }, "remote_state": { "object_id": "/jobs/[JOB_WITH_PERMISSIONS_ID]", "__embed__": [ diff --git a/acceptance/bundle/resources/permissions/jobs/current_can_manage_run/out.plan.direct.txt b/acceptance/bundle/resources/permissions/jobs/current_can_manage_run/out.plan.direct.txt index 75ad5529387..4b289dbd158 100644 --- a/acceptance/bundle/resources/permissions/jobs/current_can_manage_run/out.plan.direct.txt +++ b/acceptance/bundle/resources/permissions/jobs/current_can_manage_run/out.plan.direct.txt @@ -6,19 +6,6 @@ "plan": { "resources.jobs.interim_gold_layer_job": { "action": "skip", - "prior_state": { - "deployment": { - "kind": "BUNDLE", - "metadata_file_path": "/Workspace/Users/[USERNAME]/.bundle/test-bundle-[UNIQUE_NAME]/green/state/metadata.json" - }, - "edit_mode": "UI_LOCKED", - "format": "MULTI_TASK", - "max_concurrent_runs": 1, - "name": "Untitled", - "queue": { - "enabled": true - } - }, "remote_state": { "created_time": [UNIX_TIME_MILLIS], "creator_user_name": "[USERNAME]", @@ -65,15 +52,6 @@ } ], "action": "skip", - "prior_state": { - "object_id": "/jobs/[NUMID]", - "__embed__": [ - { - "level": "IS_OWNER", - "service_principal_name": "[USERNAME]" - } - ] - }, "remote_state": { "object_id": "/jobs/[NUMID]", "__embed__": [ diff --git a/acceptance/bundle/resources/permissions/jobs/deleted_remotely/out.plan_restore.direct.json b/acceptance/bundle/resources/permissions/jobs/deleted_remotely/out.plan_restore.direct.json index 6d7fbcceb99..cda86e4ceb4 100644 --- a/acceptance/bundle/resources/permissions/jobs/deleted_remotely/out.plan_restore.direct.json +++ b/acceptance/bundle/resources/permissions/jobs/deleted_remotely/out.plan_restore.direct.json @@ -6,28 +6,6 @@ "plan": { "resources.jobs.job_with_permissions": { "action": "skip", - "prior_state": { - "deployment": { - "kind": "BUNDLE", - "metadata_file_path": "/Workspace/Users/[USERNAME]/.bundle/jobs-permissions-deleted-remotely/default/state/metadata.json" - }, - "edit_mode": "UI_LOCKED", - "format": "MULTI_TASK", - "max_concurrent_runs": 1, - "name": "job permissions deleted remotely", - "queue": { - "enabled": true - }, - "tasks": [ - { - "notebook_task": { - "notebook_path": "/Workspace/Users/user@example.com/notebook", - "source": "WORKSPACE" - }, - "task_key": "main" - } - ] - }, "remote_state": { "created_time": [UNIX_TIME_MILLIS], "creator_user_name": "[USERNAME]", @@ -120,23 +98,6 @@ ] } }, - "prior_state": { - "object_id": "/jobs/[JOB_WITH_PERMISSIONS_ID]", - "__embed__": [ - { - "level": "CAN_VIEW", - "user_name": "viewer@example.com" - }, - { - "level": "CAN_MANAGE", - "group_name": "data-team" - }, - { - "level": "IS_OWNER", - "user_name": "[USERNAME]" - } - ] - }, "remote_state": { "object_id": "/jobs/[JOB_WITH_PERMISSIONS_ID]", "__embed__": [ diff --git a/acceptance/bundle/resources/permissions/jobs/update/out.plan_delete_all.direct.json b/acceptance/bundle/resources/permissions/jobs/update/out.plan_delete_all.direct.json index a3e302d7c38..e7bfda922b8 100644 --- a/acceptance/bundle/resources/permissions/jobs/update/out.plan_delete_all.direct.json +++ b/acceptance/bundle/resources/permissions/jobs/update/out.plan_delete_all.direct.json @@ -6,28 +6,6 @@ "plan": { "resources.jobs.job_with_permissions": { "action": "skip", - "prior_state": { - "deployment": { - "kind": "BUNDLE", - "metadata_file_path": "/Workspace/Users/[USERNAME]/.bundle/jobs-permissions-test/default/state/metadata.json" - }, - "edit_mode": "UI_LOCKED", - "format": "MULTI_TASK", - "max_concurrent_runs": 1, - "name": "job with permissions", - "queue": { - "enabled": true - }, - "tasks": [ - { - "notebook_task": { - "notebook_path": "/Workspace/Users/user@example.com/notebook", - "source": "WORKSPACE" - }, - "task_key": "main" - } - ] - }, "remote_state": { "created_time": [UNIX_TIME_MILLIS], "creator_user_name": "[USERNAME]", diff --git a/acceptance/bundle/resources/permissions/jobs/update/out.plan_delete_one.direct.json b/acceptance/bundle/resources/permissions/jobs/update/out.plan_delete_one.direct.json index 4b962b2bd92..a2e93e298eb 100644 --- a/acceptance/bundle/resources/permissions/jobs/update/out.plan_delete_one.direct.json +++ b/acceptance/bundle/resources/permissions/jobs/update/out.plan_delete_one.direct.json @@ -6,28 +6,6 @@ "plan": { "resources.jobs.job_with_permissions": { "action": "skip", - "prior_state": { - "deployment": { - "kind": "BUNDLE", - "metadata_file_path": "/Workspace/Users/[USERNAME]/.bundle/jobs-permissions-test/default/state/metadata.json" - }, - "edit_mode": "UI_LOCKED", - "format": "MULTI_TASK", - "max_concurrent_runs": 1, - "name": "job with permissions", - "queue": { - "enabled": true - }, - "tasks": [ - { - "notebook_task": { - "notebook_path": "/Workspace/Users/user@example.com/notebook", - "source": "WORKSPACE" - }, - "task_key": "main" - } - ] - }, "remote_state": { "created_time": [UNIX_TIME_MILLIS], "creator_user_name": "[USERNAME]", @@ -116,23 +94,6 @@ ] } }, - "prior_state": { - "object_id": "/jobs/[JOB_WITH_PERMISSIONS_ID]", - "__embed__": [ - { - "level": "CAN_MANAGE", - "user_name": "viewer@example.com" - }, - { - "level": "CAN_MANAGE", - "group_name": "data-team" - }, - { - "level": "IS_OWNER", - "user_name": "[USERNAME]" - } - ] - }, "remote_state": { "object_id": "/jobs/[JOB_WITH_PERMISSIONS_ID]", "__embed__": [ diff --git a/acceptance/bundle/resources/permissions/jobs/update/out.plan_post_create.direct.json b/acceptance/bundle/resources/permissions/jobs/update/out.plan_post_create.direct.json index 7b6b2938121..02ffe2db63a 100644 --- a/acceptance/bundle/resources/permissions/jobs/update/out.plan_post_create.direct.json +++ b/acceptance/bundle/resources/permissions/jobs/update/out.plan_post_create.direct.json @@ -6,28 +6,6 @@ "plan": { "resources.jobs.job_with_permissions": { "action": "skip", - "prior_state": { - "deployment": { - "kind": "BUNDLE", - "metadata_file_path": "/Workspace/Users/[USERNAME]/.bundle/jobs-permissions-test/default/state/metadata.json" - }, - "edit_mode": "UI_LOCKED", - "format": "MULTI_TASK", - "max_concurrent_runs": 1, - "name": "job with permissions", - "queue": { - "enabled": true - }, - "tasks": [ - { - "notebook_task": { - "notebook_path": "/Workspace/Users/user@example.com/notebook", - "source": "WORKSPACE" - }, - "task_key": "main" - } - ] - }, "remote_state": { "created_time": [UNIX_TIME_MILLIS], "creator_user_name": "[USERNAME]", @@ -101,23 +79,6 @@ } ], "action": "skip", - "prior_state": { - "object_id": "/jobs/[JOB_WITH_PERMISSIONS_ID]", - "__embed__": [ - { - "level": "CAN_VIEW", - "user_name": "viewer@example.com" - }, - { - "level": "CAN_MANAGE", - "group_name": "data-team" - }, - { - "level": "IS_OWNER", - "user_name": "[USERNAME]" - } - ] - }, "remote_state": { "object_id": "/jobs/[JOB_WITH_PERMISSIONS_ID]", "__embed__": [ diff --git a/acceptance/bundle/resources/permissions/jobs/update/out.plan_restore.direct.json b/acceptance/bundle/resources/permissions/jobs/update/out.plan_restore.direct.json index dad2dac379e..1b25b762637 100644 --- a/acceptance/bundle/resources/permissions/jobs/update/out.plan_restore.direct.json +++ b/acceptance/bundle/resources/permissions/jobs/update/out.plan_restore.direct.json @@ -6,28 +6,6 @@ "plan": { "resources.jobs.job_with_permissions": { "action": "skip", - "prior_state": { - "deployment": { - "kind": "BUNDLE", - "metadata_file_path": "/Workspace/Users/[USERNAME]/.bundle/jobs-permissions-test/default/state/metadata.json" - }, - "edit_mode": "UI_LOCKED", - "format": "MULTI_TASK", - "max_concurrent_runs": 1, - "name": "job with permissions", - "queue": { - "enabled": true - }, - "tasks": [ - { - "notebook_task": { - "notebook_path": "/Workspace/Users/user@example.com/notebook", - "source": "WORKSPACE" - }, - "task_key": "main" - } - ] - }, "remote_state": { "created_time": [UNIX_TIME_MILLIS], "creator_user_name": "[USERNAME]", diff --git a/acceptance/bundle/resources/permissions/jobs/update/out.plan_update.direct.json b/acceptance/bundle/resources/permissions/jobs/update/out.plan_update.direct.json index 46a607e3cbb..89b3cf0f302 100644 --- a/acceptance/bundle/resources/permissions/jobs/update/out.plan_update.direct.json +++ b/acceptance/bundle/resources/permissions/jobs/update/out.plan_update.direct.json @@ -6,28 +6,6 @@ "plan": { "resources.jobs.job_with_permissions": { "action": "skip", - "prior_state": { - "deployment": { - "kind": "BUNDLE", - "metadata_file_path": "/Workspace/Users/[USERNAME]/.bundle/jobs-permissions-test/default/state/metadata.json" - }, - "edit_mode": "UI_LOCKED", - "format": "MULTI_TASK", - "max_concurrent_runs": 1, - "name": "job with permissions", - "queue": { - "enabled": true - }, - "tasks": [ - { - "notebook_task": { - "notebook_path": "/Workspace/Users/user@example.com/notebook", - "source": "WORKSPACE" - }, - "task_key": "main" - } - ] - }, "remote_state": { "created_time": [UNIX_TIME_MILLIS], "creator_user_name": "[USERNAME]", @@ -120,23 +98,6 @@ ] } }, - "prior_state": { - "object_id": "/jobs/[JOB_WITH_PERMISSIONS_ID]", - "__embed__": [ - { - "level": "CAN_VIEW", - "user_name": "viewer@example.com" - }, - { - "level": "CAN_MANAGE", - "group_name": "data-team" - }, - { - "level": "IS_OWNER", - "user_name": "[USERNAME]" - } - ] - }, "remote_state": { "object_id": "/jobs/[JOB_WITH_PERMISSIONS_ID]", "__embed__": [ diff --git a/acceptance/bundle/resources/permissions/pipelines/update/out.plan_delete_all.direct.json b/acceptance/bundle/resources/permissions/pipelines/update/out.plan_delete_all.direct.json index 95c664db954..db74caabfca 100644 --- a/acceptance/bundle/resources/permissions/pipelines/update/out.plan_delete_all.direct.json +++ b/acceptance/bundle/resources/permissions/pipelines/update/out.plan_delete_all.direct.json @@ -6,15 +6,6 @@ "plan": { "resources.pipelines.foo": { "action": "skip", - "prior_state": { - "channel": "CURRENT", - "deployment": { - "kind": "BUNDLE", - "metadata_file_path": "/Workspace/Users/[USERNAME]/.bundle/permissions-test/default/state/metadata.json" - }, - "edition": "ADVANCED", - "name": "foo" - }, "remote_state": { "channel": "CURRENT", "creator_user_name": "[USERNAME]", diff --git a/acceptance/bundle/resources/permissions/pipelines/update/out.plan_delete_one.direct.json b/acceptance/bundle/resources/permissions/pipelines/update/out.plan_delete_one.direct.json index 9e80be6da47..4586f292b32 100644 --- a/acceptance/bundle/resources/permissions/pipelines/update/out.plan_delete_one.direct.json +++ b/acceptance/bundle/resources/permissions/pipelines/update/out.plan_delete_one.direct.json @@ -6,15 +6,6 @@ "plan": { "resources.pipelines.foo": { "action": "skip", - "prior_state": { - "channel": "CURRENT", - "deployment": { - "kind": "BUNDLE", - "metadata_file_path": "/Workspace/Users/[USERNAME]/.bundle/permissions-test/default/state/metadata.json" - }, - "edition": "ADVANCED", - "name": "foo" - }, "remote_state": { "channel": "CURRENT", "creator_user_name": "[USERNAME]", @@ -63,23 +54,6 @@ ] } }, - "prior_state": { - "object_id": "/pipelines/[FOO_ID]", - "__embed__": [ - { - "level": "CAN_MANAGE", - "user_name": "viewer@example.com" - }, - { - "level": "CAN_MANAGE", - "group_name": "data-team" - }, - { - "level": "IS_OWNER", - "user_name": "[USERNAME]" - } - ] - }, "remote_state": { "object_id": "/pipelines/[FOO_ID]", "__embed__": [ diff --git a/acceptance/bundle/resources/permissions/pipelines/update/out.plan_restore.direct.json b/acceptance/bundle/resources/permissions/pipelines/update/out.plan_restore.direct.json index 68f258bb0cb..7e20625e706 100644 --- a/acceptance/bundle/resources/permissions/pipelines/update/out.plan_restore.direct.json +++ b/acceptance/bundle/resources/permissions/pipelines/update/out.plan_restore.direct.json @@ -6,15 +6,6 @@ "plan": { "resources.pipelines.foo": { "action": "skip", - "prior_state": { - "channel": "CURRENT", - "deployment": { - "kind": "BUNDLE", - "metadata_file_path": "/Workspace/Users/[USERNAME]/.bundle/permissions-test/default/state/metadata.json" - }, - "edition": "ADVANCED", - "name": "foo" - }, "remote_state": { "channel": "CURRENT", "creator_user_name": "[USERNAME]", diff --git a/acceptance/bundle/resources/permissions/pipelines/update/out.plan_update.direct.json b/acceptance/bundle/resources/permissions/pipelines/update/out.plan_update.direct.json index f3bc1726c5c..f4419563280 100644 --- a/acceptance/bundle/resources/permissions/pipelines/update/out.plan_update.direct.json +++ b/acceptance/bundle/resources/permissions/pipelines/update/out.plan_update.direct.json @@ -6,15 +6,6 @@ "plan": { "resources.pipelines.foo": { "action": "skip", - "prior_state": { - "channel": "CURRENT", - "deployment": { - "kind": "BUNDLE", - "metadata_file_path": "/Workspace/Users/[USERNAME]/.bundle/permissions-test/default/state/metadata.json" - }, - "edition": "ADVANCED", - "name": "foo" - }, "remote_state": { "channel": "CURRENT", "creator_user_name": "[USERNAME]", @@ -67,23 +58,6 @@ ] } }, - "prior_state": { - "object_id": "/pipelines/[FOO_ID]", - "__embed__": [ - { - "level": "CAN_VIEW", - "user_name": "viewer@example.com" - }, - { - "level": "CAN_MANAGE", - "group_name": "data-team" - }, - { - "level": "IS_OWNER", - "user_name": "[USERNAME]" - } - ] - }, "remote_state": { "object_id": "/pipelines/[FOO_ID]", "__embed__": [ diff --git a/acceptance/bundle/resources/pipelines/recreate-keys/change-ingestion-definition/out.plan_recreate.direct.json b/acceptance/bundle/resources/pipelines/recreate-keys/change-ingestion-definition/out.plan_recreate.direct.json index c568ca2e7c1..a2bf3b724c7 100644 --- a/acceptance/bundle/resources/pipelines/recreate-keys/change-ingestion-definition/out.plan_recreate.direct.json +++ b/acceptance/bundle/resources/pipelines/recreate-keys/change-ingestion-definition/out.plan_recreate.direct.json @@ -30,28 +30,6 @@ "name": "test-pipeline-[UNIQUE_NAME]" } }, - "prior_state": { - "channel": "CURRENT", - "deployment": { - "kind": "BUNDLE", - "metadata_file_path": "/Workspace/Users/[USERNAME]/.bundle/acc-[UNIQUE_NAME]/default/state/metadata.json" - }, - "edition": "ADVANCED", - "ingestion_definition": { - "connection_name": "my_connection", - "objects": [ - {} - ] - }, - "libraries": [ - { - "file": { - "path": "/Workspace/Users/[USERNAME]/.bundle/acc-[UNIQUE_NAME]/default/files/foo.py" - } - } - ], - "name": "test-pipeline-[UNIQUE_NAME]" - }, "remote_state": { "channel": "CURRENT", "creator_user_name": "[USERNAME]", diff --git a/acceptance/bundle/resources/pipelines/recreate-keys/change-storage/out.plan_recreate.direct.json b/acceptance/bundle/resources/pipelines/recreate-keys/change-storage/out.plan_recreate.direct.json index 6ae78e1c24f..6987c3ad761 100644 --- a/acceptance/bundle/resources/pipelines/recreate-keys/change-storage/out.plan_recreate.direct.json +++ b/acceptance/bundle/resources/pipelines/recreate-keys/change-storage/out.plan_recreate.direct.json @@ -25,23 +25,6 @@ "storage": "dbfs:/pipelines/newcustom" } }, - "prior_state": { - "channel": "CURRENT", - "deployment": { - "kind": "BUNDLE", - "metadata_file_path": "/Workspace/Users/[USERNAME]/.bundle/acc-[UNIQUE_NAME]/default/state/metadata.json" - }, - "edition": "ADVANCED", - "libraries": [ - { - "file": { - "path": "/Workspace/Users/[USERNAME]/.bundle/acc-[UNIQUE_NAME]/default/files/foo.py" - } - } - ], - "name": "test-pipeline-[UNIQUE_NAME]", - "storage": "dbfs:/pipelines/custom" - }, "remote_state": { "channel": "CURRENT", "creator_user_name": "[USERNAME]", diff --git a/acceptance/bundle/resources/postgres_branches/update_protected/out.plan.no_change.direct.json b/acceptance/bundle/resources/postgres_branches/update_protected/out.plan.no_change.direct.json index 1c51b0ede64..35984abba61 100644 --- a/acceptance/bundle/resources/postgres_branches/update_protected/out.plan.no_change.direct.json +++ b/acceptance/bundle/resources/postgres_branches/update_protected/out.plan.no_change.direct.json @@ -6,12 +6,6 @@ } ], "action": "skip", - "prior_state": { - "branch_id": "dev-branch", - "is_protected": false, - "no_expiry": true, - "parent": "projects/test-pg-proj-[UNIQUE_NAME]" - }, "remote_state": { "branch_id": "dev-branch", "create_time": "[TIMESTAMP]", diff --git a/acceptance/bundle/resources/postgres_branches/update_protected/out.plan.restore.direct.json b/acceptance/bundle/resources/postgres_branches/update_protected/out.plan.restore.direct.json index 60c15a7086b..8c543fd4230 100644 --- a/acceptance/bundle/resources/postgres_branches/update_protected/out.plan.restore.direct.json +++ b/acceptance/bundle/resources/postgres_branches/update_protected/out.plan.restore.direct.json @@ -14,12 +14,6 @@ "parent": "projects/test-pg-proj-[UNIQUE_NAME]" } }, - "prior_state": { - "branch_id": "dev-branch", - "is_protected": true, - "no_expiry": true, - "parent": "projects/test-pg-proj-[UNIQUE_NAME]" - }, "remote_state": { "branch_id": "dev-branch", "create_time": "[TIMESTAMP]", diff --git a/acceptance/bundle/resources/postgres_branches/update_protected/out.plan.update.direct.json b/acceptance/bundle/resources/postgres_branches/update_protected/out.plan.update.direct.json index ed261050672..d05e254629a 100644 --- a/acceptance/bundle/resources/postgres_branches/update_protected/out.plan.update.direct.json +++ b/acceptance/bundle/resources/postgres_branches/update_protected/out.plan.update.direct.json @@ -14,12 +14,6 @@ "parent": "projects/test-pg-proj-[UNIQUE_NAME]" } }, - "prior_state": { - "branch_id": "dev-branch", - "is_protected": false, - "no_expiry": true, - "parent": "projects/test-pg-proj-[UNIQUE_NAME]" - }, "remote_state": { "branch_id": "dev-branch", "create_time": "[TIMESTAMP]", diff --git a/acceptance/bundle/resources/postgres_databases/update/out.plan.no_change.direct.json b/acceptance/bundle/resources/postgres_databases/update/out.plan.no_change.direct.json index f0f2828c786..29c2d77a396 100644 --- a/acceptance/bundle/resources/postgres_databases/update/out.plan.no_change.direct.json +++ b/acceptance/bundle/resources/postgres_databases/update/out.plan.no_change.direct.json @@ -10,12 +10,6 @@ } ], "action": "skip", - "prior_state": { - "database_id": "my-database", - "parent": "projects/test-pg-proj-[UNIQUE_NAME]/branches/main", - "postgres_database": "initial_db_name", - "role": "projects/test-pg-proj-[UNIQUE_NAME]/branches/main/roles/app-owner" - }, "remote_state": { "create_time": "[TIMESTAMP]", "database_id": "my-database", diff --git a/acceptance/bundle/resources/postgres_databases/update/out.plan.restore.direct.json b/acceptance/bundle/resources/postgres_databases/update/out.plan.restore.direct.json index f4cc8ff7116..fdcd3a5c407 100644 --- a/acceptance/bundle/resources/postgres_databases/update/out.plan.restore.direct.json +++ b/acceptance/bundle/resources/postgres_databases/update/out.plan.restore.direct.json @@ -18,12 +18,6 @@ "role": "projects/test-pg-proj-[UNIQUE_NAME]/branches/main/roles/app-owner" } }, - "prior_state": { - "database_id": "my-database", - "parent": "projects/test-pg-proj-[UNIQUE_NAME]/branches/main", - "postgres_database": "renamed_db_name", - "role": "projects/test-pg-proj-[UNIQUE_NAME]/branches/main/roles/app-owner" - }, "remote_state": { "create_time": "[TIMESTAMP]", "database_id": "my-database", diff --git a/acceptance/bundle/resources/postgres_databases/update/out.plan.update.direct.json b/acceptance/bundle/resources/postgres_databases/update/out.plan.update.direct.json index 9fea72df7bd..07f974b0725 100644 --- a/acceptance/bundle/resources/postgres_databases/update/out.plan.update.direct.json +++ b/acceptance/bundle/resources/postgres_databases/update/out.plan.update.direct.json @@ -18,12 +18,6 @@ "role": "projects/test-pg-proj-[UNIQUE_NAME]/branches/main/roles/app-owner" } }, - "prior_state": { - "database_id": "my-database", - "parent": "projects/test-pg-proj-[UNIQUE_NAME]/branches/main", - "postgres_database": "initial_db_name", - "role": "projects/test-pg-proj-[UNIQUE_NAME]/branches/main/roles/app-owner" - }, "remote_state": { "create_time": "[TIMESTAMP]", "database_id": "my-database", diff --git a/acceptance/bundle/resources/postgres_endpoints/update_autoscaling/out.plan.no_change.direct.json b/acceptance/bundle/resources/postgres_endpoints/update_autoscaling/out.plan.no_change.direct.json index b733b310bba..a8d0e19c543 100644 --- a/acceptance/bundle/resources/postgres_endpoints/update_autoscaling/out.plan.no_change.direct.json +++ b/acceptance/bundle/resources/postgres_endpoints/update_autoscaling/out.plan.no_change.direct.json @@ -5,13 +5,5 @@ "label": "${resources.postgres_branches.main.id}" } ], - "action": "skip", - "prior_state": { - "autoscaling_limit_max_cu": 8, - "autoscaling_limit_min_cu": 0.5, - "endpoint_id": "my-endpoint", - "endpoint_type": "ENDPOINT_TYPE_READ_ONLY", - "parent": "projects/test-pg-proj-[UNIQUE_NAME]/branches/main", - "suspend_timeout_duration": "300s" - } + "action": "skip" } diff --git a/acceptance/bundle/resources/postgres_endpoints/update_autoscaling/out.plan.restore.direct.json b/acceptance/bundle/resources/postgres_endpoints/update_autoscaling/out.plan.restore.direct.json index 3ec46c967c8..080ab2d3b9d 100644 --- a/acceptance/bundle/resources/postgres_endpoints/update_autoscaling/out.plan.restore.direct.json +++ b/acceptance/bundle/resources/postgres_endpoints/update_autoscaling/out.plan.restore.direct.json @@ -16,14 +16,6 @@ "suspend_timeout_duration": "300s" } }, - "prior_state": { - "autoscaling_limit_max_cu": 4, - "autoscaling_limit_min_cu": 0.5, - "endpoint_id": "my-endpoint", - "endpoint_type": "ENDPOINT_TYPE_READ_ONLY", - "parent": "projects/test-pg-proj-[UNIQUE_NAME]/branches/main", - "suspend_timeout_duration": "300s" - }, "changes": { "autoscaling_limit_max_cu": { "action": "update", diff --git a/acceptance/bundle/resources/postgres_endpoints/update_autoscaling/out.plan.update.direct.json b/acceptance/bundle/resources/postgres_endpoints/update_autoscaling/out.plan.update.direct.json index 3fe5ce301b5..018d27c54ac 100644 --- a/acceptance/bundle/resources/postgres_endpoints/update_autoscaling/out.plan.update.direct.json +++ b/acceptance/bundle/resources/postgres_endpoints/update_autoscaling/out.plan.update.direct.json @@ -16,14 +16,6 @@ "suspend_timeout_duration": "300s" } }, - "prior_state": { - "autoscaling_limit_max_cu": 8, - "autoscaling_limit_min_cu": 0.5, - "endpoint_id": "my-endpoint", - "endpoint_type": "ENDPOINT_TYPE_READ_ONLY", - "parent": "projects/test-pg-proj-[UNIQUE_NAME]/branches/main", - "suspend_timeout_duration": "300s" - }, "changes": { "autoscaling_limit_max_cu": { "action": "update", diff --git a/acceptance/bundle/resources/postgres_projects/update_display_name/out.plan.no_change.direct.json b/acceptance/bundle/resources/postgres_projects/update_display_name/out.plan.no_change.direct.json index 4265d9ea3b1..f5fe890073b 100644 --- a/acceptance/bundle/resources/postgres_projects/update_display_name/out.plan.no_change.direct.json +++ b/acceptance/bundle/resources/postgres_projects/update_display_name/out.plan.no_change.direct.json @@ -1,16 +1,5 @@ { "action": "skip", - "prior_state": { - "default_endpoint_settings": { - "autoscaling_limit_max_cu": 4, - "autoscaling_limit_min_cu": 0.5, - "suspend_timeout_duration": "300s" - }, - "display_name": "Original Name", - "history_retention_duration": "604800s", - "pg_version": 16, - "project_id": "test-pg-proj-[UNIQUE_NAME]" - }, "remote_state": { "create_time": "[TIMESTAMP]", "default_endpoint_settings": { diff --git a/acceptance/bundle/resources/postgres_projects/update_display_name/out.plan.restore.direct.json b/acceptance/bundle/resources/postgres_projects/update_display_name/out.plan.restore.direct.json index 1fbb3512365..b7db638b8bf 100644 --- a/acceptance/bundle/resources/postgres_projects/update_display_name/out.plan.restore.direct.json +++ b/acceptance/bundle/resources/postgres_projects/update_display_name/out.plan.restore.direct.json @@ -13,17 +13,6 @@ "project_id": "test-pg-proj-[UNIQUE_NAME]" } }, - "prior_state": { - "default_endpoint_settings": { - "autoscaling_limit_max_cu": 4, - "autoscaling_limit_min_cu": 0.5, - "suspend_timeout_duration": "300s" - }, - "display_name": "Updated Name", - "history_retention_duration": "604800s", - "pg_version": 16, - "project_id": "test-pg-proj-[UNIQUE_NAME]" - }, "remote_state": { "create_time": "[TIMESTAMP]", "default_endpoint_settings": { diff --git a/acceptance/bundle/resources/postgres_projects/update_display_name/out.plan.update.direct.json b/acceptance/bundle/resources/postgres_projects/update_display_name/out.plan.update.direct.json index e49e5396f68..b53d02beefd 100644 --- a/acceptance/bundle/resources/postgres_projects/update_display_name/out.plan.update.direct.json +++ b/acceptance/bundle/resources/postgres_projects/update_display_name/out.plan.update.direct.json @@ -13,17 +13,6 @@ "project_id": "test-pg-proj-[UNIQUE_NAME]" } }, - "prior_state": { - "default_endpoint_settings": { - "autoscaling_limit_max_cu": 4, - "autoscaling_limit_min_cu": 0.5, - "suspend_timeout_duration": "300s" - }, - "display_name": "Original Name", - "history_retention_duration": "604800s", - "pg_version": 16, - "project_id": "test-pg-proj-[UNIQUE_NAME]" - }, "remote_state": { "create_time": "[TIMESTAMP]", "default_endpoint_settings": { diff --git a/acceptance/bundle/resources/postgres_roles/update/out.plan.no_change.direct.json b/acceptance/bundle/resources/postgres_roles/update/out.plan.no_change.direct.json index dfbc71da4a7..ec34567c0b6 100644 --- a/acceptance/bundle/resources/postgres_roles/update/out.plan.no_change.direct.json +++ b/acceptance/bundle/resources/postgres_roles/update/out.plan.no_change.direct.json @@ -6,14 +6,6 @@ } ], "action": "skip", - "prior_state": { - "attributes": { - "createdb": false - }, - "parent": "projects/test-pg-proj-[UNIQUE_NAME]/branches/main", - "postgres_role": "app_role", - "role_id": "test-role" - }, "remote_state": { "attributes": { "createdb": false diff --git a/acceptance/bundle/resources/postgres_roles/update/out.plan.restore.direct.json b/acceptance/bundle/resources/postgres_roles/update/out.plan.restore.direct.json index 20a6c44f0f4..d27c44c829b 100644 --- a/acceptance/bundle/resources/postgres_roles/update/out.plan.restore.direct.json +++ b/acceptance/bundle/resources/postgres_roles/update/out.plan.restore.direct.json @@ -16,14 +16,6 @@ "role_id": "test-role" } }, - "prior_state": { - "attributes": { - "createdb": true - }, - "parent": "projects/test-pg-proj-[UNIQUE_NAME]/branches/main", - "postgres_role": "app_role", - "role_id": "test-role" - }, "remote_state": { "attributes": { "createdb": true diff --git a/acceptance/bundle/resources/postgres_roles/update/out.plan.update.direct.json b/acceptance/bundle/resources/postgres_roles/update/out.plan.update.direct.json index 6879afb5da4..908d69a00c6 100644 --- a/acceptance/bundle/resources/postgres_roles/update/out.plan.update.direct.json +++ b/acceptance/bundle/resources/postgres_roles/update/out.plan.update.direct.json @@ -16,14 +16,6 @@ "role_id": "test-role" } }, - "prior_state": { - "attributes": { - "createdb": false - }, - "parent": "projects/test-pg-proj-[UNIQUE_NAME]/branches/main", - "postgres_role": "app_role", - "role_id": "test-role" - }, "remote_state": { "attributes": { "createdb": false diff --git a/acceptance/bundle/resources/quality_monitors/change_assets_dir/out.plan.direct.json b/acceptance/bundle/resources/quality_monitors/change_assets_dir/out.plan.direct.json index fdade720954..e840a5f3161 100644 --- a/acceptance/bundle/resources/quality_monitors/change_assets_dir/out.plan.direct.json +++ b/acceptance/bundle/resources/quality_monitors/change_assets_dir/out.plan.direct.json @@ -17,13 +17,6 @@ "warehouse_id": "[TEST_DEFAULT_WAREHOUSE_ID]" } }, - "prior_state": { - "assets_dir": "/Workspace/Users/[USERNAME]/monitor_assets_[UNIQUE_NAME]", - "output_schema_name": "main.qm_test_[UNIQUE_NAME]", - "snapshot": {}, - "table_name": "main.qm_test_[UNIQUE_NAME].test_table", - "warehouse_id": "[TEST_DEFAULT_WAREHOUSE_ID]" - }, "remote_state": { "assets_dir": "/Workspace/Users/[USERNAME]/monitor_assets_[UNIQUE_NAME]", "dashboard_id": "(redacted)", diff --git a/acceptance/bundle/resources/quality_monitors/change_output_schema_name/out.plan.direct.json b/acceptance/bundle/resources/quality_monitors/change_output_schema_name/out.plan.direct.json index b716b14c150..cfaff9efccb 100644 --- a/acceptance/bundle/resources/quality_monitors/change_output_schema_name/out.plan.direct.json +++ b/acceptance/bundle/resources/quality_monitors/change_output_schema_name/out.plan.direct.json @@ -15,13 +15,6 @@ "warehouse_id": "[TEST_DEFAULT_WAREHOUSE_ID]" } }, - "prior_state": { - "assets_dir": "/Workspace/Users/[USERNAME]/monitor_assets_[UNIQUE_NAME]", - "output_schema_name": "main.qm_test_[UNIQUE_NAME]", - "snapshot": {}, - "table_name": "main.qm_test_[UNIQUE_NAME].test_table", - "warehouse_id": "[TEST_DEFAULT_WAREHOUSE_ID]" - }, "remote_state": { "assets_dir": "/Workspace/Users/[USERNAME]/monitor_assets_[UNIQUE_NAME]", "dashboard_id": "(redacted)", diff --git a/acceptance/bundle/resources/quality_monitors/change_table_name/out.plan.direct.json b/acceptance/bundle/resources/quality_monitors/change_table_name/out.plan.direct.json index c8010d3e3be..9b233a1fdbb 100644 --- a/acceptance/bundle/resources/quality_monitors/change_table_name/out.plan.direct.json +++ b/acceptance/bundle/resources/quality_monitors/change_table_name/out.plan.direct.json @@ -17,13 +17,6 @@ "warehouse_id": "[TEST_DEFAULT_WAREHOUSE_ID]" } }, - "prior_state": { - "assets_dir": "/Workspace/Users/[USERNAME]/monitor_assets_[UNIQUE_NAME]", - "output_schema_name": "main.qm_test_[UNIQUE_NAME]", - "snapshot": {}, - "table_name": "main.qm_test_[UNIQUE_NAME].test_table", - "warehouse_id": "[TEST_DEFAULT_WAREHOUSE_ID]" - }, "remote_state": { "assets_dir": "/Workspace/Users/[USERNAME]/monitor_assets_[UNIQUE_NAME]", "dashboard_id": "(redacted)", diff --git a/acceptance/bundle/resources/quality_monitors/create/out.plan_noop.direct.json b/acceptance/bundle/resources/quality_monitors/create/out.plan_noop.direct.json index 1a85fc4114c..bb26c592f1d 100644 --- a/acceptance/bundle/resources/quality_monitors/create/out.plan_noop.direct.json +++ b/acceptance/bundle/resources/quality_monitors/create/out.plan_noop.direct.json @@ -6,13 +6,6 @@ "plan": { "resources.quality_monitors.monitor1": { "action": "skip", - "prior_state": { - "assets_dir": "/Workspace/Users/[USERNAME]/monitor_assets_[UNIQUE_NAME]", - "output_schema_name": "main.qm_test_[UNIQUE_NAME]", - "snapshot": {}, - "table_name": "main.qm_test_[UNIQUE_NAME].test_table", - "warehouse_id": "[TEST_DEFAULT_WAREHOUSE_ID]" - }, "remote_state": { "assets_dir": "/Workspace/Users/[USERNAME]/monitor_assets_[UNIQUE_NAME]", "dashboard_id": "(redacted)", diff --git a/acceptance/bundle/resources/secret_scopes/basic/out.plan2.direct.txt b/acceptance/bundle/resources/secret_scopes/basic/out.plan2.direct.txt index 12761c51d57..44b7e2831ca 100644 --- a/acceptance/bundle/resources/secret_scopes/basic/out.plan2.direct.txt +++ b/acceptance/bundle/resources/secret_scopes/basic/out.plan2.direct.txt @@ -5,8 +5,6 @@ json.serial = 1; json.plan.resources.secret_scopes.my_scope.action = "recreate"; json.plan.resources.secret_scopes.my_scope.new_state.value.scope = "test-scope-[UNIQUE_NAME]-2"; json.plan.resources.secret_scopes.my_scope.new_state.value.scope_backend_type = "DATABRICKS"; -json.plan.resources.secret_scopes.my_scope.prior_state.scope = "test-scope-[UNIQUE_NAME]-1"; -json.plan.resources.secret_scopes.my_scope.prior_state.scope_backend_type = "DATABRICKS"; json.plan.resources.secret_scopes.my_scope.remote_state.backend_type = "DATABRICKS"; json.plan.resources.secret_scopes.my_scope.remote_state.name = "test-scope-[UNIQUE_NAME]-1"; json.plan.resources.secret_scopes.my_scope.changes.scope.action = "recreate"; @@ -23,11 +21,6 @@ json.plan.resources.secret_scopes.my_scope.permissions.new_state.value.acls[0].p json.plan.resources.secret_scopes.my_scope.permissions.new_state.value.acls[1].permission = "WRITE"; json.plan.resources.secret_scopes.my_scope.permissions.new_state.value.acls[1].principal = "deco-test-user@databricks.com"; json.plan.resources.secret_scopes.my_scope.permissions.new_state.vars.scope_name = "${resources.secret_scopes.my_scope.name}"; -json.plan.resources.secret_scopes.my_scope.permissions.prior_state.scope_name = "test-scope-[UNIQUE_NAME]-1"; -json.plan.resources.secret_scopes.my_scope.permissions.prior_state.acls[0].permission = "MANAGE"; -json.plan.resources.secret_scopes.my_scope.permissions.prior_state.acls[0].principal = "[USERNAME]"; -json.plan.resources.secret_scopes.my_scope.permissions.prior_state.acls[1].permission = "WRITE"; -json.plan.resources.secret_scopes.my_scope.permissions.prior_state.acls[1].principal = "deco-test-user@databricks.com"; json.plan.resources.secret_scopes.my_scope.permissions.remote_state.scope_name = "test-scope-[UNIQUE_NAME]-1"; json.plan.resources.secret_scopes.my_scope.permissions.remote_state.acls[0].permission = "MANAGE"; json.plan.resources.secret_scopes.my_scope.permissions.remote_state.acls[0].principal = "[USERNAME]"; diff --git a/acceptance/bundle/resources/secret_scopes/basic/out.plan_verify_no_drift.direct.txt b/acceptance/bundle/resources/secret_scopes/basic/out.plan_verify_no_drift.direct.txt index b852f8d79b4..8745d467735 100644 --- a/acceptance/bundle/resources/secret_scopes/basic/out.plan_verify_no_drift.direct.txt +++ b/acceptance/bundle/resources/secret_scopes/basic/out.plan_verify_no_drift.direct.txt @@ -3,18 +3,11 @@ json.cli_version = "[CLI_VERSION]"; json.lineage = "[UUID]"; json.serial = 2; json.plan.resources.secret_scopes.my_scope.action = "skip"; -json.plan.resources.secret_scopes.my_scope.prior_state.scope = "test-scope-[UNIQUE_NAME]-2"; -json.plan.resources.secret_scopes.my_scope.prior_state.scope_backend_type = "DATABRICKS"; json.plan.resources.secret_scopes.my_scope.remote_state.backend_type = "DATABRICKS"; json.plan.resources.secret_scopes.my_scope.remote_state.name = "test-scope-[UNIQUE_NAME]-2"; json.plan.resources.secret_scopes.my_scope.permissions.depends_on[0].node = "resources.secret_scopes.my_scope"; json.plan.resources.secret_scopes.my_scope.permissions.depends_on[0].label = "${resources.secret_scopes.my_scope.name}"; json.plan.resources.secret_scopes.my_scope.permissions.action = "skip"; -json.plan.resources.secret_scopes.my_scope.permissions.prior_state.scope_name = "test-scope-[UNIQUE_NAME]-2"; -json.plan.resources.secret_scopes.my_scope.permissions.prior_state.acls[0].permission = "MANAGE"; -json.plan.resources.secret_scopes.my_scope.permissions.prior_state.acls[0].principal = "[USERNAME]"; -json.plan.resources.secret_scopes.my_scope.permissions.prior_state.acls[1].permission = "WRITE"; -json.plan.resources.secret_scopes.my_scope.permissions.prior_state.acls[1].principal = "deco-test-user@databricks.com"; json.plan.resources.secret_scopes.my_scope.permissions.remote_state.scope_name = "test-scope-[UNIQUE_NAME]-2"; json.plan.resources.secret_scopes.my_scope.permissions.remote_state.acls[0].permission = "MANAGE"; json.plan.resources.secret_scopes.my_scope.permissions.remote_state.acls[0].principal = "[USERNAME]"; diff --git a/acceptance/bundle/resources/vector_search_indexes/recreate/with_endpoint/output.txt b/acceptance/bundle/resources/vector_search_indexes/recreate/with_endpoint/output.txt index 3b1a37fe65d..5272e7695c5 100644 --- a/acceptance/bundle/resources/vector_search_indexes/recreate/with_endpoint/output.txt +++ b/acceptance/bundle/resources/vector_search_indexes/recreate/with_endpoint/output.txt @@ -29,10 +29,6 @@ Plan: 1 to add, 0 to change, 1 to delete, 1 unchanged "name": "vs-endpoint-[UNIQUE_NAME]" } }, - "prior_state": { - "endpoint_type": "STANDARD", - "name": "vs-endpoint-[UNIQUE_NAME]" - }, "remote_state": { "creation_timestamp": [UNIX_TIME_MILLIS][0], "creator": "[USERNAME]", @@ -65,22 +61,6 @@ Plan: 1 to add, 0 to change, 1 to delete, 1 unchanged } ], "action": "skip", - "prior_state": { - "direct_access_index_spec": { - "embedding_vector_columns": [ - { - "embedding_dimension": 768, - "name": "vector" - } - ], - "schema_json": "{\"id\":\"integer\",\"vector\":\"array\u003cfloat\u003e\"}" - }, - "endpoint_name": "vs-endpoint-[UNIQUE_NAME]", - "endpoint_uuid": "[UUID]", - "index_type": "DIRECT_ACCESS", - "name": "main.default.vs_index_[UNIQUE_NAME]", - "primary_key": "id" - }, "remote_state": { "creator": "[USERNAME]", "direct_access_index_spec": { diff --git a/acceptance/bundle/resources/volumes/change-name/out.plan.direct.json b/acceptance/bundle/resources/volumes/change-name/out.plan.direct.json index d88d7fed310..68e26c30d44 100644 --- a/acceptance/bundle/resources/volumes/change-name/out.plan.direct.json +++ b/acceptance/bundle/resources/volumes/change-name/out.plan.direct.json @@ -15,13 +15,6 @@ "volume_type": "MANAGED" } }, - "prior_state": { - "catalog_name": "main", - "comment": "COMMENT1", - "name": "myvolume", - "schema_name": "myschema", - "volume_type": "MANAGED" - }, "remote_state": { "catalog_name": "main", "comment": "COMMENT1", diff --git a/acceptance/bundle/state/permission_level_migration/out.plan.direct.json b/acceptance/bundle/state/permission_level_migration/out.plan.direct.json index c0d3e3011a2..33d6194c91e 100644 --- a/acceptance/bundle/state/permission_level_migration/out.plan.direct.json +++ b/acceptance/bundle/state/permission_level_migration/out.plan.direct.json @@ -20,19 +20,6 @@ "enabled": true } } - }, - "prior_state": { - "deployment": { - "kind": "BUNDLE", - "metadata_file_path": "/Workspace/Users/[USERNAME]/.bundle/test-bundle/default/state/metadata.json" - }, - "edit_mode": "UI_LOCKED", - "format": "MULTI_TASK", - "max_concurrent_runs": 1, - "name": "my job", - "queue": { - "enabled": true - } } }, "resources.jobs.my_job.permissions": { @@ -61,19 +48,6 @@ "object_id": "/jobs/${resources.jobs.my_job.id}" } }, - "prior_state": { - "object_id": "/jobs/123", - "__embed__": [ - { - "level": "CAN_VIEW", - "group_name": "viewers" - }, - { - "level": "IS_OWNER", - "user_name": "[USERNAME]" - } - ] - }, "remote_state": { "object_id": "/jobs/123" }, diff --git a/acceptance/bundle/templates/default-python/classic/out.plan_after_deploy_dev.direct.json b/acceptance/bundle/templates/default-python/classic/out.plan_after_deploy_dev.direct.json index 0b2ea803fd1..49c706fc239 100644 --- a/acceptance/bundle/templates/default-python/classic/out.plan_after_deploy_dev.direct.json +++ b/acceptance/bundle/templates/default-python/classic/out.plan_after_deploy_dev.direct.json @@ -110,102 +110,6 @@ } } }, - "prior_state": { - "deployment": { - "kind": "BUNDLE", - "metadata_file_path": "/Workspace/Users/[USERNAME]/.bundle/my_default_python/dev/state/metadata.json" - }, - "edit_mode": "UI_LOCKED", - "format": "MULTI_TASK", - "job_clusters": [ - { - "job_cluster_key": "job_cluster", - "new_cluster": { - "autoscale": { - "max_workers": 4, - "min_workers": 1 - }, - "data_security_mode": "DATA_SECURITY_MODE_AUTO", - "node_type_id": "[NODE_TYPE_ID]", - "spark_version": "16.4.x-scala2.12" - } - } - ], - "max_concurrent_runs": 4, - "name": "[dev [USERNAME]] sample_job", - "parameters": [ - { - "default": "hive_metastore", - "name": "catalog" - }, - { - "default": "[USERNAME]", - "name": "schema" - } - ], - "queue": { - "enabled": true - }, - "tags": { - "dev": "[USERNAME]" - }, - "tasks": [ - { - "job_cluster_key": "job_cluster", - "libraries": [ - { - "whl": "/Workspace/Users/[USERNAME]/.bundle/my_default_python/dev/artifacts/.internal/my_default_python-0.0.1+[UNIX_TIME_NANOS][1]-py3-none-any.whl" - } - ], - "notebook_task": { - "notebook_path": "/Workspace/Users/[USERNAME]/.bundle/my_default_python/dev/files/src/sample_notebook" - }, - "task_key": "notebook_task" - }, - { - "depends_on": [ - { - "task_key": "notebook_task" - } - ], - "job_cluster_key": "job_cluster", - "libraries": [ - { - "whl": "/Workspace/Users/[USERNAME]/.bundle/my_default_python/dev/artifacts/.internal/my_default_python-0.0.1+[UNIX_TIME_NANOS][1]-py3-none-any.whl" - } - ], - "python_wheel_task": { - "entry_point": "main", - "package_name": "my_default_python", - "parameters": [ - "--catalog", - "hive_metastore", - "--schema", - "[USERNAME]" - ] - }, - "task_key": "python_wheel_task" - }, - { - "depends_on": [ - { - "task_key": "notebook_task" - } - ], - "pipeline_task": { - "pipeline_id": "[UUID]" - }, - "task_key": "refresh_pipeline" - } - ], - "trigger": { - "pause_status": "PAUSED", - "periodic": { - "interval": 1, - "unit": "DAYS" - } - } - }, "remote_state": { "created_time": [UNIX_TIME_MILLIS][0], "creator_user_name": "[USERNAME]", @@ -401,33 +305,6 @@ }, "resources.pipelines.my_default_python_etl": { "action": "skip", - "prior_state": { - "channel": "CURRENT", - "deployment": { - "kind": "BUNDLE", - "metadata_file_path": "/Workspace/Users/[USERNAME]/.bundle/my_default_python/dev/state/metadata.json" - }, - "development": true, - "edition": "ADVANCED", - "environment": { - "dependencies": [ - "--editable /Workspace/Users/[USERNAME]/.bundle/my_default_python/dev/files" - ] - }, - "libraries": [ - { - "glob": { - "include": "/Workspace/Users/[USERNAME]/.bundle/my_default_python/dev/files/src/my_default_python_etl/transformations/**" - } - } - ], - "name": "[dev [USERNAME]] my_default_python_etl", - "root_path": "/Workspace/Users/[USERNAME]/.bundle/my_default_python/dev/files/src/my_default_python_etl", - "schema": "[USERNAME]", - "tags": { - "dev": "[USERNAME]" - } - }, "remote_state": { "channel": "CURRENT", "creator_user_name": "[USERNAME]", diff --git a/acceptance/bundle/templates/default-python/classic/out.plan_after_deploy_prod.direct.json b/acceptance/bundle/templates/default-python/classic/out.plan_after_deploy_prod.direct.json index 439b0d40b8c..30918164e2c 100644 --- a/acceptance/bundle/templates/default-python/classic/out.plan_after_deploy_prod.direct.json +++ b/acceptance/bundle/templates/default-python/classic/out.plan_after_deploy_prod.direct.json @@ -12,99 +12,6 @@ } ], "action": "skip", - "prior_state": { - "deployment": { - "kind": "BUNDLE", - "metadata_file_path": "/Workspace/Users/[USERNAME]/.bundle/my_default_python/prod/state/metadata.json" - }, - "edit_mode": "UI_LOCKED", - "format": "MULTI_TASK", - "job_clusters": [ - { - "job_cluster_key": "job_cluster", - "new_cluster": { - "autoscale": { - "max_workers": 4, - "min_workers": 1 - }, - "data_security_mode": "DATA_SECURITY_MODE_AUTO", - "node_type_id": "[NODE_TYPE_ID]", - "spark_version": "16.4.x-scala2.12" - } - } - ], - "max_concurrent_runs": 1, - "name": "sample_job", - "parameters": [ - { - "default": "hive_metastore", - "name": "catalog" - }, - { - "default": "prod", - "name": "schema" - } - ], - "queue": { - "enabled": true - }, - "tasks": [ - { - "job_cluster_key": "job_cluster", - "libraries": [ - { - "whl": "/Workspace/Users/[USERNAME]/.bundle/my_default_python/prod/artifacts/.internal/my_default_python-0.0.1-py3-none-any.whl" - } - ], - "notebook_task": { - "notebook_path": "/Workspace/Users/[USERNAME]/.bundle/my_default_python/prod/files/src/sample_notebook" - }, - "task_key": "notebook_task" - }, - { - "depends_on": [ - { - "task_key": "notebook_task" - } - ], - "job_cluster_key": "job_cluster", - "libraries": [ - { - "whl": "/Workspace/Users/[USERNAME]/.bundle/my_default_python/prod/artifacts/.internal/my_default_python-0.0.1-py3-none-any.whl" - } - ], - "python_wheel_task": { - "entry_point": "main", - "package_name": "my_default_python", - "parameters": [ - "--catalog", - "hive_metastore", - "--schema", - "prod" - ] - }, - "task_key": "python_wheel_task" - }, - { - "depends_on": [ - { - "task_key": "notebook_task" - } - ], - "pipeline_task": { - "pipeline_id": "[UUID]" - }, - "task_key": "refresh_pipeline" - } - ], - "trigger": { - "pause_status": "UNPAUSED", - "periodic": { - "interval": 1, - "unit": "DAYS" - } - } - }, "remote_state": { "created_time": [UNIX_TIME_MILLIS][0], "creator_user_name": "[USERNAME]", @@ -291,15 +198,6 @@ } ], "action": "skip", - "prior_state": { - "object_id": "/jobs/[NUMID]", - "__embed__": [ - { - "level": "IS_OWNER", - "user_name": "[USERNAME]" - } - ] - }, "remote_state": { "object_id": "/jobs/[NUMID]", "__embed__": [ @@ -312,29 +210,6 @@ }, "resources.pipelines.my_default_python_etl": { "action": "skip", - "prior_state": { - "channel": "CURRENT", - "deployment": { - "kind": "BUNDLE", - "metadata_file_path": "/Workspace/Users/[USERNAME]/.bundle/my_default_python/prod/state/metadata.json" - }, - "edition": "ADVANCED", - "environment": { - "dependencies": [ - "--editable /Workspace/Users/[USERNAME]/.bundle/my_default_python/prod/files" - ] - }, - "libraries": [ - { - "glob": { - "include": "/Workspace/Users/[USERNAME]/.bundle/my_default_python/prod/files/src/my_default_python_etl/transformations/**" - } - } - ], - "name": "my_default_python_etl", - "root_path": "/Workspace/Users/[USERNAME]/.bundle/my_default_python/prod/files/src/my_default_python_etl", - "schema": "prod" - }, "remote_state": { "channel": "CURRENT", "creator_user_name": "[USERNAME]", @@ -382,15 +257,6 @@ } ], "action": "skip", - "prior_state": { - "object_id": "/pipelines/[UUID]", - "__embed__": [ - { - "level": "IS_OWNER", - "user_name": "[USERNAME]" - } - ] - }, "remote_state": { "object_id": "/pipelines/[UUID]", "__embed__": [ diff --git a/acceptance/bundle/templates/default-python/serverless/out.plan_after_deploy_dev.direct.json b/acceptance/bundle/templates/default-python/serverless/out.plan_after_deploy_dev.direct.json index 3bb627c9d2b..992402b9e54 100644 --- a/acceptance/bundle/templates/default-python/serverless/out.plan_after_deploy_dev.direct.json +++ b/acceptance/bundle/templates/default-python/serverless/out.plan_after_deploy_dev.direct.json @@ -12,88 +12,6 @@ } ], "action": "skip", - "prior_state": { - "deployment": { - "kind": "BUNDLE", - "metadata_file_path": "/Workspace/Users/[USERNAME]/.bundle/my_default_python/dev/state/metadata.json" - }, - "edit_mode": "UI_LOCKED", - "environments": [ - { - "environment_key": "default", - "spec": { - "dependencies": [ - "/Workspace/Users/[USERNAME]/.bundle/my_default_python/dev/artifacts/.internal/my_default_python-0.0.1-py3-none-any.whl" - ], - "environment_version": "4" - } - } - ], - "format": "MULTI_TASK", - "max_concurrent_runs": 4, - "name": "[dev [USERNAME]] sample_job", - "parameters": [ - { - "default": "hive_metastore", - "name": "catalog" - }, - { - "default": "[USERNAME]", - "name": "schema" - } - ], - "queue": { - "enabled": true - }, - "tags": { - "dev": "[USERNAME]" - }, - "tasks": [ - { - "notebook_task": { - "notebook_path": "/Workspace/Users/[USERNAME]/.bundle/my_default_python/dev/files/src/sample_notebook" - }, - "task_key": "notebook_task" - }, - { - "depends_on": [ - { - "task_key": "notebook_task" - } - ], - "environment_key": "default", - "python_wheel_task": { - "entry_point": "main", - "package_name": "my_default_python", - "parameters": [ - "--catalog", - "hive_metastore", - "--schema", - "[USERNAME]" - ] - }, - "task_key": "python_wheel_task" - }, - { - "depends_on": [ - { - "task_key": "notebook_task" - } - ], - "pipeline_task": { - "pipeline_id": "[UUID]" - }, - "task_key": "refresh_pipeline" - } - ], - "trigger": { - "pause_status": "PAUSED", - "periodic": { - "interval": 1, - "unit": "DAYS" - } - } - }, "remote_state": { "created_time": [UNIX_TIME_MILLIS][0], "creator_user_name": "[USERNAME]", @@ -263,35 +181,6 @@ }, "resources.pipelines.my_default_python_etl": { "action": "skip", - "prior_state": { - "catalog": "main", - "channel": "CURRENT", - "deployment": { - "kind": "BUNDLE", - "metadata_file_path": "/Workspace/Users/[USERNAME]/.bundle/my_default_python/dev/state/metadata.json" - }, - "development": true, - "edition": "ADVANCED", - "environment": { - "dependencies": [ - "--editable /Workspace/Users/[USERNAME]/.bundle/my_default_python/dev/files" - ] - }, - "libraries": [ - { - "glob": { - "include": "/Workspace/Users/[USERNAME]/.bundle/my_default_python/dev/files/src/my_default_python_etl/transformations/**" - } - } - ], - "name": "[dev [USERNAME]] my_default_python_etl", - "root_path": "/Workspace/Users/[USERNAME]/.bundle/my_default_python/dev/files/src/my_default_python_etl", - "schema": "[USERNAME]", - "serverless": true, - "tags": { - "dev": "[USERNAME]" - } - }, "remote_state": { "catalog": "main", "channel": "CURRENT", diff --git a/acceptance/bundle/templates/default-python/serverless/out.plan_after_deploy_prod.direct.json b/acceptance/bundle/templates/default-python/serverless/out.plan_after_deploy_prod.direct.json index 3778afb2fec..6cb1b237e85 100644 --- a/acceptance/bundle/templates/default-python/serverless/out.plan_after_deploy_prod.direct.json +++ b/acceptance/bundle/templates/default-python/serverless/out.plan_after_deploy_prod.direct.json @@ -12,85 +12,6 @@ } ], "action": "skip", - "prior_state": { - "deployment": { - "kind": "BUNDLE", - "metadata_file_path": "/Workspace/Users/[USERNAME]/.bundle/my_default_python/prod/state/metadata.json" - }, - "edit_mode": "UI_LOCKED", - "environments": [ - { - "environment_key": "default", - "spec": { - "dependencies": [ - "/Workspace/Users/[USERNAME]/.bundle/my_default_python/prod/artifacts/.internal/my_default_python-0.0.1-py3-none-any.whl" - ], - "environment_version": "4" - } - } - ], - "format": "MULTI_TASK", - "max_concurrent_runs": 1, - "name": "sample_job", - "parameters": [ - { - "default": "hive_metastore", - "name": "catalog" - }, - { - "default": "prod", - "name": "schema" - } - ], - "queue": { - "enabled": true - }, - "tasks": [ - { - "notebook_task": { - "notebook_path": "/Workspace/Users/[USERNAME]/.bundle/my_default_python/prod/files/src/sample_notebook" - }, - "task_key": "notebook_task" - }, - { - "depends_on": [ - { - "task_key": "notebook_task" - } - ], - "environment_key": "default", - "python_wheel_task": { - "entry_point": "main", - "package_name": "my_default_python", - "parameters": [ - "--catalog", - "hive_metastore", - "--schema", - "prod" - ] - }, - "task_key": "python_wheel_task" - }, - { - "depends_on": [ - { - "task_key": "notebook_task" - } - ], - "pipeline_task": { - "pipeline_id": "[UUID]" - }, - "task_key": "refresh_pipeline" - } - ], - "trigger": { - "pause_status": "UNPAUSED", - "periodic": { - "interval": 1, - "unit": "DAYS" - } - } - }, "remote_state": { "created_time": [UNIX_TIME_MILLIS][0], "creator_user_name": "[USERNAME]", @@ -263,15 +184,6 @@ } ], "action": "skip", - "prior_state": { - "object_id": "/jobs/[NUMID]", - "__embed__": [ - { - "level": "IS_OWNER", - "user_name": "[USERNAME]" - } - ] - }, "remote_state": { "object_id": "/jobs/[NUMID]", "__embed__": [ @@ -284,31 +196,6 @@ }, "resources.pipelines.my_default_python_etl": { "action": "skip", - "prior_state": { - "catalog": "main", - "channel": "CURRENT", - "deployment": { - "kind": "BUNDLE", - "metadata_file_path": "/Workspace/Users/[USERNAME]/.bundle/my_default_python/prod/state/metadata.json" - }, - "edition": "ADVANCED", - "environment": { - "dependencies": [ - "--editable /Workspace/Users/[USERNAME]/.bundle/my_default_python/prod/files" - ] - }, - "libraries": [ - { - "glob": { - "include": "/Workspace/Users/[USERNAME]/.bundle/my_default_python/prod/files/src/my_default_python_etl/transformations/**" - } - } - ], - "name": "my_default_python_etl", - "root_path": "/Workspace/Users/[USERNAME]/.bundle/my_default_python/prod/files/src/my_default_python_etl", - "schema": "prod", - "serverless": true - }, "remote_state": { "catalog": "main", "channel": "CURRENT", @@ -350,15 +237,6 @@ } ], "action": "skip", - "prior_state": { - "object_id": "/pipelines/[UUID]", - "__embed__": [ - { - "level": "IS_OWNER", - "user_name": "[USERNAME]" - } - ] - }, "remote_state": { "object_id": "/pipelines/[UUID]", "__embed__": [ diff --git a/bundle/deployplan/plan.go b/bundle/deployplan/plan.go index e19dbb86aeb..030cc50315d 100644 --- a/bundle/deployplan/plan.go +++ b/bundle/deployplan/plan.go @@ -131,9 +131,12 @@ type PlanEntry struct { Gone bool `json:"gone,omitempty"` NewState *structvar.StructVarJSON `json:"new_state,omitempty"` - // PriorState is the last saved local state — always StateType. Populated for - // every previously-deployed resource in every plan mode. Consumers that need - // state-shaped data (prior grants principals, prior etag) read this. + // PriorState is the last saved local state — always StateType. Populated only + // when the planner did not read remote (--plan-mode=local); it serves as the + // state-shaped stand-in that apply-time consumers (removedGrantPrincipals, + // bind's etag lookup) fall back to when RemoteState is nil. In full mode a + // resource reaching Update has RemoteState set by construction, so PriorState + // would be unused and is omitted to keep the plan JSON compact. PriorState any `json:"prior_state,omitempty"` // RemoteState is a freshly-read remote state — RemoteType. Nil when the plan diff --git a/bundle/direct/bundle_plan.go b/bundle/direct/bundle_plan.go index 4394975aea6..805f7625da1 100644 --- a/bundle/direct/bundle_plan.go +++ b/bundle/direct/bundle_plan.go @@ -267,11 +267,15 @@ func (b *DeploymentBundle) CalculatePlan(ctx context.Context, client *databricks return false } - // PriorState is the last saved local state. It's the same value every - // consumer needs when they want "what did we think this looked like - // before this plan?" (drift classification, prior-grants removal, - // prior-etag reconciliation) — regardless of plan mode. - entry.PriorState = savedState + // PriorState is the last saved local state. It serves as the stand-in + // for remote when the planner does not read remote (--plan-mode=local): + // apply-time consumers like removedGrantPrincipals fall back to it when + // entry.RemoteState is nil. In full mode a resource that reaches Update + // action has RemoteState populated by construction, so PriorState is + // unused; we skip writing it to keep the plan JSON compact. + if skipsRemoteReads { + entry.PriorState = savedState + } var action deployplan.ActionType var remoteDiff []structdiff.Change From cf552a387e712e84bbfb5fe8b40ff7a73c6a0a0a Mon Sep 17 00:00:00 2001 From: Denis Bilenko Date: Wed, 22 Jul 2026 10:54:24 +0200 Subject: [PATCH 22/25] direct: return nil from ResourceMlflowModel.DoUpdate when RemoteState is nil MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Prior code returned a *MlflowModelRemote with empty model_id in local mode (because entry.RemoteState was nil, so the carry-forward yielded ""). But refreshRemoteState short-circuits when the returned remote is non-nil, so downstream references to ${resources.models.foo.model_id} resolved to empty. Return nil like DoCreate does: the engine will DoRead to populate the full state, including model_id. Also drop the unused RemoteOrPrior helper (and RemapStater interface) — the two consumers that would have used it inline the fallback directly. Co-authored-by: Isaac --- bundle/deployplan/plan.go | 20 -------------------- bundle/direct/dresources/model.go | 21 +++++++++------------ 2 files changed, 9 insertions(+), 32 deletions(-) diff --git a/bundle/deployplan/plan.go b/bundle/deployplan/plan.go index 030cc50315d..4ddbe27a268 100644 --- a/bundle/deployplan/plan.go +++ b/bundle/deployplan/plan.go @@ -149,26 +149,6 @@ type PlanEntry struct { Changes Changes `json:"changes,omitempty"` } -// RemapStater is the subset of dresources.Adapter that RemoteOrPrior needs. -// Declared here to keep bundle/deployplan free of a dresources import. -type RemapStater interface { - RemapState(remoteState any) (any, error) -} - -// RemoteOrPrior returns state-shaped data suitable for consumers that don't -// need remote-only fields. It prefers the freshly-remapped RemoteState when -// available (full mode, or when a reference fetch populated it); otherwise it -// falls back to PriorState (the last saved state). -// -// Returns (nil, nil) only when the resource was never deployed AND no remote -// was read — i.e. a Create action. -func (e *PlanEntry) RemoteOrPrior(adapter RemapStater) (any, error) { - if e.RemoteState != nil { - return adapter.RemapState(e.RemoteState) - } - return e.PriorState, nil -} - type DependsOnEntry struct { Node string `json:"node"` Label string `json:"label,omitempty"` diff --git a/bundle/direct/dresources/model.go b/bundle/direct/dresources/model.go index 623678f87c6..325fba780dd 100644 --- a/bundle/direct/dresources/model.go +++ b/bundle/direct/dresources/model.go @@ -92,17 +92,14 @@ func (r *ResourceMlflowModel) DoUpdate(ctx context.Context, id string, config *m return nil, errors.New("UpdateModel returned no registered_model") } - // Carry forward model_id from existing state since UpdateModelResponse doesn't include it. - // - // ModelId lives only on MlflowModelRemote — the state type (*ml.CreateModelRequest) - // does not carry it — so entry.PriorState cannot substitute here. In - // --plan-mode=local, entry.RemoteState is nil and modelId falls to "". If a - // same-run dependent references ${resources.models.foo.model_id} it resolves - // to empty in that mode; this is the same limitation as any remote-only - // reference field. The next plan (full mode) will refresh via DoRead. - var modelId string - if old, ok := entry.RemoteState.(*MlflowModelRemote); ok { - modelId = old.ModelId + // UpdateModelResponse doesn't include model_id. Normally we carry it forward + // from entry.RemoteState (populated by the plan-time DoRead). In + // --plan-mode=local there was no plan-time read, so return nil here; the + // engine's refreshRemoteState will then DoRead and populate the cache with + // the correct model_id for post-update reference resolution. + old, _ := entry.RemoteState.(*MlflowModelRemote) + if old == nil { + return nil, nil } // Id and PermissionLevel are left empty because ml.Model (the UpdateModel @@ -122,7 +119,7 @@ func (r *ResourceMlflowModel) DoUpdate(ctx context.Context, id string, config *m UserId: response.RegisteredModel.UserId, ForceSendFields: utils.FilterFields[ml.ModelDatabricks](response.RegisteredModel.ForceSendFields, "Id", "PermissionLevel"), }, - ModelId: modelId, + ModelId: old.ModelId, }, nil } From 06104eddffd51cd0b41e79715854059fc600aa1b Mon Sep 17 00:00:00 2001 From: Denis Bilenko Date: Wed, 22 Jul 2026 11:07:22 +0200 Subject: [PATCH 23/25] fmt: trailing newline in app_test.go after post-rebase edit Co-authored-by: Isaac --- bundle/direct/dresources/app_test.go | 1 - 1 file changed, 1 deletion(-) diff --git a/bundle/direct/dresources/app_test.go b/bundle/direct/dresources/app_test.go index dc01482b3f4..d28e8669484 100644 --- a/bundle/direct/dresources/app_test.go +++ b/bundle/direct/dresources/app_test.go @@ -201,4 +201,3 @@ func TestAppOverrideChangeDescActiveDeployment(t *testing.T) { }) } } - From 07629313c86413dad45e35d5ec65240e98d6aa5c Mon Sep 17 00:00:00 2001 From: Denis Bilenko Date: Wed, 22 Jul 2026 21:30:09 +0200 Subject: [PATCH 24/25] direct: rename --plan-mode=local to --planmode=offline MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Drop the middle-ground "local" mode; keep two: full (default) and offline. Offline resolves cross-resource references from saved state — source-side first (carry forward the last resolved value of the referring field), then per-reference target-side (read the target's saved state). No remote reads happen at plan time. Co-authored-by: Isaac --- acceptance/bundle/invariant/no_drift/script | 2 +- .../bundle/invariant/no_drift/test.toml | 8 +- acceptance/bundle/local/basic/output.txt | 26 ++-- acceptance/bundle/local/basic/script | 42 +++--- acceptance/bundle/local/basic/test.toml | 2 +- .../bundle/local/grants-remove/output.txt | 4 +- acceptance/bundle/local/grants-remove/script | 6 +- .../bundle/local/grants-remove/test.toml | 2 +- .../bundle/local/lifecycle-skip/output.txt | 4 +- acceptance/bundle/local/lifecycle-skip/script | 8 +- .../bundle/local/lifecycle-skip/test.toml | 2 +- .../local/references/databricks.yml.tmpl | 6 +- acceptance/bundle/local/references/output.txt | 24 +--- acceptance/bundle/local/references/script | 19 +-- acceptance/bundle/local/references/test.toml | 2 +- acceptance/bundle/local/rejected/output.txt | 22 +-- acceptance/bundle/local/rejected/script | 14 +- acceptance/bundle/local/rejected/test.toml | 2 +- .../resources/catalogs/basic/out.test.toml | 2 +- .../bundle/resources/catalogs/basic/test.toml | 6 +- .../catalogs/with-schemas/out.test.toml | 2 +- .../resources/catalogs/with-schemas/test.toml | 6 +- .../external_locations/out.test.toml | 2 +- .../resources/external_locations/test.toml | 6 +- .../resources/jobs/num_workers/out.test.toml | 2 +- .../resources/jobs/num_workers/test.toml | 12 +- .../resources/schemas/update/out.test.toml | 2 +- .../bundle/resources/schemas/update/test.toml | 12 +- .../volumes/change-name/out.test.toml | 2 +- .../resources/volumes/change-name/test.toml | 14 +- bundle/bundle.go | 2 +- bundle/deployplan/plan.go | 43 ++---- bundle/direct/bundle_plan.go | 129 ++++++++++++------ bundle/direct/dresources/adapter.go | 2 +- bundle/direct/dresources/app.go | 4 +- bundle/direct/dresources/app_test.go | 2 +- bundle/direct/dresources/cluster.go | 4 +- bundle/direct/dresources/grants.go | 4 +- bundle/direct/dresources/model.go | 2 +- bundle/direct/dresources/sql_warehouse.go | 4 +- bundle/metrics/metrics.go | 5 +- cmd/bundle/deploy.go | 4 +- cmd/bundle/plan.go | 4 +- cmd/bundle/utils/process.go | 12 +- 44 files changed, 248 insertions(+), 236 deletions(-) diff --git a/acceptance/bundle/invariant/no_drift/script b/acceptance/bundle/invariant/no_drift/script index 81d6e24a83b..5357c973f55 100644 --- a/acceptance/bundle/invariant/no_drift/script +++ b/acceptance/bundle/invariant/no_drift/script @@ -44,7 +44,7 @@ echo INPUT_CONFIG_OK # JSON plan asserts every action is "skip" -- a strict superset of the text # renderer's "Plan: 0 to add, 0 to change, 0 to delete" summary. -# LOCAL_DIFF is either empty or "--plan-mode=local"; the local mode ignores the remote +# LOCAL_DIFF is empty or "--planmode=offline"; offline mode ignores the remote # state of resources, so no drift means the local state saved by deploy matches config. $CLI bundle plan $LOCAL_DIFF -o json > LOG.planjson 2>LOG.planjson.err cat LOG.planjson.err | contains.py '!panic' '!internal error' > /dev/null diff --git a/acceptance/bundle/invariant/no_drift/test.toml b/acceptance/bundle/invariant/no_drift/test.toml index 5f86bd0d154..13a7ff6e87b 100644 --- a/acceptance/bundle/invariant/no_drift/test.toml +++ b/acceptance/bundle/invariant/no_drift/test.toml @@ -1,6 +1,6 @@ EnvMatrix.READPLAN = ["", "1"] -# Run every config twice: once planning normally and once with --local, which plans -# using only the local state. The no-drift invariant must hold either way: after a -# deploy the local state saved by the engine must already match the config. -EnvMatrix.LOCAL_DIFF = ["", "--plan-mode=local"] +# Run every config twice: once planning normally and once with --planmode=offline, +# which plans without reading remote state. The no-drift invariant must hold either +# way: after a deploy the local state saved by the engine must already match the config. +EnvMatrix.LOCAL_DIFF = ["", "--planmode=offline"] diff --git a/acceptance/bundle/local/basic/output.txt b/acceptance/bundle/local/basic/output.txt index 1f922cbb9a4..2660526220f 100644 --- a/acceptance/bundle/local/basic/output.txt +++ b/acceptance/bundle/local/basic/output.txt @@ -5,31 +5,31 @@ Deploying resources... Updating deployment state... Deployment complete! ->>> [CLI] bundle plan --plan-mode=local +>>> [CLI] bundle plan --planmode=offline Plan: 0 to add, 0 to change, 0 to delete, 2 unchanged -=== Job reads during 'bundle plan --plan-mode=local': +=== Job reads during 'bundle plan --planmode=offline': >>> print_requests.py --get //jobs/get -=== After out-of-band rename of bar: --plan-mode=local plan still shows no drift: +=== After out-of-band rename of bar: --planmode=offline plan still shows no drift: ->>> [CLI] bundle plan --plan-mode=local +>>> [CLI] bundle plan --planmode=offline Plan: 0 to add, 0 to change, 0 to delete, 2 unchanged -=== Job reads during --plan-mode=local plan after drift: +=== Job reads during --planmode=offline plan after drift: >>> print_requests.py --get //jobs/get -=== Plan --plan-mode=local as JSON: +=== Plan --planmode=offline as JSON: ->>> [CLI] bundle plan --plan-mode=local -o json +>>> [CLI] bundle plan --planmode=offline -o json { "plan_version": 2, "cli_version": "[CLI_VERSION]", "lineage": "[UUID]", "serial": 1, - "plan_mode": "local", + "plan_mode": "offline", "plan": { "resources.jobs.bar": { "action": "skip", @@ -80,19 +80,19 @@ Plan: 0 to add, 0 to change, 0 to delete, 2 unchanged } } -=== Job reads during 'bundle plan --plan-mode=local -o json': +=== Job reads during 'bundle plan --planmode=offline -o json': >>> print_requests.py --get //jobs/get -=== Deploy --plan with --plan-mode=local plan (warns): +=== Deploy --plan with --planmode=offline plan (warns): ->>> [CLI] bundle deploy --plan-mode=local +>>> [CLI] bundle deploy --planmode=offline Uploading bundle files to /Workspace/Users/[USERNAME]/.bundle/local-[UNIQUE_NAME]/default/files... Deploying resources... Updating deployment state... Deployment complete! -=== Job reads during 'bundle deploy --plan-mode=local': +=== Job reads during 'bundle deploy --planmode=offline': >>> print_requests.py --get //jobs/get --keep { @@ -104,7 +104,7 @@ Deployment complete! } === Telemetry: -plan_mode_used_local true +plan_mode_used_offline true >>> [CLI] bundle destroy --auto-approve The following resources will be deleted: diff --git a/acceptance/bundle/local/basic/script b/acceptance/bundle/local/basic/script index 52af5281661..b55c3a97cde 100644 --- a/acceptance/bundle/local/basic/script +++ b/acceptance/bundle/local/basic/script @@ -13,40 +13,40 @@ rm -f out.requests.txt BAR_ID=$(read_id.py bar) -# A --plan-mode=local plan reports no drift without reading the remote state of the jobs: +# A --planmode=offline plan reports no drift without reading the remote state of the jobs: # no GET is issued. The ${resources.jobs.bar.id} reference still resolves because # it comes from the local state, not a remote read. -trace $CLI bundle plan --plan-mode=local -title "Job reads during 'bundle plan --plan-mode=local':\n" +trace $CLI bundle plan --planmode=offline +title "Job reads during 'bundle plan --planmode=offline':\n" trace print_requests.py --get //jobs/get -# Rename bar out-of-band (simulates remote drift). --plan-mode=local plan still shows +# Rename bar out-of-band (simulates remote drift). --planmode=offline plan still shows # no changes: it never reads remote state, so the rename is invisible to it. edit_resource.py jobs $BAR_ID <<'EOF' r["name"] = r["name"] + "-drifted" EOF rm -f out.requests.txt -title "After out-of-band rename of bar: --plan-mode=local plan still shows no drift:\n" -trace $CLI bundle plan --plan-mode=local -title "Job reads during --plan-mode=local plan after drift:\n" +title "After out-of-band rename of bar: --planmode=offline plan still shows no drift:\n" +trace $CLI bundle plan --planmode=offline +title "Job reads during --planmode=offline plan after drift:\n" trace print_requests.py --get //jobs/get -# The JSON plan is self-describing: plan_mode is "local", so deploy --plan can -# warn before applying it. remote_state is absent (nothing was fetched); -# prior_state carries the last saved local state and is what drift classification -# and apply-time consumers read in local mode. -title "Plan --plan-mode=local as JSON:\n" -trace $CLI bundle plan --plan-mode=local -o json | tee plan.local.json -title "Job reads during 'bundle plan --plan-mode=local -o json':\n" +# The JSON plan is self-describing: plan_mode is "offline", so deploy --plan can +# warn before applying it. remote_state is absent (nothing was fetched); prior_state +# carries the last saved local state and is what drift classification and reference +# resolution read in offline mode. +title "Plan --planmode=offline as JSON:\n" +trace $CLI bundle plan --planmode=offline -o json | tee plan.local.json +title "Job reads during 'bundle plan --planmode=offline -o json':\n" trace print_requests.py --get //jobs/get -# deploy --plan with a --plan-mode=local plan warns that the plan may miss out-of-band drift. +# deploy --plan with a --planmode=offline plan warns that the plan may miss out-of-band drift. # READPLAN matrix runs this twice: once applying the saved plan (warns), once without. -title "Deploy --plan with --plan-mode=local plan (warns):\n" +title "Deploy --plan with --planmode=offline plan (warns):\n" $CLI bundle deploy $(readplanarg plan.local.json) > LOG.deploy_plan 2>&1 # contains.py echoes stdin, so route its passthrough to a LOG file: the deploy -# output (and the --plan-mode=local warning, present only when READPLAN=1) must not leak +# output (and the --planmode=offline warning, present only when READPLAN=1) must not leak # into output.txt or the two matrix variants would diverge. cat LOG.deploy_plan | contains.py '!panic' '!internal error' > LOG.contains if [[ -n "$READPLAN" ]]; then @@ -54,9 +54,9 @@ if [[ -n "$READPLAN" ]]; then fi rm -f out.requests.txt -# A --plan-mode=local deploy likewise does not read remote state up front and reports its use via telemetry. -trace $CLI bundle deploy --plan-mode=local -title "Job reads during 'bundle deploy --plan-mode=local':\n" +# A --planmode=offline deploy likewise does not read remote state up front and reports its use via telemetry. +trace $CLI bundle deploy --planmode=offline +title "Job reads during 'bundle deploy --planmode=offline':\n" trace print_requests.py --get //jobs/get --keep title "Telemetry:\n" -print_telemetry_bool_values | grep '^plan_mode_used_local ' +print_telemetry_bool_values | grep '^plan_mode_used_offline ' diff --git a/acceptance/bundle/local/basic/test.toml b/acceptance/bundle/local/basic/test.toml index 4913bbb9147..512ddb580e2 100644 --- a/acceptance/bundle/local/basic/test.toml +++ b/acceptance/bundle/local/basic/test.toml @@ -1,7 +1,7 @@ Local = true Cloud = true RecordRequests = true -# --plan-mode=local skips the per-resource remote read, which only the direct engine performs. +# --planmode=offline skips the per-resource remote read, which only the direct engine performs. EnvMatrix.DATABRICKS_BUNDLE_ENGINE = ["direct"] # READPLAN=1 feeds the saved local plan to deploy --plan; the warning is asserted in script. EnvMatrix.READPLAN = ["", "1"] diff --git a/acceptance/bundle/local/grants-remove/output.txt b/acceptance/bundle/local/grants-remove/output.txt index 37bc90eb62a..77b9e66ea10 100644 --- a/acceptance/bundle/local/grants-remove/output.txt +++ b/acceptance/bundle/local/grants-remove/output.txt @@ -5,13 +5,13 @@ Deploying resources... Updating deployment state... Deployment complete! ->>> [CLI] bundle deploy --plan-mode=local +>>> [CLI] bundle deploy --planmode=offline Uploading bundle files to /Workspace/Users/[USERNAME]/.bundle/grants-remove-[UNIQUE_NAME]/default/files... Deploying resources... Updating deployment state... Deployment complete! -=== Permissions requests during 'bundle deploy --plan-mode=local': +=== Permissions requests during 'bundle deploy --planmode=offline': >>> print_requests.py //permissions { diff --git a/acceptance/bundle/local/grants-remove/script b/acceptance/bundle/local/grants-remove/script index 65594ffa399..44c52385e87 100644 --- a/acceptance/bundle/local/grants-remove/script +++ b/acceptance/bundle/local/grants-remove/script @@ -11,10 +11,10 @@ trace $CLI bundle deploy rm -f out.requests.txt # Remove the second principal by stripping lines marked "# TO_DELETE". -# In local mode entry.RemoteState is nil, so removedGrantPrincipals reads +# In offline mode entry.RemoteState is nil, so removedGrantPrincipals reads # from entry.PriorState to compute the removal set from the last saved state. grep -v '# TO_DELETE' databricks.yml > databricks.yml.new && mv databricks.yml.new databricks.yml -trace $CLI bundle deploy --plan-mode=local -title "Permissions requests during 'bundle deploy --plan-mode=local':\n" +trace $CLI bundle deploy --planmode=offline +title "Permissions requests during 'bundle deploy --planmode=offline':\n" trace print_requests.py //permissions diff --git a/acceptance/bundle/local/grants-remove/test.toml b/acceptance/bundle/local/grants-remove/test.toml index 60e79c5fb32..b59517a51f2 100644 --- a/acceptance/bundle/local/grants-remove/test.toml +++ b/acceptance/bundle/local/grants-remove/test.toml @@ -1,7 +1,7 @@ Local = true Cloud = false RecordRequests = true -# --plan-mode=local skips the per-resource remote read, which only the direct engine performs. +# --planmode=offline skips the per-resource remote read, which only the direct engine performs. EnvMatrix.DATABRICKS_BUNDLE_ENGINE = ["direct"] Ignore = [".databricks", "databricks.yml"] diff --git a/acceptance/bundle/local/lifecycle-skip/output.txt b/acceptance/bundle/local/lifecycle-skip/output.txt index e0f17f86e1d..0b4e69a8b4d 100644 --- a/acceptance/bundle/local/lifecycle-skip/output.txt +++ b/acceptance/bundle/local/lifecycle-skip/output.txt @@ -7,13 +7,13 @@ Deployment complete! >>> update_file.py databricks.yml started: false started: true ->>> errcode [CLI] bundle deploy --plan-mode=local +>>> errcode [CLI] bundle deploy --planmode=offline Uploading bundle files to /Workspace/Users/[USERNAME]/.bundle/[UNIQUE_NAME]/files... Deploying resources... Updating deployment state... Deployment complete! -=== Cluster requests during 'bundle deploy --plan-mode=local' (should be empty): +=== Cluster requests during 'bundle deploy --planmode=offline' (should be empty): >>> print_requests.py //clusters diff --git a/acceptance/bundle/local/lifecycle-skip/script b/acceptance/bundle/local/lifecycle-skip/script index e2a622fa85c..1231dd464dc 100644 --- a/acceptance/bundle/local/lifecycle-skip/script +++ b/acceptance/bundle/local/lifecycle-skip/script @@ -10,13 +10,13 @@ trap cleanup EXIT trace errcode $CLI bundle deploy rm -f out.requests.txt -# Toggle to started=true; redeploy under --plan-mode=local. -# In local mode entry.RemoteState is nil, so DoUpdate must skip the Start call +# Toggle to started=true; redeploy under --planmode=offline. +# In offline mode entry.RemoteState is nil, so DoUpdate must skip the Start call # entirely and WaitAfterUpdate must skip its poll. Nothing else has changed, so # no /clusters requests should be issued at all. trace update_file.py databricks.yml "started: false" "started: true" -trace errcode $CLI bundle deploy --plan-mode=local -title "Cluster requests during 'bundle deploy --plan-mode=local' (should be empty):\n" +trace errcode $CLI bundle deploy --planmode=offline +title "Cluster requests during 'bundle deploy --planmode=offline' (should be empty):\n" trace print_requests.py //clusters # The next full-mode deploy applies the real transition. diff --git a/acceptance/bundle/local/lifecycle-skip/test.toml b/acceptance/bundle/local/lifecycle-skip/test.toml index 78e09d14628..2e7993b8491 100644 --- a/acceptance/bundle/local/lifecycle-skip/test.toml +++ b/acceptance/bundle/local/lifecycle-skip/test.toml @@ -1,7 +1,7 @@ Local = true Cloud = true RecordRequests = true -# --plan-mode=local skips the per-resource remote read, which only the direct engine performs. +# --planmode=offline skips the per-resource remote read, which only the direct engine performs. EnvMatrix.DATABRICKS_BUNDLE_ENGINE = ["direct"] Ignore = [".databricks", "databricks.yml"] diff --git a/acceptance/bundle/local/references/databricks.yml.tmpl b/acceptance/bundle/local/references/databricks.yml.tmpl index 870729632bd..d888adbd8e9 100644 --- a/acceptance/bundle/local/references/databricks.yml.tmpl +++ b/acceptance/bundle/local/references/databricks.yml.tmpl @@ -12,7 +12,7 @@ resources: - task_key: tag_owner notebook_task: # creator_user_name is a remote-only field: it exists in the remote - # schema but not in config. Under --local, bar's remote state is not - # fetched during planning, but resolving this reference forces a - # targeted fetch of bar on demand. + # schema but not in config. Under --planmode=offline, bar's remote + # state is never fetched; instead foo.notebook_path's last resolved + # value is carried forward from foo's saved state. notebook_path: /path/${resources.jobs.bar.creator_user_name} diff --git a/acceptance/bundle/local/references/output.txt b/acceptance/bundle/local/references/output.txt index 397b23cf114..e6dabf4e39d 100644 --- a/acceptance/bundle/local/references/output.txt +++ b/acceptance/bundle/local/references/output.txt @@ -5,35 +5,21 @@ Deploying resources... Updating deployment state... Deployment complete! ->>> [CLI] bundle plan --plan-mode=local +>>> [CLI] bundle plan --planmode=offline Plan: 0 to add, 0 to change, 0 to delete, 2 unchanged -=== Job reads during 'bundle plan --plan-mode=local': +=== Job reads during 'bundle plan --planmode=offline': >>> print_requests.py --get //jobs/get -{ - "method": "GET", - "path": "/api/2.2/jobs/get", - "q": { - "job_id": "[BAR_ID]" - } -} -=== After out-of-band rename of bar: --plan-mode=local plan still shows no drift: +=== After out-of-band rename of bar: --planmode=offline plan still shows no drift: ->>> [CLI] bundle plan --plan-mode=local +>>> [CLI] bundle plan --planmode=offline Plan: 0 to add, 0 to change, 0 to delete, 2 unchanged -=== Job reads during --plan-mode=local plan after drift: +=== Job reads during --planmode=offline plan after drift: >>> print_requests.py --get //jobs/get -{ - "method": "GET", - "path": "/api/2.2/jobs/get", - "q": { - "job_id": "[BAR_ID]" - } -} === Normal plan detects the drift: diff --git a/acceptance/bundle/local/references/script b/acceptance/bundle/local/references/script index d9a7191d5ef..d67ec93e65e 100644 --- a/acceptance/bundle/local/references/script +++ b/acceptance/bundle/local/references/script @@ -12,11 +12,12 @@ rm -f out.requests.txt BAR_ID=$(read_id.py bar) -# A --plan-mode=local plan skips proactive remote reads but still resolves references. -# foo references bar.creator_user_name, which is remote-only (absent from config), -# so remoteStateForRef fetches bar on demand. Only that one GET is issued. -trace $CLI bundle plan --plan-mode=local -title "Job reads during 'bundle plan --plan-mode=local':\n" +# A --planmode=offline plan skips remote reads entirely. foo.tasks[0].notebook_path +# references bar.creator_user_name, a remote-only field. Offline resolution carries +# forward foo.notebook_path's last resolved value from foo's saved state (Method A, +# source-side), so no GET is issued and the reference resolves successfully. +trace $CLI bundle plan --planmode=offline +title "Job reads during 'bundle plan --planmode=offline':\n" trace print_requests.py --get //jobs/get # Rename bar out-of-band (simulates remote drift). @@ -25,11 +26,11 @@ r["name"] = r["name"] + "-drifted" EOF rm -f out.requests.txt -# --plan-mode=local plan still reports no drift: it compares config against saved local +# --planmode=offline plan still reports no drift: it compares config against saved local # state and never reads the remote, so the out-of-band rename is invisible. -title "After out-of-band rename of bar: --plan-mode=local plan still shows no drift:\n" -trace $CLI bundle plan --plan-mode=local -title "Job reads during --plan-mode=local plan after drift:\n" +title "After out-of-band rename of bar: --planmode=offline plan still shows no drift:\n" +trace $CLI bundle plan --planmode=offline +title "Job reads during --planmode=offline plan after drift:\n" trace print_requests.py --get //jobs/get # Normal plan reads remote and detects the drift. diff --git a/acceptance/bundle/local/references/test.toml b/acceptance/bundle/local/references/test.toml index ebc3f807638..9ace7dd51f0 100644 --- a/acceptance/bundle/local/references/test.toml +++ b/acceptance/bundle/local/references/test.toml @@ -1,7 +1,7 @@ Local = true Cloud = true RecordRequests = true -# --local skips the per-resource remote read, which only the direct engine performs. +# --planmode=offline skips the per-resource remote read, which only the direct engine performs. EnvMatrix.DATABRICKS_BUNDLE_ENGINE = ["direct"] # databricks.yml is generated at runtime from the template. Ignore = [".databricks", ".gitignore", "databricks.yml"] diff --git a/acceptance/bundle/local/rejected/output.txt b/acceptance/bundle/local/rejected/output.txt index 8137399f515..18d20a3b136 100644 --- a/acceptance/bundle/local/rejected/output.txt +++ b/acceptance/bundle/local/rejected/output.txt @@ -1,27 +1,17 @@ ->>> [CLI] bundle plan --plan-mode=local -Error: --plan-mode=local is only supported with the direct engine. See https://docs.databricks.com/aws/en/dev-tools/bundles/direct +>>> [CLI] bundle plan --planmode=offline +Error: --planmode=offline is only supported with the direct engine. See https://docs.databricks.com/aws/en/dev-tools/bundles/direct Exit code: 1 ->>> [CLI] bundle deploy --plan-mode=local -Error: --plan-mode=local is only supported with the direct engine. See https://docs.databricks.com/aws/en/dev-tools/bundles/direct +>>> [CLI] bundle deploy --planmode=offline +Error: --planmode=offline is only supported with the direct engine. See https://docs.databricks.com/aws/en/dev-tools/bundles/direct Exit code: 1 ->>> [CLI] bundle plan --plan-mode=offline -Error: --plan-mode=offline is not yet implemented - -Exit code: 1 - ->>> [CLI] bundle deploy --plan-mode=offline -Error: --plan-mode=offline is not yet implemented - -Exit code: 1 - ->>> [CLI] bundle plan --plan-mode=bogus -Error: invalid --plan-mode "bogus" (want full or local) +>>> [CLI] bundle plan --planmode=bogus +Error: invalid --planmode "bogus" (want full or offline) Exit code: 1 diff --git a/acceptance/bundle/local/rejected/script b/acceptance/bundle/local/rejected/script index 6e0af5e6bcd..99a4cd620a0 100644 --- a/acceptance/bundle/local/rejected/script +++ b/acceptance/bundle/local/rejected/script @@ -1,10 +1,6 @@ -# --plan-mode=local is only supported by the direct engine; both plan and deploy reject it. -errcode trace $CLI bundle plan --plan-mode=local -errcode trace $CLI bundle deploy --plan-mode=local +# --planmode=offline is only supported by the direct engine; both plan and deploy reject it. +errcode trace $CLI bundle plan --planmode=offline +errcode trace $CLI bundle deploy --planmode=offline -# --plan-mode=offline is reserved but not yet implemented; both plan and deploy reject it. -errcode trace $CLI bundle plan --plan-mode=offline -errcode trace $CLI bundle deploy --plan-mode=offline - -# Unknown --plan-mode values are rejected with an actionable error. -errcode trace $CLI bundle plan --plan-mode=bogus +# Unknown --planmode values are rejected with an actionable error. +errcode trace $CLI bundle plan --planmode=bogus diff --git a/acceptance/bundle/local/rejected/test.toml b/acceptance/bundle/local/rejected/test.toml index 0772be31644..e81b1480056 100644 --- a/acceptance/bundle/local/rejected/test.toml +++ b/acceptance/bundle/local/rejected/test.toml @@ -1,2 +1,2 @@ -# --local is rejected on the terraform engine with an actionable error. +# --planmode=offline is rejected on the terraform engine with an actionable error. EnvMatrix.DATABRICKS_BUNDLE_ENGINE = ["terraform"] diff --git a/acceptance/bundle/resources/catalogs/basic/out.test.toml b/acceptance/bundle/resources/catalogs/basic/out.test.toml index 15ac5620b02..9ce94d7dbf4 100644 --- a/acceptance/bundle/resources/catalogs/basic/out.test.toml +++ b/acceptance/bundle/resources/catalogs/basic/out.test.toml @@ -4,4 +4,4 @@ RequiresUnityCatalog = true GOOSOnPR.darwin = false GOOSOnPR.windows = false EnvMatrix.DATABRICKS_BUNDLE_ENGINE = ["direct"] -EnvMatrix.PLANMODE = ["", "--plan-mode=local"] +EnvMatrix.PLANMODE = ["", "--planmode=offline"] diff --git a/acceptance/bundle/resources/catalogs/basic/test.toml b/acceptance/bundle/resources/catalogs/basic/test.toml index 4df5b29a598..78396971185 100644 --- a/acceptance/bundle/resources/catalogs/basic/test.toml +++ b/acceptance/bundle/resources/catalogs/basic/test.toml @@ -8,14 +8,14 @@ Ignore = [ "databricks.yml", ] -# Also run with --plan-mode=local: plan/deploy issue the same requests with or without --plan-mode=local +# Also run with --planmode=offline: plan/deploy issue the same requests with or without --planmode=offline # so the recorded output is identical across variants. EnvRepl.PLANMODE = false [EnvMatrix] DATABRICKS_BUNDLE_ENGINE = ["direct"] - PLANMODE = ["", "--plan-mode=local"] + PLANMODE = ["", "--planmode=offline"] [[Repls]] -Old = " --plan-mode=local" +Old = " --planmode=offline" New = "" diff --git a/acceptance/bundle/resources/catalogs/with-schemas/out.test.toml b/acceptance/bundle/resources/catalogs/with-schemas/out.test.toml index 15ac5620b02..9ce94d7dbf4 100644 --- a/acceptance/bundle/resources/catalogs/with-schemas/out.test.toml +++ b/acceptance/bundle/resources/catalogs/with-schemas/out.test.toml @@ -4,4 +4,4 @@ RequiresUnityCatalog = true GOOSOnPR.darwin = false GOOSOnPR.windows = false EnvMatrix.DATABRICKS_BUNDLE_ENGINE = ["direct"] -EnvMatrix.PLANMODE = ["", "--plan-mode=local"] +EnvMatrix.PLANMODE = ["", "--planmode=offline"] diff --git a/acceptance/bundle/resources/catalogs/with-schemas/test.toml b/acceptance/bundle/resources/catalogs/with-schemas/test.toml index 4df5b29a598..78396971185 100644 --- a/acceptance/bundle/resources/catalogs/with-schemas/test.toml +++ b/acceptance/bundle/resources/catalogs/with-schemas/test.toml @@ -8,14 +8,14 @@ Ignore = [ "databricks.yml", ] -# Also run with --plan-mode=local: plan/deploy issue the same requests with or without --plan-mode=local +# Also run with --planmode=offline: plan/deploy issue the same requests with or without --planmode=offline # so the recorded output is identical across variants. EnvRepl.PLANMODE = false [EnvMatrix] DATABRICKS_BUNDLE_ENGINE = ["direct"] - PLANMODE = ["", "--plan-mode=local"] + PLANMODE = ["", "--planmode=offline"] [[Repls]] -Old = " --plan-mode=local" +Old = " --planmode=offline" New = "" diff --git a/acceptance/bundle/resources/external_locations/out.test.toml b/acceptance/bundle/resources/external_locations/out.test.toml index 82a6b01214e..13b6e71aa86 100644 --- a/acceptance/bundle/resources/external_locations/out.test.toml +++ b/acceptance/bundle/resources/external_locations/out.test.toml @@ -4,4 +4,4 @@ RequiresUnityCatalog = true GOOSOnPR.darwin = false GOOSOnPR.windows = false EnvMatrix.DATABRICKS_BUNDLE_ENGINE = ["direct"] -EnvMatrix.PLANMODE = ["", "--plan-mode=local"] +EnvMatrix.PLANMODE = ["", "--planmode=offline"] diff --git a/acceptance/bundle/resources/external_locations/test.toml b/acceptance/bundle/resources/external_locations/test.toml index fdcf4a30259..f2882c6bed6 100644 --- a/acceptance/bundle/resources/external_locations/test.toml +++ b/acceptance/bundle/resources/external_locations/test.toml @@ -10,14 +10,14 @@ Ignore = [ "databricks.yml", ] -# Also run with --plan-mode=local: plan/deploy issue the same requests with or without --plan-mode=local +# Also run with --planmode=offline: plan/deploy issue the same requests with or without --planmode=offline # so the recorded output is identical across variants. EnvRepl.PLANMODE = false [EnvMatrix] DATABRICKS_BUNDLE_ENGINE = ["direct"] - PLANMODE = ["", "--plan-mode=local"] + PLANMODE = ["", "--planmode=offline"] [[Repls]] -Old = " --plan-mode=local" +Old = " --planmode=offline" New = "" diff --git a/acceptance/bundle/resources/jobs/num_workers/out.test.toml b/acceptance/bundle/resources/jobs/num_workers/out.test.toml index f0a9130c5bc..1ab3e827cef 100644 --- a/acceptance/bundle/resources/jobs/num_workers/out.test.toml +++ b/acceptance/bundle/resources/jobs/num_workers/out.test.toml @@ -3,4 +3,4 @@ Cloud = false GOOSOnPR.darwin = false GOOSOnPR.windows = false EnvMatrix.DATABRICKS_BUNDLE_ENGINE = ["terraform", "direct"] -EnvMatrix.PLANMODE = ["", "--plan-mode=local"] +EnvMatrix.PLANMODE = ["", "--planmode=offline"] diff --git a/acceptance/bundle/resources/jobs/num_workers/test.toml b/acceptance/bundle/resources/jobs/num_workers/test.toml index f743b113807..bdda3285f8a 100644 --- a/acceptance/bundle/resources/jobs/num_workers/test.toml +++ b/acceptance/bundle/resources/jobs/num_workers/test.toml @@ -1,12 +1,12 @@ -# Also run plan/deploy with --plan-mode=local (direct engine only; rejected on terraform). -# Deploy issues the same mutating requests with or without --plan-mode=local — only the +# Also run plan/deploy with --planmode=offline (direct engine only; rejected on terraform). +# Deploy issues the same mutating requests with or without --planmode=offline — only the # remote reads (GETs, excluded from print_requests.py) differ — so the recorded -# output is identical across variants. The " --plan-mode=local" token is stripped from the +# output is identical across variants. The " --planmode=offline" token is stripped from the # command echo so the >>> lines match the non-plan-mode variant. -EnvMatrix.PLANMODE = ["", "--plan-mode=local"] -EnvMatrixExclude.no_local_on_terraform = ["PLANMODE=--plan-mode=local", "DATABRICKS_BUNDLE_ENGINE=terraform"] +EnvMatrix.PLANMODE = ["", "--planmode=offline"] +EnvMatrixExclude.no_local_on_terraform = ["PLANMODE=--planmode=offline", "DATABRICKS_BUNDLE_ENGINE=terraform"] EnvRepl.PLANMODE = false [[Repls]] -Old = " --plan-mode=local" +Old = " --planmode=offline" New = "" diff --git a/acceptance/bundle/resources/schemas/update/out.test.toml b/acceptance/bundle/resources/schemas/update/out.test.toml index f0a9130c5bc..1ab3e827cef 100644 --- a/acceptance/bundle/resources/schemas/update/out.test.toml +++ b/acceptance/bundle/resources/schemas/update/out.test.toml @@ -3,4 +3,4 @@ Cloud = false GOOSOnPR.darwin = false GOOSOnPR.windows = false EnvMatrix.DATABRICKS_BUNDLE_ENGINE = ["terraform", "direct"] -EnvMatrix.PLANMODE = ["", "--plan-mode=local"] +EnvMatrix.PLANMODE = ["", "--planmode=offline"] diff --git a/acceptance/bundle/resources/schemas/update/test.toml b/acceptance/bundle/resources/schemas/update/test.toml index f743b113807..bdda3285f8a 100644 --- a/acceptance/bundle/resources/schemas/update/test.toml +++ b/acceptance/bundle/resources/schemas/update/test.toml @@ -1,12 +1,12 @@ -# Also run plan/deploy with --plan-mode=local (direct engine only; rejected on terraform). -# Deploy issues the same mutating requests with or without --plan-mode=local — only the +# Also run plan/deploy with --planmode=offline (direct engine only; rejected on terraform). +# Deploy issues the same mutating requests with or without --planmode=offline — only the # remote reads (GETs, excluded from print_requests.py) differ — so the recorded -# output is identical across variants. The " --plan-mode=local" token is stripped from the +# output is identical across variants. The " --planmode=offline" token is stripped from the # command echo so the >>> lines match the non-plan-mode variant. -EnvMatrix.PLANMODE = ["", "--plan-mode=local"] -EnvMatrixExclude.no_local_on_terraform = ["PLANMODE=--plan-mode=local", "DATABRICKS_BUNDLE_ENGINE=terraform"] +EnvMatrix.PLANMODE = ["", "--planmode=offline"] +EnvMatrixExclude.no_local_on_terraform = ["PLANMODE=--planmode=offline", "DATABRICKS_BUNDLE_ENGINE=terraform"] EnvRepl.PLANMODE = false [[Repls]] -Old = " --plan-mode=local" +Old = " --planmode=offline" New = "" diff --git a/acceptance/bundle/resources/volumes/change-name/out.test.toml b/acceptance/bundle/resources/volumes/change-name/out.test.toml index f0a9130c5bc..1ab3e827cef 100644 --- a/acceptance/bundle/resources/volumes/change-name/out.test.toml +++ b/acceptance/bundle/resources/volumes/change-name/out.test.toml @@ -3,4 +3,4 @@ Cloud = false GOOSOnPR.darwin = false GOOSOnPR.windows = false EnvMatrix.DATABRICKS_BUNDLE_ENGINE = ["terraform", "direct"] -EnvMatrix.PLANMODE = ["", "--plan-mode=local"] +EnvMatrix.PLANMODE = ["", "--planmode=offline"] diff --git a/acceptance/bundle/resources/volumes/change-name/test.toml b/acceptance/bundle/resources/volumes/change-name/test.toml index fa93981e208..7140d4bc981 100644 --- a/acceptance/bundle/resources/volumes/change-name/test.toml +++ b/acceptance/bundle/resources/volumes/change-name/test.toml @@ -2,16 +2,16 @@ Ignore = [ ".databricks", ] -# Also run plan/deploy with --plan-mode=local (direct engine only; rejected on terraform). -# Deploy issues the same mutating requests with or without --plan-mode=local — only the +# Also run plan/deploy with --planmode=offline (direct engine only; rejected on terraform). +# Deploy issues the same mutating requests with or without --planmode=offline — only the # remote reads (GETs, excluded from print_requests.py) differ — so the recorded -# output is identical across variants. The " --plan-mode=local" token is stripped from the +# output is identical across variants. The " --planmode=offline" token is stripped from the # command echo so the >>> lines match the non-plan-mode variant. Note: the JSON plan -# (`bundle plan -o json`) keeps no --plan-mode=local: its remote_state would differ. -EnvMatrix.PLANMODE = ["", "--plan-mode=local"] -EnvMatrixExclude.no_local_on_terraform = ["PLANMODE=--plan-mode=local", "DATABRICKS_BUNDLE_ENGINE=terraform"] +# (`bundle plan -o json`) keeps no --planmode=offline: its remote_state would differ. +EnvMatrix.PLANMODE = ["", "--planmode=offline"] +EnvMatrixExclude.no_local_on_terraform = ["PLANMODE=--planmode=offline", "DATABRICKS_BUNDLE_ENGINE=terraform"] EnvRepl.PLANMODE = false [[Repls]] -Old = " --plan-mode=local" +Old = " --planmode=offline" New = "" diff --git a/bundle/bundle.go b/bundle/bundle.go index 27131f9c38a..1d726e148d3 100644 --- a/bundle/bundle.go +++ b/bundle/bundle.go @@ -163,7 +163,7 @@ type Bundle struct { // When non-empty, only the specified resources are included in deployment. Select []string - // PlanMode is the plan-computation mode selected via --plan-mode. Empty is + // PlanMode is the plan-computation mode selected via --planmode. Empty is // the default (full remote-aware planning). See deployplan.PlanMode. PlanMode deployplan.PlanMode diff --git a/bundle/deployplan/plan.go b/bundle/deployplan/plan.go index 4ddbe27a268..c42adf1bb7a 100644 --- a/bundle/deployplan/plan.go +++ b/bundle/deployplan/plan.go @@ -3,7 +3,6 @@ package deployplan import ( "cmp" "encoding/json" - "errors" "fmt" "os" "slices" @@ -21,41 +20,29 @@ const currentPlanVersion = 2 // // - Full (default): the per-resource remote read runs; drift detection is // complete. -// - Local: the per-resource remote read is skipped. Cross-resource references -// resolve from local state; a reference to a remote-only field on an -// otherwise-unchanged target fetches that one target on demand. -// - Offline: no remote reads at all during plan. References to changing -// targets stay unresolved; references to unchanged targets read from the -// saved local state. Deploy of an Offline plan is allowed — Offline is a -// plan-time property, not a deploy-time restriction. +// - Offline: no remote reads at all during plan. Drift classification runs +// against saved local state. Cross-resource references resolve from saved +// state: the dependent's own last-resolved value, or by looking up each +// `${...}` component in the target's saved state; otherwise the reference +// stays unresolved and is resolved after apply. type PlanMode string const ( PlanModeFull PlanMode = "" - PlanModeLocal PlanMode = "local" PlanModeOffline PlanMode = "offline" ) -// SkipsRemoteReads reports whether the mode avoids the proactive per-resource -// remote read. Local skips it (references still fetch on-demand). Offline is -// reserved and rejected at flag-parse time until its semantics are wired up. -func (m PlanMode) SkipsRemoteReads() bool { - return m == PlanModeLocal -} - -// ParsePlanMode parses the value of the --plan-mode flag. An empty value is -// PlanModeFull; "full" and "local" are accepted. "offline" is reserved but not -// yet implemented and is rejected. Unknown values produce an actionable error. +// ParsePlanMode parses the value of the --planmode flag. An empty value is +// PlanModeFull; "full" and "offline" are accepted. Unknown values produce an +// actionable error. func ParsePlanMode(s string) (PlanMode, error) { switch s { case "", "full": return PlanModeFull, nil - case "local": - return PlanModeLocal, nil case "offline": - return "", errors.New("--plan-mode=offline is not yet implemented") + return PlanModeOffline, nil default: - return "", fmt.Errorf("invalid --plan-mode %q (want full or local)", s) + return "", fmt.Errorf("invalid --planmode %q (want full or offline)", s) } } @@ -132,7 +119,7 @@ type PlanEntry struct { NewState *structvar.StructVarJSON `json:"new_state,omitempty"` // PriorState is the last saved local state — always StateType. Populated only - // when the planner did not read remote (--plan-mode=local); it serves as the + // when the planner did not read remote (--planmode=offline); it serves as the // state-shaped stand-in that apply-time consumers (removedGrantPrincipals, // bind's etag lookup) fall back to when RemoteState is nil. In full mode a // resource reaching Update has RemoteState set by construction, so PriorState @@ -140,10 +127,10 @@ type PlanEntry struct { PriorState any `json:"prior_state,omitempty"` // RemoteState is a freshly-read remote state — RemoteType. Nil when the plan - // was computed without reading remote (--plan-mode=local, unless a reference - // fetch happens to populate it). Consumers that need live-remote-only fields - // (cluster.State, app.ComputeStatus, model.ModelId) read this; the reasonable - // behavior on nil is to skip whatever depends on live status. + // was computed without reading remote (--planmode=offline). Consumers that + // need live-remote-only fields (cluster.State, app.ComputeStatus, model.ModelId) + // read this; the reasonable behavior on nil is to skip whatever depends on + // live status. RemoteState any `json:"remote_state,omitempty"` Changes Changes `json:"changes,omitempty"` diff --git a/bundle/direct/bundle_plan.go b/bundle/direct/bundle_plan.go index 805f7625da1..b0eb0945da1 100644 --- a/bundle/direct/bundle_plan.go +++ b/bundle/direct/bundle_plan.go @@ -152,7 +152,7 @@ func (b *DeploymentBundle) CalculatePlan(ctx context.Context, client *databricks } plan.Mode = mode - skipsRemoteReads := mode.SkipsRemoteReads() + offline := mode == deployplan.PlanModeOffline b.Plan = plan g, err := makeGraph(plan) @@ -202,7 +202,7 @@ func (b *DeploymentBundle) CalculatePlan(ctx context.Context, client *databricks return false } - if skipsRemoteReads { + if offline { // The resource is being deleted because it is absent from config; // its remote status is irrelevant, so skip the remote read. return true @@ -268,19 +268,19 @@ func (b *DeploymentBundle) CalculatePlan(ctx context.Context, client *databricks } // PriorState is the last saved local state. It serves as the stand-in - // for remote when the planner does not read remote (--plan-mode=local): + // for remote when the planner does not read remote (--planmode=offline): // apply-time consumers like removedGrantPrincipals fall back to it when // entry.RemoteState is nil. In full mode a resource that reaches Update // action has RemoteState populated by construction, so PriorState is // unused; we skip writing it to keep the plan JSON compact. - if skipsRemoteReads { + if offline { entry.PriorState = savedState } var action deployplan.ActionType var remoteDiff []structdiff.Change - if !skipsRemoteReads { + if !offline { var remoteState any remoteState, err = retryOnTransient(ctx, func() (any, error) { return adapter.DoRead(ctx, dbentry.ID) @@ -296,7 +296,7 @@ func (b *DeploymentBundle) CalculatePlan(ctx context.Context, client *databricks // entry.RemoteState carries the raw remote (RemoteType). Apply-time // consumers type-assert on it for remote-only fields (cluster.State, - // app.ComputeStatus). Left nil in --plan-mode=local — apply-time + // app.ComputeStatus). Left nil in --planmode=offline — apply-time // consumers must handle nil by skipping their remote-only paths. entry.RemoteState = remoteState } @@ -307,7 +307,7 @@ func (b *DeploymentBundle) CalculatePlan(ctx context.Context, client *databricks // that upstream drift-classification code needs to treat as "no remote"). // In modes that skip the remote read, use savedState as the stand-in. var remoteStateComparable any - if skipsRemoteReads { + if offline { remoteStateComparable = savedState } else if entry.RemoteState != nil { remoteStateComparable, err = adapter.RemapState(entry.RemoteState) @@ -317,7 +317,7 @@ func (b *DeploymentBundle) CalculatePlan(ctx context.Context, client *databricks } } - if remoteStateComparable != nil && !skipsRemoteReads { + if remoteStateComparable != nil && !offline { // In full mode with a live remote, compare the remapped remote // against the desired state to detect out-of-band drift. In local // mode remoteStateComparable is savedState which by construction @@ -340,7 +340,7 @@ func (b *DeploymentBundle) CalculatePlan(ctx context.Context, client *databricks // is not. OverrideChangeDesc hooks read the reconciled value from // ch.Remote (populated from saved state above) instead. var rawRemote any - if !skipsRemoteReads { + if !offline { rawRemote = entry.RemoteState } err = addPerFieldActions(ctx, adapter, entry.Changes, rawRemote) @@ -349,7 +349,7 @@ func (b *DeploymentBundle) CalculatePlan(ctx context.Context, client *databricks return false } - if entry.RemoteState == nil && !skipsRemoteReads { + if entry.RemoteState == nil && !offline { // Even if local action is "recreate" which is higher than "create", we should still pick "create" here // because we know remote does not exist. action = deployplan.Create @@ -362,7 +362,7 @@ func (b *DeploymentBundle) CalculatePlan(ctx context.Context, client *databricks // Note, remoteState may be updated post-deploy, so whether it can be used for // variable resolution depends on several factors, see canReadRemoteCache in LookupReferencePreDeploy. // In --local mode the store is skipped so remoteStateForRef fetches on demand (it keys off cache absence). - if !skipsRemoteReads { + if !offline { b.RemoteStateCache.Store(resourceKey, entry.RemoteState) } @@ -386,7 +386,7 @@ func (b *DeploymentBundle) CalculatePlan(ctx context.Context, client *databricks // after the parallel walk so the write to entry.RemoteState is single-threaded: // during the walk a target is fetched from a dependent's goroutine under the // target's read lock, where writing its entry would race with sibling dependents. - if skipsRemoteReads { + if offline { for key, entry := range plan.Plan { if remoteState, ok := b.RemoteStateCache.Load(key); ok { entry.RemoteState = remoteState @@ -864,6 +864,12 @@ func (b *DeploymentBundle) LookupReferencePreDeploy(ctx context.Context, path *s if ok { return structaccess.Get(remoteState, fieldPath) } + // --planmode=offline: fall back to the target's saved state. + // The field is remote-only, but state may carry the last observed + // value (state persists all fields the resource author declared). + if b.Plan.Mode == deployplan.PlanModeOffline { + return b.savedStateField(targetResourceKey, adapter, fieldPath) + } return nil, fmt.Errorf("internal error: no entry in remote state cache for %q (remote-only)", targetResourceKey) } return nil, errDelayed @@ -885,47 +891,84 @@ func (b *DeploymentBundle) LookupReferencePreDeploy(ctx context.Context, path *s if ok { return structaccess.Get(remoteState, fieldPath) } + // --planmode=offline: fall back to the target's saved state. + if b.Plan.Mode == deployplan.PlanModeOffline { + return b.savedStateField(targetResourceKey, adapter, fieldPath) + } return nil, fmt.Errorf("internal error: no entry in remote state cache for %q", targetResourceKey) } return nil, errDelayed } -// remoteStateForRef returns the remote state of a referenced target resource for -// reference resolution. Normally the state was cached when the target was processed -// (targets precede their dependents in DAG order). In --plan-mode=local the proactive -// read is skipped, so fetch it on demand here: a reference to a remote-only field -// genuinely needs the remote state, so we ignore --plan-mode=local for that target. -// -// The bool reports whether a value is available. In non-local mode a cache miss -// returns (nil, false, nil) and the caller surfaces its own internal error. -func (b *DeploymentBundle) remoteStateForRef(ctx context.Context, targetResourceKey string, adapter *dresources.Adapter) (any, bool, error) { - if remoteState, ok := b.RemoteStateCache.Load(targetResourceKey); ok { - return remoteState, true, nil +// savedStateField reads a field from the target resource's last saved state +// (state DB). Used in --planmode=offline as the fallback for reference +// resolution when the cache has no remote entry. Returns errDelayed when the +// target has no saved state (never deployed) or the field is absent — the +// reference stays unresolved and will be resolved after apply. +func (b *DeploymentBundle) savedStateField(targetResourceKey string, adapter *dresources.Adapter, fieldPath *structpath.PathNode) (any, error) { + dbentry, ok := b.StateDB.GetResourceEntry(targetResourceKey) + if !ok || len(dbentry.State) == 0 { + return nil, errDelayed } - - if b.Plan.Mode != deployplan.PlanModeLocal { - return nil, false, nil + savedState, err := parseState(adapter.StateType(), dbentry.State) + if err != nil { + return nil, fmt.Errorf("parsing saved state for %q: %w", targetResourceKey, err) } - - id := b.StateDB.GetResourceID(targetResourceKey) - if id == "" { - return nil, false, fmt.Errorf("internal error: no db entry for %q", targetResourceKey) + value, err := structaccess.Get(savedState, fieldPath) + if err != nil || value == nil { + return nil, errDelayed } + return value, nil +} - remoteState, err := retryOnTransient(ctx, func() (any, error) { - return adapter.DoRead(ctx, id) - }) +// resolveReferencesFromSavedState is the offline-mode source-side pass over +// sv.Refs: for each field with an unresolved reference, look up the field's +// prior value in the resource's own saved state. When present, write it into +// sv.Value and drop the entry from sv.Refs so the per-reference loop skips it. +// The template's individual ${...} components do not need to be evaluated +// because the source-side value already reflects the last resolution. +func (b *DeploymentBundle) resolveReferencesFromSavedState(ctx context.Context, resourceKey string, sv *structvar.StructVar) { + dbentry, ok := b.StateDB.GetResourceEntry(resourceKey) + if !ok || len(dbentry.State) == 0 { + return + } + adapter, err := b.getAdapterForKey(resourceKey) if err != nil { - if apierr.IsMissing(err) { - remoteState = nil - } else { - return nil, false, fmt.Errorf("reading id=%q: %w", id, err) + return + } + savedState, err := parseState(adapter.StateType(), dbentry.State) + if err != nil { + log.Debugf(ctx, "offline: parsing saved state for %q failed: %v", resourceKey, err) + return + } + for fieldPathStr := range sv.Refs { + fieldPath, err := structpath.ParsePath(fieldPathStr) + if err != nil { + continue + } + value, err := structaccess.Get(savedState, fieldPath) + if err != nil || value == nil { + continue + } + if err := structaccess.Set(sv.Value, fieldPath, value); err != nil { + log.Debugf(ctx, "offline: setting %s.%s from saved state failed: %v", resourceKey, fieldPathStr, err) + continue } + delete(sv.Refs, fieldPathStr) } +} - b.RemoteStateCache.Store(targetResourceKey, remoteState) - return remoteState, true, nil +// remoteStateForRef returns the remote state of a referenced target resource +// for reference resolution. The state was cached when the target was processed +// (targets precede their dependents in DAG order). A cache miss returns +// (nil, false, nil) and the caller surfaces its own internal error or falls +// back to the offline saved-state lookup path. +func (b *DeploymentBundle) remoteStateForRef(_ context.Context, targetResourceKey string, _ *dresources.Adapter) (any, bool, error) { + if remoteState, ok := b.RemoteStateCache.Load(targetResourceKey); ok { + return remoteState, true, nil + } + return nil, false, nil } // resolveReferences processes all references in entry.NewState.Refs. @@ -936,6 +979,14 @@ func (b *DeploymentBundle) resolveReferences(ctx context.Context, resourceKey st return false } + // In offline mode, prefer to carry the last resolved value of each source + // field from the source's own saved state. That avoids depending on the + // target's remote-only fields being present in state and matches the + // migrate command's Method A resolution. + if isPreDeploy && b.Plan.Mode == deployplan.PlanModeOffline { + b.resolveReferencesFromSavedState(ctx, resourceKey, sv) + } + var resolved bool for fieldPathStr, refString := range sv.Refs { refs, ok := dynvar.NewRef(dyn.V(refString)) diff --git a/bundle/direct/dresources/adapter.go b/bundle/direct/dresources/adapter.go index 0c9514e769a..0d5fce99765 100644 --- a/bundle/direct/dresources/adapter.go +++ b/bundle/direct/dresources/adapter.go @@ -73,7 +73,7 @@ type IResource interface { // [Optional] WaitAfterUpdate waits for the resource to become ready after update. Returns optionally updated remote state. // entry is the plan entry being applied; implementations may inspect - // entry.RemoteState (nil in --plan-mode=local) to decide whether a wait + // entry.RemoteState (nil in --planmode=offline) to decide whether a wait // that depends on live remote status should be skipped. WaitAfterUpdate(ctx context.Context, id string, newState any, entry *PlanEntry) (remoteState any, e error) diff --git a/bundle/direct/dresources/app.go b/bundle/direct/dresources/app.go index 43e88583eab..7a4b94fdefa 100644 --- a/bundle/direct/dresources/app.go +++ b/bundle/direct/dresources/app.go @@ -196,7 +196,7 @@ func (r *ResourceApp) DoUpdate(ctx context.Context, id string, config *AppState, } } - // entry.RemoteState is nil in --plan-mode=local: we have no live status, + // entry.RemoteState is nil in --planmode=offline: we have no live status, // so skip lifecycle management (don't Start, don't Stop, don't redeploy code). if entry.RemoteState == nil { return nil, nil @@ -257,7 +257,7 @@ func hasAppChanges(entry *PlanEntry) bool { // active deployment, so before the first deploy (or once a stop clears it) the remote // side is empty and the diff is spurious; it applies on the next start (manageLifecycle). // -// remote is nil in --plan-mode=local (no plan-time DoRead) and when the resource +// remote is nil in --planmode=offline (no plan-time DoRead) and when the resource // does not exist remotely; treat that as "no active deployment" so the skip fires // on the same path without a nil deref. func (*ResourceApp) OverrideChangeDesc(_ context.Context, path *structpath.PathNode, change *ChangeDesc, remote *AppRemote) error { diff --git a/bundle/direct/dresources/app_test.go b/bundle/direct/dresources/app_test.go index d28e8669484..ce813bf5810 100644 --- a/bundle/direct/dresources/app_test.go +++ b/bundle/direct/dresources/app_test.go @@ -178,7 +178,7 @@ func TestAppOverrideChangeDescActiveDeployment(t *testing.T) { // The hook skips drift on the deploy-only fields (source_code_path, config, // git_source) when the app has no active deployment. remote may be a typed - // nil (--plan-mode=local or resource missing remotely); the hook must treat + // nil (--planmode=offline or resource missing remotely); the hook must treat // that as "no active deployment" without dereferencing. tests := []struct { name string diff --git a/bundle/direct/dresources/cluster.go b/bundle/direct/dresources/cluster.go index d884a2d34e4..a6cb28cef43 100644 --- a/bundle/direct/dresources/cluster.go +++ b/bundle/direct/dresources/cluster.go @@ -195,7 +195,7 @@ func (r *ResourceCluster) DoUpdate(ctx context.Context, id string, config *Clust return nil, nil } - // entry.RemoteState is nil in --plan-mode=local: we have no live status, + // entry.RemoteState is nil in --planmode=offline: we have no live status, // so skip lifecycle management. WaitAfterUpdate also skips its wait. if entry.RemoteState == nil { return nil, nil @@ -218,7 +218,7 @@ func (r *ResourceCluster) DoUpdate(ctx context.Context, id string, config *Clust } // WaitAfterUpdate waits for the cluster to reach the desired lifecycle state after DoUpdate. -// In --plan-mode=local, entry.RemoteState is nil and DoUpdate skipped the Start/Stop call +// In --planmode=offline, entry.RemoteState is nil and DoUpdate skipped the Start/Stop call // (see manageLifecycle), so there's no lifecycle transition to wait for. func (r *ResourceCluster) WaitAfterUpdate(ctx context.Context, id string, config *ClusterState, entry *PlanEntry) (*ClusterRemote, error) { if config.Lifecycle == nil || config.Lifecycle.Started == nil { diff --git a/bundle/direct/dresources/grants.go b/bundle/direct/dresources/grants.go index 0928225482e..69160824297 100644 --- a/bundle/direct/dresources/grants.go +++ b/bundle/direct/dresources/grants.go @@ -168,9 +168,9 @@ func buildGrantChanges(desiredAssignments []catalog.PrivilegeAssignment, removed // removedGrantPrincipals returns principals present in the prior remote/saved // state but absent from the desired assignments. Grants has StateType == // RemoteType == *GrantsState, so RemoteState (fresh remote, full mode) and -// PriorState (saved state, populated in every mode) are directly interchangeable: +// PriorState (saved state, populated in offline mode) are directly interchangeable: // we prefer the fresh remote when we have it, and fall back to saved state. -// This makes --plan-mode=local correctly remove principals that config no +// This makes --planmode=offline correctly remove principals that config no // longer declares, using the last-recorded set as the removal baseline. func removedGrantPrincipals(desiredAssignments []catalog.PrivilegeAssignment, entry *PlanEntry) []string { if entry == nil { diff --git a/bundle/direct/dresources/model.go b/bundle/direct/dresources/model.go index 325fba780dd..4d234f3baa2 100644 --- a/bundle/direct/dresources/model.go +++ b/bundle/direct/dresources/model.go @@ -94,7 +94,7 @@ func (r *ResourceMlflowModel) DoUpdate(ctx context.Context, id string, config *m // UpdateModelResponse doesn't include model_id. Normally we carry it forward // from entry.RemoteState (populated by the plan-time DoRead). In - // --plan-mode=local there was no plan-time read, so return nil here; the + // --planmode=offline there was no plan-time read, so return nil here; the // engine's refreshRemoteState will then DoRead and populate the cache with // the correct model_id for post-update reference resolution. old, _ := entry.RemoteState.(*MlflowModelRemote) diff --git a/bundle/direct/dresources/sql_warehouse.go b/bundle/direct/dresources/sql_warehouse.go index 8ccf1aca4b8..2cda9acb8ef 100644 --- a/bundle/direct/dresources/sql_warehouse.go +++ b/bundle/direct/dresources/sql_warehouse.go @@ -168,7 +168,7 @@ func (r *ResourceSqlWarehouse) DoUpdate(ctx context.Context, id string, config * return nil, nil } - // entry.RemoteState is nil in --plan-mode=local: we have no live status, + // entry.RemoteState is nil in --planmode=offline: we have no live status, // so skip lifecycle management. WaitAfterUpdate also skips its wait. if entry.RemoteState == nil { return nil, nil @@ -196,7 +196,7 @@ func (r *ResourceSqlWarehouse) DoUpdate(ctx context.Context, id string, config * } // WaitAfterUpdate waits for the warehouse to reach the desired lifecycle state after DoUpdate. -// In --plan-mode=local, entry.RemoteState is nil and DoUpdate skipped the Start/Stop call, +// In --planmode=offline, entry.RemoteState is nil and DoUpdate skipped the Start/Stop call, // so there's no lifecycle transition to wait for. func (r *ResourceSqlWarehouse) WaitAfterUpdate(ctx context.Context, id string, config *SqlWarehouseState, entry *PlanEntry) (*SqlWarehouseRemote, error) { if config.Lifecycle == nil || config.Lifecycle.Started == nil { diff --git a/bundle/metrics/metrics.go b/bundle/metrics/metrics.go index b0607f17073..c70f01350f9 100644 --- a/bundle/metrics/metrics.go +++ b/bundle/metrics/metrics.go @@ -11,8 +11,9 @@ const ( SqlWarehouseLifecycleStarted = "sql_warehouse_lifecycle_started" SelectUsed = "select_used" - // PlanModeUsed is a metric-key prefix; the mode value ("local"/"offline") is - // appended per deploy, producing metric keys like plan_mode_used_local. + // PlanModeUsed is a metric-key prefix; the mode value is appended per deploy, + // producing metric keys like plan_mode_used_offline. Only recorded when the + // deploy used a non-default plan mode. PlanModeUsed = "plan_mode_used" // Outcome of the dry-run migration to the direct engine attempted after a diff --git a/cmd/bundle/deploy.go b/cmd/bundle/deploy.go index 7af0ea28387..3ce17963614 100644 --- a/cmd/bundle/deploy.go +++ b/cmd/bundle/deploy.go @@ -44,8 +44,8 @@ See https://docs.databricks.com/en/dev-tools/bundles/index.html for more informa cmd.Flags().BoolVar(&verbose, "verbose", false, "Enable verbose output.") cmd.Flags().StringVar(&readPlanPath, "plan", "", "Path to a JSON plan file to apply instead of planning (direct engine only).") cmd.Flags().StringSliceVar(&selectResources, "select", nil, "Deploy only the specified resource (e.g. 'my_job' or 'jobs.my_job'). Can be repeated or comma-separated.") - cmd.Flags().StringVar(&planMode, "plan-mode", "", "How much of the remote state to consult when planning the deploy: full (default), local, offline.") - cmd.Flags().MarkHidden("plan-mode") + cmd.Flags().StringVar(&planMode, "planmode", "", "How much of the remote state to consult when planning the deploy: full (default) or offline.") + cmd.Flags().MarkHidden("planmode") // Verbose flag currently only affects file sync output, it's used by the vscode extension cmd.Flags().MarkHidden("verbose") diff --git a/cmd/bundle/plan.go b/cmd/bundle/plan.go index efde1e7cca4..8692acd5ab4 100644 --- a/cmd/bundle/plan.go +++ b/cmd/bundle/plan.go @@ -35,8 +35,8 @@ It is useful for previewing changes before running 'bundle deploy'.`, cmd.Flags().StringVarP(&clusterId, "cluster-id", "c", "", "Override cluster in the deployment with the given cluster ID.") cmd.Flags().MarkDeprecated("compute-id", "use --cluster-id instead") cmd.Flags().StringSliceVar(&selectResources, "select", nil, "Plan only the specified resource (e.g. 'my_job' or 'jobs.my_job'). Can be repeated or comma-separated.") - cmd.Flags().StringVar(&planMode, "plan-mode", "", "How much of the remote state to consult during plan: full (default), local, offline.") - cmd.Flags().MarkHidden("plan-mode") + cmd.Flags().StringVar(&planMode, "planmode", "", "How much of the remote state to consult during plan: full (default) or offline.") + cmd.Flags().MarkHidden("planmode") cmd.RunE = func(cmd *cobra.Command, args []string) error { mode, err := deployplan.ParsePlanMode(planMode) diff --git a/cmd/bundle/utils/process.go b/cmd/bundle/utils/process.go index 2c96adecca6..6f5459f7ce2 100644 --- a/cmd/bundle/utils/process.go +++ b/cmd/bundle/utils/process.go @@ -208,13 +208,13 @@ func ProcessBundleRet(cmd *cobra.Command, opts ProcessOptions) (b *bundle.Bundle return b, stateDesc, root.ErrAlreadyPrinted } - // --plan-mode local/offline skip the per-resource remote read; only the direct engine performs it. - if b.PlanMode.SkipsRemoteReads() { + // --planmode=offline skips the per-resource remote read; only the direct engine performs it. + if b.PlanMode == deployplan.PlanModeOffline { if !stateDesc.Engine.IsDirect() { - logdiag.LogError(ctx, fmt.Errorf("--plan-mode=%s is only supported with the direct engine. See https://docs.databricks.com/aws/en/dev-tools/bundles/direct", b.PlanMode)) + logdiag.LogError(ctx, errors.New("--planmode=offline is only supported with the direct engine. See https://docs.databricks.com/aws/en/dev-tools/bundles/direct")) return b, stateDesc, root.ErrAlreadyPrinted } - b.Metrics.SetBoolValue(metrics.PlanModeUsed+"_"+string(b.PlanMode), true) + b.Metrics.SetBoolValue(metrics.PlanModeUsed+"_offline", true) } // Open direct engine state once for all subsequent operations (ExportState, CalculatePlan, Apply, etc.) @@ -278,8 +278,8 @@ func ProcessBundleRet(cmd *cobra.Command, opts ProcessOptions) (b *bundle.Bundle if plan.CLIVersion != currentVersion { log.Warnf(ctx, "Plan was created with CLI version %s but current version is %s", plan.CLIVersion, currentVersion) } - if plan.Mode.SkipsRemoteReads() { - log.Warnf(ctx, "Plan was created with --plan-mode=%s and does not reflect the remote state of resources; applying it may miss out-of-band drift", plan.Mode) + if plan.Mode == deployplan.PlanModeOffline { + log.Warnf(ctx, "Plan was created with --planmode=offline and does not reflect the remote state of resources; applying it may miss out-of-band drift") } // Validate that the plan's lineage and serial match the current state From 796ad5772c2ce4bdf71bab222a1c0e03375e8e37 Mon Sep 17 00:00:00 2001 From: Denis Bilenko Date: Wed, 22 Jul 2026 21:40:29 +0200 Subject: [PATCH 25/25] acc: refresh no_drift out.test.toml for LOCAL_DIFF matrix --- acceptance/bundle/invariant/no_drift/out.test.toml | 1 + 1 file changed, 1 insertion(+) diff --git a/acceptance/bundle/invariant/no_drift/out.test.toml b/acceptance/bundle/invariant/no_drift/out.test.toml index 0c8462419cc..b075815398e 100644 --- a/acceptance/bundle/invariant/no_drift/out.test.toml +++ b/acceptance/bundle/invariant/no_drift/out.test.toml @@ -57,4 +57,5 @@ EnvMatrix.INPUT_CONFIG = [ "volume_path_job_ref.yml.tmpl", "volume_uppercase_name.yml.tmpl" ] +EnvMatrix.LOCAL_DIFF = ["", "--planmode=offline"] EnvMatrix.READPLAN = ["", "1"]