Version 2.0.0b1
Pre-release
Pre-release
[2.0.0b1]
Added
- New
merlin databasecommand to interact with new database functionality- When running locally, SQLite will be used as the database. Otherwise your current results backend will be used
merlin database info: prints some basic information about the databasemerlin database get: allows you to retrieve and print entries in the databasemerlin database delete: allows you to delete entries in the database
- Added
db_scripts/folder containing several new files all pertaining to database interactiondata_models: a module that houses dataclasses that define the format of the data that's stored in Merlin's database.db_commands: an interface for user commands ofmerlin databaseto be processedmerlin_db: houses theMerlinDatabaseclass, used as the main point of contact for interactions with the databaseentities/: A folder containing modules that define a structured interface for interacting with persisted data.entity_managers/: A folder containing classes responsible for managing high-level database operations across all entities.
- Added
backends/folder containing a new OOP way to interact with results backend databasesresults_backend: houses an abstract classResultsBackendthat defines what every supported backend implement in Merlinredis/: A folder containing theRedisBackendclass that defines specific interactions with the Redis databasesqlite/: A folder containing theSQLiteBackendclass that defines specific interactions with the SQLite databasebackend_factory: houses a factory classMerlinBackendFactorythat initializes an appropriateResultsBackendinstance
- Added
monitors/folder containing a refactored, OOP approach to handling themerlin monitorcommandcelery_monitor: houses theCeleryMonitorclass a concrete subclass ofTaskServerMonitorfor monitoring Celery task serversmonitor_factory: houses a factory classMonitorFactorythat initializes an appropriateTaskServerMonitorinstancemonitor: houses theMonitorclass, used as the top-level point of interaction for the monitor commandtask_server_monitor: houses theTaskServerMonitorABC class, which serves as a common interface for monitoring task servers
- New worker related classes:
MerlinWorker: base class for defining task server workersCeleryWorker: implementation ofMerlinWorkerspecifically for Celery workersWorkerFactory: to help determine which task server worker to useMerlinWorkerHandler: base class for managing launching, stopping, and querying multiple workersCeleryWorkerHandler: implementation ofMerlinWorkerHandlerspecifically for manager Celery workersWorkerHandlerFactory: to help determine which task server handler to use
- A new celery task called
mark_run_as_completethat is automatically added to the task queue associated with the final step in a workflow - Ability to filter database queries for the
get all-*anddelete all-*commands - New
MerlinBaseFactoryclass to help enable future plugins for backends, monitors, status renderers, etc. - Ability to turn off the auto-restart functionality of the monitor with
--no-restart - Tests for the monitor files
Changed
- Maestro version requirement is now at minimum 1.1.10 for status renderer changes
- The
BackendFactory,MonitorFactory, andStatusRendererFactoryclasses all now inherit fromMerlinBaseFactory - Launching workers is now handled through worker classes rather than functions in the
celeryadapter.pyfile