Package: pulsar-app
This project is a Python server application that allows aGalaxyserver to run jobs on remote systems (including
Windows) without requiring a shared mounted file systems. Unlike traditional
Galaxy job runners - input files, scripts, and config files may be transferred
to the remote system, the job is executed, and the results are transferred back
to the Galaxy server - eliminating the need for a shared file system.Full documentation for the project can be found onRead The Docs.Configuring GalaxyGalaxy job runners are configured in Galaxy’sjob_conf.xmlfile. Some small
examples of how to configure this can be foundhere, but be sure
to check outjob_conf.xml.sample_advancedin your Galaxy code base or onGithubfor complete information.QuickstartFull details on different ways to install Pulsar can be found in theinstall
sectionof the
documentaiton, but if your machine has the proper Python dependencies
available it can be quickly download and a test job run with:$ mkdir pulsar
$ cd pulsar
$ python3 -m venv venv
$ . venv/bin/activate    # venv\Scripts\activate.bat on Windows
$ pip install 'pulsar-app[web]'
$ pulsar-config
$ pulsar --daemon        # just `pulsar` on Windows
$ pulsar-check           # runs a test jobPlease note that as of the 0.14.0 release, Pulsar no longer supports any version
of Python 2. The minimum supported Python version is 3.5.Theconfiguration documentationhas many details on securing your Pulsar server and enabling advanced features
such as cluster integration and message queue communication.Development and TestingThe recommended approach to setting up a development environment for Pulsar on
Linux or macOS is rougly as follows:$ git clone https://github.com/galaxyproject/pulsar
$ cd pulsar
$ python3 -m venv .venv
$ . .venv/bin/activate    # .venv\Scripts\activate on Windows
$ pip install -e '.[web]'
$ pip install -r dev-requirements.txtThe-eflag topipinstalls Pulsar in “editable” mode, meaning that
changes you make to the source code will be reflected when running the pulsar
commands installed in the virtual environment.This project is distributed with unit and integration tests (many of which will
not run under Windows), the following command will install the needed python
components to run these tests. The following command will then run these tests:$ make testsThe following command will then produce a coverage report corresponding to this
test and place it in thecoverage_html_reportsubdirectory of this
project.:$ coverage htmlCheck out theContributingdocumentation
for many more details on developing and contributing to Pulsar.Please note that this project is released with aContributor Code of Conduct. By participating
in this project you agree to abide by its terms.SupportThis documentation is an incomplete work in progress. There are more ways to
configure and use Pulsar than are documented, and a growing number of Pulsar
experts who would be more than happy to answer your questions and help with any
problems you may run in to while setting up a Pulsar deployment. Please do not
hesitate to reach out on theGalaxy Admins Gitter ChannelHistory0.15.6 (2024-01-15)Allow tus uploads to Galaxy.Pull Request 3510.15.5 (2023-09-15)Add catchall OSError to recoverable exceptions (thanks to@mvdbeek).Pull Request 3380.15.4 (2023-08-29)Add .readthedocs.yaml (thanks to@natefoo).Pull Request 332Add explicit TimeoutError catching (thanks to@mvdbeek).Pull Request 337Update galaxy-job-metrics requirement (thanks to@cat-bro).Pull Request 3340.15.3 (2023-07-20)Fix Pulsar consumer state afterConnectionResetError.Pull Request 331User auth plugins (thanks to@SergeyYakubov).Pull Request 3210.15.2 (2023-05-02)Fix Pulsar and Pulsar client reconnection to AMQP server.Pull Request 324Reduce verbosity of timeout exception catching.Pull Request 3250.15.1 (2023-04-13)No changes, working around pypi isssue.0.15.0 (2023-04-13)Updated Galaxy+Pulsar container.Pull Request 306Rework container execution - generalize Kubernetes execution to allow it to work without a
message queue and to allow TES execution based on pydantic-tes (https://github.com/jmchilton/pydantic-tes).Pull Request 302Add documentation and diagrams for container execution scenarios.Pull Request 302Rework integration tests to use pytest more aggressively.Fixes to CI to run more tests that weren’t being executed because Tox was not sending
environment variables through to pytest.Add optionamqp_key_prefixto direct task queue naming while retaining simple
default manager names and such in container scheduling deployments.Pull Request 315Various typing and CI fixes.Pull Request 312,Pull Request 319Fixes for extra_file handling.Pull Request 318Separate tool_stdio and job_stdio handling.Pull Request 318Re-import MEMORY_STATEMENT.sh from Galaxy.Pull Request 297Add support for logging to sentry.Pull Request 3220.14.16 (2022-10-04)Fix small regression related to building URLs for client action mapping.0.14.15 (2022-10-03)Fix small regressions bugs in 0.14.14 - updating runner util code was bigger swap over
than it seemed.0.14.14 (2022-10-30)Bring in updated Galaxy runner util code.Pull Request 303Fix recovering “lost” jobs where the job directory does not exist at
startup/recovery time (thanks to@natefoo).Pull Request 301Use urlencode to encode path (thanks to@mvdbeek).Pull Request 299Support the k8s_job_ttl_secs_after_finished option as in the Galaxy
Kubernetes runner (thanks to@natefoo).Pull Request 2870.14.13 (2021-12-06)Don’t pass all environment variables to jobs launched byManager(thanks
to@nsoranzo).Pull Request 295Drop legacy job conf for Galaxy framework tests, test againstmetadata_strategy: extended(thanks to@mvdbeek).Pull Request 2940.14.12 (2021-11-10)Fixes to bring HOME and temp directory handling closer to Galaxy native runners.Enable globbed from_work_dir outputs for remote metadata.0.14.11 (2021-07-19)Fix and test for returncode handling in certain cases.Pull Request 274Modernize tox.Pull Request 2710.14.10 (2021-07-17)Don’t error out if annotated galaxy.json is absent.Pull Request 2700.14.9 (2021-07-16)Implement dynamic file sources abstraction for parsing files to transfer
fromgalaxy.jsonfiles.Pull Request 269Use tool classes to only test remote Galaxy tools.Pull Request 266Run Galaxy framework tests against dev and master branches of Galaxy (thanks
to@mvdbeek).Pull Request 2640.14.8 (2021-07-14)Fix Galaxy composite input references.Pull Request 262Run galaxy’s tool framework tests against this repo’s pulsar (thanks to@mvdbeek).Pull Request 2590.14.7 (2021-07-13)Accept description of tool files to transfer from Galaxy.Pull Request 261Support globs in from_work_dir outputs (thanks to@natefoo).Pull Request 257Fix loading the Galaxy dependency resolvers config, plus additional config
directory fixes (thanks to@natefoo).Pull Request 2560.14.6 (2021-05-24)Fix for newer Galaxy tool profiles having isolated home directories.0.14.5 (2021-04-15)Potential fix for setting file actions via job destination parameters.0.14.4 (2021-04-14)Re-attempt release process - published wrong branch with 0.14.3.0.14.3 (2021-04-13)Allow transferring fewer files from Pulsar when using extended metadata with
Galaxy.0.14.2 (2021-02-15)Fix the use of requests, limits, and walltime with coexecution pods.Pull Request 2460.14.1 (2021-02-02)Fix the use of named managers with coexecution pods.Pull Request 2420.14.0 (2020-09-17)fix the PyYAML “load() deprecation” warning (thanks to@gmauro).Pull
Request 232Set the DRMAA workingDirectory to the job’s working directoryPull Request 230Fix a unicode issue and polish a bit of variables (thanks to@gmauro).Pull Request 229Respond to MQ messages requesting status updates.Pull Request 228Fix REST connections broken with Py3 using standard transportIssue 227Pull Request 231Drop Python 2.7 support in standard transport, drop Python 2.7 tests and fix
Python 3.7 wheel install test, general test debugging enhancements.Pull Request 231drop python 2.6 and add 3.7 and update the testing infrastructure to a more
recent Ubuntu setup (thanks to@bgruening).Pull Request 226Use is_alive in favour of isAlive for Python 3.9 compatibility (thanks to@tirkarthi).Issue 224Pull Request 225Request and register ports for Galaxy ITs when using Kubernetes.Pull Request 223Implement killing k8s jobs.Pull Request 221Respond to MQ messages requesting status updates.Pull Request 228Drop python 2.6 and add 3.7 and update the testing infrastructure to a more
recent Ubuntu setup (thanks to@bgruening).Pull Request 226Add a more descriptive message in case of error parsing an external id
(thanks to@gmauro).Pull Request 213Use requests (thanks to@mvdbeek).Pull Request 216Use is_alive in favour of isAlive for Python 3.9 compatibility (thanks to@tirkarthi).Pull Request 225Debug connection string for AMQP.Pull Request 217Various small Kubernetes fixes and enhancements.Pull Request 218,Pull Request 219Improvements and fixes to container handling.Pull Request 202Fix a typo in exception logging thanks to @erasche.Pull Request 203Cleanup config file handling a bit by removing branch for very
old Pulsar servers likely no longer supported.Pull Request 2010.13.1 (2020-09-16)Pinned all listed requirements. This is the final version of Pulsar to support Python 2.0.13.0 (2019-06-25)Various improvements and simplifications to Kubernetes job execution.0.12.1 (2019-06-03)Retry botched release that didn’t include all relevant commits.0.12.0 (2019-06-03)Revise Python Galaxy dependencies to use newer style Galaxy decomposition.
galaxy-lib can no longer be installed in Pulsar’s environment, so you will
likely need to rebuild your Pulsar virtualenv for this release.Pull Request 187Add aDockerfilefor Pulsar with CVMFS (thanks to@nuwangand@afgane).Pull Request 166Various small improvements to Kubernetes pod execution environment.Pull Request 190Improve readme linting.Pull Request 186Update example docs for Condor (thanks to@bgruening).Pull Request 1890.11.0 (2019-05-16)Implement staging Galaxy metadata input files in the client.39de377Fix ‘amqp_ack_republish_time’ in sample (thanks to@dannon).Pull Request 185Updated amqp_url in job_conf_sample_mq_rsync.xml (thanks to@AndreasSko).Pull Request 184Use wildcard char for pulsar version (thanks to@VJalili).Pull Request 181Refactor toward more structured inputs.f477bc4Refactor toward passing objectstore identifying information around.Pull Request 180Rework imports for new Galaxy library structure.da086c9Revert empty input testing, it really probably should cause a failure
to transfer a non-existent file.8bd5511Better client mapper documentation.b6278b40.10.0 (2019-05-06)Implement support for Kubernetes two container pod jobs - staging and
tool execution as separate containers in the same job’s pod.Pull Request 176,Pull Request 1780.9.1 (2019-05-01)Fix duplicate inputs being a problem when staging Galaxy files.Pull Request 175Fix deprecatedassertEquals()(thanks to @nsoranzo).Pull Request 173Fix a method missing problem.Pull Request 174Sync “recent” galaxy runner util changes.Pull Request 1770.9.0 (2019-04-12)Add configuration parameter to limit stream size read from disk.Pull
Request 157Pass full job status for failed and lost jobs.Pull Request 159Improve message handling if problems occur during job setup/staging.Pull
Request 160Rework preprocessing job state to improve restartability and reduce job loss.This change should be applied while no jobs are running.Pull Request 164Add support for overriding config through environment variables (thanks to
@nuwang).Pull Request 165Minor docs updates (thanks to @afgane).Pull Request 170Python 3 fixes in Pulsar client (thanks to@mvdbeek).Pull Request 1720.8.3 (2018-02-08)Create universal wheels to enable Python 3 support when installing from PyPI
(thanks to @nsoranzo).Pull Request 1560.8.1 (2018-02-08)Update link for logo image.Pull Request 145Minor error and log message typos (thanks to @blankenberg).Pull Request 146,Pull Request 153Fixes/improvements for catching quoted tool files.Pull Request 148Fix config sample parsing so run.sh works out of the box.Pull Request 1490.8.0 (2017-09-21)Support new features in Galaxy job running/scripting so that Pulsar respects$GALAXY_VIRTUAL_ENVand$PRESERVE_GALAXY_ENVIRONMENT. Fix remote
metadata in cases where the tool environment changes thepythonon$PATH.Pull Request 137Precreate Galaxy tool outputs on the remote before executing (fixes a bug
related to missing output files on stage out).Pull Request 141Support the remote_transfer file action without setting thejobs_directorydestination paramPull Request 136Fix invalid character in job managers documentation (thanks to @mapa17).Pull Request 130Fixconda_auto_*option resolution and include a sampledependency_resolvers_conf.xml(thanks to @mapa17).Pull Request 132Fix tox/Travis tests.Pull Request 138,Pull Request 139,Pull Request 140Fix a bug with AMQP acknowledgement.Pull Request 1430.7.4 (2017-02-07)Fix Conda resolution and add a test case.11ce744Style fixes for updated flake8 libraries.93ab8a1,3573341Remove unused script.929bffaFixup README.629fdea0.7.3 (2016-10-31)Fix  “AttributeError” when submitting a job as a real user.Pull Request 124,Issue 1230.7.2 (2016-08-31)Fix bug causing loops on in response to preprocessing error conditions.0.7.1 (2016-08-29)Do a release to circumvent a tool version logic error in Galaxy (
released Galaxy versions think 0.7.0 < 0.7.0.dev3).0.7.0 (2016-08-26)Update Makefile to allow release pulsar as an application and a library
for Galaxy at the same time.Small update to test scripts for TravisCI changes.Improvements for embedded Galaxy runner. (TODO: fill this out)Remove support for Python 2.6.60bf962Update docs to describe project goverance and reuse Galaxy’s
Code of Conduct.7e23d43,dc47140Updated cluster slots detection for SLURM from Galaxy.cadfc5aVarious changes to allow usage within Galaxy as a library.ce9d4f9Various changes to allow embedded Pulsar managers within Galaxy.ce9d4f9,d262323,8f7c04aIntroduce a separate working and metadata directory as required for
Galaxy 16.04 that requires this separation.6f4328eImprove logging and comments.38953f3,a985107,ad33cb9Add Tox target for Python 2.7 unit testing.d7c524eAddMakefilecommand for setup.py develop.fd82d000.6.1 (2015-12-23)Tweak release process that left 0.6.0 with an incorrect PyPI description page.0.6.0 (2015-12-23)Pulsar now depends on the newgalaxy-libPython package instead of
manually synchronizing Python files across Pulsar and Galaxy.Numerous build and testing improvements.Fixed a documentation bug in the code (thanks to @erasche).e8814aeRemove galaxy.eggs stuff from Pulsar client (thanks to @natefoo).00197f2Add new logo to README (thanks to @martenson).abbba40Implement an optional awknowledgement system on top of the message queue
system (thanks to @natefoo).Pull Request 82431088cDocumentation fixes thanks to @remimarenco.Pull Request 78,Pull Request 80Fix project script bug introduced this cycle (thanks to @nsoranzo).140a069Fix config.py on Windows (thanks to @ssorgatem).Pull Request 84Add a job manager for XSEDE jobs (thanks to @natefoo).1017bc5Fix pip dependency installation (thanks to @afgane)Pull Request 730.5.0 (2015-05-08)Allow cURL downloader to resume transfers during staging in (thanks to
@natefoo).0c61bd9Fix to cURL downloaders status code handling (thanks to @natefoo).86f95ceFix non-wheel installs from PyPI.Issue 72Fix mesos imports for newer versions of mesos (thanks to @kellrott).fe3e919More, better logging.2b3942d,fa2b6dc0.4.0 (2015-04-20)Python 3 support.Pull Request 62Fix bug encountered when runningpulsar-mainandpulsar-configcommands as scripts.9d43ae0Addpulsar-runscript for issues commands against a Pulsar server (experimental).3cc7f740.3.0 (2015-04-12)Changed the name of project to Pulsar, moved to Github.New RESTful web services interface.SCP and Rsync file staging options added by E. Rasche.Pull
RequestAllow YAML based configuration.Support for more traditionalpip/setup.py-style
installs.Dozens of smaller bugfixes and documentation updates.0.2.0Last version named the LWR - found onBitBucket.Still supported in Galaxy as of 15.03 the release.Introduced support for submitting to various queueing systems,
operation as a Mesos framework, Docker support, and
various other advanced deployment options.Message queue support.Framework for configurable file actions introduced.0.1.0Simple support for running jobs managed by the Python LWR
web process.https://bitbucket.org/jmchilton/lwr/branch/0.10.0.1See the originalannouncementandinitial commit.