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): |
| 174 | 174 | special_name = opt[1] |
| 175 | 175 | return special_name |
| 176 | 176 | |
| | 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 |
| 177 | 222 | |
| 178 | 223 | task_id = None |
| 179 | 224 | try: |
| … |
… |
def task_low_level_submission(name, user, *argv): |
| 188 | 233 | argv = new_argv |
| 189 | 234 | priority = get_priority(argv) |
| 190 | 235 | special_name = get_special_name(argv) |
| | 236 | runtime = get_runtime(argv) |
| | 237 | sleeptime = get_sleeptime(argv) |
| 191 | 238 | argv = tuple([os.path.join(CFG_BINDIR, name)] + list(argv)) |
| 192 | 239 | |
| 193 | 240 | if special_name: |
| … |
… |
def task_low_level_submission(name, user, *argv): |
| 198 | 245 | ## submit task: |
| 199 | 246 | task_id = run_sql("""INSERT INTO schTASK (proc,user, |
| 200 | 247 | 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)) |
| 203 | 250 | |
| 204 | 251 | except Exception: |
| 205 | 252 | register_exception(alert_admin=True) |