Tango is a standalone, RESTful Web service that provides autograding services for Autolab. This is the main repository that includes the application layer of the project.
Tango allows submission of jobs that are to be run in pre-configured VMs. Tango also supports different Virtual Machine Management (VMM) systems by providing a high level VMM API. Users can implement the high level VMM API for a hypervisor or VMM of your choice such as KVM, Xen, Docker or EC2.
Tango was started as part of the Autolab project at Carnegie Mellon University and has been extensively used for autograding programming assignments in CMU courses.
The easiest way to get started with Tango is by installing it on a vanilla EC2 Ubuntu instance. The detailed instructions can be found here.
Tango has a REST API which can be used for job submission and other administrative tasks. The documentation of the API can be found here
In order to run Tango locally, the VMM API needs to be implemented such that jobs run locally. This is currently work in progress.
A brief overview of the Tango respository:
- tangod.py - Main tango program
- jobQueue.py - Manages the job queue
- preallocator.py - Manages a pool of preallocated VMs
- worker.py - Shepherds a job through its execution
- vmms - VMM system library implementations
- restful-tango - HTTP server layer on the main tango
To test whether Tango is running and accepting jobs, a tango command-line client is included in clients/
along with sample jobs.
Contributing to Tango is greatly encouraged! Future issues and features will be posted on Github Issues. Also look at Contributing to Autolab Guide for guidelines on how to proceed. Join us!
Autolab is released under the Apache License 2.0.
Please feel free to use Tango at your school/organization. If you run into any problems, you can reach the core developers at [email protected]
and we would be happy to help. On a case by case basis, we also provide servers for free. (Especially if you are an NGO or small high-school classroom)