From: Michael Tremer Date: Tue, 11 Feb 2025 13:27:58 +0000 (+0000) Subject: releases: Make the decision whether to mirror or not a bit more complex X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=adef1b3d396bf1176d5b6544091397823f35d752;p=pbs.git releases: Make the decision whether to mirror or not a bit more complex Signed-off-by: Michael Tremer --- diff --git a/src/buildservice/__init__.py b/src/buildservice/__init__.py index 0ccead36..f878b7a8 100644 --- a/src/buildservice/__init__.py +++ b/src/buildservice/__init__.py @@ -575,12 +575,12 @@ class Backend(object): paths = [] - # Add all stable releases + # Add all mirrored releases async for distro in self.distros: releases = await distro.get_releases() for release in releases: - if not release.stable: + if not release.is_mirrored(): continue paths.append( diff --git a/src/buildservice/releases.py b/src/buildservice/releases.py index d7643322..43690a3b 100644 --- a/src/buildservice/releases.py +++ b/src/buildservice/releases.py @@ -181,3 +181,23 @@ class Release(database.Base, database.BackendMixin, database.SoftDeleteMixin): path = os.path.join(path, arch) return path + + # Is this release mirrored? + + def is_mirrored(self): + """ + Returns True if this release should be mirrored + """ + # We currently only mirror stable releases + if not self.stable: + return False + + # If there is no publish date, we don't mirror + if self.published_at is None: + return False + + # What time is it now? + now = datetime.datetime.now() + + # We start mirroring 24 hours before the release + return self.published_at >= now - datetime.timedelta(hours=24)