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

Side by Side Diff: appengine/swarming/server/bot_code.py

Issue 2969513002: Add a default Isolate gRPC proxy in config (Closed)
Patch Set: Fix problem in tests Created 3 years, 5 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
OLDNEW
1 # Copyright 2014 The LUCI Authors. All rights reserved. 1 # Copyright 2014 The LUCI Authors. All rights reserved.
2 # Use of this source code is governed under the Apache License, Version 2.0 2 # Use of this source code is governed under the Apache License, Version 2.0
3 # that can be found in the LICENSE file. 3 # that can be found in the LICENSE file.
4 4
5 """Swarming bot code. Includes bootstrap and swarming_bot.zip. 5 """Swarming bot code. Includes bootstrap and swarming_bot.zip.
6 6
7 It includes everything that is AppEngine specific. The non-GAE code is in 7 It includes everything that is AppEngine specific. The non-GAE code is in
8 bot_archive.py. 8 bot_archive.py.
9 """ 9 """
10 10
(...skipping 198 matching lines...) Expand 10 before | Expand all | Expand 10 after
209 signature = _get_signature(host) 209 signature = _get_signature(host)
210 version = memcache.get('version-' + signature, namespace='bot_code') 210 version = memcache.get('version-' + signature, namespace='bot_code')
211 if version: 211 if version:
212 return version, None 212 return version, None
213 213
214 # Need to calculate it. 214 # Need to calculate it.
215 additionals = {'config/bot_config.py': get_bot_config().content} 215 additionals = {'config/bot_config.py': get_bot_config().content}
216 bot_dir = os.path.join(ROOT_DIR, 'swarming_bot') 216 bot_dir = os.path.join(ROOT_DIR, 'swarming_bot')
217 version = bot_archive.get_swarming_bot_version( 217 version = bot_archive.get_swarming_bot_version(
218 bot_dir, host, utils.get_app_version(), additionals, 218 bot_dir, host, utils.get_app_version(), additionals,
219 local_config.settings().enable_ts_monitoring) 219 local_config.settings())
220 memcache.set('version-' + signature, version, namespace='bot_code', time=60) 220 memcache.set('version-' + signature, version, namespace='bot_code', time=60)
221 return version, additionals 221 return version, additionals
222 222
223 223
224 def get_swarming_bot_zip(host): 224 def get_swarming_bot_zip(host):
225 """Returns a zipped file of all the files a bot needs to run. 225 """Returns a zipped file of all the files a bot needs to run.
226 226
227 Returns: 227 Returns:
228 A string representing the zipped file's contents. 228 A string representing the zipped file's contents.
229 """ 229 """
230 version, additionals = get_bot_version(host) 230 version, additionals = get_bot_version(host)
231 content = get_cached_swarming_bot_zip(version) 231 content = get_cached_swarming_bot_zip(version)
232 if content: 232 if content:
233 logging.debug('memcached bot code %s; %d bytes', version, len(content)) 233 logging.debug('memcached bot code %s; %d bytes', version, len(content))
234 return content 234 return content
235 235
236 # Get the start bot script from the database, if present. Pass an empty 236 # Get the start bot script from the database, if present. Pass an empty
237 # file if the files isn't present. 237 # file if the files isn't present.
238 additionals = additionals or { 238 additionals = additionals or {
239 'config/bot_config.py': get_bot_config().content, 239 'config/bot_config.py': get_bot_config().content,
240 } 240 }
241 bot_dir = os.path.join(ROOT_DIR, 'swarming_bot') 241 bot_dir = os.path.join(ROOT_DIR, 'swarming_bot')
242 content, version = bot_archive.get_swarming_bot_zip( 242 content, version = bot_archive.get_swarming_bot_zip(
243 bot_dir, host, utils.get_app_version(), additionals, 243 bot_dir, host, utils.get_app_version(), additionals,
244 local_config.settings().enable_ts_monitoring) 244 local_config.settings())
245 logging.info('generated bot code %s; %d bytes', version, len(content)) 245 logging.info('generated bot code %s; %d bytes', version, len(content))
246 cache_swarming_bot_zip(version, content) 246 cache_swarming_bot_zip(version, content)
247 return content 247 return content
248 248
249 249
250 def get_cached_swarming_bot_zip(version): 250 def get_cached_swarming_bot_zip(version):
251 """Returns the bot contents if its been cached, or None if missing.""" 251 """Returns the bot contents if its been cached, or None if missing."""
252 # see cache_swarming_bot_zip for how the "meta" entry is set 252 # see cache_swarming_bot_zip for how the "meta" entry is set
253 meta = bot_memcache_get(version, 'meta').get_result() 253 meta = bot_memcache_get(version, 'meta').get_result()
254 if meta is None: 254 if meta is None:
(...skipping 132 matching lines...) Expand 10 before | Expand all | Expand 10 after
387 387
388 ## Config validators 388 ## Config validators
389 389
390 390
391 @config.validation.self_rule('regex:scripts/.+\\.py') 391 @config.validation.self_rule('regex:scripts/.+\\.py')
392 def _validate_scripts(content, ctx): 392 def _validate_scripts(content, ctx):
393 try: 393 try:
394 ast.parse(content) 394 ast.parse(content)
395 except (SyntaxError, TypeError) as e: 395 except (SyntaxError, TypeError) as e:
396 ctx.error('invalid %s: %s' % (ctx.path, e)) 396 ctx.error('invalid %s: %s' % (ctx.path, e))
OLDNEW
« no previous file with comments | « appengine/swarming/server/bot_archive.py ('k') | appengine/swarming/swarming_bot/bot_code/bot_main.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698