From b5513ae969d3d8e5a0870d21cf6c8499987b1135 Mon Sep 17 00:00:00 2001 From: Felix Domke Date: Tue, 3 Jun 2008 22:50:02 +0000 Subject: [PATCH] add cleanup call, implement DiskspacePrecondition, add WorkspaceExistsPrecondition --- lib/python/Components/Task.py | 25 +++++++++++++++++-------- 1 file changed, 17 insertions(+), 8 deletions(-) diff --git a/lib/python/Components/Task.py b/lib/python/Components/Task.py index aebca732..075324b0 100644 --- a/lib/python/Components/Task.py +++ b/lib/python/Components/Task.py @@ -171,6 +171,7 @@ class Task(object) : if not postcondition.check(self): not_met.append(postcondition) + self.cleanup(not_met) self.callback(not_met) def afterRun(self): @@ -248,14 +249,22 @@ class JobManager: # if filesystem is not None: # self.args += ["-t", filesystem] # self.args.append(device + "part%d" % partition) -# -#class DiskspacePrecondition: -# def __init__(self, diskspace_required): -# self.diskspace_required = diskspace_required -# -# def check(self, task): -# return getFreeDiskspace(task.workspace) >= self.diskspace_required -# + +class WorkspaceExistsPrecondition: + def check(self, task): + return os.access(task.job.workspace, os.W_OK) + +class DiskspacePrecondition: + def __init__(self, diskspace_required): + self.diskspace_required = diskspace_required + + def check(self, task): + import os + try: + s = os.statvfs(task.job.workspace) + return s.f_bsize * s.f_bavail >= self.diskspace_required + except OSError: + return False class ToolExistsPrecondition: def check(self, task): -- 2.30.2