Documentation
¶
Index ¶
- type Client
- type Provider
- func (p *Provider) AppendRecords(ctx context.Context, zone string, records []libdns.Record) ([]libdns.Record, error)
- func (p *Provider) DeleteRecords(ctx context.Context, zone string, records []libdns.Record) ([]libdns.Record, error)
- func (p *Provider) GetRecords(ctx context.Context, zone string) ([]libdns.Record, error)
- func (p *Provider) SetRecords(ctx context.Context, zone string, records []libdns.Record) ([]libdns.Record, error)
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Provider ¶
type Provider struct {
Endpoint string `json:"endpoint,omitempty"`
ApplicationKey string `json:"application_key,omitempty"`
ApplicationSecret string `json:"application_secret,omitempty"`
ConsumerKey string `json:"consumer_key,omitempty"`
// contains filtered or unexported fields
}
Provider implements the libdns interfaces for OVH.
func (*Provider) AppendRecords ¶
func (p *Provider) AppendRecords(ctx context.Context, zone string, records []libdns.Record) ([]libdns.Record, error)
AppendRecords adds records to the zone. It returns the records that were added.
func (*Provider) DeleteRecords ¶
func (p *Provider) DeleteRecords(ctx context.Context, zone string, records []libdns.Record) ([]libdns.Record, error)
DeleteRecords deletes the records from the zone. It returns the records that were deleted.
func (*Provider) GetRecords ¶
GetRecords lists all the records in the zone.
func (*Provider) SetRecords ¶
func (p *Provider) SetRecords(ctx context.Context, zone string, records []libdns.Record) ([]libdns.Record, error)
SetRecords sets the records in the zone by updating existing records or creating new ones. It returns the records that were added during the operation.
Since OVH does not support batch operations, this implementation attempts to simulate atomic behavior. If any record creation fails, the function attempts to roll back by deleting all records that were successfully added during the operation.
If the rollback succeeds, an [AtomicErr] is returned to indicate that the zone remains in a consistent state. If the rollback itself fails (e.g., some added records could not be deleted), a non-atomic error is returned, and the zone may be left in an inconsistent state.
Similarly, after all record creations have succeeded, any obsolete records are deleted to match the desired state. If these deletions fail, a non-atomic error is returned to indicate partial success, and the caller should assume the zone may be inconsistent.
This implementation ensures that a nil error is returned **only if** all intended changes (additions and deletions) were successfully applied.