Package Usage: go: github.com/libdns/libdns
Package libdns defines core interfaces that should be implemented by DNS
provider clients. They are small and idiomatic Go interfaces with
well-defined semantics.
Records are described independently of any particular zone, a convention
that grants Record structs portability across zones. As such, record names
are partially qualified, i.e. relative to the zone. For example, an A
record called "sub" in zone "example.com." represents a fully-qualified
domain name (FQDN) of "sub.example.com.". Implementations should expect
that input records conform to this standard, while also ensuring that
output records do; adjustments to record names may need to be made before
or after provider API calls, for example, to maintain consistency with
all other libdns packages. Helper functions are available in this package
to convert between relative and absolute names.
Although zone names are a required input, libdns does not coerce any
particular representation of DNS zones; only records. Since zone name and
records are separate inputs in libdns interfaces, it is up to the caller
to pair a zone's name with its records in a way that works for them.
All interface implementations must be safe for concurrent/parallel use,
meaning 1) no data races, and 2) simultaneous method calls must result
in either both their expected outcomes or an error.
For example, if AppendRecords() is called at the same time and two API
requests are made to the provider at the same time, the result of both
requests must be visible after they both complete; if the provider does
not synchronize the writing of the zone file and one request overwrites
the other, then the client implementation must take care to synchronize
on behalf of the incompetent provider. This synchronization need not be
global; for example: the scope of synchronization might only need to be
within the same zone, allowing multiple requests at once as long as all
of them are for different zones. (Exact logic depends on the provider.)
4 versions
Latest release: about 4 years ago
1,245 dependent packages
View more package details: https://packages.ecosystem.code.gouv.fr/registries/proxy.golang.org/packages/github.com/libdns/libdns