OLD | NEW |
1 # Copyright 2013 The Chromium Authors. All rights reserved. | 1 # Copyright 2013 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 from buildbot.scheduler import Scheduler | 5 from buildbot.scheduler import Scheduler |
6 from buildbot.scheduler import Triggerable | 6 from buildbot.scheduler import Triggerable |
7 | 7 |
8 import collections | 8 import collections |
9 | 9 |
10 # This file contains useful functions for masters whose slaves run recipes. | 10 # This file contains useful functions for masters whose slaves run recipes. |
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
43 polling_builders = [] | 43 polling_builders = [] |
44 # Maps the parent builder to a set of the names of the builders it triggers. | 44 # Maps the parent builder to a set of the names of the builders it triggers. |
45 trigger_map = collections.defaultdict(list) | 45 trigger_map = collections.defaultdict(list) |
46 # Maps the name of the parent builder to the (synthesized) name of its | 46 # Maps the name of the parent builder to the (synthesized) name of its |
47 # trigger, wrapped in a list. | 47 # trigger, wrapped in a list. |
48 trigger_name_map = {} | 48 trigger_name_map = {} |
49 next_group_id = 0 | 49 next_group_id = 0 |
50 for slave in slave_list.slaves: | 50 for slave in slave_list.slaves: |
51 builder = slave['builder'] | 51 builder = slave['builder'] |
52 parent_builder = slave.get('triggered_by') | 52 parent_builder = slave.get('triggered_by') |
53 if parent_builder is not None: | 53 if parent_builder == 'none': |
| 54 # Uses recipe-side triggers. Don't add to trigger maps. |
| 55 pass |
| 56 elif parent_builder is not None: |
54 if slave_list.GetSlave(builder=parent_builder) is None: | 57 if slave_list.GetSlave(builder=parent_builder) is None: |
55 raise Exception('Could not find parent builder %s for builder %s' % | 58 raise Exception('Could not find parent builder %s for builder %s' % |
56 (parent_builder, builder)) | 59 (parent_builder, builder)) |
57 trigger_map[parent_builder].append(builder) | 60 trigger_map[parent_builder].append(builder) |
58 if parent_builder not in trigger_name_map: | 61 if parent_builder not in trigger_name_map: |
59 trigger_name_map[parent_builder] = 'trigger_group_%d' % next_group_id | 62 trigger_name_map[parent_builder] = 'trigger_group_%d' % next_group_id |
60 next_group_id += 1 | 63 next_group_id += 1 |
61 else: | 64 else: |
62 polling_builders.append(builder) | 65 polling_builders.append(builder) |
63 s_gpu = Scheduler(name=scheduler_name, | 66 s_gpu = Scheduler(name=scheduler_name, |
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
109 factory_properties, | 112 factory_properties, |
110 [trigger_name_map[name]] if name in trigger_name_map else None), | 113 [trigger_name_map[name]] if name in trigger_name_map else None), |
111 'gatekeeper': slave.get('gatekeeper_categories', ''), | 114 'gatekeeper': slave.get('gatekeeper_categories', ''), |
112 } | 115 } |
113 # Don't specify auto_reboot unless the slave does, to let | 116 # Don't specify auto_reboot unless the slave does, to let |
114 # master_utils' default take effect. | 117 # master_utils' default take effect. |
115 if 'auto_reboot' in slave: | 118 if 'auto_reboot' in slave: |
116 builder['auto_reboot'] = slave['auto_reboot'] | 119 builder['auto_reboot'] = slave['auto_reboot'] |
117 builders.append(builder) | 120 builders.append(builder) |
118 buildmaster_config['builders'] = builders | 121 buildmaster_config['builders'] = builders |
OLD | NEW |