Ticket #209: 0001-BibSched-improve-task_low_level_submission-args-pars.patch

File 0001-BibSched-improve-task_low_level_submission-args-pars.patch, 3.6 KB (added by skaplun, 2 years ago)
  • modules/bibsched/lib/bibtask.py

    From fd8674720bf6cac23bef8f9933b9522baf6efab1 Mon Sep 17 00:00:00 2001
    From: =?UTF-8?q?Pablo=20V=C3=A1zquez=20Caderno?= <pcaderno@cern.ch>
    Date: Mon, 2 Apr 2012 15:52:40 +0200
    Subject: [PATCH] BibSched: improve task_low_level_submission args parsing
    
    * runtime, sleeptime, and name arguments are now recognized
      in task_low_level_submission.
      (closes #209)
    
    Co-authored-by: Samuele Kaplun <samuele.kaplun@cern.ch>
    ---
     modules/bibsched/lib/bibtask.py |   51 +++++++++++++++++++++++++++++++++++++-
     1 files changed, 49 insertions(+), 2 deletions(-)
    
    diff --git a/modules/bibsched/lib/bibtask.py b/modules/bibsched/lib/bibtask.py
    index 95c4c9c..2c1976f 100644
    a b def task_low_level_submission(name, user, *argv): 
    174174                special_name = opt[1] 
    175175        return special_name 
    176176 
     177    def get_runtime(argv): 
     178        """Try to get the runtime by analysing the arguments.""" 
     179        runtime = time.strftime("%Y-%m-%d %H:%M:%S") 
     180        argv = list(argv) 
     181        while True: 
     182            try: 
     183                opts, args = getopt.gnu_getopt(argv, 't:', ['runtime=']) 
     184            except getopt.GetoptError, err: 
     185                ## We remove one by one all the non recognized parameters 
     186                if len(err.opt) > 1: 
     187                    argv = [arg for arg in argv if arg != '--%s' % err.opt and not arg.startswith('--%s=' % err.opt)] 
     188                else: 
     189                    argv = [arg for arg in argv if not arg.startswith('-%s' % err.opt)] 
     190            else: 
     191                break 
     192        for opt in opts: 
     193            if opt[0] in ('-t', '--runtime'): 
     194                try: 
     195                    runtime = get_datetime(opt[1]) 
     196                except ValueError: 
     197                    pass 
     198        return runtime 
     199 
     200    def get_sleeptime(argv): 
     201        """Try to get the runtime by analysing the arguments.""" 
     202        sleeptime = "" 
     203        argv = list(argv) 
     204        while True: 
     205            try: 
     206                opts, args = getopt.gnu_getopt(argv, 's:', ['sleeptime=']) 
     207            except getopt.GetoptError, err: 
     208                ## We remove one by one all the non recognized parameters 
     209                if len(err.opt) > 1: 
     210                    argv = [arg for arg in argv if arg != '--%s' % err.opt and not arg.startswith('--%s=' % err.opt)] 
     211                else: 
     212                    argv = [arg for arg in argv if not arg.startswith('-%s' % err.opt)] 
     213            else: 
     214                break 
     215        for opt in opts: 
     216            if opt[0] in ('-s', '--sleeptime'): 
     217                try: 
     218                    sleeptime = opt[1] 
     219                except ValueError: 
     220                    pass 
     221        return sleeptime 
    177222 
    178223    task_id = None 
    179224    try: 
    def task_low_level_submission(name, user, *argv): 
    188233        argv = new_argv 
    189234        priority = get_priority(argv) 
    190235        special_name = get_special_name(argv) 
     236        runtime = get_runtime(argv) 
     237        sleeptime = get_sleeptime(argv) 
    191238        argv = tuple([os.path.join(CFG_BINDIR, name)] + list(argv)) 
    192239 
    193240        if special_name: 
    def task_low_level_submission(name, user, *argv): 
    198245        ## submit task: 
    199246        task_id = run_sql("""INSERT INTO schTASK (proc,user, 
    200247            runtime,sleeptime,status,progress,arguments,priority) 
    201             VALUES (%s,%s,NOW(),'','WAITING',%s,%s,%s)""", 
    202             (name, user, verbose_argv, marshal.dumps(argv), priority)) 
     248            VALUES (%s,%s,%s,%s,'WAITING',%s,%s,%s)""", 
     249            (name, user, runtime, sleeptime, verbose_argv, marshal.dumps(argv), priority)) 
    203250 
    204251    except Exception: 
    205252        register_exception(alert_admin=True)