Skip to content

feat: add etcd v3 database plugin#343

Merged
datlechin merged 10 commits intomainfrom
feat/etcd-plugin
Mar 16, 2026
Merged

feat: add etcd v3 database plugin#343
datlechin merged 10 commits intomainfrom
feat/etcd-plugin

Conversation

@datlechin
Copy link
Copy Markdown
Collaborator

@datlechin datlechin commented Mar 16, 2026

Summary

  • Add etcd v3 driver plugin (registry-distributed) using HTTP/JSON gateway, no C bridge needed
  • Prefix-tree key browsing: sidebar shows key prefixes as directories (/app/, /users/, (root))
  • etcdctl-compatible editor: get, put, del, watch, lease, member, endpoint, auth, user, role commands with flags
  • Full mTLS support (CA cert + client cert + client key), username/password auth with token management
  • Lease management (grant, revoke, timetolive, list), bounded watch, cluster info
  • CRUD via data grid: edit values, rename keys, attach leases, delete keys
  • Fix QueryTab.buildBaseTableQuery to use plugin's buildBrowseQuery when available, so NoSQL plugins get table-specific initial queries instead of hardcoded SCAN commands
  • Fix DispatchQueue.sync missing execute: label in SSH tunnel code

Closes #339

Test plan

  • Start local etcd: docker run -d --name etcd -p 2379:2379 -e ALLOW_NONE_AUTHENTICATION=yes quay.io/coreos/etcd:v3.5.0 /usr/local/bin/etcd --advertise-client-urls http://0.0.0.0:2379 --listen-client-urls http://0.0.0.0:2379
  • Seed test data: etcdctl --endpoints=http://127.0.0.1:2379 put /app/config/db_host localhost (and more keys)
  • Connect in TablePro: host 127.0.0.1, port 2379, no auth, TLS disabled
  • Verify sidebar shows prefix groups (/app/, /users/, (root))
  • Click sidebar items and verify table-specific key data loads
  • Test editor commands: get /app/config/db_host, member list, endpoint status, lease list
  • Test CRUD: edit a value, add a key, delete a key via data grid
  • Verify existing Redis plugin still works correctly (regression)

Summary by CodeRabbit

  • New Features

    • Adds a full etcd v3 plugin: browse, query-builder integration, edit key/value data, lease management, watch streams, auth/user/role management, cluster/endpoint info, compaction, and etcdctl-style command support. Etcd is selectable as a database type with TLS/mTLS connection options and command completions.
  • Tests

    • Extensive unit tests for command parsing, query building, HTTP utilities, and statement generation.
  • Chores

    • Project integration and plugin packaging entries added.
  • Documentation

    • Changelog updated with etcd v3 plugin entry.

Loading
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.

feat: etcd support

1 participant