]> git.ipfire.org Git - people/jschlag/pbs.git/commitdiff
jobs: Mark them as deleted instead of removing them instantly
authorMichael Tremer <michael.tremer@ipfire.org>
Sat, 21 Oct 2017 14:10:03 +0000 (15:10 +0100)
committerMichael Tremer <michael.tremer@ipfire.org>
Sat, 21 Oct 2017 14:13:18 +0000 (15:13 +0100)
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
src/buildservice/jobs.py
src/database.sql

index 62effd5ca2e1b39fa5d3f85eb8eb1cce4d91dbba..08c1ed59da11196216f9b163daca1972db4fffef 100644 (file)
@@ -251,27 +251,33 @@ class Job(base.DataObject):
        superseeded_by = lazy_property(get_superseeded_by, set_superseeded_by)
 
        def delete(self):
-               self.__delete_buildroots()
-               self.__delete_history()
-               self.__delete_packages()
-               self.__delete_logfiles()
+               self._set_attribute("delete", True)
+
+       def remove(self):
+               """
+                       Removes a job from the database
+               """
+               self.__remove_buildroots()
+               self.__remove_history()
+               self.__remove_packages()
+               self.__remove_logfiles()
 
                # Delete the job itself.
                self.db.execute("DELETE FROM jobs WHERE id = %s", self.id)
 
-       def __delete_buildroots(self):
+       def __remove_buildroots(self):
                """
                        Removes all buildroots.
                """
                self.db.execute("DELETE FROM jobs_buildroots WHERE job_id = %s", self.id)
 
-       def __delete_history(self):
+       def __remove_history(self):
                """
                        Removes all references in the history to this build job.
                """
                self.db.execute("DELETE FROM jobs_history WHERE job_id = %s", self.id)
 
-       def __delete_packages(self):
+       def __remove_packages(self):
                """
                        Deletes all uploaded files from the job.
                """
@@ -280,15 +286,15 @@ class Job(base.DataObject):
 
                self.db.execute("DELETE FROM jobs_packages WHERE job_id = %s", self.id)
 
-       def __delete_logfiles(self):
+       def __remove_logfiles(self):
                for logfile in self.logfiles:
                        self.db.execute("INSERT INTO queue_delete(path) VALUES(%s)", logfile.path)
 
        def reset(self, user=None):
-               self.__delete_buildroots()
-               self.__delete_packages()
-               self.__delete_history()
-               self.__delete_logfiles()
+               self.__remove_buildroots()
+               self.__remove_packages()
+               self.__remove_history()
+               self.__remove_logfiles()
 
                self.state = "new"
                self.log("reset", user=user)
index bf5327759c60d1a4f275cc9878671a46ddfe711a..11995762f1261d757940679feeed4a772137c11f 100644 (file)
@@ -867,7 +867,7 @@ CREATE TABLE jobs (
     message text,
     test boolean DEFAULT true NOT NULL,
     superseeded_by integer,
-    deleted boolean DEFAULT false NOT NULL
+    deleted_at timestamp without time zone
 );
 
 
@@ -882,7 +882,7 @@ CREATE VIEW builds_times AS
     jobs.arch,
     (jobs.time_finished - jobs.time_started) AS duration
    FROM jobs
-  WHERE (((jobs.deleted IS FALSE) AND (jobs.test IS FALSE)) AND (jobs.state = 'finished'::jobs_state));
+  WHERE (((jobs.deleted_at IS NULL) AND (jobs.test IS FALSE)) AND (jobs.state = 'finished'::jobs_state));
 
 
 ALTER TABLE builds_times OWNER TO pakfire;
@@ -2886,10 +2886,10 @@ CREATE INDEX jobs_buildroots_pkg_uuid ON jobs_buildroots USING btree (pkg_uuid);
 
 
 --
--- Name: jobs_type; Type: INDEX; Schema: public; Owner: pakfire; Tablespace: 
+-- Name: jobs_test; Type: INDEX; Schema: public; Owner: pakfire; Tablespace: 
 --
 
-CREATE INDEX jobs_type ON jobs USING btree (test) WHERE (deleted IS FALSE);
+CREATE INDEX jobs_test ON jobs USING btree (test) WHERE (deleted_at IS NULL);
 
 
 --