Skip to content

Add support for Vector Search Endpoint (direct only)#4887

Merged
janniklasrose merged 49 commits intomainfrom
janniklasrose/vs-endpoint
Apr 20, 2026
Merged

Add support for Vector Search Endpoint (direct only)#4887
janniklasrose merged 49 commits intomainfrom
janniklasrose/vs-endpoint

Conversation

@janniklasrose
Copy link
Copy Markdown
Contributor

@janniklasrose janniklasrose commented Apr 2, 2026

Changes

Adds vector_search_endpoints as a first-class resource type, using the direct deployment engine (only, no TF support).

New configuration surface

resources:
  vector_search_endpoints:
    my_endpoint:
      name: my-endpoint
      endpoint_type: STANDARD
      min_qps: 1
      budget_policy_id: my-policy
      permissions:
        - level: CAN_USE
          group_name: data-team

Required fields: name, endpoint_type. Optional: min_qps, budget_policy_id, permissions.

Key points to note

State ID = endpoint name. The CRUD API identifies endpoints by name; the UUID
(endpoint_uuid) is stored separately in the refresh output for use by the permissions API.

endpoint_type is immutable. Changing it triggers delete + recreate (resources.yml).

Two separate update APIs. DoUpdate dispatches to:

  • UpdateEndpointBudgetPolicy when budget_policy_id changes
  • PatchEndpoint when min_qps changes

These can fire in the same deploy if both fields change.

budget_policy_id drift is suppressed. The API returns effective_budget_policy_id
(which includes inherited workspace policies), not the user-set value. Until the SDK
exposes budget_policy_id separately, remote changes to this field are ignored
(reason: effective_vs_requested in resources.yml). See TODO in
bundle/direct/dresources/vector_search_endpoint.go:53.

Permissions use UUID, not name. The PreparePermissionsInputConfig function uses
${...endpoint_uuid} as the object ID when constructing the permissions API path for
vector search endpoints.

Direct-only validation. ValidateDirectOnlyResources (bundle/config/mutator/) emits
an error at plan/deploy time if vector_search_endpoints are present in a non-direct bundle.
Vector Search Endpoints have no Terraform provider.

No dev-mode name prefix. Like UC resources, vector search endpoint names are NOT
prefixed with the dev user name in development mode.

Tests

  • Acceptance & Unit tests.
  • Tested e2e with CLI build.

@janniklasrose janniklasrose marked this pull request as ready for review April 13, 2026 14:02
Copy link
Copy Markdown
Contributor

@andrewnester andrewnester left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Could you please add tests for bind / unbind for this resources before merging?
https://github.com/databricks/cli/tree/main/acceptance/bundle/deployment/bind

Comment thread bundle/direct/dresources/vector_search_endpoint.go Outdated
Comment thread bundle/direct/dresources/vector_search_endpoint.go
@janniklasrose janniklasrose changed the title Vector Search endpoint support (direct only) Add support for Vector Search Endpoint (direct only) Apr 15, 2026
Comment thread acceptance/bundle/invariant/configs/vector_search_endpoint.yml.tmpl
Comment thread acceptance/bundle/resources/vector_search_endpoints/drift/min_qps/script Outdated
Comment thread bundle/direct/dresources/permissions.go
Comment thread Makefile Outdated
Comment thread bundle/schema/jsonschema_for_docs.json
Comment thread bundle/internal/validation/generated/enum_fields.go Outdated
Comment thread bundle/direct/dresources/vector_search_endpoint.go Outdated
Comment thread bundle/direct/dresources/vector_search_endpoint.go Outdated
Comment thread bundle/direct/dresources/vector_search_endpoint.go Outdated
@janniklasrose janniklasrose added this pull request to the merge queue Apr 20, 2026
Merged via the queue into main with commit 5202ec2 Apr 20, 2026
24 checks passed
@janniklasrose janniklasrose deleted the janniklasrose/vs-endpoint branch April 20, 2026 09:50
bernardo-rodriguez pushed a commit to bernardo-rodriguez/b-cli that referenced this pull request Apr 21, 2026
…s#5046)

## Changes

Address review nits on databricks#4887:

- **`update/min_qps/script`**: drop redundant `--keep` + manual `rm`
pair in `print_requests()`. `print_requests.py` already deletes
`out.requests.txt` when `--keep` is omitted, so the pair was a no-op.
([thread](databricks#4887 (comment)))
- **`drift/min_qps/script`**: record `bundle plan --output json`
alongside the existing `contains.py` summary check, so the test pins
down that `min_qps` is the *only* field detected as changed (old=1,
new=1, remote=5), not just the overall count.
([thread](databricks#4887 (comment)))

Not in this PR: the [`recreated_same_name` badness
thread](databricks#4887 (comment))
— that requires real behavior change (storing `endpoint_uuid` in state
and comparing it via `OverrideChangeDesc`, similar to `dashboards.go`'s
etag pattern), so it'll get its own follow-up PR.

## Tests

- `go test ./acceptance -run
TestAccept/bundle/resources/vector_search_endpoints/update/min_qps`
- `go test ./acceptance -run
TestAccept/bundle/resources/vector_search_endpoints/drift/min_qps`
deco-sdk-tagging Bot added a commit that referenced this pull request Apr 22, 2026
## Release v0.298.0

### CLI
* Added `--limit` flag to all paginated list commands for client-side result capping ([#4984](#4984)). On `jobs list` and `jobs list-runs` the former API page-size flag was renamed to `--page-size` (hidden) to avoid collision.
* Accept `yes` in addition to `y` for confirmation prompts, and show `[y/N]` to indicate that no is the default.
* Cache `/.well-known/databricks-config` lookups under `~/.cache/databricks/<version>/host-metadata/` so repeat CLI invocations against the same host skip the ~700ms discovery round trip.
* Deprecated `auth env`. The command is hidden from help listings and prints a deprecation warning to stderr; it will be removed in a future release.

### Bundles
* Remove `experimental-jobs-as-code` template, superseded by `pydabs` ([#4999](#4999)).
* Prompt before destroying or recreating Lakebase resources (database instances, synced database tables, postgres projects and branches) ([#5052](#5052)).
* Treat deleted resources as not running in the `fail-on-active-runs` check ([#5044](#5044)).
* engine/direct: Added support for Vector Search Endpoints ([#4887](#4887)).
* engine/direct: Exclude deploy-only fields (e.g. `lifecycle`) from the Apps update mask so requests that change both `description` and `lifecycle.started` in the same deploy no longer fail with `INVALID_PARAMETER_VALUE` ([#5042](#5042), [#5051](#5051)).
* engine/direct: Fix phantom diffs from `depends_on` reordering in job tasks ([#4990](#4990)).

### Dependency updates
* Bump `github.com/databricks/databricks-sdk-go` from v0.126.0 to v0.128.0 ([#4984](#4984), [#5031](#5031)).
* Bump Go toolchain to 1.25.9 ([#5004](#5004)).
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants