Skip to content

Fixes #28981: Migrate salesforce, domodatabase, saperp, sas, deltalake, burstiq to BaseConnection#28982

Merged
IceS2 merged 3 commits into
mainfrom
refactor/db-baseconnection-final-six
Jun 12, 2026
Merged

Fixes #28981: Migrate salesforce, domodatabase, saperp, sas, deltalake, burstiq to BaseConnection#28982
IceS2 merged 3 commits into
mainfrom
refactor/db-baseconnection-final-six

Conversation

@IceS2

@IceS2 IceS2 commented Jun 11, 2026

Copy link
Copy Markdown
Contributor

Fixes #28981

What

The final batch — migrates the last six non-Engine connectors: salesforce, domodatabase, saperp, sas, deltalake, burstiq. With this, every database connector is on BaseConnection.

Shape

Each returns a native client (C = that client), and test_connection drives native calls via self.client:

Connector C
salesforce simple-salesforce Salesforce
domodatabase pydomo Domo
saperp SapErpClient
sas SASClient
deltalake DeltalakeClient (PySpark/S3)
burstiq BurstIQClient (cached)

Kept module-level (imported elsewhere)

  • deltalake: get_deltalake_client (singledispatch) + DeltalakeClient; _get_client builds the client through them.
  • burstiq: get_connection + its SHA-256 client cache (metadata.py imports get_connection); _get_client delegates.

Tests

Colocated unit tests (subclassing, guarded with importorskip for optional SDKs); existing topology tests pass (domodatabase, saperp, sas, burstiq). burstiq's connection test repointed to the new class method. ruff + basedpyright clean (pre-existing baselined optional-access carried as inline ignores; salesforce/simple-salesforce import resolves in CI). Logic preserved verbatim.

A live e2e isn't run here (each needs a real Salesforce/Domo/SAP/SAS/Delta/BurstIQ backend).

…BaseConnection

The final non-Engine connectors. Each returns a native client (simple-salesforce
Salesforce, pydomo Domo, SapErpClient, SASClient, DeltalakeClient, BurstIQClient);
build and test move into the connection class. deltalake keeps get_deltalake_client
+ DeltalakeClient module-level; burstiq keeps get_connection (+ its client cache)
module-level since metadata.py imports it, with _get_client delegating. Logic
preserved verbatim; specs wire connection_class. burstiq's connection test
repointed to the new class method.
…et_client

Moving get_connection into _get_client shifted three pre-existing baselined
reportArgumentType errors (password/security_token/consumer_secret accept
CustomSecretStr|str|None where simple-salesforce expects str|None). Invisible
locally without the simple-salesforce SDK; carry inline ignores.
@github-actions

github-actions Bot commented Jun 11, 2026

Copy link
Copy Markdown
Contributor

🟡 Playwright Results — all passed (8 flaky)

✅ 4306 passed · ❌ 0 failed · 🟡 8 flaky · ⏭️ 88 skipped

Shard Passed Failed Flaky Skipped
🟡 Shard 1 300 0 1 4
🟡 Shard 2 809 0 3 9
🟡 Shard 3 811 0 1 8
✅ Shard 4 850 0 0 12
🟡 Shard 5 732 0 2 47
🟡 Shard 6 804 0 1 8
🟡 8 flaky test(s) (passed on retry)
  • Pages/Roles.spec.ts › Roles page should work properly (shard 1, 2 retries)
  • Features/DataQuality/TestCaseImportExportE2eFlow.spec.ts › EditAll User: Complete export-import-validate flow (shard 2, 1 retry)
  • Features/DataQuality/TestCaseResultPermissions.spec.ts › User with only VIEW cannot PATCH results (shard 2, 1 retry)
  • Features/Glossary/GlossaryRemoveOperations.spec.ts › should add and remove reviewer from glossary (shard 2, 1 retry)
  • Features/RTL.spec.ts › Verify Following widget functionality (shard 3, 1 retry)
  • Pages/EntityDataConsumer.spec.ts › Tier Add, Update and Remove (shard 5, 1 retry)
  • Pages/ExplorePageRightPanel_KnowledgeCenter.spec.ts › Should remove user owner for knowledgeCenter (shard 5, 1 retry)
  • Pages/Lineage/LineageFilters.spec.ts › Verify lineage schema filter selection (shard 6, 1 retry)

📦 Download artifacts

How to debug locally
# Download playwright-test-results-<shard> artifact and unzip
npx playwright show-trace path/to/trace.zip    # view trace

… SDK

test_domodatabase/test_salesforce patched pydomo.Domo / simple_salesforce.api.Salesforce,
but the connection modules do 'from pydomo import Domo' / 'from simple_salesforce.api
import Salesforce', so the binding the code uses is <connector>.connection.Domo/Salesforce.
The SDK-level patch only worked when the connection module happened to be first imported
during the test (so the from-import grabbed the mock). Once any other test imports the
connection module first (e.g. the new colocated test), the patch became inert and the real
client authenticated -> invalid_client/ExpatError. Patch where the name is looked up.
@sonarqubecloud

Copy link
Copy Markdown

@IceS2 IceS2 enabled auto-merge (squash) June 12, 2026 11:15
@IceS2 IceS2 merged commit 9059382 into main Jun 12, 2026
57 of 59 checks passed
@IceS2 IceS2 deleted the refactor/db-baseconnection-final-six branch June 12, 2026 14:04
@gitar-bot

gitar-bot Bot commented Jun 12, 2026

Copy link
Copy Markdown
Code Review ✅ Approved

Completes the migration of all remaining database connectors to the BaseConnection architecture. The implementation maintains existing functionality for the six specified connectors with no issues found.

Options

Display: compact → Showing less information.

Comment with these commands to change:

Compact
gitar display:verbose         

Was this helpful? React with 👍 / 👎 | Gitar

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Ingestion safe to test Add this label to run secure Github workflows on PRs

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Migrate salesforce, domodatabase, saperp, sas, deltalake, burstiq to BaseConnection

2 participants