]> arthur.barton.de Git - netdata.git/blobdiff - python.d/smartd_log.chart.py
Merge pull request #1968 from ktsaou/master
[netdata.git] / python.d / smartd_log.chart.py
index e650e3d2e693d5622c0db749d7b69d28812feeb3..e8037237931d8ce7846b3c0d389f3c36591e1510 100644 (file)
@@ -4,11 +4,11 @@
 
 from re import compile
 from os import listdir, access, R_OK
-from os.path import isfile, join, getsize, basename
+from os.path import isfile, join, getsize, basename, isdir
 try:
-            from queue import Queue
+    from queue import Queue
 except ImportError:
-            from Queue import Queue
+    from Queue import Queue
 from threading import Thread
 from base import SimpleService
 from collections import namedtuple
@@ -113,7 +113,7 @@ class Service(SimpleService):
         if not disks:
             self.error('Can\'t locate any smartd log files in %s' % self.log_path)
             return False
-        
+
         # List of namedtuples to track smartd log file size
         self.disks = [NAMED_DISKS(name=disks[i], size=0, number=i) for i in range(len(disks))]
 
@@ -138,7 +138,7 @@ class Service(SimpleService):
                     break
             result = f.readline()
 
-        result = result.decode(encoding='utf-8')    
+        result = result.decode()
         result = self.regex.findall(result)
 
         queue.put([basename(disk), result])
@@ -147,7 +147,7 @@ class Service(SimpleService):
         threads, result = list(), list()
         queue = Queue()
         to_netdata = dict()
-        
+
         # If the size has not changed there is no reason to poll log files.
         disks = [disk for disk in self.disks if self.size_changed(disk)]
         if disks:
@@ -166,7 +166,7 @@ class Service(SimpleService):
         for elem in result:
             for a, n, r in elem[1]:
                 to_netdata.update({'_'.join([elem[0], a]): r if self.raw_values else n})
-        
+
         self.previous_data.update(to_netdata)
 
         return to_netdata or None
@@ -185,7 +185,7 @@ class Service(SimpleService):
         except OSError:
             # Remove unreadable/nonexisting log files from list of disks and previous_data
             self.disks.remove(disk)
-            self.previous_data = {k: v for k, v in self.previous_data.items() if basename(disk.name) not in k}
+            self.previous_data = dict([(k, v) for k, v in self.previous_data.items() if basename(disk.name) not in k])
             return False
 
     def create_charts(self):
@@ -206,7 +206,7 @@ class Service(SimpleService):
         self.definitions = dict()
         units = 'raw' if self.raw_values else 'normalized'
 
-        for k, v in {k: v for k, v in SMART_ATTR.items() if k in ORDER}.items():
+        for k, v in dict([(k, v) for k, v in SMART_ATTR.items() if k in ORDER]).items():
             self.definitions.update({''.join(['attrid', k]): {
                                       'options': [None, v, units, v, 'smartd.attrid' + k, 'line'],
                                        'lines': create_lines(k)}})
@@ -216,5 +216,6 @@ def find_disks_in_log_path(log_path):
     # 1. it is a file
     # 2. file name endswith with 'csv'
     # 3. file is readable
+    if not isdir(log_path): return None
     return [join(log_path, f) for f in listdir(log_path)
             if all([isfile(join(log_path, f)), f.endswith('.csv'), access(join(log_path, f), R_OK)])]