Merge lp:~blake-rouse/maas/fix-1677936 into lp:~maas-committers/maas/trunk

Proposed by Blake Rouse
Status: Merged
Approved by: Blake Rouse
Approved revision: no longer in the source branch.
Merged at revision: 5950
Proposed branch: lp:~blake-rouse/maas/fix-1677936
Merge into: lp:~maas-committers/maas/trunk
Diff against target: 35 lines (+13/-1)
2 files modified
src/maasserver/websockets/handlers/event.py (+4/-1)
src/maasserver/websockets/handlers/tests/test_event.py (+9/-0)
To merge this branch: bzr merge lp:~blake-rouse/maas/fix-1677936
Reviewer Review Type Date Requested Status
Lee Trager (community) Approve
Review via email: mp+322310@code.launchpad.net

Commit message

Handle an event no longer existing in listen handler for EventHandler.

To post a comment you must log in.
Revision history for this message
Lee Trager (ltrager) wrote :

LGTM!

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'src/maasserver/websockets/handlers/event.py'
2--- src/maasserver/websockets/handlers/event.py 2016-06-22 17:03:02 +0000
3+++ src/maasserver/websockets/handlers/event.py 2017-04-10 20:10:45 +0000
4@@ -109,7 +109,10 @@
5 # Only care about create everything else is ignored.
6 if action != "create":
7 return None
8- obj = self.listen(channel, action, pk)
9+ try:
10+ obj = self.listen(channel, action, pk)
11+ except HandlerDoesNotExistError:
12+ return None
13 if obj is None:
14 return None
15 if obj.node_id not in self.cache["node_ids"]:
16
17=== modified file 'src/maasserver/websockets/handlers/tests/test_event.py'
18--- src/maasserver/websockets/handlers/tests/test_event.py 2016-09-06 17:02:03 +0000
19+++ src/maasserver/websockets/handlers/tests/test_event.py 2017-04-10 20:10:45 +0000
20@@ -224,6 +224,15 @@
21 handler.on_listen(sentinel.channel, action, pk)
22 self.assertThat(mock_listen, MockNotCalled())
23
24+ def test_on_listen_returns_None_if_obj_no_longer_exists(self):
25+ user = factory.make_User()
26+ handler = EventHandler(user, {})
27+ mock_listen = self.patch(handler, "listen")
28+ mock_listen.return_value = HandlerDoesNotExistError()
29+ self.assertIsNone(
30+ handler.on_listen(
31+ sentinel.channel, sentinel.action, random.randint(1, 1000)))
32+
33 def test_on_listen_returns_None_if_listen_returns_None(self):
34 user = factory.make_User()
35 handler = EventHandler(user, {})