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 galaxy.model.migrate.versions.0080_quota_tables
"""
Migration script to create tables for disk quotas.
"""
import datetime
import logging
from sqlalchemy import BigInteger, Boolean, Column, DateTime, ForeignKey, Integer, MetaData, String, Table, TEXT
now = datetime.datetime.utcnow
log = logging.getLogger(__name__)
metadata = MetaData()
# Tables to add
Quota_table = Table("quota", metadata,
Column("id", Integer, primary_key=True),
Column("create_time", DateTime, default=now),
Column("update_time", DateTime, default=now, onupdate=now),
Column("name", String(255), index=True, unique=True),
Column("description", TEXT),
Column("bytes", BigInteger),
Column("operation", String(8)),
Column("deleted", Boolean, index=True, default=False))
UserQuotaAssociation_table = Table("user_quota_association", metadata,
Column("id", Integer, primary_key=True),
Column("user_id", Integer, ForeignKey("galaxy_user.id"), index=True),
Column("quota_id", Integer, ForeignKey("quota.id"), index=True),
Column("create_time", DateTime, default=now),
Column("update_time", DateTime, default=now, onupdate=now))
GroupQuotaAssociation_table = Table("group_quota_association", metadata,
Column("id", Integer, primary_key=True),
Column("group_id", Integer, ForeignKey("galaxy_group.id"), index=True),
Column("quota_id", Integer, ForeignKey("quota.id"), index=True),
Column("create_time", DateTime, default=now),
Column("update_time", DateTime, default=now, onupdate=now))
DefaultQuotaAssociation_table = Table("default_quota_association", metadata,
Column("id", Integer, primary_key=True),
Column("create_time", DateTime, default=now),
Column("update_time", DateTime, default=now, onupdate=now),
Column("type", String(32), index=True, unique=True),
Column("quota_id", Integer, ForeignKey("quota.id"), index=True))
[docs]def upgrade(migrate_engine):
metadata.bind = migrate_engine
print(__doc__)
metadata.reflect()
# Create quota table
try:
Quota_table.create()
except Exception:
log.exception("Creating quota table failed.")
# Create user_quota_association table
try:
UserQuotaAssociation_table.create()
except Exception:
log.exception("Creating user_quota_association table failed.")
# Create group_quota_association table
try:
GroupQuotaAssociation_table.create()
except Exception:
log.exception("Creating group_quota_association table failed.")
# Create default_quota_association table
try:
DefaultQuotaAssociation_table.create()
except Exception:
log.exception("Creating default_quota_association table failed.")
[docs]def downgrade(migrate_engine):
metadata.bind = migrate_engine
metadata.reflect()
# Drop default_quota_association table
try:
DefaultQuotaAssociation_table.drop()
except Exception:
log.exception("Dropping default_quota_association table failed.")
# Drop group_quota_association table
try:
GroupQuotaAssociation_table.drop()
except Exception:
log.exception("Dropping group_quota_association table failed.")
# Drop user_quota_association table
try:
UserQuotaAssociation_table.drop()
except Exception:
log.exception("Dropping user_quota_association table failed.")
# Drop quota table
try:
Quota_table.drop()
except Exception:
log.exception("Dropping quota table failed.")