BackendCapabilitiesInterface
interface BackendCapabilitiesInterface (View source)
Capability probe telling callers which kind of DNS backend they hold.
Methods
Check if this is the API backend.
Whether backend writes can be wrapped in a transaction on the Poweradmin database.
Whether record ids are the integer records.id values.
Whether the backend writes and maintains the apex SOA of the zones it creates.
Whether zone ids are allocated from the local zones table rather than the PowerDNS domains table.
Whether the zone list can carry the serial PowerDNS serves for signed zones.
Whether zone lists can be ordered by record count across every page.
Whether zone lists can be ordered by owning group.
Whether a secondary zone can be pulled from its primary on request.
Whether a primary zone can be told to send NOTIFY on request.
Whether the local zone list is a mirror that can be refreshed from the server.
Details
bool
isApiBackend()
Check if this is the API backend.
Callers can use this to adjust behavior (e.g., skip manual SOA serial updates, show notices about search limitations).
bool
supportsLocalWriteTransaction()
Whether backend writes can be wrapped in a transaction on the Poweradmin database.
True for the SQL backend, where the PowerDNS tables share the connection. False for the API backend: it writes over HTTP and then reads the local zones table for the new ids, and an open transaction would hide those rows.
bool
recordIdsAreNumeric()
Whether record ids are the integer records.id values.
True for the SQL backend. False for the API backend, whose record ids are encoded composite keys (see RecordIdentifier) that do not fit an INT column.
bool
managesSoaRecord()
Whether the backend writes and maintains the apex SOA of the zones it creates.
True for the API backend, where PowerDNS seeds the SOA on zone creation and template SOA records are skipped. False for the SQL backend, which stores whatever SOA Poweradmin writes.
bool
allocatesZoneIdsLocally()
Whether zone ids are allocated from the local zones table rather than the PowerDNS domains table.
True for the API backend: createZone() inserts the zones row itself and a zone is identified by that row alone. False for the SQL backend, where the id is domains.id, the caller adds the zones row and a zone without a domains row is stale.
bool
providesSignedSerial()
Whether the zone list can carry the serial PowerDNS serves for signed zones.
True for the API backend, whose zone list reports the signed serial. False for the SQL backend, which only sees the stored SOA serial.
bool
supportsRecordCountSort()
Whether zone lists can be ordered by record count across every page.
True for the SQL backend, which counts in the query. False for the API backend, where counts are resolved per page and a sort would only order the rows already on screen.
bool
supportsGroupSort()
Whether zone lists can be ordered by owning group.
True for the SQL backend, which joins the Poweradmin ownership tables in the list query. False for the API backend, whose zone list comes from PowerDNS and cannot join them.
bool
supportsZoneRetrieve()
Whether a secondary zone can be pulled from its primary on request.
True for the API backend, and for the SQL backend when a PowerDNS API is configured. False otherwise, as there is no way to trigger a transfer.
bool
supportsZoneNotify()
Whether a primary zone can be told to send NOTIFY on request.
True for the API backend, and for the SQL backend when a PowerDNS API is configured. False otherwise, as there is no way to trigger a NOTIFY.
bool
syncsZoneListFromServer()
Whether the local zone list is a mirror that can be refreshed from the server.
True for the API backend, where the zones table is synced from PowerDNS. False for the SQL backend, where the domains table is the source itself.