databricks-cli/bundle/config
shreyas-goenka 2847533e1e
Add DABs support for Unity Catalog volumes (#1762)
## Changes

This PR adds support for UC volumes to DABs.

### Can I use a UC volume managed by DABs in `artifact_path`?

Yes, but we require the volume to exist before being referenced in
`artifact_path`. Otherwise you'll see an error that the volume does not
exist. For this case, this PR also adds a warning if we detect that the
UC volume is defined in the DAB itself, which informs the user to deploy
the UC volume in a separate deployment first before using it in
`artifact_path`.

We cannot create the UC volume and then upload the artifacts to it in
the same `bundle deploy` because `bundle deploy` always uploads the
artifacts to `artifact_path` before materializing any resources defined
in the bundle. Supporting this in a single deployment requires us to
migrate away from our dependency on the Databricks Terraform provider to
manage the CRUD lifecycle of DABs resources.

### Why do we not support `preset.name_prefix` for UC volumes?

UC volumes will not have a `dev_shreyas_goenka` prefix added in `mode:
development`. Configuring `presets.name_prefix` will be a no-op for UC
volumes. We have decided not to support prefixing for UC resources. This
is because:
1. UC provides its own namespace hierarchy that is independent of DABs.
2. Users can always manually use `${workspace.current_user.short_name}`
to configure the prefixes manually.

Customers often manually set up a UC hierarchy for dev and prod,
including a schema or catalog per developer. Thus, it's often
unnecessary for us to add prefixing in `mode: development` by default
for UC resources.

In retrospect, supporting prefixing for UC schemas and registered models
was a mistake and will be removed in a future release of DABs.

## Tests
Unit, integration test, and manually. 

### Manual Testing cases:
 1. UC volume does not exist:
```
➜  bundle-playground git:(master) ✗ cli bundle deploy
Error: failed to fetch metadata for the UC volume /Volumes/main/caps/my_volume that is configured in the artifact_path: Not Found
```

2. UC Volume does not exist, but is defined in the DAB
```
➜  bundle-playground git:(master) ✗ cli bundle deploy
Error: failed to fetch metadata for the UC volume /Volumes/main/caps/managed_by_dab that is configured in the artifact_path: Not Found

Warning: You might be using a UC volume in your artifact_path that is managed by this bundle but which has not been deployed yet. Please deploy the UC volume in a separate bundle deploy before using it in the artifact_path.
  at resources.volumes.bar
  in databricks.yml:24:7

```

---------

Co-authored-by: Pieter Noordhuis <pieter.noordhuis@databricks.com>
2024-12-02 21:18:07 +00:00
..
generate Add bundle generate variant for dashboards (#1847) 2024-10-29 11:51:59 +00:00
loader Add validation for files with a `.(resource-name).yml` extension (#1780) 2024-10-07 09:16:20 +00:00
mutator Add DABs support for Unity Catalog volumes (#1762) 2024-12-02 21:18:07 +00:00
resources Add DABs support for Unity Catalog volumes (#1762) 2024-12-02 21:18:07 +00:00
validate Add validation for single node clusters (#1909) 2024-11-22 15:48:09 +00:00
variable Support lookup by name of notification destinations (#1922) 2024-11-21 15:52:14 +01:00
artifact.go Stop tracking file path locations in bundle resources (#1673) 2024-08-13 12:50:15 +00:00
artifacts_test.go Added exec.NewCommandExecutor to execute commands with correct interpreter (#1075) 2023-12-21 15:45:23 +00:00
bundle.go Add the `bundle_uuid` helper function for templates (#1947) 2024-12-02 10:29:29 +00:00
deployment.go Make lock optional in the JSON schema (#1738) 2024-09-02 08:39:08 +00:00
experimental.go Make `pydabs/venv_path` optional (#1687) 2024-08-20 13:26:57 +00:00
filename.go Move bundle configuration filename code (#917) 2023-10-25 09:54:39 +00:00
filename_test.go Move bundle configuration filename code (#917) 2023-10-25 09:54:39 +00:00
git.go Use dynamic configuration model in bundles (#1098) 2024-02-16 19:41:58 +00:00
lock.go Disable locking for development mode (#1302) 2024-04-18 01:59:39 +00:00
lock_test.go Acquire lock prior to deploy (#270) 2023-03-22 16:37:26 +01:00
presets.go Source-linked deployments for bundles in the workspace (#1884) 2024-11-20 13:22:27 +01:00
resources.go Add DABs support for Unity Catalog volumes (#1762) 2024-12-02 21:18:07 +00:00
resources_test.go Add `bundle summary` to display URLs for deployed resources (#1731) 2024-10-18 06:45:47 +00:00
root.go Simplified isFullVariableOverrideDef implementation (#1791) 2024-09-26 12:55:07 +00:00
root_test.go Fixed full variable override detection (#1787) 2024-09-25 12:35:16 +00:00
sync.go Add paths field to bundle sync configuration (#1694) 2024-08-21 15:33:25 +00:00
target.go Added support for creating all-purpose clusters (#1698) 2024-09-23 10:42:34 +00:00
workspace.go Always prepend bundle remote paths with /Workspace (#1724) 2024-10-02 15:34:00 +00:00
workspace_test.go Resolve configuration before performing verification (#890) 2023-10-20 13:10:31 +00:00