-
Notifications
You must be signed in to change notification settings - Fork 59
Home
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:
- There must be exactly one
Makefile
that runs the job. - The output for the job should be printed to stdout.
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:
-
tangod.py
- Main tango server -
jobQueue.py
- Manages the job queue -
jobManager.py
- Assigns jobs to free VMs -
worker.py
- Shepherds a job through its execution -
preallocator.py
- Manages pools of VMs -
vmms/
- VMMS library implementations -
restful-tango/
- HTTP server layer on the main Tango
Tango 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 while going through the steps below, you can reach the core developers at [email protected]
and we would be happy to help.
- Follow the steps to set up Tango.
- Read the documentation for the REST API.
- Read the documentation for the VMMS API - coming soon.
- Test whether Tango is set up properly and can process jobs.
- Fork the Tango repository.
- Create a local clone of the forked repo.
- Make a branch for your feature and start committing changes.
- Create a pull request (PR).
- Address any comments by updating the PR and wait for it to be accepted.
- Once your PR is accepted, a reviewer will ask you to squash the commits on your branch into one well-worded commit.
- Squash your commits into one and push to your branch on your forked repo.
- A reviewer will fetch from your repo, rebase your commit, and push to Tango.
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.