OLD | NEW |
---|---|
1 # Copyright (c) 2014 The Chromium Authors. All rights reserved. | 1 # Copyright (c) 2014 The Chromium Authors. All rights reserved. |
2 # Use of this source code is governed by a BSD-style license that can be | 2 # Use of this source code is governed by a BSD-style license that can be |
3 # found in the LICENSE file. | 3 # found in the LICENSE file. |
4 | 4 |
5 import calendar | |
6 | |
7 from google.appengine.ext import ndb | 5 from google.appengine.ext import ndb |
8 | 6 |
9 from model.build_analysis_status import BuildAnalysisStatus | |
10 | |
11 | 7 |
12 class Build(ndb.Model): | 8 class Build(ndb.Model): |
13 """Represent a build cycle of a builder in a waterfall.""" | 9 """Represent a build cycle of a builder in a waterfall.""" |
14 | 10 |
15 @staticmethod | 11 @staticmethod |
16 def CreateKey(master_name, builder_name, build_number): # pragma: no cover | 12 def CreateKey(master_name, builder_name, build_number): # pragma: no cover |
17 return ndb.Key( | 13 return ndb.Key( |
18 'Master', master_name, 'Builder', builder_name, 'Build', build_number) | 14 'Master', master_name, 'Builder', builder_name, 'Build', build_number) |
19 | 15 |
20 @staticmethod | 16 @staticmethod |
21 def CreateBuild(master_name, builder_name, build_number): # pragma: no cover | 17 def CreateBuild(master_name, builder_name, build_number): # pragma: no cover |
22 """Create a Build instance, but not save it to datastore.""" | 18 """Create a Build instance, but not save it to datastore.""" |
qyearsley
2014/12/29 19:44:53
1. In general, the verb for a docstring is in thir
stgao
2015/01/03 01:31:46
Good catch!
| |
23 return Build(key=Build.CreateKey(master_name, builder_name, build_number), | 19 return Build(key=Build.CreateKey(master_name, builder_name, build_number), |
24 master_name=master_name, | 20 master_name=master_name, |
25 builder_name=builder_name, | 21 builder_name=builder_name, |
26 build_number=build_number) | 22 build_number=build_number) |
27 | 23 |
28 @staticmethod | 24 @staticmethod |
29 def GetBuild(master_name, builder_name, build_number): # pragma: no cover | 25 def GetBuild(master_name, builder_name, build_number): # pragma: no cover |
30 return Build.CreateKey(master_name, builder_name, build_number).get() | 26 return Build.CreateKey(master_name, builder_name, build_number).get() |
31 | 27 |
32 def Reset(self): | |
33 """Reset to the state as if no analysis is run.""" | |
34 self.analysis_status = BuildAnalysisStatus.PENDING | |
35 self.analysis_start_time = None | |
36 self.analysis_updated_time = None | |
37 | |
38 # Information of the build. | |
39 master_name = ndb.StringProperty(indexed=False) | 28 master_name = ndb.StringProperty(indexed=False) |
40 builder_name = ndb.StringProperty(indexed=False) | 29 builder_name = ndb.StringProperty(indexed=False) |
41 build_number = ndb.IntegerProperty(indexed=False) | 30 build_number = ndb.IntegerProperty(indexed=False) |
42 | 31 |
43 # Information of analysis processing. | 32 data = ndb.JsonProperty(indexed=False, compressed=True) |
44 analysis_status = ndb.IntegerProperty( | 33 last_crawled_time = ndb.DateTimeProperty(indexed=False) |
45 default=BuildAnalysisStatus.PENDING, indexed=False) | 34 |
46 analysis_start_time = ndb.DateTimeProperty(indexed=False) | 35 start_time = ndb.DateTimeProperty(indexed=False) |
47 analysis_updated_time = ndb.DateTimeProperty(indexed=False) | 36 completed = ndb.BooleanProperty(default=False, indexed=False) |
37 result = ndb.IntegerProperty(indexed=False) | |
OLD | NEW |