xnet / README.txt

What is xnet?

xnet is a prototype for a remote subprocess execution environment.
It requires the eventlet package among some other minor deps.

It consists of three tools that communicate via http and json-serialized

* ``xnet-server``: a flask-based server for registering and managing
  execution jobs aks "xjobs"

* ``xnet-slave``: a worker process that performs http requests to the
  server in order to retrieve xjobs and submit xresults.

* ``xnet``: a command line tool to submit, list and retrieve results of
  running execution jobs.

simple example

you need to perform something like ``python develop``. 

Then start in one window::


start in another window::
    xnet submit -- python --version

this will submit the "python --version" execution job.
There is no worker yet so no execution will happen.
The tool invocation finishes after submission to the server
is completed and informs you about the "xjobid".

Now you can start a worker::


which will retrieve "a" job (we only have one so far)
execute it and submit the out/err/retcode result to
the server.

In order to retrieve the result you can type::

    xnet result 0   # "0" is the xjobid

which should print output/error/retcode of the execution
that the slave performed.

streaming example

XXX not implemented

start in one window (or re-use the one from the simple example)::


now submit a job::

    xnet submit -- python  # interactive python interpreter

start a slave::


this will now execute the python interpreter.

If you now type::

    xnet attach 0 # the xjobid, might be "1" if your server kept running

and do some basic input/output with the (remote) subprocess.

to run the tests



which runs some unit and functional tests.