Metadata-Version: 2.0
Name: tej
Version: 0.2
Summary: Trivial Extensible Job-submission system
Home-page: https://github.com/remram44/tej
Author: Remi Rampin
Author-email: remirampin@gmail.com
License: BSD
Keywords: tej,job,submission,queue,batch,ssh,server
Platform: UNKNOWN
Classifier: Development Status :: 4 - Beta
Classifier: Environment :: Console
Classifier: Intended Audience :: Information Technology
Classifier: Intended Audience :: Science/Research
Classifier: License :: OSI Approved :: BSD License
Classifier: Topic :: Internet
Classifier: Topic :: Scientific/Engineering
Classifier: Topic :: System :: Distributed Computing
Classifier: Topic :: System :: Shells
Classifier: Topic :: Utilities
Requires-Dist: paramiko
Requires-Dist: rpaths
Requires-Dist: scp

Trivial Extensible Job-submission system
========================================

Clusters typically come with job-submission and queueing systems. These systems
handle a queue of jobs, which might spawn multiple nodes, have a priorities,
dependencies, expected runtimes, deadlines...

Tej doesn't aim at doing any of that. It just allows you to submit a job to a
single server, that will run it immediately, and allow you to check its status
and get its results later on.

Of course, tej is extensible, which allows you to add some queueing and
scheduling abilities should you want to.

The goal of tej is to be usable without having to configure the server
beforehand; it will setup the structure it needs on the server on the first run
if necessary (in its simplest form, a ~/.tej directory on the server, that will
contain the jobs).

Usage
-----

Sets up tej on the server (optional, else it gets setup on the first run, with
default options)::

    $ tej setup user@server.hostna.me \
        --queue /scratch/tejqueue \
        --make-link ~/.tej \
        --plugin default

This takes a destination to SSH into, the location of tej's directory (there
can be several on a server; by default, ``~/.tej`` is used), ``--make-link``
creates a link so that future invocations will be redirected to
``/scract/tejqueue``, and ``--plugin`` selects which plugins to setup on the
server (since tej is extensible, other scheduling/running subsystems might be
added in the future).

Submit a simple job::

    $ tej submit user@server.hostna.me myjobdir
    Job submitted as:
    myjobdir_user_123456

Here `myjobdir` is assumed to have the default layout, and no metadata is
added. The directory will be uploaded in its entirety, and ``start.sh`` will be
run.

Submit a job explicitely::

    $ tej submit user@server.hostna.me --queue=/scratch/tejqueue \
        --id example_job \
        --script bin/jobinit \
        myjobdir
    Job submitted as:
    example_job

Get the status of a job::

    $ tej status user@server.hostna.me --id myjobdir_user_123456
    Job is still running (1:28:57)
    $ tej status user@server.hostna.me --queue=/scratch/tejqueue \
        --id example_job
    Job is finished (1:30:01)
    $ tej status user@server.hostna.me --id myjobdir_user_567890
    No job 'myjobdir_user_567890'

Download the output from a finished job::

    $ tej download user@server.hostna.me --id myjobdir_user_123456 \
        output/log.txt
    $ tej download user@server.hostna.me --id myjobdir_user_123456 \
        results.csv view.png input.bin

Note that there is no need for the file to be an *output*. The files are
downloaded to the current directory.

Kill a running job::

    $ tej kill user@server.hostna.me --id example_job
    Job 'example_job' has already completed
    $ tej kill user@server.hostna.me --id myjobdir_user_123456
    Job 'myjobdir_user_123456' killed
    $ tej kill user@server.hostna.me --id myjobdir_user_567890
    No job 'myjobdir_user_567890'

Cleanup a finished job::

    $ tej delete user@server.hostna.me --id example_job
    Deleted job 'example_job'

Note that this is still alpha software. The command-line interface, in
particular, is likely to evolve. Feel free to give me your opinion on it or
direct me your feature requests/patches on Github.

Name
----

"tej" ``/tɛʒ/`` is French slang for throwing/casting. It's intended here to be used as a
verb ("let me tej it to the server...", "Is it done yet? I tej'd that
yesterday!"). Probably not the best name, but it wasn't taken, and it's short.


