diff options
author | Jonathan Herman <hermanjl@cs.unc.edu> | 2013-04-10 15:32:39 -0400 |
---|---|---|
committer | Jonathan Herman <hermanjl@cs.unc.edu> | 2013-04-10 15:32:39 -0400 |
commit | 384e322f974534c1c734db144633e3c3e002b1f8 (patch) | |
tree | 1637267cea4cb5166677f272e97b19ce8331a36c /run_exps.py | |
parent | 4162cc0c57de22566efa6e2dab224909279f2a47 (diff) |
Added option to send email when experiments complete.
Diffstat (limited to 'run_exps.py')
-rwxr-xr-x | run_exps.py | 40 |
1 files changed, 29 insertions, 11 deletions
diff --git a/run_exps.py b/run_exps.py index 77c9631..b9cf88e 100755 --- a/run_exps.py +++ b/run_exps.py | |||
@@ -68,6 +68,9 @@ def parse_args(): | |||
68 | parser.add_option('-j', '--jabber', metavar='username@domain', | 68 | parser.add_option('-j', '--jabber', metavar='username@domain', |
69 | dest='jabber', default=None, | 69 | dest='jabber', default=None, |
70 | help='send a jabber message when an experiment completes') | 70 | help='send a jabber message when an experiment completes') |
71 | parser.add_option('-e', '--email', metavar='username@server', | ||
72 | dest='email', default=None, | ||
73 | help='send an email when all experiments complete') | ||
71 | 74 | ||
72 | return parser.parse_args() | 75 | return parser.parse_args() |
73 | 76 | ||
@@ -295,10 +298,22 @@ def setup_jabber(target): | |||
295 | 298 | ||
296 | return Jabber(target) | 299 | return Jabber(target) |
297 | except ImportError: | 300 | except ImportError: |
298 | sys.stderr.write("Failed to import jabber, disabling messages. " + | 301 | sys.stderr.write("Failed to import jabber. Is python-xmpp installed? " + |
299 | "Is python-xmpp installed?") | 302 | "Disabling instant messages.\n") |
300 | return None | 303 | return None |
301 | 304 | ||
305 | def setup_email(target): | ||
306 | try: | ||
307 | from run.emailer import Emailer | ||
308 | |||
309 | return Emailer(target) | ||
310 | except ImportError: | ||
311 | message = "Failed to import email. Is smtplib installed?" | ||
312 | except IOError: | ||
313 | message = "Failed to create email. Is an smtp server active?" | ||
314 | |||
315 | sys.stderr.write(message + " Disabling email message.\n") | ||
316 | return None | ||
302 | 317 | ||
303 | def main(): | 318 | def main(): |
304 | opts, args = parse_args() | 319 | opts, args = parse_args() |
@@ -320,10 +335,8 @@ def main(): | |||
320 | failed = 0 | 335 | failed = 0 |
321 | invalid = 0 | 336 | invalid = 0 |
322 | 337 | ||
323 | if opts.jabber: | 338 | jabber = setup_jabber(opts.jabber) if opts.jabber else None |
324 | jabber = setup_jabber(opts.jabber) | 339 | email = setup_email(opts.email) if opts.email else None |
325 | else: | ||
326 | jabber = None | ||
327 | 340 | ||
328 | for exp in args: | 341 | for exp in args: |
329 | path = "%s/%s" % (os.getcwd(), exp) | 342 | path = "%s/%s" % (os.getcwd(), exp) |
@@ -357,12 +370,17 @@ def main(): | |||
357 | if not os.listdir(out_base) and created and not succ: | 370 | if not os.listdir(out_base) and created and not succ: |
358 | os.rmdir(out_base) | 371 | os.rmdir(out_base) |
359 | 372 | ||
360 | print("Experiments run:\t%d" % len(args)) | 373 | message = "Experiments run:\t%d" % len(args) +\ |
361 | print(" Successful:\t\t%d" % succ) | 374 | "\n Successful:\t\t%d" % succ +\ |
362 | print(" Failed:\t\t%d" % failed) | 375 | "\n Failed:\t\t%d" % failed +\ |
363 | print(" Already Done:\t\t%d" % done) | 376 | "\n Already Done:\t\t%d" % done +\ |
364 | print(" Invalid Environment:\t%d" % invalid) | 377 | "\n Invalid Environment:\t%d" % invalid |
378 | |||
379 | print(message) | ||
365 | 380 | ||
381 | if email: | ||
382 | email.send(message) | ||
383 | email.close() | ||
366 | 384 | ||
367 | if __name__ == '__main__': | 385 | if __name__ == '__main__': |
368 | main() | 386 | main() |