From a937c8f1fe4bdda27d14caf5ac2b823a0f676161 Mon Sep 17 00:00:00 2001
From: Manuel Guenther <manuel.guenther@idiap.ch>
Date: Thu, 13 Feb 2014 10:26:07 +0100
Subject: [PATCH] Also 'submitted' (e.g. stopped, but not queued) jobs are now
 resubmitted by default; small bug fixes.

---
 gridtk/manager.py     | 2 +-
 gridtk/script/jman.py | 5 +++--
 gridtk/sge.py         | 4 +++-
 3 files changed, 7 insertions(+), 4 deletions(-)

diff --git a/gridtk/manager.py b/gridtk/manager.py
index d8a43ca..dfb874a 100644
--- a/gridtk/manager.py
+++ b/gridtk/manager.py
@@ -206,7 +206,7 @@ class JobManager:
     self.lock()
     for job in self.get_jobs(job_ids):
       job.refresh()
-      if job.status in status and names is None or job.name in names:
+      if job.status in status and (names is None or job.name in names):
         print(job.format(format, dependency_length, None if long else 43))
         if print_array_jobs and job.array:
           print(array_delimiter)
diff --git a/gridtk/script/jman.py b/gridtk/script/jman.py
index 361f4ae..0d75835 100644
--- a/gridtk/script/jman.py
+++ b/gridtk/script/jman.py
@@ -106,13 +106,13 @@ def submit(args):
       'name': args.name,
       'env': args.env,
       'memfree': args.memory,
-      'hvmem': args.memory,
       'io_big': args.io_big,
   }
 
   if args.array is not None:         kwargs['array'] = get_array(args.array)
   if args.log_dir is not None:       kwargs['log_dir'] = args.log_dir
   if args.dependencies is not None:  kwargs['dependencies'] = args.dependencies
+  if args.queue != 'all.q':          kwargs['hvmem'] = args.memory
   if args.parallel is not None:
     kwargs['pe_opt'] = "pe_mth %d" % args.parallel
     kwargs['memfree'] = "%d%s" % (int(args.memory.rstrip(string.ascii_letters)) * args.parallel, args.memory.lstrip(string.digits))
@@ -136,7 +136,8 @@ def resubmit(args):
     kwargs['queue'] = args.qname
   if args.memory is not None:
     kwargs['memfree'] = args.memory
-    kwargs['hvmem'] = args.memory
+    if args.qname not in (None, 'all.q'):
+      kwargs['hvmem'] = args.memory
   if args.parallel is not None:
     kwargs['pe_opt'] = "pe_mth %d" % args.parallel
     kwargs['memfree'] = "%d%s" % (int(args.memory.rstrip(string.ascii_letters)) * args.parallel, args.memory.lstrip(string.digits))
diff --git a/gridtk/sge.py b/gridtk/sge.py
index cdfae97..426973e 100644
--- a/gridtk/sge.py
+++ b/gridtk/sge.py
@@ -131,7 +131,7 @@ class JobManagerSGE(JobManager):
     self.lock()
     # iterate over all jobs
     jobs = self.get_jobs(job_ids)
-    accepted_old_status = ('success', 'failure') if also_success else ('failure',)
+    accepted_old_status = ('submitted', 'success', 'failure') if also_success else ('submitted', 'failure',)
     for job in jobs:
       # check if this job needs re-submission
       if running_jobs or job.status in accepted_old_status:
@@ -142,6 +142,8 @@ class JobManagerSGE(JobManager):
         # re-submit job to the grid
         arguments = job.get_arguments()
         arguments.update(**kwargs)
+        if ('queue' not in kwargs or kwargs['queue'] == 'all.q') and 'hvmem' in kwargs:
+          del kwargs['hvmem']
         job.set_arguments(kwargs=arguments)
         # delete old status and result of the job
         job.submit()
-- 
GitLab