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

Side by Side Diff: third_party/buildbot_8_4p1/buildbot/master.py

Issue 1440163005: Allow users to customize the sanity-checking regexes (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/tools/build
Patch Set: Created 5 years, 1 month 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
OLDNEW
1 # This file is part of Buildbot. Buildbot is free software: you can 1 # This file is part of Buildbot. Buildbot is free software: you can
2 # redistribute it and/or modify it under the terms of the GNU General Public 2 # redistribute it and/or modify it under the terms of the GNU General Public
3 # License as published by the Free Software Foundation, version 2. 3 # License as published by the Free Software Foundation, version 2.
4 # 4 #
5 # This program is distributed in the hope that it will be useful, but WITHOUT 5 # This program is distributed in the hope that it will be useful, but WITHOUT
6 # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS 6 # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
7 # FOR A PARTICULAR PURPOSE. See the GNU General Public License for more 7 # FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
8 # details. 8 # details.
9 # 9 #
10 # You should have received a copy of the GNU General Public License along with 10 # You should have received a copy of the GNU General Public License along with
11 # this program; if not, write to the Free Software Foundation, Inc., 51 11 # this program; if not, write to the Free Software Foundation, Inc., 51
12 # Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 12 # Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
13 # 13 #
14 # Copyright Buildbot Team Members 14 # Copyright Buildbot Team Members
15 15
16 16
17 import re
17 import os 18 import os
18 import signal 19 import signal
19 import time 20 import time
20 import textwrap 21 import textwrap
21 import twisted.internet.error 22 import twisted.internet.error
22 23
23 try: 24 try:
24 import pyximport 25 import pyximport
25 pyximport.install() 26 pyximport.install()
26 from twisted.internet import epollreactor 27 from twisted.internet import epollreactor
(...skipping 321 matching lines...) Expand 10 before | Expand all | Expand 10 after
348 changeHorizon = config.get("changeHorizon") 349 changeHorizon = config.get("changeHorizon")
349 if changeHorizon is not None and not isinstance(changeHorizon, i nt): 350 if changeHorizon is not None and not isinstance(changeHorizon, i nt):
350 raise ValueError("changeHorizon needs to be an int") 351 raise ValueError("changeHorizon needs to be an int")
351 352
352 multiMaster = config.get("multiMaster", False) 353 multiMaster = config.get("multiMaster", False)
353 354
354 metrics_config = config.get("metrics") 355 metrics_config = config.get("metrics")
355 caches_config = config.get("caches", {}) 356 caches_config = config.get("caches", {})
356 autoBuildCacheRatio = config.get("autoBuildCacheRatio", None) 357 autoBuildCacheRatio = config.get("autoBuildCacheRatio", None)
357 358
359 # load validation, with defaults, and verify no unrecognized
360 # keys are included.
361 validation_defaults = {
362 'branch': re.compile(r'^[\w.+/~-]*$'),
363 'revision': re.compile(r'^[\w.+/~-]*$'),
364 'property_name': re.compile(r'^[\w\.\-\/\~:]*$'),
365 'property_value': re.compile(r'^[\w\.\-\/\~:]*$'),
366 }
367 validation_config = validation_defaults.copy()
368 validation_config.update(config.get("validation", {}))
369 v_config_keys = set(validation_config.keys())
370 v_default_keys = set(validation_defaults.keys())
371 if v_config_keys > v_default_keys:
372 raise ValueError("unrecognized validation key(s): %s" %
373 (", ".join(v_config_keys - v_default_keys,)))
374
358 except KeyError: 375 except KeyError:
359 log.msg("config dictionary is missing a required parameter") 376 log.msg("config dictionary is missing a required parameter")
360 log.msg("leaving old configuration in place") 377 log.msg("leaving old configuration in place")
361 raise 378 raise
362 379
363 if "sources" in config: 380 if "sources" in config:
364 m = ("c['sources'] is deprecated as of 0.7.6 and is no longer " 381 m = ("c['sources'] is deprecated as of 0.7.6 and is no longer "
365 "accepted in >= 0.8.0 . Please use c['change_source'] inste ad.") 382 "accepted in >= 0.8.0 . Please use c['change_source'] inste ad.")
366 raise KeyError(m) 383 raise KeyError(m)
367 384
368 if "bots" in config: 385 if "bots" in config:
369 m = ("c['bots'] is deprecated as of 0.7.6 and is no longer " 386 m = ("c['bots'] is deprecated as of 0.7.6 and is no longer "
370 "accepted in >= 0.8.0 . Please use c['slaves'] instead.") 387 "accepted in >= 0.8.0 . Please use c['slaves'] instead.")
371 raise KeyError(m) 388 raise KeyError(m)
372 389
373 # Set up metrics and caches 390 # Set up metrics and caches
374 self.loadConfig_Metrics(metrics_config) 391 self.loadConfig_Metrics(metrics_config)
375 self.loadConfig_Caches(caches_config, buildCacheSize, 392 self.loadConfig_Caches(caches_config, buildCacheSize,
376 changeCacheSize) 393 changeCacheSize)
377 394
378 slaves = config.get('slaves', []) 395 slaves = config.get('slaves', [])
379 if "slaves" not in config: 396 if "slaves" not in config:
380 log.msg("config dictionary must have a 'slaves' key") 397 log.msg("config dictionary must have a 'slaves' key")
381 log.msg("leaving old configuration in place") 398 log.msg("leaving old configuration in place")
382 raise KeyError("must have a 'slaves' key") 399 raise KeyError("must have a 'slaves' key")
383 400
384 self.config.changeHorizon = changeHorizon 401 self.config.changeHorizon = changeHorizon
402 self.config.validation = validation_config
385 403
386 change_source = config.get('change_source', []) 404 change_source = config.get('change_source', [])
387 if isinstance(change_source, (list, tuple)): 405 if isinstance(change_source, (list, tuple)):
388 change_sources = change_source 406 change_sources = change_source
389 else: 407 else:
390 change_sources = [change_source] 408 change_sources = [change_source]
391 409
392 # do some validation first 410 # do some validation first
393 for s in slaves: 411 for s in slaves:
394 assert interfaces.IBuildSlave.providedBy(s) 412 assert interfaces.IBuildSlave.providedBy(s)
(...skipping 898 matching lines...) Expand 10 before | Expand all | Expand 10 after
1293 self.master.addChange(change) 1311 self.master.addChange(change)
1294 1312
1295 def addBuildset(self, **kwargs): 1313 def addBuildset(self, **kwargs):
1296 return self.master.addBuildset(**kwargs) 1314 return self.master.addBuildset(**kwargs)
1297 1315
1298 def getBuilder(self, name): 1316 def getBuilder(self, name):
1299 b = self.master.botmaster.builders[name] 1317 b = self.master.botmaster.builders[name]
1300 return BuilderControl(b, self) 1318 return BuilderControl(b, self)
1301 1319
1302 components.registerAdapter(Control, BuildMaster, interfaces.IControl) 1320 components.registerAdapter(Control, BuildMaster, interfaces.IControl)
OLDNEW
« no previous file with comments | « third_party/buildbot_8_4p1/buildbot/config.py ('k') | third_party/buildbot_8_4p1/buildbot/status/web/base.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698