From 81761c11a13626a6efc97df31bd32d5dc5d22e69 Mon Sep 17 00:00:00 2001 From: bpastene Date: Tue, 27 Oct 2015 17:30:43 -0700 Subject: add event data to blacklist file This makes the blacklist file a bit more verbose by including time of, and reason for, blacklisting, which makes it easier to monitor device failures. Will later need to specify the reason arg for everything that calls Extend(). Old format: ["serial1", "serial2"] New format: { "serial1": {"timestamp": 14444444444, "reason": "unauthorized"}, "serial2": {"timestamp": 14444444444, "reason": "stupid_device"}, } BUG=482259 Review URL: https://codereview.chromium.org/1406243005 Cr-Commit-Position: refs/heads/master@{#356454} --- build/android/devil/android/device_blacklist.py | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) (limited to 'build') diff --git a/build/android/devil/android/device_blacklist.py b/build/android/devil/android/device_blacklist.py index 615b3e6..cf72ecb 100644 --- a/build/android/devil/android/device_blacklist.py +++ b/build/android/devil/android/device_blacklist.py @@ -6,6 +6,7 @@ import json import logging import os import threading +import time from pylib import constants @@ -25,11 +26,11 @@ class Blacklist(object): """Reads the blacklist from the blacklist file. Returns: - A list containing bad devices. + A dict containing bad devices. """ with self._blacklist_lock: if not os.path.exists(self._path): - return [] + return dict() with open(self._path, 'r') as f: return json.load(f) @@ -42,18 +43,26 @@ class Blacklist(object): """ with self._blacklist_lock: with open(self._path, 'w') as f: - json.dump(list(set(blacklist)), f) + json.dump(blacklist, f) - def Extend(self, devices): + def Extend(self, devices, reason='unknown'): """Adds devices to blacklist file. Args: devices: list of bad devices to be added to the blacklist file. + reason: string specifying the reason for blacklist (eg: 'unauthorized') """ - logging.info('Adding %s to blacklist %s', ','.join(devices), self._path) + timestamp = time.time() + event_info = { + 'timestamp': timestamp, + 'reason': reason, + } + device_dicts = {device: event_info for device in devices} + logging.info('Adding %s to blacklist %s for reason: %s', + ','.join(devices), self._path, reason) with self._blacklist_lock: blacklist = self.Read() - blacklist.extend(devices) + blacklist.update(device_dicts) self.Write(blacklist) def Reset(self): -- cgit v1.1