Giter Club home page Giter Club logo

tango's Introduction

Welcome to Autolab

Tango Circle CI

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:

  1. There must be exactly one Makefile that runs the job.
  2. 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:

  • tango.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.

Using Tango

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.

  1. Follow the steps to set up Tango.
  2. Read the documentation for the REST API.
  3. Read the documentation for the VMMS API.
  4. Test whether Tango is set up properly and can process jobs.

Contributing to Tango

  1. Fork the Tango repository.
  2. Create a local clone of the forked repo.
  3. Make a branch for your feature and start committing changes.
  4. Create a pull request (PR).
  5. Address any comments by updating the PR and wait for it to be accepted.
  6. Once your PR is accepted, a reviewer will ask you to squash the commits on your branch into one well-worded commit.
  7. Squash your commits into one and push to your branch on your forked repo.
  8. 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.

License

Tango is released under the Apache License 2.0.

tango's People

Contributors

cg2v avatar daviddob avatar dlbucci avatar droh avatar eblanton avatar fghanei avatar icanb avatar mihirpandya avatar nayak16 avatar searay-330 avatar ymzong avatar yrkumar avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.