databricks-cli/bundle/config
shreyas-goenka 7beb0fb8b5
Add validation mutator for volume `artifact_path` (#2050)
## Changes
This PR:
1. Incrementally improves the error messages shown to the user when the
volume they are referring to in `workspace.artifact_path` does not
exist.
2. Performs this validation in both `bundle validate` and `bundle
deploy` compared to before on just deployments.
3. It runs "fast" validations on `bundle deploy`, which earlier were
only run on `bundle validate`.


## Tests
Unit tests and manually. Also, existing integration tests provide
coverage (`TestUploadArtifactToVolumeNotYetDeployed`,
`TestUploadArtifactFileToVolumeThatDoesNotExist`)

Examples:
```
.venv➜  bundle-playground git:(master) ✗ cli bundle validate
Error: cannot access volume capital.whatever.my_volume: User does not have READ VOLUME on Volume 'capital.whatever.my_volume'.
  at workspace.artifact_path
  in databricks.yml:7:18
```

and

```
.venv➜  bundle-playground git:(master) ✗ cli bundle validate
Error: volume capital.whatever.foobar does not exist
  at workspace.artifact_path
     resources.volumes.foo
  in databricks.yml:7:18
     databricks.yml:12:7

You are using a volume in your artifact_path that is managed by
this bundle but which has not been deployed yet. Please first deploy
the volume using 'bundle deploy' and then switch over to using it in
the artifact_path.
```
2025-01-02 17:23:15 +05:30
..
generate Enable gofumpt and goimports in golangci-lint (#1999) 2024-12-12 10:28:42 +01:00
loader Enable gofumpt and goimports in golangci-lint (#1999) 2024-12-12 10:28:42 +01:00
mutator Enable testifylint and fix the issues (#2065) 2025-01-02 12:03:41 +01:00
resources Add DABs support for Unity Catalog volumes (#1762) 2024-12-02 21:18:07 +00:00
validate Add validation mutator for volume `artifact_path` (#2050) 2025-01-02 17:23:15 +05:30
variable Enable gofumpt and goimports in golangci-lint (#1999) 2024-12-12 10:28:42 +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 Enable gofumpt and goimports in golangci-lint (#1999) 2024-12-12 10:28:42 +01: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 Enable gofumpt and goimports in golangci-lint (#1999) 2024-12-12 10:28:42 +01:00
resources.go Add DABs support for Unity Catalog volumes (#1762) 2024-12-02 21:18:07 +00:00
resources_test.go Enable testifylint and fix the issues (#2065) 2025-01-02 12:03:41 +01:00
root.go Fix lost diags across different mutators (#2057) 2024-12-31 14:01:45 +00:00
root_test.go Enable gofumpt and goimports in golangci-lint (#1999) 2024-12-12 10:28:42 +01: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 Add error checking in tests and enable errcheck there (#1980) 2024-12-09 13:56:41 +01:00