csdms

Source code for wmtexe.cmd.slave

"""Initiate and monitor a task slave for a WMT simulation."""

import os
import sys
import argparse

from ..slave import Slave
from ..env import WmtEnvironment


[docs]class EnsureHttps(argparse.Action): def __call__(self, parser, namespace, values, option_string=None): import urlparse o = urlparse.urlsplit(values) url = urlparse.urlunsplit(('https', o.netloc, o.path, '', '')) setattr(namespace, self.dest, url)
[docs]def main(): import argparse import traceback parser = argparse.ArgumentParser(description=__doc__) parser.add_argument('id', help='run ID') parser.add_argument('--server-url', default='https://csdms.colorado.edu/wmt/api-dev', help='URL of WMT server') #action=EnsureHttps, help='URL of WMT server') parser.add_argument('--exec-dir', default=os.path.expanduser('~/.wmt'), help='path to execution directory') #parser.add_argument('--env', default=os.path.join(_WMT_ETC, 'environ.yaml'), # help='path to environment file') parser.add_argument('--config', default=None, help='WMT site configuration file') parser.add_argument('--show-env', action='store_true', help='print execution environment and exit') args = parser.parse_args() # env = WmtEnvironment.from_config(args.config) env = os.environ env['PATH'] = os.pathsep.join( [os.path.join(sys.prefix, 'bin'), env['PATH']]) # ['/home/csdms/wmt/topoflow.1/conda/bin', env['PATH']]) if args.show_env: print str(env) return # slave = Slave(args.server_url, env=env.env) slave = Slave(args.server_url, env=env) try: _ = slave.start_task(args.id, dir=args.exec_dir, env=env) #except TaskError as error: # slave.report_error(args.id, str(error)) # print error except Exception as error: slave.report_error(args.id, traceback.format_exc()) print traceback.format_exc() else: slave.report_success( args.id, 'simulation is complete and available for pickup') print 'success'