commit 4e30b8ceece30343a13f61790eb8758b7987a0b1 Author: Damian Johnson atagar@torproject.org Date: Sat Dec 28 11:34:05 2013 -0800
Moving missing_event_types() to the arguments module
Moving a revised version of the logPanel's getMissingEventTypes() function to the argument. This compliments expand_events() and finally allows us to axe the logPanel import from the starter (which has irked me for a while). Still need to add tests, though. --- arm/arguments.py | 21 ++++++++++++++++++++- arm/logPanel.py | 17 +---------------- arm/starter.py | 3 +-- 3 files changed, 22 insertions(+), 19 deletions(-)
diff --git a/arm/arguments.py b/arm/arguments.py index 95069e1..6ce102e 100644 --- a/arm/arguments.py +++ b/arm/arguments.py @@ -10,7 +10,7 @@ import arm
import stem.connection
-from arm.util import msg +from arm.util import tor_controller, msg
DEFAULT_ARGS = { 'control_address': '127.0.0.1', @@ -206,3 +206,22 @@ def expand_events(flags): raise ValueError(''.join(set(invalid_flags))) else: return expanded_events + + +def missing_event_types(): + """ + Provides the event types the current tor connection supports but arm + doesn't. This provides an empty list if no event types are missing or the + GETINFO query fails. + + :returns: **list** of missing event types + """ + + response = tor_controller().get_info('events/names', None) + + if response is None: + return [] # GETINFO query failed + + tor_event_types = response.split(' ') + recognized_types = TOR_EVENT_TYPES.values() + return filter(lambda x: x not in recognized_types, tor_event_types) diff --git a/arm/logPanel.py b/arm/logPanel.py index cdb2081..16c1464 100644 --- a/arm/logPanel.py +++ b/arm/logPanel.py @@ -90,21 +90,6 @@ def daysSince(timestamp=None): if timestamp == None: timestamp = time.time() return int((timestamp - TIMEZONE_OFFSET) / 86400)
-def getMissingEventTypes(): - """ - Provides the event types the current tor connection supports but arm - doesn't. This provides an empty list if no event types are missing, and None - if the GETINFO query fails. - """ - - torEventTypes = torTools.getConn().getInfo("events/names", None) - - if torEventTypes: - torEventTypes = torEventTypes.split(" ") - armEventTypes = arm.arguments.TOR_EVENT_TYPES.values() - return [event for event in torEventTypes if not event in armEventTypes] - else: return None # GETINFO call failed - def loadLogMessages(): """ Fetches a mapping of common log messages to their runlevels from the config. @@ -1051,7 +1036,7 @@ class LogPanel(panel.Panel, threading.Thread, logging.Handler):
# adds events unrecognized by arm if we're listening to the 'UNKNOWN' type if "UNKNOWN" in events: - torEvents.update(set(getMissingEventTypes())) + torEvents.update(set(arm.arguments.missing_event_types()))
torConn = torTools.getConn() torConn.removeEventListener(self.registerTorEvent) diff --git a/arm/starter.py b/arm/starter.py index 021ed68..87db2b4 100644 --- a/arm/starter.py +++ b/arm/starter.py @@ -18,7 +18,6 @@ import threading import arm import arm.arguments import arm.controller -import arm.logPanel import arm.util.panel import arm.util.torConfig import arm.util.tracker @@ -124,7 +123,7 @@ def main():
# provides a notice about any event types tor supports but arm doesn't
- missing_event_types = arm.logPanel.getMissingEventTypes() + missing_event_types = arm.arguments.missing_event_types()
if missing_event_types: info('setup.unknown_event_types', event_types = ', '.join(missing_event_types))