|
|
143cf9c792
|
feat: add peer sync worker for zone_data exchange between nodes 🔄
Adds optional peer-to-peer zone_data replication between directdnsonly
instances. Enables eventual consistency in DA Multi-Server topologies
without a shared datastore.
- InternalAPI: GET /internal/zones (list) and ?domain= (detail)
exposes zone_data to peers via existing basic auth
- PeerSyncWorker: interval-based daemon thread that fetches zone_data
from configured peers, storing newer entries locally; peer downtime
is silently skipped and retried next interval
- WorkerManager: wires PeerSyncWorker alongside reconciler; exposes
peer_syncer_alive in queue_status
- Config: peer_sync block with enabled/interval_minutes/peers[]
- Tests: 13 tests covering sync, skip-older, skip-unreachable, empty
peer list, bad status, and missing zone_data scenarios
|
2026-02-19 22:16:55 +13:00 |
|
|
|
bd46227364
|
feat: add test suite, fix backend bugs, remove legacy artifacts 🧪
- Add 73-test suite across conftest, utils, admin API, reconciler, zone parser,
and CoreDNS MySQL backend (all green, ~0.5s)
- Fix zone_exists filter using wrong column name (name → zone_name)
- Fix delete_zone missing dot_fqdn normalization on lookup
- Remove spurious unused `from config import config` in coredns_mysql.py
- Fix config loader to search module-relative path so tests find app.yml
without needing a root-level config/ directory
- Remove legacy v1 Flask prototype (app.py), empty config.json, and
duplicate root config/app.yml
|
2026-02-18 22:03:04 +13:00 |
|