def run(user, request, name): program = UserProgram.find(user, name) result = {} if not program: raise ProgramNotFound("Program not found!") if program.is_suspended(): program.resume() state = program.state() output = program.output() result = mipsrunner.run_with_state(state, output) else: logging.info("executing program") prog_text = mipsrunner.format_user_program(str(program.code)) result = mipsrunner.run_program(prog_text, []) if not result.get('exception'): if result['suspended']: program.suspend() program.set_state(result['state']) program.set_output(result['output']) UserProgram.store(program) registers = program.registers() output = helpers.format_output(result['output']) json_data = render_to_string("mips/details.json", {'registers' : registers, 'output' : output}) return HttpResponse(json_data, mimetype="application/javascript") else: response = "{'exception': '%s', 'msg_list': %s}" % ( result['exception'], result['msg_list']) return HttpResponse(response, mimetype="application/javascript")
def main(args=sys.argv[1:], env=Environment()): """ Entry point for the command-line client. """ # Parse Top-Level Arguments exit_status = 0 resolver = CommandParser(env) try: command, command_args = resolver.parse(args) # Set logging level debug_level = command_args.get('--debug') if debug_level: logger = logging.getLogger() h = logging.StreamHandler() logger.addHandler(h) logger.setLevel(DEBUG_LOGGING_MAP.get(debug_level, logging.DEBUG)) if command_args.get('--timings'): client = TimedClient(config_file=command_args.get('--config')) else: client = Client(config_file=command_args.get('--config')) # Do the thing runnable = command(client=client, env=env) data = runnable.execute(command_args) if data: out_format = command_args.get('--format', 'table') if out_format not in VALID_FORMATS: raise ArgumentError('Invalid format "%s"' % out_format) s = format_output(data, fmt=out_format) if s: env.out(s) if command_args.get('--timings'): out_format = command_args.get('--format', 'table') api_calls = client.get_last_calls() t = KeyValueTable(['call', 'time']) for call, _, duration in api_calls: t.add_row([call, duration]) env.err(format_output(t, fmt=out_format)) except InvalidCommand as e: env.err(resolver.get_module_help(e.module_name)) if e.command_name: env.err('') env.err(str(e)) exit_status = 1 except InvalidModule as e: env.err(resolver.get_main_help()) if e.module_name: env.err('') env.err(str(e)) exit_status = 1 except DocoptExit as e: env.err(e.usage) env.err( '\nUnknown argument(s), use -h or --help for available options') exit_status = 127 except KeyboardInterrupt: env.out('') exit_status = 1 except CLIAbort as e: env.err(str(e.message)) exit_status = e.code except SystemExit as e: exit_status = e.code except SoftLayerAPIError as e: if 'invalid api token' in e.faultString.lower(): env.out("Authentication Failed: To update your credentials, use " "'sl config setup'") else: env.err(str(e)) exit_status = 1 except SoftLayerError as e: env.err(str(e)) exit_status = 1 except Exception as e: import traceback env.err(traceback.format_exc()) exit_status = 1 sys.exit(exit_status)