# 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