/lib/galaxy/model/migrate/versions/0041_workflow_invocation.py

https://bitbucket.org/cistrome/cistrome-harvard/ · Python · 53 lines · 39 code · 11 blank · 3 comment · 3 complexity · 895495b098b8e969568691db1aefe0f2 MD5 · raw file

  1. """
  2. Migration script to create tables for tracking workflow invocations.
  3. """
  4. from sqlalchemy import *
  5. from sqlalchemy.orm import *
  6. from migrate import *
  7. from migrate.changeset import *
  8. import logging
  9. logging.basicConfig( level=logging.DEBUG )
  10. log = logging.getLogger( __name__ )
  11. import datetime
  12. now = datetime.datetime.utcnow
  13. metadata = MetaData()
  14. WorkflowInvocation_table = Table( "workflow_invocation", metadata,
  15. Column( "id", Integer, primary_key=True ),
  16. Column( "create_time", DateTime, default=now ),
  17. Column( "update_time", DateTime, default=now, onupdate=now ),
  18. Column( "workflow_id", Integer, ForeignKey( "workflow.id" ), index=True, nullable=False )
  19. )
  20. WorkflowInvocationStep_table = Table( "workflow_invocation_step", metadata,
  21. Column( "id", Integer, primary_key=True ),
  22. Column( "create_time", DateTime, default=now ),
  23. Column( "update_time", DateTime, default=now, onupdate=now ),
  24. Column( "workflow_invocation_id", Integer, ForeignKey( "workflow_invocation.id" ), index=True, nullable=False ),
  25. Column( "workflow_step_id", Integer, ForeignKey( "workflow_step.id" ), index=True, nullable=False ),
  26. Column( "job_id", Integer, ForeignKey( "job.id" ), index=True, nullable=False )
  27. )
  28. tables = [ WorkflowInvocation_table, WorkflowInvocationStep_table ]
  29. def upgrade(migrate_engine):
  30. metadata.bind = migrate_engine
  31. print __doc__
  32. metadata.reflect()
  33. for table in tables:
  34. try:
  35. table.create()
  36. except:
  37. log.warn( "Failed to create table '%s', ignoring (might result in wrong schema)" % table.name )
  38. def downgrade(migrate_engine):
  39. metadata.bind = migrate_engine
  40. metadata.reflect()
  41. for table in tables:
  42. table.drop()