#!/usr/local/bin/python import sys from federation.remote_service import service_caller from federation.client_lib import client_opts, exit_with_fault, RPCException, \ wrangle_standard_options, do_rpc, get_experiment_names, save_certfile class new_opts(client_opts): def __init__(self): client_opts.__init__(self) self.add_option("--experiment_cert", dest="out_certfile", type="string", help="output certificate file") self.add_option("--experiment_name", dest="exp_name", type="string", help="Suggested experiment name") parser = new_opts() (opts, args) = parser.parse_args() cert, fid = wrangle_standard_options(opts) out_certfile = opts.out_certfile msg = { } if opts.exp_name: msg['experimentID'] = { 'localname': opts.exp_name } if opts.debug > 1: print >>sys.stderr, msg try: resp_dict = do_rpc(msg, opts.url, opts.transport, cert, opts.trusted, serialize_only=opts.serialize_only, tracefile=opts.tracefile, caller=service_caller("New"), responseBody='NewResponseBody') except RPCException, e: exit_with_fault(e) except RuntimeError, e: sys.exit("Error processing RPC: %s" % e) if opts.debug > 1: print >>sys.stderr, resp_dict try: save_certfile(opts.out_certfile, resp_dict.get('experimentAccess', None)) except EnvironmentError: sys.exit('Could not write to %s' % out_certfile) e_fedid, e_local = get_experiment_names(resp_dict.get('experimentID', None)) st = resp_dict.get('experimentStatus', None) if e_local: print "localname: %s" % e_local if e_fedid: print "fedid: %s" % e_fedid if st: print "status: %s" % st