Skip to content

feat: DNS activity timeline#25

Draft
scotwells wants to merge 1 commit intomainfrom
feat/activity-events
Draft

feat: DNS activity timeline#25
scotwells wants to merge 1 commit intomainfrom
feat/activity-events

Conversation

@scotwells
Copy link

Summary

Enable activity timelines for DNS zones and records, giving users visibility into the lifecycle of their DNS configurations from creation through provider programming.

User Value

Before this change: Users could create DNS zones and records, but had no visibility into whether those configurations were successfully programmed to the DNS provider. Debugging required checking resource status conditions or watching controller logs.

After this change: Users see a human-readable activity timeline showing the complete lifecycle of their DNS resources.

Example Activity Timeline

$ kubectl activity query --filter "spec.resource.kind in ['DNSZone', 'DNSRecordSet']"
--start-time "now-1h"

TIME                  ACTIVITY
10:42:15              alice@example.com created DNS zone production-zone for domain example.com
10:42:18              DNS zone production-zone for example.com is now active with nameservers
ns1.provider.net,ns2.provider.net
10:43:02              alice@example.com created A record www-records in zone production-zone
10:43:02              alice@example.com created A record api-records in zone production-zone
10:43:05              A record www-records (www.example.com -> 203.0.113.10) is now active
10:43:05              A record api-records (api.example.com -> 203.0.113.20) is now active
10:45:30              alice@example.com created CNAME record cdn-records in zone production-zone
10:45:33              CNAME record cdn-records (cdn.example.com) is now active
11:02:17              alice@example.com updated A record www-records
11:02:19              2 A records www-records (www.example.com) are now active
11:15:44              bob@example.com created MX record mail-records in zone production-zone
11:15:51              MX record mail-records programming failed: Invalid MX target hostname
11:16:30              bob@example.com updated MX record mail-records
11:16:33              MX record mail-records (mail.example.com) is now active

User Experience

Users can now:

  1. Track async operations — See when DNS changes are actually live, not just accepted
  2. Debug failures — Understand why programming failed without digging through logs
  3. Audit changes — Review who made what changes and when (via audit log integration)
  4. Monitor rollouts — Watch activity feed during DNS migrations or bulk updates

Activity is accessible via:

  • kubectl activity query — Search historical activity
  • kubectl get activities --watch — Live feed of changes
  • Platform UI activity timeline (when available)

Implementation Notes

  • CRUD operations (create/update/delete) are captured automatically via Kubernetes audit logs
  • Controller events are emitted only for async outcomes (programmed/failed) that audit logs
    cannot capture
  • ActivityPolicy resources define how raw events translate to user-friendly summaries
  • All event annotations use the dns.networking.miloapis.com/ prefix for DNS-specific metadata

Relates to datum-cloud/enhancements#469

@scotwells scotwells marked this pull request as draft February 18, 2026 16:09
@scotwells scotwells force-pushed the feat/activity-events branch 3 times, most recently from 04fde32 to 2f731d6 Compare February 28, 2026 02:43
@scotwells scotwells force-pushed the feat/activity-events branch from 8918bd0 to f82b75e Compare March 3, 2026 23:24
Add activity event emission for DNSZone and DNSRecordSet resources to
enable activity timeline tracking in the Milo platform. This provides
users with visibility into DNS resource lifecycle events.

Changes:
- Emit activity events for DNSRecordSet programming success/failure
- Emit activity events when DNSZone is claimed by another resource
- Add display-name and display-value annotations for human-friendly
  activity summaries (e.g., "www.example.com" instead of resource name)
- Use conversational tone in activity messages
- Add ActivityPolicy configurations for both resource types
- Add e2e tests for display annotation functionality

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
@scotwells scotwells force-pushed the feat/activity-events branch from f82b75e to ebfc38a Compare March 3, 2026 23:51
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant