Merge ~adam-collard/maas:events-filter-audit-nodes into maas:master

Proposed by Adam Collard
Status: Merged
Approved by: Adam Collard
Approved revision: 2deecc803893b2cc79cf708f7d76c8683af8cae4
Merge reported by: MAAS Lander
Merged at revision: not available
Proposed branch: ~adam-collard/maas:events-filter-audit-nodes
Merge into: maas:master
Diff against target: 46 lines (+23/-1)
2 files modified
src/maasserver/api/events.py (+1/-1)
src/maasserver/api/tests/test_events.py (+22/-0)
Reviewer Review Type Date Requested Status
Alberto Donato (community) Approve
Review via email: mp+426865@code.launchpad.net

Commit message

LP:1970803 Event query filters AUDIT by nodes like other levels

To post a comment you must log in.
Revision history for this message
Alberto Donato (ack) wrote :

+1

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
diff --git a/src/maasserver/api/events.py b/src/maasserver/api/events.py
index 8cb82f0..d92c50c 100644
--- a/src/maasserver/api/events.py
+++ b/src/maasserver/api/events.py
@@ -143,7 +143,7 @@ class EventsHandler(OperationsHandler):
143143
144 # Check first for AUDIT level.144 # Check first for AUDIT level.
145 if level == LOGGING_LEVELS[AUDIT]:145 if level == LOGGING_LEVELS[AUDIT]:
146 events = Event.objects.filter(type__level=AUDIT)146 events = Event.objects.filter(type__level=AUDIT, node__in=nodes)
147 elif level in LOGGING_LEVELS_BY_NAME:147 elif level in LOGGING_LEVELS_BY_NAME:
148 events = Event.objects.filter(node__in=nodes)148 events = Event.objects.filter(node__in=nodes)
149 # Eliminate logs below the requested level.149 # Eliminate logs below the requested level.
diff --git a/src/maasserver/api/tests/test_events.py b/src/maasserver/api/tests/test_events.py
index 63f1234..706444d 100644
--- a/src/maasserver/api/tests/test_events.py
+++ b/src/maasserver/api/tests/test_events.py
@@ -640,6 +640,28 @@ class TestEventsAPI(APITestCase.ForUser):
640 parsed_result = json_load_bytes(response.content)640 parsed_result = json_load_bytes(response.content)
641 self.assertEqual([event1.id], extract_event_ids(parsed_result))641 self.assertEqual([event1.id], extract_event_ids(parsed_result))
642642
643 def test_audit_query_filters_nodes(self):
644 nodes = [factory.make_Node() for _ in range(3)]
645 events = [
646 factory.make_Event(
647 node=node, type=factory.make_EventType(level=AUDIT)
648 )
649 for node in nodes
650 ]
651 first_node = nodes[0]
652 first_event = events[0] # Pertains to the first node.
653 response = self.client.get(
654 reverse("events_handler"),
655 {
656 "op": "query",
657 "hostname": [first_node.hostname],
658 "level": "AUDIT",
659 },
660 )
661 parsed_result = json_load_bytes(response.content)
662 self.assertEqual([first_event.id], extract_event_ids(parsed_result))
663 self.assertEqual(1, parsed_result["count"])
664
643 def test_GET_query_with_owner_returns_matching_events(self):665 def test_GET_query_with_owner_returns_matching_events(self):
644 # Only events for user will be returned666 # Only events for user will be returned
645 user1 = factory.make_User()667 user1 = factory.make_User()

Subscribers

People subscribed via source and target branches