| OLD | NEW |
| (Empty) |
| 1 #!/usr/bin/python | |
| 2 | |
| 3 # Copyright (c) 2013 The Chromium Authors. All rights reserved. | |
| 4 # Use of this source code is governed by a BSD-style license that can be | |
| 5 # found in the LICENSE file. | |
| 6 | |
| 7 """ | |
| 8 Provides read access to buildbot's global_variables.json . | |
| 9 """ | |
| 10 | |
| 11 | |
| 12 import json | |
| 13 import retrieve_from_googlesource | |
| 14 import sys | |
| 15 | |
| 16 | |
| 17 _global_vars = None | |
| 18 | |
| 19 | |
| 20 SKIABOT_REPO = 'https://skia.googlesource.com/buildbot' | |
| 21 _GLOBAL_VARS_PATH = 'site_config/global_variables.json' | |
| 22 | |
| 23 | |
| 24 class GlobalVarsRetrievalError(Exception): | |
| 25 """Exception which is raised when the global_variables.json file cannot be | |
| 26 retrieved from the Skia buildbot repository.""" | |
| 27 pass | |
| 28 | |
| 29 | |
| 30 class JsonDecodeError(Exception): | |
| 31 """Exception which is raised when the global_variables.json file cannot be | |
| 32 interpreted as JSON. This may be due to the file itself being incorrectly | |
| 33 formatted or due to an incomplete or corrupted downloaded version of the file. | |
| 34 """ | |
| 35 pass | |
| 36 | |
| 37 | |
| 38 class NoSuchGlobalVariable(KeyError): | |
| 39 """Exception which is raised when a given variable is not found in the | |
| 40 global_variables.json file.""" | |
| 41 pass | |
| 42 | |
| 43 | |
| 44 def Get(var_name): | |
| 45 """Return the value associated with this name in global_variables.json. | |
| 46 | |
| 47 Args: | |
| 48 var_name: string; the variable to look up. | |
| 49 Returns: | |
| 50 The value of the variable. | |
| 51 Raises: | |
| 52 NoSuchGlobalVariable if there is no variable with that name. | |
| 53 """ | |
| 54 global _global_vars | |
| 55 if not _global_vars: | |
| 56 try: | |
| 57 global_vars_text = retrieve_from_googlesource.get(SKIABOT_REPO, | |
| 58 _GLOBAL_VARS_PATH) | |
| 59 except Exception as e: | |
| 60 raise GlobalVarsRetrievalError('Failed to retrieve %s from %s:\n%s' % | |
| 61 (_GLOBAL_VARS_PATH, SKIABOT_REPO, str(e))) | |
| 62 try: | |
| 63 _global_vars = json.loads(global_vars_text) | |
| 64 except ValueError as e: | |
| 65 raise JsonDecodeError(e.message + '\n' + global_vars_text) | |
| 66 try: | |
| 67 return _global_vars[var_name]['value'] | |
| 68 except KeyError: | |
| 69 raise NoSuchGlobalVariable(var_name) | |
| 70 | |
| 71 | |
| 72 if __name__ == '__main__': | |
| 73 print Get(sys.argv[1]) | |
| OLD | NEW |