feat(rum): add rum_replay_playlists resource (shell only) - #721
michael-richey wants to merge 1 commit into
Conversation
michael-richey
left a comment
There was a problem hiding this comment.
Looks good.
The model stays nicely scoped to playlist shell sync only (and avoids sessions sub-resources), and unit tests cover CRUD semantics and payload shaping well.
No blockers from my side in this diff.
936598e to
893649f
Compare
28865fd to
b8c2f84
Compare
There was a problem hiding this comment.
Copilot review overview
🟢 Approval recommended
The implementation is consistent with adjacent RUM models and has focused coverage for all introduced operations.
Review effort: Balanced
Findings: None
What changed in this PR
Adds shell-only synchronization for RUM replay playlists with full CRUD support while excluding session associations.
Changes:
- Implements and registers the playlist resource model.
- Adds focused CRUD unit tests.
- Documents support and dependencies.
| File | Description |
|---|---|
datadog_sync/model/rum_replay_playlists.py |
Implements playlist shell synchronization. |
datadog_sync/models/__init__.py |
Registers the resource model. |
tests/unit/test_rum_replay_playlists.py |
Tests endpoint and CRUD behavior. |
README.md |
Documents the resource and its lack of dependencies. |
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
893649f to
381b14d
Compare
b8c2f84 to
3b6faa3
Compare
381b14d to
2fbb6d5
Compare
3b6faa3 to
dc95b0a
Compare
2fbb6d5 to
d58b3b5
Compare
054e500 to
522f1b3
Compare
4440f02 to
2498ccf
Compare
522f1b3 to
75e0a6d
Compare
2498ccf to
0215115
Compare
810563c to
93a11e6
Compare
111428f to
99755b9
Compare
93a11e6 to
aa90fd0
Compare
99755b9 to
456a32c
Compare
aa90fd0 to
f332f2b
Compare
RUM replay playlists are static shell definitions (name, description). The playlist body itself contains no session-id references; the playlist->session associations live on the .../sessions sub-resources, which are intake-tied and out of scope. The feasibility spike confirmed the shell is clean -- this model syncs the playlist shell only (full CRUD) and does not call the .../sessions endpoints. - datadog_sync/model/rum_replay_playlists.py (new) - datadog_sync/models/__init__.py -- register - tests/unit/test_rum_replay_playlists.py (new) -- 6 unit tests - README.md -- add rum_replay_playlists (no dependencies) Integration tests + VCR cassettes deferred (require sandbox-org API access).
456a32c to
258282d
Compare
f332f2b to
3ea7963
Compare
|
Nice addition — resource model and tests are straightforward and readable. Non-blocking suggestion:
No blocking issues otherwise. |
Summary
RUM replay playlists — static shell definitions (name, description). Syncs the playlist shell only (full CRUD); the playlist→session associations (intake-tied) are out of scope.
Stacked on #720 (
rum_operation_strong_links).Feasibility spike result
The plan flagged a concern that playlists might embed session-id references that can't be cleanly stripped. Inspection of the
Playlistschema confirms the playlist body (name,description) contains no session ids — session associations live on the separate.../sessionssub-resources. So the shell is clean; no stripping required.Design
/rum/replay/playlists; create POST; update PUT/{playlist_id}; delete DELETE/{playlist_id}.id(server-assigned, popped); update setsresource["id"] = destination_id.excluded_attributes:id+ server-managedcreated_at/updated_at/created_by/session_count.resource_connections(playlists are org-level, not app-scoped; no session refs in the shell)..../sessionssub-resources (intake-tied, out of scope).Changes
datadog_sync/model/rum_replay_playlists.py(new)datadog_sync/models/__init__.py— registertests/unit/test_rum_replay_playlists.py(new) — 6 unit testsREADME.md— addrum_replay_playlists(no dependencies)Testing
pytest tests/unit/test_rum_replay_playlists.py→ 6 passedFollow-up
Integration tests + VCR cassettes deferred (require sandbox-org API access).