Changeset View
Changeset View
Standalone View
Standalone View
contrib/buildbot/build.py
Show All 27 Lines | def __init__(self, phid): | ||||
self.builds = {} | self.builds = {} | ||||
def queue_build(self, build_id, name): | def queue_build(self, build_id, name): | ||||
self.builds[build_id] = Build(build_id, BuildStatus.Queued, name) | self.builds[build_id] = Build(build_id, BuildStatus.Queued, name) | ||||
def update_build_status(self, build_id, status): | def update_build_status(self, build_id, status): | ||||
if build_id not in self.builds: | if build_id not in self.builds: | ||||
raise AssertionError( | raise AssertionError( | ||||
"Attempting to update the build id {} to status {} that does not belong to the build target {}".format( | "Attempting to update the build id {} to status {} that does not belong" | ||||
build_id, status, self.phid | " to the build target {}".format(build_id, status, self.phid) | ||||
) | |||||
) | ) | ||||
self.builds[build_id].status = status | self.builds[build_id].status = status | ||||
def status(self): | def status(self): | ||||
# If there are no builds, the build target is by default a success | # If there are no builds, the build target is by default a success | ||||
if len(self.builds.values()) == 0: | if len(self.builds.values()) == 0: | ||||
return BuildStatus.Success | return BuildStatus.Success | ||||
# If any build is a failure, the build target is a failure | # If any build is a failure, the build target is a failure | ||||
if any(build.status == BuildStatus.Failure for build in self.builds.values()): | if any(build.status == BuildStatus.Failure for build in self.builds.values()): | ||||
return BuildStatus.Failure | return BuildStatus.Failure | ||||
# If all the builds are a success, the build target is a success | # If all the builds are a success, the build target is a success | ||||
if all(build.status == BuildStatus.Success for build in self.builds.values()): | if all(build.status == BuildStatus.Success for build in self.builds.values()): | ||||
return BuildStatus.Success | return BuildStatus.Success | ||||
# If all the builds are queued, the build target is queued | # If all the builds are queued, the build target is queued | ||||
if all(build.status == BuildStatus.Queued for build in self.builds.values()): | if all(build.status == BuildStatus.Queued for build in self.builds.values()): | ||||
return BuildStatus.Queued | return BuildStatus.Queued | ||||
# Otherwise the build target is running | # Otherwise the build target is running | ||||
return BuildStatus.Running | return BuildStatus.Running | ||||
def is_finished(self): | def is_finished(self): | ||||
return all((build.status == BuildStatus.Success or build.status == | return all( | ||||
BuildStatus.Failure) for build in self.builds.values()) | (build.status == BuildStatus.Success or build.status == BuildStatus.Failure) | ||||
for build in self.builds.values() | |||||
) |