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
1diff --git a/src/maasserver/api/events.py b/src/maasserver/api/events.py
2index 8cb82f0..d92c50c 100644
3--- a/src/maasserver/api/events.py
4+++ b/src/maasserver/api/events.py
5@@ -143,7 +143,7 @@ class EventsHandler(OperationsHandler):
6
7 # Check first for AUDIT level.
8 if level == LOGGING_LEVELS[AUDIT]:
9- events = Event.objects.filter(type__level=AUDIT)
10+ events = Event.objects.filter(type__level=AUDIT, node__in=nodes)
11 elif level in LOGGING_LEVELS_BY_NAME:
12 events = Event.objects.filter(node__in=nodes)
13 # Eliminate logs below the requested level.
14diff --git a/src/maasserver/api/tests/test_events.py b/src/maasserver/api/tests/test_events.py
15index 63f1234..706444d 100644
16--- a/src/maasserver/api/tests/test_events.py
17+++ b/src/maasserver/api/tests/test_events.py
18@@ -640,6 +640,28 @@ class TestEventsAPI(APITestCase.ForUser):
19 parsed_result = json_load_bytes(response.content)
20 self.assertEqual([event1.id], extract_event_ids(parsed_result))
21
22+ def test_audit_query_filters_nodes(self):
23+ nodes = [factory.make_Node() for _ in range(3)]
24+ events = [
25+ factory.make_Event(
26+ node=node, type=factory.make_EventType(level=AUDIT)
27+ )
28+ for node in nodes
29+ ]
30+ first_node = nodes[0]
31+ first_event = events[0] # Pertains to the first node.
32+ response = self.client.get(
33+ reverse("events_handler"),
34+ {
35+ "op": "query",
36+ "hostname": [first_node.hostname],
37+ "level": "AUDIT",
38+ },
39+ )
40+ parsed_result = json_load_bytes(response.content)
41+ self.assertEqual([first_event.id], extract_event_ids(parsed_result))
42+ self.assertEqual(1, parsed_result["count"])
43+
44 def test_GET_query_with_owner_returns_matching_events(self):
45 # Only events for user will be returned
46 user1 = factory.make_User()

Subscribers

People subscribed via source and target branches