| 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 |