Skip to content

Commit

Permalink
Merge pull request #369 from nix-community/return-fix
Browse files Browse the repository at this point in the history
BuildRequestModel and BuildModel are no longer dicts
  • Loading branch information
Mic92 authored Jan 4, 2025
2 parents 387f1ba + 04d115e commit 3efc57e
Show file tree
Hide file tree
Showing 4 changed files with 29 additions and 23 deletions.
23 changes: 11 additions & 12 deletions buildbot_nix/buildbot_nix/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,9 +21,6 @@
from buildbot.locks import MasterLock
from buildbot.plugins import schedulers, steps, util, worker
from buildbot.process import buildstep, logobserver, remotecommand

# from buildbot.db.buildrequests import BuildRequestModel
# from buildbot.db.builds import BuildModel
from buildbot.process.project import Project
from buildbot.process.properties import Properties
from buildbot.process.results import ALL_RESULTS, SUCCESS, statusToString, worst_status
Expand All @@ -37,6 +34,8 @@
from buildbot_nix.pull_based.backend import PullBasedBacked

if TYPE_CHECKING:
from buildbot.db.buildrequests import BuildRequestModel
from buildbot.db.builds import BuildModel
from buildbot.process.log import StreamLog
from buildbot.www.auth import AuthBase

Expand Down Expand Up @@ -185,7 +184,7 @@ def __init__(
self.cached_failure_scheduler = cached_failure_scheduler
self.dependency_failed_scheduler = dependency_failed_scheduler
self.failed_builds_db = failed_builds_db
self._result_list: list[int] = []
self._result_list: list[int | None] = []
self.ended = False
self.running = False
self.wait_for_finish_deferred: defer.Deferred[tuple[list[int], int]] | None = (
Expand Down Expand Up @@ -339,24 +338,24 @@ async def schedule(
return brids, results_deferred

async def _add_results(self, brid: Any) -> None:
async def _is_buildrequest_complete(brid: Any) -> Generator[Any, Any, bool]:
buildrequest: Any = await self.master.db.buildrequests.getBuildRequest(
brid
) # TODO: once we bump to 4.1.x use BuildRequestModel | None
async def _is_buildrequest_complete(brid: Any) -> bool:
buildrequest: (
BuildRequestModel | None
) = await self.master.db.buildrequests.getBuildRequest(brid)
if buildrequest is None:
message = "Failed to get build request by its ID"
raise BuildbotNixError(message)
return buildrequest["complete"]
return buildrequest.complete

event = ("buildrequests", str(brid), "complete")
await self.master.mq.waitUntilEvent(
event, lambda: _is_buildrequest_complete(brid)
)
builds: Any = await self.master.db.builds.getBuilds(
builds: list[BuildModel] = await self.master.db.builds.getBuilds(
buildrequestid=brid
) # TODO: once we bump to 4.1.x use list[BuildModel]
)
for build in builds:
self._result_list.append(build["results"])
self._result_list.append(build.results)
self.updateSummary()

def prepare_sourcestamp_list_for_trigger(
Expand Down
21 changes: 13 additions & 8 deletions buildbot_nix/buildbot_nix/nix_status_generator.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
from collections.abc import Iterable
from datetime import UTC, datetime
from enum import Enum
from typing import Any, ClassVar
from typing import TYPE_CHECKING, Any, ClassVar

from buildbot.interfaces import IReportGenerator
from buildbot.master import BuildMaster
Expand All @@ -18,6 +18,9 @@
from twisted.logger import Logger
from zope.interface import implementer # type: ignore[import]

if TYPE_CHECKING:
from buildbot.db.buildrequests import BuildRequestModel

log = Logger()


Expand Down Expand Up @@ -117,24 +120,26 @@ def __init__(
# TODO: copy pasted from buildbot, make it static upstream and reuse
@staticmethod
async def partial_build_dict(
master: BuildMaster, buildrequest: dict[str, Any]
master: BuildMaster, brdict: dict[str, Any]
) -> dict[str, Any]:
brdict: Any = await master.db.buildrequests.getBuildRequest(
buildrequest["buildrequestid"]
)
buildrequest_model: (
BuildRequestModel | None
) = await master.db.buildrequests.getBuildRequest(brdict["buildrequestid"])
assert buildrequest_model is not None

bdict = {}

props = Properties()
buildrequest = await BuildRequest.fromBrdict(master, brdict)
builder = await master.botmaster.getBuilderById(brdict["builderid"])
buildrequest = await BuildRequest.fromBrdict(master, buildrequest_model)
builder = await master.botmaster.getBuilderById(buildrequest_model.builderid)

await Build.setup_properties_known_before_build_starts(
props, [buildrequest], builder
)
Build.setupBuildProperties(props, [buildrequest])

bdict["properties"] = props.asDict()
await utils.get_details_for_buildrequest(master, brdict, bdict)
await utils.get_details_for_buildrequest(master, buildrequest, bdict)
return bdict

# TODO: copy pasted from buildbot, somehow reuse
Expand Down
6 changes: 3 additions & 3 deletions flake.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 2 additions & 0 deletions flake.nix
Original file line number Diff line number Diff line change
Expand Up @@ -100,6 +100,8 @@
pkgs.ruff
];
};
# useful for checking what buildbot version is used.
buildbot = pkgs.buildbot;
buildbot-nix = pkgs.python3.pkgs.callPackage ./nix/buildbot-nix.nix { };
}
// lib.optionalAttrs pkgs.stdenv.isLinux {
Expand Down

0 comments on commit 3efc57e

Please sign in to comment.