Source code for nova.galaxy.data_store

"""DataStore is used to configure Galaxy to group outputs of a tool together."""

from typing import TYPE_CHECKING, List

if TYPE_CHECKING:
    from .connection import ConnectionHelper  # Only imports for type checking

from .tool import Tool


[docs] class Datastore: """Groups tool outputs together. The constructor is not intended for external use. Use nova.galaxy.Connection.create_data_store() instead. """ def __init__(self, name: str, nova_connection: "ConnectionHelper", history_id: str) -> None: self.name = name self.nova_connection = nova_connection self.history_id = history_id self.persist_store = True
[docs] def persist(self) -> None: """Persist this store even after the nova connection is closed. Should be used carefully as tools will continue to run after even if this object is garbage collected. Use recover_tools() to with the same data store name to retrieve all running tools again. """ self.persist_store = True
[docs] def mark_for_cleanup(self) -> None: """Clean up and delete all content related to this Data Store after the associated connection is closed.""" self.persist_store = False
def cleanup(self) -> None: history = self.nova_connection.galaxy_instance.histories.get_histories(name=self.name)[0]["id"] self.nova_connection.galaxy_instance.histories.delete_history(history_id=history, purge=True)
[docs] def recover_tools(self, filter_running: bool = True) -> List[Tool]: """Recovers all running tools in this data_store. Mainly used to recover all the running tools inside of this data store or any past persisted data stores that used the same name. Can also be used to simply get a list of all running tools in a store as well. Parameters ---------- filter_running: bool If this should only recover tools that are running (true). Returns ------- List of tools from this data store. """ if filter_running: states = ["running", "queued"] else: states = ["running", "queued", "ok", "error"] jobs = self.nova_connection.galaxy_instance.jobs.get_jobs( state=states, # type: ignore history_id=self.history_id, ) tools = [] for job in jobs: job_id = job["id"] tool_id = job["tool_id"] t = Tool(tool_id) t.assign_id(job_id, self) tools.append(t) return tools