Commit Graph

23 Commits

Author SHA1 Message Date
Claude Code
6143f2b4f9 feat(databricks): treat "no valid authentication settings" as re-auth signal
The databricks-sql-connector raises a generic RuntimeError with the message
"No valid authentication settings!" when no usable credentials are present
(e.g. a cleared/expired OAuth2 token). Add it to oauth2_auth_failure_signals
so needs_oauth2 bootstraps the OAuth2 dance for that case as well.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-30 16:53:33 -07:00
Evan
563edfdd9f fix(databricks): tighten 401 oauth2 signal to avoid false positives
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-27 21:33:16 -07:00
Evan
910e79dd8c fix(databricks): correct OAuth2 trigger and derive endpoints from workspace host
Addresses review feedback on the Databricks OAuth2 flow:

- `oauth2_exception` was set to `OAuth2RedirectError` (Superset's own redirect
  signal, also the base default), so `needs_oauth2()` never matched a real
  Databricks token failure and the dance never auto-started. The driver has no
  dedicated auth exception, so detect auth failures from the error message
  instead (mirrors `GSheetsEngineSpec.needs_oauth2`).

- The per-cloud endpoint templates pointed Azure at Entra ID directly
  (`login.microsoftonline.com`) and required `account_id`/`tenant_id`
  substitution. Databricks fronts the U2M flow on every workspace at
  `https://<host>/oidc/v1/{authorize,token}` across AWS/Azure/GCP, so the
  authorization endpoint now derives from the workspace host with no account
  identifier. The token endpoint still requires explicit config (no DB context
  at exchange time); the error and docs now point at the workspace-host URL.

Shared OAuth logic is consolidated onto `DatabricksDynamicBaseEngineSpec`,
removing the duplicated overrides in both engine specs.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-27 21:33:16 -07:00
Evan
fe69d222bd test(databricks): docstring the shared OAuth2 state helper
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-27 21:33:16 -07:00
Evan Rusackas
ea1ba587f2 fix(databricks): resolve account_id in OAuth2 endpoints, preserve configured URIs
The per-cloud OAuth2 endpoint templates carry a `{}` placeholder for the
Databricks account id (or Azure tenant id) that was never substituted, so
auto-detected authorize/token URLs were emitted as `.../accounts/{}/v1/...`.
The authorization-URI methods also unconditionally overwrote a fully-resolved
`authorization_request_uri` supplied via DATABASE_OAUTH2_CLIENTS.

- Add `_resolve_oauth2_endpoint`: substitutes `account_id`/`tenant_id` from the
  database extra into the template, or raises OAuth2Error when absent instead of
  issuing a request to an unresolved endpoint.
- Preserve a configured `authorization_request_uri`; only auto-detect/resolve
  when none is set.
- `get_oauth2_token` has no database context to auto-detect, so fail fast on a
  missing `token_request_uri` rather than POST to `.../{}/v1/token`.
- Cover auto-detect/resolve, preserve-configured, and fail-fast paths for both
  the native and Python-connector specs; document `account_id`/`tenant_id`.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-27 21:33:16 -07:00
fabian_zse
1de21ec5c6 support all cloud providers 2026-06-27 21:33:15 -07:00
fabian_zse
a0fdb2aa31 add databricks oauth support 2026-06-27 21:33:15 -07:00
Shaitan
2e7a2b1f2d fix: escape SQL identifiers in db engine spec prequeries and metadata queries (#39840)
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-15 09:48:38 -04:00
Vitor Avila
db959a6463 chore(Databricks): Display older Databricks driver as legacy (#33001) 2025-04-04 15:09:15 -03:00
Maxime Beauchemin
e51b95ffa8 chore: enforce more ruff rules (#31447)
Co-authored-by: Elizabeth Thompson <eschutho@gmail.com>
2024-12-18 17:41:34 -08:00
Vitor Avila
d66ac9f3f4 fix(Databricks): Escape catalog and schema names in pre-queries (#31199) 2024-12-02 14:00:00 -03:00
Patrick Schmidt
6294e339e2 feat(db_engine): Implement user impersonation support for StarRocks (#28110) 2024-09-06 09:13:38 -07:00
Josh Soref
1818054166 chore(tests): Spelling (#25454)
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com>
Co-authored-by: Evan Rusackas <evan@preset.io>
Co-authored-by: John Bodley <4567245+john-bodley@users.noreply.github.com>
2024-08-20 14:47:29 -06:00
Eyal Ezer
07b2449bd7 refactor: Unify all json.(loads|dumps) usage to utils.json (#28702)
Co-authored-by: Eyal Ezer <eyal.ezer@ge.com>
2024-05-28 14:17:41 -07:00
Beto Dealmeida
f29e1e4c29 feat: catalog support for Databricks native (#28394) 2024-05-09 17:41:15 -04:00
Vitor Avila
307ebeaa19 chore(Databricks): New Databricks driver (#28393) 2024-05-09 14:58:03 -04:00
Maxime Beauchemin
2d63722150 chore: set up ruff as a new linter/formatter (#28158) 2024-04-24 17:19:53 -07:00
Daniel Vaz Gaspar
0ddc0a6738 chore: remove marshmallow-enum dependency and bump FAB (#24499) 2023-06-27 08:37:43 +01:00
Ville Brofeldt
cd6fc35f60 chore(db_engine_specs): clean up column spec logic and add tests (#22871) 2023-01-31 15:54:07 +02:00
Elizabeth Thompson
d091a68909 fix: better logic to extract errors on databricks (#22792) 2023-01-20 15:35:09 -08:00
Elizabeth Thompson
cd1f6d469b fix: remove whitespace from http_path for databricks (#22671) 2023-01-13 14:50:18 -08:00
Beto Dealmeida
bdeedaaf80 chore: set Snowflake user agent (#22432) 2022-12-15 17:08:34 -08:00
Elizabeth Thompson
5c77f1ad2a feat: add databricks form (#21573) 2022-12-02 10:36:27 -08:00