databricks-cli/libs/filer
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
..
completer Consolidate test helpers for `io/fs` (#1906) 2024-11-15 15:37:21 +00:00
dbfs_client.go Upgraded Go version to 1.21 (#664) 2023-08-15 13:50:40 +00:00
fake_filer.go Consolidate test helpers for `io/fs` (#1906) 2024-11-15 15:37:21 +00:00
fake_filer_test.go Consolidate test helpers for `io/fs` (#1906) 2024-11-15 15:37:21 +00:00
filer.go Use `filer.Filer` to write template instantiation (#1911) 2024-11-20 11:11:31 +01:00
filer_test.go Use `filer.Filer` to write template instantiation (#1911) 2024-11-20 11:11:31 +01:00
files_client.go [Fix] Do not buffer files in memory when downloading (#1599) 2024-07-17 07:14:02 +00:00
fs.go Add fs.FS adapter for the filer interface (#422) 2023-06-02 12:49:59 +00:00
fs_test.go Consolidate test helpers for `io/fs` (#1906) 2024-11-15 15:37:21 +00:00
local_client.go Use `filer.Filer` to write template instantiation (#1911) 2024-11-20 11:11:31 +01:00
local_root_path.go Remove unnecessary `filepath.FromSlash` calls (#1458) 2024-05-29 15:30:26 +00:00
local_root_path_test.go Make local files default for fs commands (#506) 2023-06-23 16:07:09 +02:00
slice.go Upgraded Go version to 1.21 (#664) 2023-08-15 13:50:40 +00:00
slice_test.go Abstract over file handling with WSFS or DBFS through filer interface (#135) 2022-12-14 15:37:14 +01:00
workspace_files_cache.go Implement readahead cache for Workspace API calls (#1582) 2024-07-18 09:45:10 +00:00
workspace_files_cache_test.go Add tests for the Workspace API readahead cache (#1605) 2024-07-19 07:03:25 +00:00
workspace_files_client.go Add DABs support for Unity Catalog volumes (#1762) 2024-12-02 21:18:07 +00:00
workspace_files_client_test.go Move bespoke status call to main workspace files filer (#1570) 2024-07-05 11:32:29 +00:00
workspace_files_extensions_client.go Fix workspace extensions filer accidentally reading notebooks (#1891) 2024-11-18 17:25:24 +00:00
workspace_files_extensions_client_test.go Add DABs support for Unity Catalog volumes (#1762) 2024-12-02 21:18:07 +00:00
workspace_root_path.go Make local files default for fs commands (#506) 2023-06-23 16:07:09 +02:00
workspace_root_path_test.go Make local files default for fs commands (#506) 2023-06-23 16:07:09 +02:00