4b897fa1f6
R=epoger@google.com, rmistry@google.com Review URL: https://codereview.chromium.org/99223002 git-svn-id: http://skia.googlecode.com/svn/trunk@12437 2bbb7eff-a529-9590-31e7-b0007b416f81
59 lines
1.7 KiB
Python
Executable File
59 lines
1.7 KiB
Python
Executable File
#!/usr/bin/python
|
|
|
|
# Copyright (c) 2013 The Chromium Authors. All rights reserved.
|
|
# Use of this source code is governed by a BSD-style license that can be
|
|
# found in the LICENSE file.
|
|
|
|
"""
|
|
Provides read access to buildbot's global_variables.json .
|
|
"""
|
|
|
|
import json
|
|
import svn
|
|
|
|
_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:
|
|
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:
|
|
raise NoSuchGlobalVariable(var_name)
|