| Index: appengine/swarming/server/task_result.py
|
| diff --git a/appengine/swarming/server/task_result.py b/appengine/swarming/server/task_result.py
|
| index b905db0cb14a90cdc7ef7c361d44232f105af5cd..810d67a2ccee8932bfe1ec5f2154cc1d2b881505 100644
|
| --- a/appengine/swarming/server/task_result.py
|
| +++ b/appengine/swarming/server/task_result.py
|
| @@ -58,6 +58,7 @@ Graph of schema:
|
| +---------------+ +---------------+
|
| """
|
|
|
| +import collections
|
| import datetime
|
| import logging
|
| import random
|
| @@ -373,6 +374,14 @@ class _TaskResultCommon(ndb.Model):
|
| # set. The isolateserver and namespace should match.
|
| outputs_ref = ndb.LocalStructuredProperty(task_request.FilesRef)
|
|
|
| + # The pinned versions of all the cipd packages that were specified as inputs
|
| + # to the task. So if the task inputs included `package/${platform}@latest`,
|
| + # the pinned version might be `package/windows@deadbeef`, where 'windows' is
|
| + # the expanded template parameter, and `deadbeef` is the resolved version of
|
| + # the package that the task actually used.
|
| + cipd_pins = ndb.LocalStructuredProperty(task_request.CipdPackage,
|
| + repeated=True)
|
| +
|
| @property
|
| def can_be_canceled(self):
|
| """Returns True if the task is in a state that can be canceled."""
|
| @@ -782,6 +791,7 @@ class TaskResultSummary(_TaskResultCommon):
|
|
|
| def reset_to_pending(self):
|
| """Resets this entity to pending state."""
|
| + self.cipd_pins = None
|
| self.duration = None
|
| self.exit_code = None
|
| self.internal_failure = False
|
|
|