Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(164)

Side by Side Diff: scripts/slave/gatekeeper_ng_config.py

Issue 172523005: Keep track of hashes triggered instead of builds. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/tools/build
Patch Set: Fix typos. Created 6 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 #!/usr/bin/env python 1 #!/usr/bin/env python
2 # Copyright 2014 The Chromium Authors. All rights reserved. 2 # Copyright 2014 The Chromium Authors. All rights reserved.
3 # Use of this source code is governed by a BSD-style license that can be 3 # Use of this source code is governed by a BSD-style license that can be
4 # found in the LICENSE file. 4 # found in the LICENSE file.
5 5
6 """Loads gatekeeper configuration files for use with gatekeeper_ng.py. 6 """Loads gatekeeper configuration files for use with gatekeeper_ng.py.
7 7
8 The gatekeeper json configuration file has two main sections: 'masters' 8 The gatekeeper json configuration file has two main sections: 'masters'
9 and 'categories.' The following shows the breakdown of a possible config, 9 and 'categories.' The following shows the breakdown of a possible config,
10 but note that all nodes are optional (including the root 'masters' and 10 but note that all nodes are optional (including the root 'masters' and
(...skipping 229 matching lines...) Expand 10 before | Expand all | Expand 10 after
240 240
241 241
242 def inject_hashes(gatekeeper_config): 242 def inject_hashes(gatekeeper_config):
243 new_config = copy.deepcopy(gatekeeper_config) 243 new_config = copy.deepcopy(gatekeeper_config)
244 for master in new_config.values(): 244 for master in new_config.values():
245 for section in master: 245 for section in master:
246 section['section_hash'] = gatekeeper_section_hash(section) 246 section['section_hash'] = gatekeeper_section_hash(section)
247 return new_config 247 return new_config
248 248
249 249
250 # Python's sets aren't JSON-encodable, so we convert them to lists here.
251 class SetEncoder(json.JSONEncoder):
252 # pylint: disable=E0202
253 def default(self, obj):
254 if isinstance(obj, set):
255 return sorted(list(obj))
256 return json.JSONEncoder.default(self, obj)
257
258
250 def flatten_to_json(gatekeeper_config, stream): 259 def flatten_to_json(gatekeeper_config, stream):
251 # Python's sets aren't JSON-encodable, so we convert them to lists here.
252 class SetEncoder(json.JSONEncoder):
253 # pylint: disable=E0202
254 def default(self, obj):
255 if isinstance(obj, set):
256 return sorted(list(obj))
257 return json.JSONEncoder.default(self, obj)
258
259 json.dump(gatekeeper_config, stream, cls=SetEncoder, sort_keys=True) 260 json.dump(gatekeeper_config, stream, cls=SetEncoder, sort_keys=True)
260 261
261 262
262 def main(): 263 def main():
263 prog_desc = 'Reads gatekeeper.json and emits a flattened config.' 264 prog_desc = 'Reads gatekeeper.json and emits a flattened config.'
264 usage = '%prog [options]' 265 usage = '%prog [options]'
265 parser = optparse.OptionParser(usage=(usage + '\n\n' + prog_desc)) 266 parser = optparse.OptionParser(usage=(usage + '\n\n' + prog_desc))
266 parser.add_option('--json', default=os.path.join(DATA_DIR, 'gatekeeper.json'), 267 parser.add_option('--json', default=os.path.join(DATA_DIR, 'gatekeeper.json'),
267 help='location of gatekeeper configuration file') 268 help='location of gatekeeper configuration file')
268 parser.add_option('--no-hashes', action='store_true', 269 parser.add_option('--no-hashes', action='store_true',
269 help='don\'t insert gatekeeper section hashes') 270 help='don\'t insert gatekeeper section hashes')
270 options, _ = parser.parse_args() 271 options, _ = parser.parse_args()
271 272
272 gatekeeper_config = load_gatekeeper_config(options.json) 273 gatekeeper_config = load_gatekeeper_config(options.json)
273 274
274 if not options.no_hashes: 275 if not options.no_hashes:
275 gatekeeper_config = inject_hashes(gatekeeper_config) 276 gatekeeper_config = inject_hashes(gatekeeper_config)
276 277
277 flatten_to_json(gatekeeper_config, sys.stdout) 278 flatten_to_json(gatekeeper_config, sys.stdout)
278 print 279 print
279 280
280 return 0 281 return 0
281 282
282 283
283 if __name__ == '__main__': 284 if __name__ == '__main__':
284 sys.exit(main()) 285 sys.exit(main())
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698