]> git.ipfire.org Git - pbs.git/commitdiff
jobs: Clone on fail
authorMichael Tremer <michael.tremer@ipfire.org>
Fri, 15 Jul 2022 09:15:29 +0000 (09:15 +0000)
committerMichael Tremer <michael.tremer@ipfire.org>
Fri, 15 Jul 2022 09:15:29 +0000 (09:15 +0000)
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
src/buildservice/jobs.py

index 64538ae60f76f68c701d87f416d9dcf43772998b..fd3e496258305a571ecd2e5d877ebb786ce9b14d 100644 (file)
@@ -231,7 +231,10 @@ class Job(base.DataObject):
                # Store the time
                self._set_attribute_now("finished_at")
 
-               # XXX handle success status
+               # Did this build fail?
+               if not success:
+                       # Clone the build
+                       self.clone()
 
                # Store message
                self._set_attribute("message", message)
@@ -293,6 +296,21 @@ class Job(base.DataObject):
                # Delete the job itself.
                self.db.execute("DELETE FROM jobs WHERE id = %s", self.id)
 
+       def clone(self):
+               """
+                       Clones this build job
+               """
+               job = self.backend.jobs.create(
+                       build=self.build,
+                       arch=self.arch,
+                       test=self.test,
+                       superseeds=self,
+               )
+
+               log.debug("Cloned job %s as %s" % (self, job))
+
+               return job
+
        ## Logging stuff
 
        def log(self, action, user=None, state=None, builder=None, test_job=None):