Browse Source

introduce SanityCheckError

Helge Jung 9 years ago
parent
commit
9020dba544
4 changed files with 27 additions and 7 deletions
  1. 2 1
      batcave.py
  2. 7 3
      ffstatus/alfred.py
  3. 7 3
      ffstatus/batman.py
  4. 11 0
      ffstatus/exceptions.py

+ 2 - 1
batcave.py

@@ -15,6 +15,7 @@ from ffstatus import \
     AlfredParser, BatmanParser, \
     DashingClient, GraphitePush, \
     Storage
+from ffstatus.exceptions import SanityCheckError
 
 DEFAULT_INTERVAL = 15
 
@@ -80,7 +81,7 @@ logger.debug('Configured Graphite: ' + str(g))
 for i in [('AlfredParser', a), ('BatmanParser', b)]:
     try:
         i[1].sanitycheck()
-    except Exception as err:
+    except SanityCheckError as err:
         logger.critical(i[0] + '.sanitycheck() failed: ' + str(err))
         print('FAILED SANITY CHECK: ' + str(err))
         sys.exit(1)

+ 7 - 3
ffstatus/alfred.py

@@ -7,6 +7,8 @@ import json
 import subprocess
 import time
 
+from .exceptions import SanityCheckError
+
 class AlfredParser:
     alfred_json = 'alfred-json'
     alfred_datatypes = [('static', 158), ('dynamic', 159)]
@@ -24,12 +26,14 @@ class AlfredParser:
             cmd = [self.alfred_json, '-z', '-r', str(int(self.alfred_datatypes[0][1]))]
             testdata = subprocess.check_output(cmd)
         except Exception as err:
-            raise Exception("alfred-json not found or incompatible: " + str(err))
+            raise SanityCheckError(
+                self, "alfred-json not found or incompatible", err)
 
         try:
             json.loads(testdata)
         except Exception as err:
-            raise Exception("alfred-json does not return valid JSON data: " + str(err))
+            raise SanityCheckError(
+                self, "alfred-json does not return valid JSON data", err)
 
         return True
 
@@ -108,7 +112,7 @@ if __name__ == "__main__":
     a = AlfredParser()
     try:
         a.sanitycheck()
-    except Exception  as err:
+    except SanityCheckError as err:
         print('SANITY-CHECK failed:', str(err))
         import sys
         sys.exit(1)

+ 7 - 3
ffstatus/batman.py

@@ -8,6 +8,8 @@ import string
 import subprocess
 import time
 
+from .exceptions import SanityCheckError
+
 
 class BatmanParser:
     batadv_vis = 'batadv-vis'
@@ -23,12 +25,14 @@ class BatmanParser:
         try:
             testdata = subprocess.check_output([self.batadv_vis, '-f', 'jsondoc'])
         except Exception as err:
-            raise Exception("batadv-vis not found or incompatible: " + str(err))
+            raise SanityCheckError(
+                self, "batadv-vis not found or incompatible", err)
 
         try:
             json.loads(testdata)
         except Exception as err:
-            raise Exception("batadv-vis does not return valid JSON data: " + str(err))
+            raise SanityCheckError(
+                self, "batadv-vis does not return valid JSON data", err)
 
         return True
 
@@ -86,7 +90,7 @@ if __name__ == "__main__":
     b = BatmanParser()
     try:
         b.sanitycheck()
-    except Exception  as err:
+    except SanityCheckError as err:
         print('SANITY-CHECK failed:', str(err))
         import sys
         sys.exit(1)

+ 11 - 0
ffstatus/exceptions.py

@@ -4,6 +4,17 @@
 Contains custom Exceptions used in ffstatus.
 """
 
+
+class SanityCheckError(Exception):
+    """Thrown by the .sanitycheck() functions."""
+
+    def __init__(self, source, message, exception=None):
+        msg = '{{{0}}} {1}'.format(source, message)
+        if exception is not None:
+            msg += ': ' + str(exception)
+        Exception.__init__(self, msg)
+
+
 class VpnKeyFormatError(Exception):
     """Thrown by BaseStorage on invalid VPN keys."""