Skip to content

Commit

Permalink
save dns records from DHCP with correct expiry
Browse files Browse the repository at this point in the history
  • Loading branch information
BeryJu committed Jan 4, 2024
1 parent 0a2471b commit e809e84
Show file tree
Hide file tree
Showing 2 changed files with 7 additions and 2 deletions.
1 change: 1 addition & 0 deletions pkg/roles/dhcp/leases.go
Original file line number Diff line number Diff line change
Expand Up @@ -167,6 +167,7 @@ func (l *Lease) Put(ctx context.Context, expiry int64, opts ...clientv3.OpOption
"address": l.Address,
"identifier": l.Identifier,
"fqdn": utils.EnsureTrailingPeriod(strings.Join([]string{l.Hostname, zone}, ".")),
"expiry": expiry,
},
)
ev.Payload.RelatedObjectKey = leaseKey
Expand Down
8 changes: 6 additions & 2 deletions pkg/roles/dns/dhcp_event_handler.go
Original file line number Diff line number Diff line change
Expand Up @@ -28,10 +28,12 @@ func (r *Role) eventHandlerDHCPLeasePut(ev *roles.Event) {
// - fqdn for the dns zone to put the record in
// - identifier for the record UID
// - address for the actual address
// - expiry for the record
func (r *Role) eventHandlerCreateForward(ev *roles.Event) {
hostname := ev.Payload.Data["hostname"].(string)
fqdn := ev.Payload.Data["fqdn"].(string)
identifier := ev.Payload.Data["identifier"].(string)
expiry := ev.Payload.Data["expiry"].(int64)
forwardZone := r.FindZone(utils.EnsureTrailingPeriod(fqdn))
if forwardZone == nil {
r.log.Debug("No zone found for hostname", zap.Any("event", ev), zap.String("fqdn", fqdn))
Expand All @@ -53,7 +55,7 @@ func (r *Role) eventHandlerCreateForward(ev *roles.Event) {
rec.Data = ip.String()
rec.uid = identifier
rec.TTL = forwardZone.DefaultTTL
err = rec.put(ev.Context, 0, ev.Payload.RelatedObjectOptions...)
err = rec.put(ev.Context, expiry, ev.Payload.RelatedObjectOptions...)
if err != nil {
r.log.Warn("failed to save dns record", zap.Error(err))
return
Expand All @@ -68,10 +70,12 @@ func (r *Role) eventHandlerCreateForward(ev *roles.Event) {
// - fqdn for the dns zone to put the record in
// - identifier for the record UID
// - address for the actual address
// - expiry for the record
func (r *Role) eventHandlerCreateReverse(ev *roles.Event) {
fqdn := ev.Payload.Data["fqdn"].(string)
rawAddr := ev.Payload.Data["address"].(string)
identifier := ev.Payload.Data["identifier"].(string)
expiry := ev.Payload.Data["expiry"].(int64)
ip, err := netip.ParseAddr(rawAddr)
if err != nil {
r.log.Warn("failed to parse address to add dns record", zap.Error(err))
Expand All @@ -95,7 +99,7 @@ func (r *Role) eventHandlerCreateReverse(ev *roles.Event) {
rec.uid = identifier
rec.Data = fqdn
rec.TTL = reverseZone.DefaultTTL
err = rec.put(ev.Context, 0, ev.Payload.RelatedObjectOptions...)
err = rec.put(ev.Context, expiry, ev.Payload.RelatedObjectOptions...)
if err != nil {
r.log.Warn("failed to save dns record", zap.Error(err))
return
Expand Down

0 comments on commit e809e84

Please sign in to comment.