Merge lp:~allenap/maas/overhaul-logging-more-04 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: 5527
Proposed branch: lp:~allenap/maas/overhaul-logging-more-04
Merge into: lp:~maas-committers/maas/trunk
Prerequisite: lp:~allenap/maas/overhaul-logging-more-03
Diff against target: 73 lines (+23/-2)
3 files modified
src/maastesting/twisted.py (+4/-0)
src/provisioningserver/rackdservices/tests/test_tftp.py (+11/-0)
src/provisioningserver/rackdservices/tftp.py (+8/-2)
To merge this branch: bzr merge lp:~allenap/maas/overhaul-logging-more-04
Reviewer Review Type Date Requested Status
Blake Rouse (community) Approve
Review via email: mp+309772@code.launchpad.net

Commit message

Log TFTP requests to the server log.

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/maastesting/twisted.py'
2--- src/maastesting/twisted.py 2016-11-01 16:46:49 +0000
3+++ src/maastesting/twisted.py 2016-11-01 16:46:50 +0000
4@@ -16,10 +16,12 @@
5
6 from fixtures import Fixture
7 from testtools.deferredruntest import CaptureTwistedLogs
8+from testtools.monkey import patch
9 from testtools.twistedsupport._deferred import extract_result
10 from twisted.internet import defer
11 from twisted.logger import (
12 formatEvent,
13+ globalLogPublisher,
14 LogLevel,
15 )
16 from twisted.python import log
17@@ -106,6 +108,8 @@
18 for observer in list(log.theLogPublisher.observers):
19 self.addCleanup(log.theLogPublisher.addObserver, observer)
20 log.theLogPublisher.removeObserver(observer)
21+ # Now remove any remaining modern observers.
22+ self.addCleanup(patch(globalLogPublisher, "_observers", []))
23 # Now add our observer, again via the legacy API. This ensures that
24 # it's wrapped with whatever legacy wrapper we've installed.
25 self.addCleanup(log.theLogPublisher.removeObserver, self.events.append)
26
27=== modified file 'src/provisioningserver/rackdservices/tests/test_tftp.py'
28--- src/provisioningserver/rackdservices/tests/test_tftp.py 2016-07-30 01:17:54 +0000
29+++ src/provisioningserver/rackdservices/tests/test_tftp.py 2016-11-01 16:46:50 +0000
30@@ -723,6 +723,17 @@
31 mac_address=sentinel.macaddr, description=sentinel.filename,
32 event_type=EVENT_TYPES.NODE_TFTP_REQUEST))
33
34+ def test__logs_to_server_log(self):
35+ self.patch(tftp_module, "send_event_node_mac_address")
36+ clock = Clock()
37+ mac_address = factory.make_mac_address()
38+ file_name = factory.make_name("file")
39+ with TwistedLoggerFixture() as logger:
40+ log_request(mac_address, file_name, clock)
41+ clock.advance(0.0) # Don't leave anything in the reactor.
42+ self.assertThat(logger.output, Equals(
43+ "%s requested by %s" % (file_name, mac_address)))
44+
45 def test__logs_when_sending_event_errors(self):
46 send_event = self.patch(tftp_module, "send_event_node_mac_address")
47 send_event.side_effect = factory.make_exception()
48
49=== modified file 'src/provisioningserver/rackdservices/tftp.py'
50--- src/provisioningserver/rackdservices/tftp.py 2016-11-01 16:46:49 +0000
51+++ src/provisioningserver/rackdservices/tftp.py 2016-11-01 16:46:50 +0000
52@@ -113,13 +113,19 @@
53 def log_request(mac_address, file_name, clock=reactor):
54 """Log a TFTP request.
55
56- This will be logged at a later iteration of the `clock` so as to not delay
57- the task currently in progress.
58+ This will be logged to the regular log, and also to the node event log at
59+ a later iteration of the `clock` so as to not delay the task currently in
60+ progress.
61 """
62 # If the file name is a byte string, decode it as ASCII, replacing
63 # non-ASCII characters, so that we have at least something to log.
64 if isinstance(file_name, bytes):
65 file_name = file_name.decode("ascii", "replace")
66+ # Log to the regular log.
67+ log.info(
68+ "{file_name} requested by {mac_address}", file_name=file_name,
69+ mac_address=mac_address)
70+ # Log to the node event log.
71 d = deferLater(
72 clock, 0, send_event_node_mac_address,
73 event_type=EVENT_TYPES.NODE_TFTP_REQUEST,