]> git.ipfire.org Git - people/jschlag/pbs.git/commitdiff
Force repository update after a build has been removed
authorMichael Tremer <michael.tremer@ipfire.org>
Mon, 23 Oct 2017 01:17:02 +0000 (02:17 +0100)
committerMichael Tremer <michael.tremer@ipfire.org>
Mon, 23 Oct 2017 01:17:02 +0000 (02:17 +0100)
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
src/buildservice/repository.py
src/database.sql

index db43580f35793aa5c4094027c24d660d57cfdf10..8815b966187514647bc20566d0100b39ae52c02b 100644 (file)
@@ -255,6 +255,11 @@ class Repository(base.DataObject):
        def time_max(self):
                return self.data.time_max
 
+       def set_update_forced(self, update_forced):
+               self._set_attribute("update_forced", update_forced)
+
+       update_forced = property(lambda s: s.data.update_forced, set_update_forced)
+
        def _log_build(self, action, build, from_repo=None, to_repo=None, user=None):
                user_id = None
                if user:
@@ -285,6 +290,9 @@ class Repository(base.DataObject):
                self.db.execute("DELETE FROM repositories_builds \
                        WHERE repo_id = %s AND build_id = %s", self.id, build.id)
 
+               # Force regenerating the index
+               self.update_forced = True
+
                if log:
                        self._log_build("removed", build, from_repo=self, user=user)
 
@@ -292,6 +300,9 @@ class Repository(base.DataObject):
                self.db.execute("UPDATE repositories_builds SET repo_id = %s, time_added = NOW() \
                        WHERE repo_id = %s AND build_id = %s", to_repo.id, self.id, build.id)
 
+               # Force regenerating the index
+               self.update_forced = True
+
                # Update bug status.
                build._update_bugs_helper(to_repo)
 
@@ -360,6 +371,9 @@ class Repository(base.DataObject):
                self.db.execute("UPDATE repositories SET last_update = NOW() \
                        WHERE id = %s", self.id)
 
+               # Reset forced update flag
+               self.update_forced = False
+
        def remaster(self):
                log.info("Going to update repository %s..." % self.name)
 
@@ -392,12 +406,9 @@ class Repository(base.DataObject):
                                changed = True
 
                        # No need to regenerate the index if the repository hasn't changed
-                       if not changed:
+                       if not changed and not self.update_forced:
                                continue
 
-                       # Update the timestamp when we started at last
-                       self.updated()
-
                        # Find the key to sign the package.
                        key_id = None
                        if self.key:
@@ -409,6 +420,9 @@ class Repository(base.DataObject):
                                name="%s - %s.%s" % (self.distro.name, self.name, arch),
                                key_id=key_id)
 
+               # Update the timestamp when we started at last
+               self.updated()
+
        def cleanup(self):
                log.info("Cleaning up repository %s..." % self.name)
 
index d489ce6e1018475b5349635c77ef21965c3e1e27..bb400d5fc2ff1fd963be128ce238c97381dc91aa 100644 (file)
@@ -1563,7 +1563,8 @@ CREATE TABLE repositories (
     time_max integer DEFAULT 0 NOT NULL,
     deleted boolean DEFAULT false NOT NULL,
     priority integer,
-    user_id integer
+    user_id integer,
+    update_forced boolean DEFAULT false NOT NULL
 );