Warning

This document is for an old release 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 tool_shed.webapp.model.migrate.versions.0018_add_repository_metadata_flag_columns

"""
Migration script to alter the repository_metadata table by dropping the tool_test_errors column and adding columns
tool_test_results, missing_test_components.
"""

import logging
import sys

from sqlalchemy import Boolean, Column, MetaData, Table
from sqlalchemy.exc import NoSuchTableError

# Need our custom types, but don't import anything else from model
from galaxy.model.custom_types import JSONType

log = logging.getLogger(__name__)
log.setLevel(logging.DEBUG)
handler = logging.StreamHandler(sys.stdout)
format = "%(name)s %(levelname)s %(asctime)s %(message)s"
formatter = logging.Formatter(format)
handler.setFormatter(formatter)
log.addHandler(handler)

metadata = MetaData()


[docs]def upgrade(migrate_engine): print(__doc__) metadata.bind = migrate_engine metadata.reflect() # Initialize. if migrate_engine.name == 'mysql' or migrate_engine.name == 'sqlite': default_false = "0" elif migrate_engine.name in ['postgresql', 'postgres']: default_false = "false" try: RepositoryMetadata_table = Table("repository_metadata", metadata, autoload=True) except NoSuchTableError: RepositoryMetadata_table = None log.debug("Failed loading table repository_metadata.") if RepositoryMetadata_table is not None: # Drop the tool_test_errors column from the repository_metadata table as it is poorly named. It will be replaced with the new # tool_test_results column. try: col = RepositoryMetadata_table.c.tool_test_errors col.drop() except Exception: log.exception("Dropping column 'tool_test_errors' from repository_metadata table failed.") # Create the tool_test_results column to replace the ill-named tool_test_errors column just dropped above. c = Column("tool_test_results", JSONType, nullable=True) try: c.create(RepositoryMetadata_table) assert c is RepositoryMetadata_table.c.tool_test_results except Exception: log.exception("Adding tool_test_results column to the repository_metadata table failed.") # Create the missing_test_components column. c = Column("missing_test_components", Boolean, default=False, index=True) try: c.create(RepositoryMetadata_table, index_name="ix_repository_metadata_mtc") assert c is RepositoryMetadata_table.c.missing_test_components migrate_engine.execute(f"UPDATE repository_metadata SET missing_test_components={default_false}") except Exception: log.exception("Adding missing_test_components column to the repository_metadata table failed.")
[docs]def downgrade(migrate_engine): metadata.bind = migrate_engine metadata.reflect() # Drop missing_test_components and tool_test_results from the repository_metadata table and add tool_test_errors to the repository_metadata table. RepositoryMetadata_table = Table("repository_metadata", metadata, autoload=True) # Drop the missing_test_components column. try: RepositoryMetadata_table.c.missing_test_components.drop() except Exception: log.exception("Dropping column missing_test_components from the repository_metadata table failed.") # Drop the tool_test_results column. try: RepositoryMetadata_table.c.tool_test_results.drop() except Exception: log.exception("Dropping column tool_test_results from the repository_metadata table failed.") # Create the tool_test_errors column. c = Column("tool_test_errors", JSONType, nullable=True) try: c.create(RepositoryMetadata_table) assert c is RepositoryMetadata_table.c.tool_test_errors except Exception: log.exception("Adding tool_test_errors column to the repository_metadata table failed.")