]> git.ipfire.org Git - pbs.git/commitdiff
packages: Don't deleted packages referenced by another build
authorMichael Tremer <michael.tremer@ipfire.org>
Thu, 9 Mar 2023 23:41:54 +0000 (23:41 +0000)
committerMichael Tremer <michael.tremer@ipfire.org>
Thu, 9 Mar 2023 23:41:54 +0000 (23:41 +0000)
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
src/buildservice/packages.py

index ad139d274484979e97d7d3038b6dbb1baba60f82..19e8969418d626d0a89b4246796da58328a3904c 100644 (file)
@@ -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