# Copyright 2015 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
from common.buildbot import step
class Build(object):
def __init__(self, data, builder_url):
self._number = data['number']
self._slave_name = data['slave']
self._status = data['results']
self._start_time, self._end_time = data['times']
self._url = '%s/builds/%d' % (builder_url, self._number)
source_stamp = data['sourceStamp']
if 'revision' in source_stamp:
self._revision = source_stamp['revision']
if 'changes' in source_stamp and source_stamp['changes']:
self._revision_time = data['sourceStamp']['changes'][-1]['when']
self._steps = tuple(step.Step(step_data, self._url)
for step_data in data['steps'])
def __lt__(self, other):
return self.number < other.number
def __str__(self):
return str(self.number)
@property
def number(self):
return self._number
@property
def url(self):
return self._url
@property
def slave_name(self):
return self._slave_name
@property
def status(self):
return self._status
@property
def complete(self):
return self.status is not None
@property
def revision(self):
return self._revision
@property
def revision_time(self):
"""The time the revision was committed.
Warning: this field may not be populated.
"""
return self._revision_time
@property
def start_time(self):
return self._start_time
@property
def end_time(self):
return self._end_time
@property
def steps(self):
return self._steps