Documentation
¶
Overview ¶
Package drivers provides IaC ResourceDriver implementations for the Hover DNS provider.
Hover exposes NO official API. All endpoints below are derived from https://github.com/pjslauta/hover-dyn-dns and browser traffic inspection. Endpoint inventory (all relative to https://www.hover.com):
GET /api/domains/<domain>/dns — list records for a zone POST /api/dns — create a record (form: domain_id, name, type, content, ttl) PUT /api/dns/<id> — update a record (form: content, ttl) DELETE /api/dns/<id> — delete a record
These are undocumented; the Hover site uses them directly from the control panel SPA. They may change without notice.
Index ¶
- type DNSDriver
- func (d *DNSDriver) Create(ctx context.Context, spec interfaces.ResourceSpec) (*interfaces.ResourceOutput, error)
- func (d *DNSDriver) Delete(_ context.Context, _ interfaces.ResourceRef) error
- func (d *DNSDriver) Diff(_ context.Context, desired interfaces.ResourceSpec, ...) (*interfaces.DiffResult, error)
- func (d *DNSDriver) HealthCheck(ctx context.Context, ref interfaces.ResourceRef) (*interfaces.HealthResult, error)
- func (d *DNSDriver) ProviderIDFormat() interfaces.ProviderIDFormat
- func (d *DNSDriver) Read(ctx context.Context, ref interfaces.ResourceRef) (*interfaces.ResourceOutput, error)
- func (d *DNSDriver) Scale(_ context.Context, _ interfaces.ResourceRef, _ int) (*interfaces.ResourceOutput, error)
- func (d *DNSDriver) SensitiveKeys() []string
- func (d *DNSDriver) Update(ctx context.Context, ref interfaces.ResourceRef, spec interfaces.ResourceSpec) (*interfaces.ResourceOutput, error)
- type HoverDNSClient
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type DNSDriver ¶
type DNSDriver struct {
// contains filtered or unexported fields
}
DNSDriver manages Hover DNS zones and records (infra.dns). ProviderID is the apex domain name (e.g. "example.com").
func NewDNSDriver ¶
NewDNSDriver creates a DNSDriver backed by a real hover.Client.
func NewDNSDriverWithClient ¶
func NewDNSDriverWithClient(c HoverDNSClient) *DNSDriver
NewDNSDriverWithClient creates a driver with an injected client (for tests).
func (*DNSDriver) Create ¶
func (d *DNSDriver) Create(ctx context.Context, spec interfaces.ResourceSpec) (*interfaces.ResourceOutput, error)
Create idempotently reconciles a DNS zone on Hover. It creates missing records and updates existing ones that differ. Hover does not support creating zones via API — the domain must already be registered and in the account.
Config keys:
domain string — apex zone name (e.g. "example.com"). Falls back to spec.Name.
records []any — each element: {type, name, content, ttl?}
func (*DNSDriver) Delete ¶
func (d *DNSDriver) Delete(_ context.Context, _ interfaces.ResourceRef) error
func (*DNSDriver) Diff ¶
func (d *DNSDriver) Diff(_ context.Context, desired interfaces.ResourceSpec, current *interfaces.ResourceOutput) (*interfaces.DiffResult, error)
func (*DNSDriver) HealthCheck ¶
func (d *DNSDriver) HealthCheck(ctx context.Context, ref interfaces.ResourceRef) (*interfaces.HealthResult, error)
func (*DNSDriver) ProviderIDFormat ¶
func (d *DNSDriver) ProviderIDFormat() interfaces.ProviderIDFormat
func (*DNSDriver) Read ¶
func (d *DNSDriver) Read(ctx context.Context, ref interfaces.ResourceRef) (*interfaces.ResourceOutput, error)
func (*DNSDriver) Scale ¶
func (d *DNSDriver) Scale(_ context.Context, _ interfaces.ResourceRef, _ int) (*interfaces.ResourceOutput, error)
func (*DNSDriver) SensitiveKeys ¶
func (*DNSDriver) Update ¶
func (d *DNSDriver) Update(ctx context.Context, ref interfaces.ResourceRef, spec interfaces.ResourceSpec) (*interfaces.ResourceOutput, error)
type HoverDNSClient ¶
type HoverDNSClient interface {
GetDomain(ctx context.Context, domain string) (*hover.Domain, error)
ListRecords(ctx context.Context, domain string) ([]hover.DNSRecord, error)
CreateRecord(ctx context.Context, domainID string, rec hover.DNSRecord) (*hover.DNSRecord, error)
UpdateRecord(ctx context.Context, recordID string, rec hover.DNSRecord) error
DeleteRecord(ctx context.Context, recordID string) error
}
HoverDNSClient is the subset of hover.Client used by DNSDriver (injectable for tests).