James Taylor 399d29cec6 First pass at re-factoring job management:
- Creating the command line has been broken up into several methods
  associated with 'Tool'

- Creation of the command line is now done by DefaultToolAction and stored in
  the database (thus if the tool config changes between queueing and running
  of a job things will not break, and if the JobQueue was running on a
  different machine from the web frontend it would not need knowledge of the
  tool config)

- Broke the old JobQueue up quite a bit. New classes are:

  jobs.JobQueue: jobs to be run still get added here. It has a single monitor
  thread that iterates the jobs waiting for one to become runnable, then it
  tries to dispatch the job

  jobs.DefaultJobDispatcher: responsible for deciding how to run a job once
  it is ready to run. Just a trivial implementation for now, as before is PBS
  is enabled and the tool is not a 'data_source' tool, try to run it using
  PBS, otherwise run locally

  jobs.runners.local.LocalJobRunner: the old pool of worker threads that runs
  jobs processes locally

  jobs.runners.local.PBSJobRunner: PBS job runner. Only uses a single thread
  to watch all queued/running jobs. This is TOTALLY UNTESTED. I haven't even
  imported it. I just tried to break up Nate's code to make a state machine
  that could be managed with one thread. Need to know more about the PBS
  setup to test.

Next steps:

- Clean up locally running jobs when the queue is shut down (kill the jobs
  and mark the state change appropriately)

- For all jobs it should be possible to requeue and jobs in the 'waiting'
  state on startup

- For the PBS queue, it should be possible to recover the state of any jobs
  that were queued or running on startup. However we might need more data
  in the database for this
2006-12-14 00:24:38 +00:00

INTRO
=====

This program requires python 2.4 or later. To check your python version type:

python -V.

To start a server you need to do run the server as:

python universe.py

This will start a server on localhost port 8080. 
In your browser go to: http://localhost:8080 and you should see the 
Galaxy environment with some default tools. To customize the tools that 
are loaded see tool.conf.sample To customize the way your server is ran edit 
universe.conf 

*Note* certain tools may require certain libraries to be present.
We have included a binary copy of galaxyOps for linux systems. 
(See run.sh for more details)


RUNTIME ENVIRONMENT
===================

The default server home will be the directory where the program starts.
You can use the UNIVERSE_HOME environment variable to point to a different
server home. The path that the UNIVERSE_HOME variable points to must be 
a directory with the following subdirectories:

database
database/files
database/import
tools

OPTIMIZED LIBRARIES
===================

To allow python to load optimized libraries the path to these must be listed 
in the python path. See the previous section or run.sh for an example. Loading 
the optimized Cheetah templating libraries can lead to significant 
performance gains. 

At startup you the log message: 

Optimized  Namemapper: True|False

will tell you whether the optimized Cheetah template was loaded (or not).

The log message:

database type: dbhash|....

will tell you what kind of underlying database is the server using. Dbhash 
stands for the BerkleyDB. The server should work fine with other libraries 
as well but BerkleyDB is provides the most reliable and efficient storage.

TOOL DEVELOPMENT
================

See the wiki pages for more details:

http://g2.bx.psu.edu


CREATING A RELEASE
==================

type:

python setup.py sdist 
Languages
Python 66.6%
Vue 13%
TypeScript 10.8%
JavaScript 3.8%
Jupyter Notebook 2.8%
Other 2.8%