From: Michael Tremer Date: Thu, 9 Mar 2023 23:41:54 +0000 (+0000) Subject: packages: Don't deleted packages referenced by another build X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=dc32e255a9644bf022f96a103a3693f88f7ae85b;p=pbs.git packages: Don't deleted packages referenced by another build Signed-off-by: Michael Tremer --- diff --git a/src/buildservice/packages.py b/src/buildservice/packages.py index ad139d27..19e89694 100644 --- a/src/buildservice/packages.py +++ b/src/buildservice/packages.py @@ -245,17 +245,35 @@ class Package(base.DataObject): return NotImplemented async def delete(self, user=None): + # Check if this package can be deleted + if not self.can_be_deleted(): + log.debug("Won't delete package %s as it is still in use") + return + # Mark as deleted self._set_attribute_now("deleted_at") if user: self._set_attribute("deleted_by", user) # Unlink the payload - await self.backend.unlink(self.path) + if self.path: + await self.backend.unlink(self.path) # Reset path self._set_attribute("path", None) + def can_be_deleted(self): + """ + Checks if this package is being used somewhere else and + therefore cannot be deleted. + """ + # If there any builds using this package, it cannot be deleted + if self.builds: + return False + + # This package can be deleted + return True + @property def uuid(self): return self.data.uuid