OLD | NEW |
1 #!/usr/bin/env python | 1 #!/usr/bin/env python |
2 # Copyright (c) 2012 The Chromium Authors. All rights reserved. | 2 # Copyright (c) 2012 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 import sys | 6 import sys |
7 | 7 |
8 from common import chromium_utils | 8 from common import chromium_utils |
9 | 9 |
10 | 10 |
11 START_WITH_LETTER, NUMBER_ONLY = range(2) | 11 START_WITH_LETTER, NUMBER_ONLY = range(2) |
12 | 12 |
13 | 13 |
14 def EntryToSlaveName(entry): | |
15 """Extracts the buildbot slave name from the slaves list entry. | |
16 | |
17 The slave list entry is a dict.""" | |
18 return entry.get('slavename', None) or entry.get('hostname', None) | |
19 | |
20 | |
21 def EntryToHostName(entry): | 14 def EntryToHostName(entry): |
22 """Extracts the buildbot host name from the slaves list entry. | 15 """Extracts the buildbot host name from the slaves list entry. |
23 | 16 |
24 The slave list entry is a dict.""" | 17 The slave list entry is a dict.""" |
25 return entry.get('hostname', None) | 18 return entry.get('hostname', None) |
26 | 19 |
27 | 20 |
28 def _obj_as_list(obj): | 21 def _obj_as_list(obj): |
29 """Converts strings as 1 entry list.""" | 22 """Converts strings as 1 entry list.""" |
30 if not isinstance(obj, (tuple, list)): | 23 if not isinstance(obj, (tuple, list)): |
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
75 dupes.add(x) | 68 dupes.add(x) |
76 if dupes: | 69 if dupes: |
77 print >> sys.stderr, 'Found slave dupes!\n %s' % ', '.join(dupes) | 70 print >> sys.stderr, 'Found slave dupes!\n %s' % ', '.join(dupes) |
78 assert False, ', '.join(dupes) | 71 assert False, ', '.join(dupes) |
79 | 72 |
80 | 73 |
81 class BaseSlavesList(object): | 74 class BaseSlavesList(object): |
82 def __init__(self, slaves, default_master=None): | 75 def __init__(self, slaves, default_master=None): |
83 self.slaves = slaves | 76 self.slaves = slaves |
84 self.default_master = default_master | 77 self.default_master = default_master |
85 _CheckDupes([EntryToSlaveName(x).lower() for x in self.slaves]) | 78 _CheckDupes( |
| 79 [chromium_utils.EntryToSlaveName(x).lower() for x in self.slaves]) |
86 | 80 |
87 def GetSlaves(self, master=None, builder=None, os=None, tester=None, | 81 def GetSlaves(self, master=None, builder=None, os=None, tester=None, |
88 bits=None, version=None): | 82 bits=None, version=None): |
89 """Returns the slaves listed in the private/slaves_list.py file. | 83 """Returns the slaves listed in the private/slaves_list.py file. |
90 | 84 |
91 Optionally filter with master, builder, os, tester and bitness type. | 85 Optionally filter with master, builder, os, tester and bitness type. |
92 """ | 86 """ |
93 slaves = self.slaves | 87 slaves = self.slaves |
94 slaves = _Filter( | 88 slaves = _Filter( |
95 slaves, 'master', master or self.default_master, START_WITH_LETTER) | 89 slaves, 'master', master or self.default_master, START_WITH_LETTER) |
96 slaves = _Filter(slaves, 'os', os, START_WITH_LETTER) | 90 slaves = _Filter(slaves, 'os', os, START_WITH_LETTER) |
97 slaves = _Filter(slaves, 'bits', bits, NUMBER_ONLY) | 91 slaves = _Filter(slaves, 'bits', bits, NUMBER_ONLY) |
98 slaves = _Filter(slaves, 'version', version, None) | 92 slaves = _Filter(slaves, 'version', version, None) |
99 slaves = _Filter(slaves, 'builder', builder, START_WITH_LETTER) | 93 slaves = _Filter(slaves, 'builder', builder, START_WITH_LETTER) |
100 slaves = _Filter(slaves, 'tester', tester, START_WITH_LETTER) | 94 slaves = _Filter(slaves, 'tester', tester, START_WITH_LETTER) |
101 return slaves | 95 return slaves |
102 | 96 |
103 def GetSlave(self, master=None, builder=None, os=None, tester=None, bits=None, | 97 def GetSlave(self, master=None, builder=None, os=None, tester=None, bits=None, |
104 version=None): | 98 version=None): |
105 """Returns one slave or none if none or multiple slaves are found.""" | 99 """Returns one slave or none if none or multiple slaves are found.""" |
106 slaves = self.GetSlaves(master, builder, os, tester, bits, version) | 100 slaves = self.GetSlaves(master, builder, os, tester, bits, version) |
107 if len(slaves) != 1: | 101 if len(slaves) != 1: |
108 return None | 102 return None |
109 return slaves[0] | 103 return slaves[0] |
110 | 104 |
111 def GetSlavesName(self, master=None, builder=None, os=None, tester=None, | 105 def GetSlavesName(self, master=None, builder=None, os=None, tester=None, |
112 bits=None, version=None): | 106 bits=None, version=None): |
113 """Similar to GetSlaves() except that it only returns the slave names.""" | 107 """Similar to GetSlaves() except that it only returns the slave names.""" |
114 return [ | 108 return [ |
115 EntryToSlaveName(e) | 109 chromium_utils.EntryToSlaveName(e) |
116 for e in self.GetSlaves(master, builder, os, tester, bits, version) | 110 for e in self.GetSlaves(master, builder, os, tester, bits, version) |
117 ] | 111 ] |
118 | 112 |
119 def GetSlaveName(self, master=None, builder=None, os=None, tester=None, | 113 def GetSlaveName(self, master=None, builder=None, os=None, tester=None, |
120 bits=None, version=None): | 114 bits=None, version=None): |
121 """Similar to GetSlave() except that it only returns the slave name.""" | 115 """Similar to GetSlave() except that it only returns the slave name.""" |
122 return EntryToSlaveName( | 116 return chromium_utils.EntryToSlaveName( |
123 self.GetSlave(master, builder, os, tester, bits, version)) | 117 self.GetSlave(master, builder, os, tester, bits, version)) |
124 | 118 |
125 def GetHostName(self, master=None, builder=None, os=None, tester=None, | 119 def GetHostName(self, master=None, builder=None, os=None, tester=None, |
126 bits=None, version=None): | 120 bits=None, version=None): |
127 """Similar to GetSlave() except that it only returns the host name.""" | 121 """Similar to GetSlave() except that it only returns the host name.""" |
128 return EntryToHostName( | 122 return EntryToHostName( |
129 self.GetSlave(master, builder, os, tester, bits, version)) | 123 self.GetSlave(master, builder, os, tester, bits, version)) |
130 | 124 |
131 | 125 |
132 class SlavesList(BaseSlavesList): | 126 class SlavesList(BaseSlavesList): |
(...skipping 20 matching lines...) Expand all Loading... |
153 slaves = SlavesList(options.filename) | 147 slaves = SlavesList(options.filename) |
154 for slave in slaves.GetSlavesName(options.master, options.builder, | 148 for slave in slaves.GetSlavesName(options.master, options.builder, |
155 options.os, options.tester, options.bits, | 149 options.os, options.tester, options.bits, |
156 options.version): | 150 options.version): |
157 print slave | 151 print slave |
158 return 0 | 152 return 0 |
159 | 153 |
160 | 154 |
161 if __name__ == '__main__': | 155 if __name__ == '__main__': |
162 sys.exit(Main()) | 156 sys.exit(Main()) |
OLD | NEW |