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

Side by Side Diff: scripts/master/slaves_list.py

Issue 12300004: Build scripts refactor to support multislave (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/tools/build
Patch Set: rebase Created 7 years, 9 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
« no previous file with comments | « scripts/master/master_utils.py ('k') | scripts/slave/bootstrap.py » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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
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
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())
OLDNEW
« no previous file with comments | « scripts/master/master_utils.py ('k') | scripts/slave/bootstrap.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698