
Tango is a standalone RESTful Web service that runs and manages jobs. A job is a set of files that must satisfy the following constraints:
Makefile that runs the job.Example jobs are provided for the user to peruse in clients/. Tango has a REST API which is used for job submission.
Upon receiving a job, Tango will copy all of the job's input files into a VM, run make, and copy the resulting output back to the host machine. Tango jobs are run in pre-configured VMs. Support for various Virtual Machine Management Systems (VMMSs) like KVM, Docker, or Amazon EC2 can be added by implementing a high level VMMS API that Tango provides.
A brief overview of the Tango respository:
tango.py - Main tango serverjobQueue.py - Manages the job queuejobManager.py - Assigns jobs to free VMsworker.py - Shepherds a job through its executionpreallocator.py - Manages pools of VMsvmms/ - VMMS library implementationsrestful-tango/ - HTTP server layer on the main TangoTango was developed as a distributed grading system for Autolab at Carnegie Mellon University and has been extensively used for autograding programming assignments in CMU courses.
Please feel free to use Tango at your school/organization. If you run into any problems with the steps below, you can reach the core developers at [email protected] and we would be happy to help.
Please see the git linear development guide for a more in-depth explanation of the version control model that we use.
Tango is released under the Apache License 2.0.
Content type
Image
Digest
Size
283.5 MB
Last updated
over 9 years ago
docker pull itsecur/tango