Merge lp:~allenap/maas/power-monitor-better-error-message--bug-1580817 into lp:~maas-committers/maas/trunk

Proposed by Gavin Panella
Status: Merged
Approved by: Gavin Panella
Approved revision: no longer in the source branch.
Merged at revision: 5056
Proposed branch: lp:~allenap/maas/power-monitor-better-error-message--bug-1580817
Merge into: lp:~maas-committers/maas/trunk
Diff against target: 62 lines (+20/-0)
2 files modified
src/provisioningserver/pserv_services/node_power_monitor_service.py (+4/-0)
src/provisioningserver/pserv_services/tests/test_node_power_monitor_service.py (+16/-0)
To merge this branch: bzr merge lp:~allenap/maas/power-monitor-better-error-message--bug-1580817
Reviewer Review Type Date Requested Status
Blake Rouse (community) Approve
Review via email: mp+296127@code.launchpad.net

Commit message

In the power monitor, log a less alarming message when the connection to the region is lost cleanly.

To post a comment you must log in.
Revision history for this message
Blake Rouse (blake-rouse) wrote :

Looks good.

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'src/provisioningserver/pserv_services/node_power_monitor_service.py'
2--- src/provisioningserver/pserv_services/node_power_monitor_service.py 2016-03-28 13:54:47 +0000
3+++ src/provisioningserver/pserv_services/node_power_monitor_service.py 2016-05-31 17:43:55 +0000
4@@ -20,6 +20,7 @@
5 from provisioningserver.rpc.region import ListNodePowerParameters
6 from twisted.application.internet import TimerService
7 from twisted.internet.defer import inlineCallbacks
8+from twisted.internet.error import ConnectionDone
9 from twisted.python import log
10
11
12@@ -74,6 +75,9 @@
13 if failure.check(NoSuchCluster):
14 maaslog.error(
15 "Rack controller '%s' is not recognised.", localIdent)
16+ elif failure.check(ConnectionDone):
17+ maaslog.error(
18+ "Lost connection to region controller.")
19 else:
20 # Log the error in full to the Twisted log.
21 log.err(failure, "Querying node power states.")
22
23=== modified file 'src/provisioningserver/pserv_services/tests/test_node_power_monitor_service.py'
24--- src/provisioningserver/pserv_services/tests/test_node_power_monitor_service.py 2016-05-12 19:07:37 +0000
25+++ src/provisioningserver/pserv_services/tests/test_node_power_monitor_service.py 2016-05-31 17:43:55 +0000
26@@ -8,6 +8,7 @@
27
28 from unittest.mock import (
29 ANY,
30+ Mock,
31 sentinel,
32 )
33
34@@ -36,6 +37,7 @@
35 fail,
36 succeed,
37 )
38+from twisted.internet.error import ConnectionDone
39 from twisted.internet.task import Clock
40
41
42@@ -123,6 +125,20 @@
43 self.assertDocTestMatches(
44 "Rack controller '...' is not recognised.", maaslog.output)
45
46+ def test_query_nodes_copes_with_losing_connection_to_region(self):
47+ service = self.make_monitor_service()
48+
49+ client = Mock(return_value=fail(
50+ ConnectionDone("Connection was closed cleanly.")))
51+
52+ with FakeLogger("maas") as maaslog:
53+ d = service.query_nodes(client)
54+ d.addErrback(service.query_nodes_failed, sentinel.ident)
55+
56+ self.assertEqual(None, extract_result(d))
57+ self.assertDocTestMatches(
58+ "Lost connection to region controller.", maaslog.output)
59+
60 def test_try_query_nodes_logs_other_errors(self):
61 service = self.make_monitor_service()
62 self.patch(npms, "getRegionClient").return_value = sentinel.client