Index: tools/buildbot_globals.py |
=================================================================== |
--- tools/buildbot_globals.py (revision 12387) |
+++ tools/buildbot_globals.py (working copy) |
@@ -13,17 +13,45 @@ |
_global_vars = None |
+ |
+GLOBAL_VARS_JSON_URL = ( |
+ 'http://skia.googlecode.com/svn/buildbot/site_config/global_variables.json') |
+ |
+ |
+class GlobalVarsRetrievalError(Exception): |
+ """Exception which is raised when the global_variables.json file cannot be |
+ retrieved from the Skia buildbot repository.""" |
+ pass |
+ |
+ |
+class JsonDecodeError(Exception): |
+ """Exception which is raised when the global_variables.json file cannot be |
+ interpreted as JSON. This may be due to the file itself being incorrectly |
+ formatted or due to an incomplete or corrupted downloaded version of the file. |
+ """ |
+ pass |
+ |
+ |
class NoSuchGlobalVariable(KeyError): |
+ """Exception which is raised when a given variable is not found in the |
+ global_variables.json file.""" |
pass |
+ |
def Get(var_name): |
'''Return the value associated with this name in global_variables.json. |
Raises NoSuchGlobalVariable if there is no variable with that name.''' |
global _global_vars |
if not _global_vars: |
- _global_vars = json.loads(svn.Cat('http://skia.googlecode.com/svn/' |
- 'buildbot/site_config/' |
- 'global_variables.json')) |
+ try: |
+ global_vars_text = svn.Cat(GLOBAL_VARS_JSON_URL) |
+ except Exception: |
+ raise GlobalVarsRetrievalError('Failed to retrieve %s.' % |
+ GLOBAL_VARS_JSON_URL) |
+ try: |
+ _global_vars = json.loads(global_vars_text) |
+ except ValueError as e: |
+ raise JsonDecodeError(e.message + '\n' + global_vars_text) |
try: |
return _global_vars[var_name]['value'] |
except KeyError: |