From 1051a3eef35d28d123259a31e02fcac478dd892c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nikola=20Forr=C3=B3?= Date: Wed, 31 Jul 2024 13:45:08 +0200 Subject: [PATCH 1/2] Account for a dist-git branch without a candidate tag MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Such case should never really happen but it should be handled. Signed-off-by: Nikola Forró --- packit_service/worker/handlers/bodhi.py | 4 +++- packit_service/worker/handlers/mixin.py | 23 +++++++++++++++++++---- 2 files changed, 22 insertions(+), 5 deletions(-) diff --git a/packit_service/worker/handlers/bodhi.py b/packit_service/worker/handlers/bodhi.py index c6a1f95b8..23150f91f 100644 --- a/packit_service/worker/handlers/bodhi.py +++ b/packit_service/worker/handlers/bodhi.py @@ -128,7 +128,9 @@ def get_builds_in_sidetag(self, dist_git_branch: str) -> Tuple[str, List[str]]: missing = dependencies - tagged_packages raise PackitException(f"Missing dependencies for Bodhi update: {missing}") - candidate_tag = self.koji_helper.get_candidate_tag(dist_git_branch) + if not (candidate_tag := self.koji_helper.get_candidate_tag(dist_git_branch)): + raise PackitException(f"Failed to get candidate tag for {dist_git_branch}") + stable_tags = self.koji_helper.get_stable_tags(candidate_tag) nvrs = [] diff --git a/packit_service/worker/handlers/mixin.py b/packit_service/worker/handlers/mixin.py index ee2ba814f..c45a4a4de 100644 --- a/packit_service/worker/handlers/mixin.py +++ b/packit_service/worker/handlers/mixin.py @@ -243,13 +243,22 @@ def koji_helper(self): @property def build(self): if not self._build: + if not ( + candidate_tag := self.koji_helper.get_candidate_tag( + self._dist_git_branch + ) + ): + raise PackitException( + f"Failed to get candidate tag for {self._dist_git_branch}" + ) self._build = self.koji_helper.get_latest_build_in_tag( package=self.project.repo, - tag=self.koji_helper.get_candidate_tag(self._dist_git_branch), + tag=candidate_tag, ) if not self._build: raise PackitException( - f"No build found for package={self.project.repo} and tag={self.dist_git_branch}" + f"No build found for package={self.project.repo} " + f"and tag={self._dist_git_branch}" ) return self._build @@ -292,13 +301,19 @@ def _dist_git_branch(self) -> str: @property def build(self): # call it every time since dist_git_branch reference can change + if not ( + candidate_tag := self.koji_helper.get_candidate_tag(self._dist_git_branch) + ): + raise PackitException( + f"Failed to get candidate tag for {self._dist_git_branch}" + ) build = self.koji_helper.get_latest_build_in_tag( package=self.project.repo, - tag=self.koji_helper.get_candidate_tag(self._dist_git_branch), + tag=candidate_tag, ) if not build: raise PackitException( - f"No build found for package={self.project.repo} and tag={self.dist_git_branch}" + f"No build found for package={self.project.repo} and tag={self._dist_git_branch}" ) return build From 04237d79c163ab213a9ad560e78fc0c3b6533aff Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nikola=20Forr=C3=B3?= Date: Wed, 31 Jul 2024 14:26:10 +0200 Subject: [PATCH 2/2] Remove duplicated code MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Nikola Forró --- packit_service/worker/handlers/mixin.py | 56 ++++++++++--------------- 1 file changed, 22 insertions(+), 34 deletions(-) diff --git a/packit_service/worker/handlers/mixin.py b/packit_service/worker/handlers/mixin.py index c45a4a4de..27fcff433 100644 --- a/packit_service/worker/handlers/mixin.py +++ b/packit_service/worker/handlers/mixin.py @@ -235,31 +235,33 @@ class GetKojiBuildDataFromKojiService(Config, GetKojiBuildData): _koji_helper: Optional[KojiHelper] = None @property - def koji_helper(self): + def koji_helper(self) -> KojiHelper: if not self._koji_helper: self._koji_helper = KojiHelper() return self._koji_helper + def _get_latest_build(self) -> dict: + if not ( + candidate_tag := self.koji_helper.get_candidate_tag(self._dist_git_branch) + ): + raise PackitException( + f"Failed to get candidate tag for {self._dist_git_branch}" + ) + build = self.koji_helper.get_latest_build_in_tag( + package=self.project.repo, + tag=candidate_tag, + ) + if not build: + raise PackitException( + f"No build found for package={self.project.repo} " + f"and branch={self._dist_git_branch}" + ) + return build + @property - def build(self): + def build(self) -> dict: if not self._build: - if not ( - candidate_tag := self.koji_helper.get_candidate_tag( - self._dist_git_branch - ) - ): - raise PackitException( - f"Failed to get candidate tag for {self._dist_git_branch}" - ) - self._build = self.koji_helper.get_latest_build_in_tag( - package=self.project.repo, - tag=candidate_tag, - ) - if not self._build: - raise PackitException( - f"No build found for package={self.project.repo} " - f"and tag={self._dist_git_branch}" - ) + self._build = self._get_latest_build() return self._build @property @@ -301,21 +303,7 @@ def _dist_git_branch(self) -> str: @property def build(self): # call it every time since dist_git_branch reference can change - if not ( - candidate_tag := self.koji_helper.get_candidate_tag(self._dist_git_branch) - ): - raise PackitException( - f"Failed to get candidate tag for {self._dist_git_branch}" - ) - build = self.koji_helper.get_latest_build_in_tag( - package=self.project.repo, - tag=candidate_tag, - ) - if not build: - raise PackitException( - f"No build found for package={self.project.repo} and tag={self._dist_git_branch}" - ) - return build + return self._get_latest_build() @property def num_of_branches(self):