Warning

This document is for an in-development version of Galaxy. You can alternatively view this page in the latest release if it exists or view the top of the latest release's documentation.

Source code for galaxy.model.migrate.versions.0104_update_genome_downloader_job_parameters

"""
Migration script to update the deferred job parameters for liftover transfer jobs.
"""
from __future__ import print_function

import datetime
import logging

from sqlalchemy import (
    Column,
    DateTime,
    Integer,
    MetaData,
    String,
    Table
)
from sqlalchemy.orm import (
    mapper,
    scoped_session,
    sessionmaker
)

from galaxy.model.custom_types import JSONType
from galaxy.util.bunch import Bunch

log = logging.getLogger(__name__)
now = datetime.datetime.utcnow
metadata = MetaData()
context = scoped_session(sessionmaker(autoflush=False, autocommit=True))


[docs]class DeferredJob(object): states = Bunch(NEW='new', WAITING='waiting', QUEUED='queued', RUNNING='running', OK='ok', ERROR='error') def __init__(self, state=None, plugin=None, params=None): self.state = state self.plugin = plugin self.params = params
DeferredJob.table = Table("deferred_job", metadata, Column("id", Integer, primary_key=True), Column("create_time", DateTime, default=now), Column("update_time", DateTime, default=now, onupdate=now), Column("state", String(64), index=True), Column("plugin", String(128), index=True), Column("params", JSONType)) mapper(DeferredJob, DeferredJob.table, properties={})
[docs]def upgrade(migrate_engine): print(__doc__) metadata.bind = migrate_engine liftoverjobs = dict() jobs = context.query(DeferredJob).filter_by(plugin='LiftOverTransferPlugin').all() for job in jobs: if job.params['parentjob'] not in liftoverjobs: liftoverjobs[job.params['parentjob']] = [] liftoverjobs[job.params['parentjob']].append(job.id) for parent in liftoverjobs: lifts = liftoverjobs[parent] deferred = context.query(DeferredJob).filter_by(id=parent).first() deferred.params['liftover'] = lifts context.flush()
[docs]def downgrade(migrate_engine): metadata.bind = migrate_engine jobs = context.query(DeferredJob).filter_by(plugin='GenomeTransferPlugin').all() for job in jobs: if len(job.params['liftover']) == 0: continue transfers = [] for lift in job.params['liftover']: liftoverjob = context.query(DeferredJob).filter_by(id=lift).first() transfers.append(liftoverjob.params['transfer_job_id']) job.params['liftover'] = transfers context.flush()