def validate(options): if not options.address: print 'Address must be specified' parser.print_help() sys.exit(1) if not options.target: print 'Target must be specified' parser.print_help() sys.exit(1) if '.' not in options.target: print 'Target must be: <class>.<method>' parser.print_help() sys.exit(1) if options.ttl: try: int(options.ttl) except ValueError: print 'TTL must be <int>' parser.print_help() sys.exit(1) if options.wait: try: int(options.wait) except ValueError: print 'Wait must be <int>' parser.print_help() sys.exit(1) if options.data: try: json.loads(options.data) except ValueError: print 'data must be valid json' parser.print_help() sys.exit(1) if options.input: try: document = json.loads(options.input) if not isinstance(document, list): raise ValueError() if len(document) != 2: raise ValueError() if not isinstance(document[0], list): raise ValueError() if not isinstance(document[1], dict): raise ValueError() except ValueError, e: print utf8(e) print 'Input must be valid json: [[], {}]' parser.print_help() sys.exit(1)
def main(): g_opt = {} options, arguments, keywords = get_options() basicConfig(level=CRITICAL) validate(options) if options.ttl: g_opt['ttl'] = int(options.ttl) if options.wait: g_opt['wait'] = int(options.wait) if options.progress: def print_report(report): print ''.join((options.progress, str(report['details']))) g_opt['progress'] = print_report if options.data: g_opt['data'] = json.loads(options.data) if options.secret: g_opt['secret'] = options.secret if options.authenticator: parts = options.authenticator.split('.') path = '.'.join(parts[:-1]) name = parts[-1] mod = __import__(path, {}, {}, [name]) g_opt['authenticator'] = getattr(mod, name)() if options.user: g_opt['user'] = options.user if options.password: g_opt['password'] = options.password if options.reply: g_opt['reply'] = options.reply if options.input: document = json.loads(options.input) arguments = tuple(document[0]) keywords = document[1] with Connection(options.url, retry=False): agent = Agent(options.url, options.address, **g_opt) target = options.target.split('.', 1) stub = getattr(agent, target[0]) method = getattr(stub, target[1]) retval = method(*arguments, **keywords) print retval