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

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

Issue 2870793002: swarming: fix support for raw command + isolated file (Closed)
Patch Set: . Created 3 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 unified diff | Download patch
OLDNEW
1 # coding: utf-8 1 # coding: utf-8
2 # Copyright 2014 The LUCI Authors. All rights reserved. 2 # Copyright 2014 The LUCI Authors. All rights reserved.
3 # Use of this source code is governed under the Apache License, Version 2.0 3 # Use of this source code is governed under the Apache License, Version 2.0
4 # that can be found in the LICENSE file. 4 # that can be found in the LICENSE file.
5 5
6 """Tasks definition. 6 """Tasks definition.
7 7
8 Each user request creates a new TaskRequest. The TaskRequest instance saves the 8 Each user request creates a new TaskRequest. The TaskRequest instance saves the
9 metadata of the request, e.g. who requested it, when why, etc. It links to the 9 metadata of the request, e.g. who requested it, when why, etc. It links to the
10 actual data of the request in a TaskProperties. The TaskProperties represents 10 actual data of the request in a TaskProperties. The TaskProperties represents
(...skipping 274 matching lines...) Expand 10 before | Expand all | Expand 10 after
285 285
286 # The hash of an isolated archive. 286 # The hash of an isolated archive.
287 isolated = ndb.StringProperty(validator=_validate_isolated, indexed=False) 287 isolated = ndb.StringProperty(validator=_validate_isolated, indexed=False)
288 # The hostname of the isolated server to use. 288 # The hostname of the isolated server to use.
289 isolatedserver = ndb.StringProperty( 289 isolatedserver = ndb.StringProperty(
290 validator=_validate_url, indexed=False) 290 validator=_validate_url, indexed=False)
291 # Namespace on the isolate server. 291 # Namespace on the isolate server.
292 namespace = ndb.StringProperty(validator=_validate_namespace, indexed=False) 292 namespace = ndb.StringProperty(validator=_validate_namespace, indexed=False)
293 293
294 def _pre_put_hook(self): 294 def _pre_put_hook(self):
295 # TODO(maruel): Get default value from config
296 # IsolateSettings.default_server.
295 super(FilesRef, self)._pre_put_hook() 297 super(FilesRef, self)._pre_put_hook()
296 if not self.isolatedserver or not self.namespace: 298 if not self.isolatedserver or not self.namespace:
297 raise datastore_errors.BadValueError( 299 raise datastore_errors.BadValueError(
298 'isolate server and namespace are required') 300 'isolate server and namespace are required')
299 301
300 302
301 class SecretBytes(ndb.Model): 303 class SecretBytes(ndb.Model):
302 """Defines an optional secret byte string logically defined with the 304 """Defines an optional secret byte string logically defined with the
303 TaskProperties. 305 TaskProperties.
304 306
(...skipping 199 matching lines...) Expand 10 before | Expand all | Expand 10 after
504 def _pre_put_hook(self): 506 def _pre_put_hook(self):
505 super(TaskProperties, self)._pre_put_hook() 507 super(TaskProperties, self)._pre_put_hook()
506 if self.commands: 508 if self.commands:
507 raise datastore_errors.BadValueError( 509 raise datastore_errors.BadValueError(
508 'commands is not supported anymore') 510 'commands is not supported anymore')
509 if not self.is_terminate: 511 if not self.is_terminate:
510 isolated_input = self.inputs_ref and self.inputs_ref.isolated 512 isolated_input = self.inputs_ref and self.inputs_ref.isolated
511 if not self.command and not isolated_input: 513 if not self.command and not isolated_input:
512 raise datastore_errors.BadValueError( 514 raise datastore_errors.BadValueError(
513 'use at least one of command or inputs_ref.isolated') 515 'use at least one of command or inputs_ref.isolated')
516 if self.command and self.extra_args:
517 raise datastore_errors.BadValueError(
518 'can\'t use both command and extra_args')
514 if self.extra_args and not isolated_input: 519 if self.extra_args and not isolated_input:
515 raise datastore_errors.BadValueError( 520 raise datastore_errors.BadValueError(
516 'extra_args require inputs_ref.isolated') 521 'extra_args require inputs_ref.isolated')
517 if self.inputs_ref: 522 if self.inputs_ref:
518 self.inputs_ref._pre_put_hook() 523 self.inputs_ref._pre_put_hook()
519 524
520 # Validate caches. 525 # Validate caches.
521 cache_names = set() 526 cache_names = set()
522 cache_paths = set() 527 cache_paths = set()
523 for c in self.caches: 528 for c in self.caches:
(...skipping 418 matching lines...) Expand 10 before | Expand all | Expand 10 after
942 init_new_request(request, allow_high_priority, original_secret_bytes) 947 init_new_request(request, allow_high_priority, original_secret_bytes)
943 return request 948 return request
944 949
945 950
946 def validate_priority(priority): 951 def validate_priority(priority):
947 """Throws ValueError if priority is not a valid value.""" 952 """Throws ValueError if priority is not a valid value."""
948 if 0 > priority or MAXIMUM_PRIORITY < priority: 953 if 0 > priority or MAXIMUM_PRIORITY < priority:
949 raise datastore_errors.BadValueError( 954 raise datastore_errors.BadValueError(
950 'priority (%d) must be between 0 and %d (inclusive)' % 955 'priority (%d) must be between 0 and %d (inclusive)' %
951 (priority, MAXIMUM_PRIORITY)) 956 (priority, MAXIMUM_PRIORITY))
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698