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

Side by Side Diff: infra/tools/builder_alerts/gatekeeper_extras.py

Issue 508873005: Reimplemented tree_for_master, which now uses gatekeeper config files to map master URLs to the tre… (Closed) Base URL: https://chromium.googlesource.com/infra/infra.git@master
Patch Set: Rebase Created 6 years, 3 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
OLDNEW
1 # Copyright 2014 The Chromium Authors. All rights reserved. 1 # Copyright 2014 The Chromium Authors. All rights reserved.
2 # Use of this source code is governed by a BSD-style license that can be 2 # Use of this source code is governed by a BSD-style license that can be
3 # found in the LICENSE file. 3 # found in the LICENSE file.
4 4
5 # FIXME: Everything in this file belongs in gatekeeper_ng_config.py 5 # FIXME: Everything in this file belongs in gatekeeper_ng_config.py
6 6
7 import logging 7 import logging
8 8
9 import infra.tools.builder_alerts.buildbot
agable 2014/09/04 14:22:31 Since you only use one thing, could do from infra.
Sergiy Byelozyorov 2014/09/05 12:59:06 Done.
9 10
10 def excluded_builders(master_config): 11 def excluded_builders(master_config):
11 return master_config[0].get('*', {}).get('excluded_builders', set()) 12 return master_config[0].get('*', {}).get('excluded_builders', set())
12 13
13 14
14 # pylint: disable=C0301 15 def tree_for_master(master_url, gatekeeper_trees_config):
15 # FIXME: This is currently baked into: 16 """Returns name of the tree for a given master or its name on failure.
agable 2014/09/04 14:22:31 "Get the name of the tree for a given master url,
Sergiy Byelozyorov 2014/09/05 12:59:06 Done.
16 # https://chromium.googlesource.com/chromium/tools/build/+/master/scripts/slave/ gatekeeper_launch.py 17
17 # http://crbug.com/394961 18 Retuns:
agable 2014/09/04 14:22:31 Don't really need a "returns" section when the fir
Sergiy Byelozyorov 2014/09/05 12:59:06 Done.
18 MASTER_CONFIG = { 19 Tree name of master name if the master url is not present in gatekeeper
agable 2014/09/04 14:22:31 tree name *or*
Sergiy Byelozyorov 2014/09/05 12:59:06 Acknowledged.
19 'chromium-status': [ 20 config.
20 'chromium', 21 """
21 'chromium.chrome', 22 for tree_name, tree_config in gatekeeper_trees_config.iteritems():
22 'chromium.chromiumos', 23 if master_url in tree_config['masters']:
23 'chromium.gpu', 24 return tree_name
24 'chromium.linux', 25 return infra.tools.builder_alerts.buildbot.master_name_from_url(master_url)
agable 2014/09/04 14:22:31 Why is this fallback now necessary?
Sergiy Byelozyorov 2014/09/05 12:59:07 Master info may not be in a config file. In this c
25 'chromium.mac',
26 'chromium.memory',
27 'chromium.win',
28 ],
29 'blink-status': [
30 'chromium.webkit',
31 ],
32 }
33 26
34 27
35 def tree_for_master(master_name): 28 def apply_gatekeeper_rules(alerts, gatekeeper, gatekeeper_trees):
36 for tree_name, master_names in MASTER_CONFIG.items(): 29 filtered_alerts = []
37 if master_name in master_names: 30 for alert in alerts:
38 return tree_name 31 master_url = alert['master_url']
32 config = gatekeeper.get(master_url)
33 if not config:
34 # Unclear if this should be set or not?
35 # alert['would_close_tree'] = False
36 filtered_alerts.append(alert)
37 continue
38 if alert['builder_name'] in excluded_builders(config):
39 continue
40 alert['would_close_tree'] = would_close_tree(
41 config, alert['builder_name'], alert['step_name'])
42 alert['tree'] = tree_for_master(master_url, gatekeeper_trees)
43 filtered_alerts.append(alert)
44 return filtered_alerts
45
46
47 def fetch_master_urls(gatekeeper, args):
48 # Currently using gatekeeper.json, but could use:
49 # https://chrome-infra-stats.appspot.com/_ah/api#p/stats/v1/stats.masters.list
tandrii(chromium) 2014/09/04 14:21:06 nit: I thought comments should end with period.
Sergiy Byelozyorov 2014/09/05 12:59:07 Yeah, but URL takes entire line and adding a perio
50 master_urls = gatekeeper.keys()
51 if args.master_filter:
52 master_urls = [url for url in master_urls if args.master_filter not in url]
53 return master_urls
39 54
40 55
41 def would_close_tree(master_config, builder_name, step_name): 56 def would_close_tree(master_config, builder_name, step_name):
42 # FIXME: Section support should be removed: 57 # FIXME: Section support should be removed:
43 master_config = master_config[0] 58 master_config = master_config[0]
44 builder_config = master_config.get(builder_name, {}) 59 builder_config = master_config.get(builder_name, {})
45 if not builder_config: 60 if not builder_config:
46 builder_config = master_config.get('*', {}) 61 builder_config = master_config.get('*', {})
47 62
48 # close_tree is currently unused in gatekeeper.json but planned to be. 63 # close_tree is currently unused in gatekeeper.json but planned to be.
(...skipping 21 matching lines...) Expand all
70 85
71 # A '*' in any of the above types means it applies to all steps. 86 # A '*' in any of the above types means it applies to all steps.
72 if '*' in closing_steps: 87 if '*' in closing_steps:
73 return True 88 return True
74 89
75 if step_name in closing_steps: 90 if step_name in closing_steps:
76 return True 91 return True
77 92
78 logging.debug('%s not in closing_steps: %s' % (step_name, closing_steps)) 93 logging.debug('%s not in closing_steps: %s' % (step_name, closing_steps))
79 return False 94 return False
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698