- Add example rabbitmq configuration and user files to
contrib/
(#245) - Switch python packaging backend to poetry.
- Update pydantic dependency to v2. This probably breaks compatibility with older versions, so major version is bumped.
- Upgrade to Slurm REST API v0.0.40. (#248)
zocalo.configure_rabbitmq
: Show explicit error when VHost not created. (#241).
- Add the slurm "prefer" field to
slurm.models.JobProperties
. (#244) - Switch zocalo to pyproject.toml, and update CI. (#243)
- Fix dependency declaration for pydantic to constrain maximum version.
zocalo.configure_rabbitmq
: non-zero exit code onHTTPError
- Expose
url
,version
,user_name
anduser_token
attributes onSlurmRestApi
instances - Load
user_token
from external file inSlurmRestApi
rather than in thezocalo.configuration
Slurm plugin to allow token changes to be picked up without re-loadingzocalo.configuration
- Add minimal wrapper for the Slurm REST API to allow job submission
- Add Slurm
zocalo.configuration
plugin
- Add Dockerfile and build-and-push-docker-image GitHub workflow
- Add
zocalo.pickup
command for re-submitting messages stored in thezocalo.go.fallback_location
while the message broker is unavailable
- Add dispatcher service
- Add support for Python 3.11
JSONLines
service: triggerprocess_messages
immediately when reaching 100 stored messages
- Add
JSONLines
service for appending messages to a file in jsonlines format
zocalo.configure_rabbitmq
cli: downgrade "No matching queue found" error to warning
zocalo.configure_rabbitmq
cli: additional debugging output in event of rareIndexError
zocalo.configure_rabbitmq
cli: enable configuration of vhosts
- Remove deprecated
zocalo.enable_graylog()
function - Use
LoggingAdapter
to appendrecipe_ID
to wrapper logs. This was inadvertantly broken for the logging plugin added in #176. Derived wrappers should now use self.log rather than instantiating a logger directly.
zocalo.wrapper
: Enable access tozocalo.configuration
object throughBaseWrapper.config
attributezocalo.configure_rabbitmq
cli: check response status codes to catch failed API callszocalo.configure_rabbitmq
cli: don't set x-single-active-consumer for streams
zocalo.configure_rabbitmq
cli: require passing user config via explicit--user-config
parameterzocalo.configure_rabbitmq
cli: optionally disable implicit dlq creation viadead-letter-queue-create: false
zocalo.configure_rabbitmq
cli: require explicit dead-letter-routing-key-pattern when requesting creation of a DLQ for a given queue.
zocalo.configure_rabbitmq
cli: advanced binding configuration
- Added a logging configuration plugin to comprehensively configure logging across applications.
zocalo.configure_rabbitmq
cli:- Support for explicitly declaring exchanges
- Allow queues to bind to more than one exchange
- Add
Mailer
service for sending email notifications. Subscribes to themailnotification
queue. SMTP settings are specified via thesmtp
plugin inzocalo.configuration
.
- Fix for getting user information from the RabbitMQ management API
- Major changes to the RabbitMQ configuration command line tool.
Users are now updated and deleted, and the tool now understands
zocalo environment parameters. Configuration files are now
mandatory, and the
--seed
parameter has been removed.
zocalo.dlq_purge
offers a--location
flag to override where files are being writtenzocalo.dlq_reinject
can again understandzocalo.dlq_purge
output passed on stdin- Reinjected messages now carry a
dlq-reinjected: True
header field
zocalo.queue_drain
now allows the automatic determination of destination queues for recipe messageszocalo.queue_drain
fixed for use in a RabbitMQ environmentzocalo.dlq_purge
fixed for use in a RabbitMQ environment- New functions in
zocalo.util
to easily annotate log messages with system context information
- Add support for queue/exchange bindings to
RabbitMQAPI
- Drop support for Python 3.6 and 3.7
- Add a RabbitMQ HTTP API in
zocalo.util.rabbitmq
- Add command line tools for handling dead-letter messages
zocalo.dlq_check
checks dead-letter queues for messageszocalo.dlq_purge
removes messages from specified DLQs and dumps them to a directory specified in the Zocalo configurationzocalo.dlq_reinject
takes a serialised message produced byzocalo.dlq_purge
and places it back on a queue- Use
argparse
for all command line tools and make use ofworkflows
transport argument injection. Minimumworkflows
version is now 2.14 - New
zocalo.util.rabbitmq.RabbitMQAPI()
providing a thin wrapper around the RabbitMQ HTTP API
- New
zocalo.shutdown
command to shutdown Zocalo services - New
zocalo.queue_drain
command to drain one queue into another in a controlled manner - New
zocalo.util.rabbitmq.http_api_request()
utility function to return aurllib.request.Request
object to query the RabbitMQ API using the credentials specified viazocalo.configuration
. zocalo.wrap
now emits tracebacks on hard crashes andSIGUSR2
signals
- Expand ~ in paths in configuration files
- Removed --live/--test command line arguments, use -e/--environment instead
- zocalo.go, zocalo.service, zocalo.wrap accept -t/--transport command line options, and the default can be set via the site configuration.
- Keep wrapper status threads alive through transport disconnection events
- Support for Zocalo configuration files
- Documentation improvements
- Ignore error when logserver hostname can't be looked up immediately
- Add a symbolic link handling library function
- Cache the logserver hostname by default
- Add a --dry-run option to zocalo.go
- Drop support for Python 3.5
- Update language constructs for Python 3.6+
- Add support for Python 3.9
- Remove stomp.py requirement - this is pulled in via workflows only
- Set live flag in service environment if service started with '--live'
- Start moving dlstbx scripts to zocalo package: * zocalo.go * zocalo.wrap
- Entry point 'dlstbx.wrappers' has been renamed 'zocalo.wrappers'
- Dropped Python 3.4 support
- Compatibility fixes for graypy >= 1.0
- Don't attempt to load non-existing file
- Fix packaging bug which meant files were missing from the release
- Add zocalo.service command to start services
- Add status notification thread logic
- Add schlockmeister service and base wrapper class
- Add function to enable logging to graylog
- First release on PyPI.