feat(ibis): Snowflake key-pair authentication support #1230
feat(ibis): Snowflake key-pair authentication support #1230goldmedal merged 2 commits intoCanner:mainfrom
Conversation
WalkthroughThe changes update Snowflake connection handling by removing password-based authentication in favor of required warehouse and optional private key fields. Corresponding adjustments are made in model definitions, connection logic, and test configurations to support private key authentication and warehouse specification, replacing previous password usage. Changes
Sequence Diagram(s)sequenceDiagram
participant Test as Test Suite
participant Model as SnowflakeConnectionInfo
participant DataSource as DataSourceExtension
participant Snowflake as Snowflake DB
Test->>Model: Provide connection_info (warehouse, private_key)
Model->>DataSource: Pass connection_info
DataSource->>Snowflake: Connect using warehouse and private_key
Snowflake-->>DataSource: Connection established
DataSource-->>Test: Connection result
Suggested reviewers
Poem
📜 Recent review detailsConfiguration used: CodeRabbit UI 📒 Files selected for processing (1)
🚧 Files skipped from review as they are similar to previous changes (1)
⏰ Context from checks skipped due to timeout of 90000ms (1)
✨ Finishing Touches
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. 🪧 TipsChatThere are 3 ways to chat with CodeRabbit:
SupportNeed help? Create a ticket on our support page for assistance with any issues or questions. Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments. CodeRabbit Commands (Invoked using PR comments)
Other keywords and placeholders
CodeRabbit Configuration File (
|
There was a problem hiding this comment.
Actionable comments posted: 1
🧹 Nitpick comments (1)
ibis-server/app/model/data_source.py (1)
229-229: Use{}instead ofdict()for empty dictionaryApply this diff to follow Python best practices:
- else dict(), + else {},
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (4)
ibis-server/app/model/__init__.py(1 hunks)ibis-server/app/model/data_source.py(1 hunks)ibis-server/tests/routers/v2/connector/test_snowflake.py(1 hunks)ibis-server/tests/routers/v3/connector/snowflake/conftest.py(1 hunks)
🧰 Additional context used
🪛 Pylint (3.3.7)
ibis-server/app/model/data_source.py
[refactor] 229-229: Consider using '{}' instead of a call to 'dict'.
(R1735)
⏰ Context from checks skipped due to timeout of 90000ms (1)
- GitHub Check: ci
🔇 Additional comments (3)
ibis-server/tests/routers/v3/connector/snowflake/conftest.py (1)
20-27: LGTM!The test fixture correctly updates to use the new authentication approach with warehouse specification and private key from environment variable.
ibis-server/tests/routers/v2/connector/test_snowflake.py (1)
13-20: LGTM!The connection info updates are consistent with the v3 test configuration and align with the new authentication approach.
ibis-server/app/model/__init__.py (1)
299-306: LGTM!The model correctly defines the new connection schema with required warehouse and optional private key fields, properly supporting the key-pair authentication approach.
Snowflake is deprecating password-based login (non mfa) in 2025. This PR adds support for key pair authentication to align with upcoming requirements.
Snowflake security mfa rollout
Summary by CodeRabbit
New Features
Tests