From: Michael Tremer Date: Mon, 18 Jul 2022 17:17:30 +0000 (+0000) Subject: sync: Move this out of the repository stuff X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=033429a8594ab4c8cdbeabdbeff5723fc82d660d;p=pbs.git sync: Move this out of the repository stuff There will be other things that need to be synchronised with the mirror servers. Signed-off-by: Michael Tremer --- diff --git a/src/buildservice/__init__.py b/src/buildservice/__init__.py index dbe7e568..65771c22 100644 --- a/src/buildservice/__init__.py +++ b/src/buildservice/__init__.py @@ -327,3 +327,59 @@ class Backend(object): # Uploads await self.uploads.cleanup() + + async def sync(self): + """ + Syncs any repository that should be mirrored + """ + log.info("Syncing mirrors...") + + # Fetch the sync target + target = self.settings.get("sync-target") + if not target: + log.warning("No sync target configured") + return 0 + + commandline = [ + "rsync", + + # Show what is being transferred + #"--verbose", + + # Compress any transferred data + "--compress", + + # Enable archive mode + "--archive", + + # Preserve hardlinks, ACLs & XATTRs + "--hard-links", + "--acls", + "--xattrs", + + # Delete any files that we have deleted + "--delete", + "--delete-excluded", + + # Remove any empty directories + "--prune-empty-dirs", + + # Make the transaction atomic + "--delay-updates", + + # Add source & target + "%s/" % PAKFIRE_DIR, + target, + ] + + # Add all mirrored repositories + for repo in self.repos.mirrored: + path = os.path.relpath(repo.local_path(), PAKFIRE_DIR) + + commandline.append("--include=%s***" % path) + + # Exclude everything that hasn't been included + commandline += ("--include=*/", "--exclude=*") + + # Run command + await self.command(*commandline, krb5_auth=True) diff --git a/src/buildservice/repository.py b/src/buildservice/repository.py index 2865fe62..74f3248c 100644 --- a/src/buildservice/repository.py +++ b/src/buildservice/repository.py @@ -130,62 +130,6 @@ class Repositories(base.Object): for repo in self: await repo.write() - async def sync(self): - """ - Syncs any repository that should be mirrored - """ - log.info("Syncing repositories...") - - # Fetch the sync target - target = self.settings.get("sync-target") - if not target: - log.warning("No sync target configured") - return 0 - - commandline = [ - "rsync", - - # Show what is being transferred - #"--verbose", - - # Compress any transferred data - "--compress", - - # Enable archive mode - "--archive", - - # Preserve hardlinks, ACLs & XATTRs - "--hard-links", - "--acls", - "--xattrs", - - # Delete any files that we have deleted - "--delete", - "--delete-excluded", - - # Remove any empty directories - "--prune-empty-dirs", - - # Make the transaction atomic - "--delay-updates", - - # Add source & target - "%s/" % REPOS_DIR, - target, - ] - - # Append all repositories - for repo in self.mirrored: - path = os.path.relpath(repo.local_path(), REPOS_DIR) - - commandline.append("--include=%s***" % path) - - # Exclude everything that hasn't been included - commandline += ("--include=*/", "--exclude=*") - - # Run command - await self.backend.command(*commandline, krb5_auth=True) - class Repository(base.DataObject): table = "repositories" diff --git a/src/crontab/pakfire-build-service b/src/crontab/pakfire-build-service index 09c91ae6..064f3a10 100644 --- a/src/crontab/pakfire-build-service +++ b/src/crontab/pakfire-build-service @@ -3,8 +3,8 @@ MAILTO=pakfire@ipfire.org # Send queued emails once a minute #* * * * * _pakfire pakfire-build-service process-message-queue &>/dev/null -# Synchronize repositories once every five minutes -*/5 * * * * _pakfire pakfire-build-service repos:sync +# Synchronize mirrors once every five minutes +*/5 * * * * _pakfire pakfire-build-service sync # Cleanup */5 * * * * _pakfire pakfire-build-service cleanup diff --git a/src/scripts/pakfire-build-service b/src/scripts/pakfire-build-service index 159d7081..92f9be58 100644 --- a/src/scripts/pakfire-build-service +++ b/src/scripts/pakfire-build-service @@ -25,9 +25,11 @@ class Cli(object): "jobs:depcheck" : self._jobs_depcheck, # Repositories - "repos:sync" : self.backend.repos.sync, "repos:write" : self.backend.repos.write, + # Sync + "sync" : self.backend.sync, + # Run mirror check #"check-mirrors" : self.backend.mirrors.check,