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

Unified Diff: appengine/swarming/swarming_bot/bot_code/task_runner.py

Issue 1939343002: swarming: change meaning of inputs_ref (Closed) Base URL: https://chromium.googlesource.com/external/github.com/luci/luci-py@master
Patch Set: fix templates Created 4 years, 7 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 side-by-side diff with in-line comments
Download patch
Index: appengine/swarming/swarming_bot/bot_code/task_runner.py
diff --git a/appengine/swarming/swarming_bot/bot_code/task_runner.py b/appengine/swarming/swarming_bot/bot_code/task_runner.py
index 639decea9cf193d4d9b1c510c653c5f9443dc15b..0be2a62d6560361f1b0c154462a8e1c1bc15e014 100644
--- a/appengine/swarming/swarming_bot/bot_code/task_runner.py
+++ b/appengine/swarming/swarming_bot/bot_code/task_runner.py
@@ -80,15 +80,28 @@ def get_run_isolated():
def get_isolated_cmd(
work_dir, task_details, isolated_result, min_free_space):
"""Returns the command to call run_isolated. Mocked in tests."""
+ assert (bool(task_details.command) !=
+ bool(task_details.isolated and task_details.isolated.get('input')))
bot_dir = os.path.dirname(work_dir)
if os.path.isfile(isolated_result):
os.remove(isolated_result)
cmd = get_run_isolated()
+
+ if task_details.isolated:
+ cmd.extend(
+ [
+ '-I', task_details.isolated['server'].encode('utf-8'),
+ '--namespace', task_details.isolated['namespace'].encode('utf-8'),
+ ])
+ isolated_input = task_details.isolated.get('input')
+ if isolated_input:
+ cmd.extend(
+ [
+ '--isolated', isolated_input,
+ ])
+
cmd.extend(
[
- '--isolated', task_details.inputs_ref['isolated'].encode('utf-8'),
- '--namespace', task_details.inputs_ref['namespace'].encode('utf-8'),
- '-I', task_details.inputs_ref['isolatedserver'].encode('utf-8'),
'--json', isolated_result,
'--log-file', os.path.join(bot_dir, 'logs', 'run_isolated.log'),
'--cache', os.path.join(bot_dir, 'cache'),
@@ -109,17 +122,7 @@ def get_isolated_cmd(
class TaskDetails(object):
def __init__(self, data):
- """Loads the raw data.
-
- It is expected to have at least:
- - bot_id
- - command as a list of str
- - data as a list of urls
- - env as a dict
- - hard_timeout
- - io_timeout
- - task_id
- """
+ """Loads the raw data from a manifest file specified by --in-file."""
logging.info('TaskDetails(%s)', data)
if not isinstance(data, dict):
raise ValueError('Expected dict, got %r' % data)
@@ -127,11 +130,11 @@ class TaskDetails(object):
# Get all the data first so it fails early if the task details is invalid.
self.bot_id = data['bot_id']
- # Raw command. Only self.command or self.inputs_ref can be set.
+ # Raw command. Only self.command or self.isolated.input can be set.
self.command = data['command'] or []
# Isolated command. Is a serialized version of task_request.FilesRef.
- self.inputs_ref = data['inputs_ref']
+ self.isolated = data['isolated']
self.extra_args = data['extra_args']
self.env = {
@@ -326,6 +329,7 @@ def run_command(
logging.info('cmd=%s', cmd)
logging.info('env=%s', env)
try:
+ assert cmd and all(isinstance(a, basestring) for a in cmd)
proc = subprocess42.Popen(
cmd,
env=env,
« no previous file with comments | « appengine/swarming/server/task_request_test.py ('k') | appengine/swarming/swarming_bot/bot_code/task_runner_test.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698