Tango Command Line Client
This is a guide to use the command-line client (clients/tango-cli.py) to test and collect other valuable information from Tango. Please setup Tango before moving forward. This guide assumes an instance of Tango is already up and running.
Running a Sample Job
The CLI supports two ways to run a sample job, individual steps or in a single all-in-one command. The first option is better for debugging each individual API call, whereas the second option is best for quickly running a job. Other Tango CLI commands are also discussed below.
The Tango directory contains various different jobs in the clients/ directory; clients/README.md discusses the function of each job.
Find out more information about the Tango REST API here.
Single Command
The --runJob command simply runs a job from a directory of files by uploading all the files in the directory. You can use this to submit an autograding job by running
$ python clients/tango-cli.py -P 3000 -k test -l assessment1 --runJob clients/job1/ --image autograding_image
The args are -P <port>, -k <key>, -l <unique_job_name> --runJob <job_files_path> --image <autograde_image>
Individual Steps
- 
Open a courselabon Tango. This will create a directory for tango to store the files for the job.$ python clients/tango-cli.py -P <port> -k <key> -l <courselab> --open
- 
Upload files necessary for the job. $ python clients/tango-cli.py -P <port> -k <key> -l <courselab> \ --upload --filename <clients/job1/hello.sh> $ python clients/tango-cli.py -P <port> -k <key> -l <courselab> \ --upload --filename <clients/job1/autograde-Makefile>
- 
Add the job to the queue. Note: localFileis the name of the file that was uploaded anddestFileis the name of the file that will be on the VM. One of thedestFileattributes must beMakefile. Furthermore,imagereferences the name of the VM image you want the job to be run on. For Docker it isautograding_image.$ python clients/tango-cli.py -P <port> -k <key> -l <courselab> \ --addJob --infiles \ '{"localFile" : "hello.sh", "destFile" : "hello.sh"}' \ '{"localFile" : "autograde-Makefile", "destFile" : "Makefile"}' \ --image <image> --outputFile <outputFileName> \ --jobname <jobname> --maxsize <maxOutputSize> --timeout <jobTimeout>
- 
Get the job output. $ python clients/tango-cli.py -P <port> -k <key> -l <courselab> \ --poll --outputFile <outputFileName>The output file will have the following header: Autograder [<date-time>]: Received job <jobname>:<jobid> Autograder [<date-time>]: Success: Autodriver returned normally Autograder [<date-time>]: Here is the output from the autograder:
Miscellaneous Commands
The CLI also implements a list of commands to invoke the Tango REST API, including --info, --prealloc, and --jobs. For a full list of commands, run:
python clients/tango-cli.py --help
The general form for each command is as follows:
python clients/tango-cli.py -P <port> -k <key> <command>