Remove legacy source provider sync path

This commit is contained in:
Lyncoln
2026-09-20 20:36:09 -04:00
parent ed97b644e8
commit 71d8b34793
15 changed files with 22 additions and 399 deletions
+10 -20
View File
@@ -4,27 +4,17 @@ A plugin-based DNS reconciliation service.
## Plugin contract
Source modules live under `dns_sync/plugins/sources/` and export a class named `Plugin` with:
The reconciliation runtime is adapter-based.
- `name`
- `discover() -> list[DesiredRecord]`
Adapter plugins expose:
Provider modules live under `dns_sync/plugins/providers/` and export `Plugin` with:
- `Plugin`
- `configured_endpoints(config)`
- `name`
- `capabilities`
- `connect()`
- `list_records()`
- `add_record()`
- `update_record()`
- `delete_record()`
- `verify_record()`
- `capacity()`
Plugins are convention-loaded from environment variables. No registry edit is needed:
- `PROXY=npm` loads `dns_sync.plugins.sources.npm.Plugin`
- `DNS_PROVIDER=verizon` loads `dns_sync.plugins.providers.verizon.Plugin`
Each adapter declares object-specific discovery, apply, and verification
capabilities. Built-in adapters live under `dns_sync/plugins/adapters/`.
External adapters are loaded from `DNS_SYNC_PLUGIN_PATH` and must be
explicitly enabled through `ENABLED_PLUGINS`.
## Plugins
@@ -109,8 +99,8 @@ ROUTER_PASSWORD=...
## Domain filtering
Filtering is performed by the central engine after source discovery and before
reconciliation, so all source plugins get identical behavior.
Filtering is performed centrally after adapter discovery and before
reconciliation, so endpoint-specific adapters get identical behavior.
```text
DOMAIN_MATCHING=true