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.0080_quota_tables
"""
Migration script to create tables for disk quotas.
"""
from __future__ import print_function
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.")