Remove downgrade

Removed downgrade from all existing migrations.
Modified a test that verifies that no migrations have a downgrade.
Modified test _walk_versions to only do upgrades.
Removed exceptions from pylint.config

Related cross-project spec: https://review.openstack.org/152337
Closes-Bug: #1434103

Change-Id: I9a7c87ae3f4e2eff3a4a6df881d086d52062dbba
This commit is contained in:
Trevor McCasland 2016-10-05 17:20:45 -05:00 committed by Trevor McCasland
parent 473d360b90
commit 6593986b34
43 changed files with 10 additions and 654 deletions

View File

@ -519,84 +519,42 @@
"Instance of 'Table' has no 'create_column' member",
"upgrade"
],
[
"trove/db/sqlalchemy/migrate_repo/versions/007_add_volume_flavor.py",
"E1101",
"Instance of 'Table' has no 'drop_column' member",
"downgrade"
],
[
"trove/db/sqlalchemy/migrate_repo/versions/007_add_volume_flavor.py",
"no-member",
"Instance of 'Table' has no 'create_column' member",
"upgrade"
],
[
"trove/db/sqlalchemy/migrate_repo/versions/007_add_volume_flavor.py",
"no-member",
"Instance of 'Table' has no 'drop_column' member",
"downgrade"
],
[
"trove/db/sqlalchemy/migrate_repo/versions/008_add_instance_fields.py",
"E1101",
"Instance of 'Table' has no 'create_column' member",
"upgrade"
],
[
"trove/db/sqlalchemy/migrate_repo/versions/008_add_instance_fields.py",
"E1101",
"Instance of 'Table' has no 'drop_column' member",
"downgrade"
],
[
"trove/db/sqlalchemy/migrate_repo/versions/008_add_instance_fields.py",
"no-member",
"Instance of 'Table' has no 'create_column' member",
"upgrade"
],
[
"trove/db/sqlalchemy/migrate_repo/versions/008_add_instance_fields.py",
"no-member",
"Instance of 'Table' has no 'drop_column' member",
"downgrade"
],
[
"trove/db/sqlalchemy/migrate_repo/versions/009_add_deleted_flag_to_instances.py",
"E1101",
"Instance of 'Table' has no 'create_column' member",
"upgrade"
],
[
"trove/db/sqlalchemy/migrate_repo/versions/009_add_deleted_flag_to_instances.py",
"E1101",
"Instance of 'Table' has no 'drop_column' member",
"downgrade"
],
[
"trove/db/sqlalchemy/migrate_repo/versions/009_add_deleted_flag_to_instances.py",
"no-member",
"Instance of 'Table' has no 'create_column' member",
"upgrade"
],
[
"trove/db/sqlalchemy/migrate_repo/versions/009_add_deleted_flag_to_instances.py",
"no-member",
"Instance of 'Table' has no 'drop_column' member",
"downgrade"
],
[
"trove/db/sqlalchemy/migrate_repo/versions/015_add_service_type.py",
"E1101",
"Instance of 'Table' has no 'create_column' member",
"upgrade"
],
[
"trove/db/sqlalchemy/migrate_repo/versions/015_add_service_type.py",
"E1101",
"Instance of 'Table' has no 'drop_column' member",
"downgrade"
],
[
"trove/db/sqlalchemy/migrate_repo/versions/015_add_service_type.py",
"E1120",
@ -609,120 +567,54 @@
"Instance of 'Table' has no 'create_column' member",
"upgrade"
],
[
"trove/db/sqlalchemy/migrate_repo/versions/015_add_service_type.py",
"no-member",
"Instance of 'Table' has no 'drop_column' member",
"downgrade"
],
[
"trove/db/sqlalchemy/migrate_repo/versions/015_add_service_type.py",
"no-value-for-parameter",
"No value for argument 'dml' in method call",
"upgrade"
],
[
"trove/db/sqlalchemy/migrate_repo/versions/016_add_datastore_type.py",
"E1101",
"Instance of 'Table' has no 'create_column' member",
"downgrade"
],
[
"trove/db/sqlalchemy/migrate_repo/versions/016_add_datastore_type.py",
"E1101",
"Instance of 'Table' has no 'create_column' member",
"upgrade"
],
[
"trove/db/sqlalchemy/migrate_repo/versions/016_add_datastore_type.py",
"E1101",
"Instance of 'Table' has no 'drop_column' member",
"downgrade"
],
[
"trove/db/sqlalchemy/migrate_repo/versions/016_add_datastore_type.py",
"E1101",
"Instance of 'Table' has no 'drop_column' member",
"upgrade"
],
[
"trove/db/sqlalchemy/migrate_repo/versions/016_add_datastore_type.py",
"E1120",
"No value for argument 'dml' in method call",
"downgrade"
],
[
"trove/db/sqlalchemy/migrate_repo/versions/016_add_datastore_type.py",
"no-member",
"Instance of 'Table' has no 'create_column' member",
"downgrade"
],
[
"trove/db/sqlalchemy/migrate_repo/versions/016_add_datastore_type.py",
"no-member",
"Instance of 'Table' has no 'create_column' member",
"upgrade"
],
[
"trove/db/sqlalchemy/migrate_repo/versions/016_add_datastore_type.py",
"no-member",
"Instance of 'Table' has no 'drop_column' member",
"downgrade"
],
[
"trove/db/sqlalchemy/migrate_repo/versions/016_add_datastore_type.py",
"no-member",
"Instance of 'Table' has no 'drop_column' member",
"upgrade"
],
[
"trove/db/sqlalchemy/migrate_repo/versions/016_add_datastore_type.py",
"no-value-for-parameter",
"No value for argument 'dml' in method call",
"downgrade"
],
[
"trove/db/sqlalchemy/migrate_repo/versions/017_update_datastores.py",
"E1101",
"Instance of 'Table' has no 'create_column' member",
"downgrade"
],
[
"trove/db/sqlalchemy/migrate_repo/versions/017_update_datastores.py",
"E1101",
"Instance of 'Table' has no 'create_column' member",
"upgrade"
],
[
"trove/db/sqlalchemy/migrate_repo/versions/017_update_datastores.py",
"E1101",
"Instance of 'Table' has no 'drop_column' member",
"downgrade"
],
[
"trove/db/sqlalchemy/migrate_repo/versions/017_update_datastores.py",
"E1101",
"Instance of 'Table' has no 'drop_column' member",
"upgrade"
],
[
"trove/db/sqlalchemy/migrate_repo/versions/017_update_datastores.py",
"no-member",
"Instance of 'Table' has no 'create_column' member",
"downgrade"
],
[
"trove/db/sqlalchemy/migrate_repo/versions/017_update_datastores.py",
"no-member",
"Instance of 'Table' has no 'create_column' member",
"upgrade"
],
[
"trove/db/sqlalchemy/migrate_repo/versions/017_update_datastores.py",
"no-member",
"Instance of 'Table' has no 'drop_column' member",
"downgrade"
],
[
"trove/db/sqlalchemy/migrate_repo/versions/017_update_datastores.py",
"no-member",
@ -735,144 +627,72 @@
"Instance of 'Table' has no 'create_column' member",
"upgrade"
],
[
"trove/db/sqlalchemy/migrate_repo/versions/020_configurations.py",
"E1101",
"Instance of 'Table' has no 'drop_column' member",
"downgrade"
],
[
"trove/db/sqlalchemy/migrate_repo/versions/020_configurations.py",
"no-member",
"Instance of 'Table' has no 'create_column' member",
"upgrade"
],
[
"trove/db/sqlalchemy/migrate_repo/versions/020_configurations.py",
"no-member",
"Instance of 'Table' has no 'drop_column' member",
"downgrade"
],
[
"trove/db/sqlalchemy/migrate_repo/versions/022_add_backup_parent_id.py",
"E1101",
"Instance of 'Table' has no 'create_column' member",
"upgrade"
],
[
"trove/db/sqlalchemy/migrate_repo/versions/022_add_backup_parent_id.py",
"E1101",
"Instance of 'Table' has no 'drop_column' member",
"downgrade"
],
[
"trove/db/sqlalchemy/migrate_repo/versions/022_add_backup_parent_id.py",
"no-member",
"Instance of 'Table' has no 'create_column' member",
"upgrade"
],
[
"trove/db/sqlalchemy/migrate_repo/versions/022_add_backup_parent_id.py",
"no-member",
"Instance of 'Table' has no 'drop_column' member",
"downgrade"
],
[
"trove/db/sqlalchemy/migrate_repo/versions/029_add_backup_datastore.py",
"E1101",
"Instance of 'Table' has no 'create_column' member",
"upgrade"
],
[
"trove/db/sqlalchemy/migrate_repo/versions/029_add_backup_datastore.py",
"E1101",
"Instance of 'Table' has no 'drop_column' member",
"downgrade"
],
[
"trove/db/sqlalchemy/migrate_repo/versions/029_add_backup_datastore.py",
"no-member",
"Instance of 'Table' has no 'create_column' member",
"upgrade"
],
[
"trove/db/sqlalchemy/migrate_repo/versions/029_add_backup_datastore.py",
"no-member",
"Instance of 'Table' has no 'drop_column' member",
"downgrade"
],
[
"trove/db/sqlalchemy/migrate_repo/versions/030_add_master_slave.py",
"E1101",
"Instance of 'Table' has no 'create_column' member",
"upgrade"
],
[
"trove/db/sqlalchemy/migrate_repo/versions/030_add_master_slave.py",
"E1101",
"Instance of 'Table' has no 'drop_column' member",
"downgrade"
],
[
"trove/db/sqlalchemy/migrate_repo/versions/030_add_master_slave.py",
"no-member",
"Instance of 'Table' has no 'create_column' member",
"upgrade"
],
[
"trove/db/sqlalchemy/migrate_repo/versions/030_add_master_slave.py",
"no-member",
"Instance of 'Table' has no 'drop_column' member",
"downgrade"
],
[
"trove/db/sqlalchemy/migrate_repo/versions/031_add_timestamps_to_configurations.py",
"E1101",
"Instance of 'Table' has no 'create_column' member",
"upgrade"
],
[
"trove/db/sqlalchemy/migrate_repo/versions/031_add_timestamps_to_configurations.py",
"E1101",
"Instance of 'Table' has no 'drop_column' member",
"downgrade"
],
[
"trove/db/sqlalchemy/migrate_repo/versions/031_add_timestamps_to_configurations.py",
"no-member",
"Instance of 'Table' has no 'create_column' member",
"upgrade"
],
[
"trove/db/sqlalchemy/migrate_repo/versions/031_add_timestamps_to_configurations.py",
"no-member",
"Instance of 'Table' has no 'drop_column' member",
"downgrade"
],
[
"trove/db/sqlalchemy/migrate_repo/versions/032_clusters.py",
"E1101",
"Instance of 'Table' has no 'create_column' member",
"upgrade"
],
[
"trove/db/sqlalchemy/migrate_repo/versions/032_clusters.py",
"E1101",
"Instance of 'Table' has no 'drop_column' member",
"downgrade"
],
[
"trove/db/sqlalchemy/migrate_repo/versions/032_clusters.py",
"no-member",
"Instance of 'Table' has no 'create_column' member",
"upgrade"
],
[
"trove/db/sqlalchemy/migrate_repo/versions/032_clusters.py",
"no-member",
"Instance of 'Table' has no 'drop_column' member",
"downgrade"
],
[
"trove/db/sqlalchemy/migration.py",
"E0611",
@ -1763,4 +1583,4 @@
"--rcfile=./pylintrc",
"-E"
]
}
}

View File

@ -22,7 +22,6 @@ gettext.install('trove', unicode=1)
from oslo_log import log as logging
from oslo_log.versionutils import deprecated
from trove.common import cfg
from trove.common import exception
@ -47,9 +46,8 @@ class Commands(object):
def db_upgrade(self, version=None, repo_path=None):
self.db_api.db_upgrade(CONF, version, repo_path=repo_path)
@deprecated(as_of=deprecated.MITAKA)
def db_downgrade(self, version, repo_path=None):
self.db_api.db_downgrade(CONF, version, repo_path=repo_path)
raise SystemExit(_("Database downgrade is no longer supported."))
def execute(self):
exec_method = getattr(self, CONF.action.name)
@ -140,12 +138,6 @@ def main():
'latest version.')
parser.add_argument('--repo_path', help=repo_path_help)
parser = subparser.add_parser(
'db_downgrade', description='Downgrade the database to the '
'specified version.')
parser.add_argument('version', help='Target version.')
parser.add_argument('--repo_path', help=repo_path_help)
parser = subparser.add_parser(
'datastore_update', description='Add or update a datastore. '
'If the datastore already exists, the default version will be '

View File

@ -107,10 +107,6 @@ def db_upgrade(options, version=None, repo_path=None):
migration.upgrade(options, version, repo_path)
def db_downgrade(options, version, repo_path=None):
migration.downgrade(options, version, repo_path)
def db_reset(options, *plugins):
drop_db(options)
db_sync(options)

View File

@ -18,7 +18,6 @@ from sqlalchemy.schema import MetaData
from trove.db.sqlalchemy.migrate_repo.schema import create_tables
from trove.db.sqlalchemy.migrate_repo.schema import DateTime
from trove.db.sqlalchemy.migrate_repo.schema import drop_tables
from trove.db.sqlalchemy.migrate_repo.schema import Integer
from trove.db.sqlalchemy.migrate_repo.schema import String
from trove.db.sqlalchemy.migrate_repo.schema import Table
@ -44,8 +43,3 @@ instances = Table(
def upgrade(migrate_engine):
meta.bind = migrate_engine
create_tables([instances])
def downgrade(migrate_engine):
meta.bind = migrate_engine
drop_tables([instances])

View File

@ -17,7 +17,6 @@ from sqlalchemy.schema import Column
from sqlalchemy.schema import MetaData
from trove.db.sqlalchemy.migrate_repo.schema import create_tables
from trove.db.sqlalchemy.migrate_repo.schema import drop_tables
from trove.db.sqlalchemy.migrate_repo.schema import String
from trove.db.sqlalchemy.migrate_repo.schema import Table
@ -35,8 +34,3 @@ service_images = Table(
def upgrade(migrate_engine):
meta.bind = migrate_engine
create_tables([service_images])
def downgrade(migrate_engine):
meta.bind = migrate_engine
drop_tables([service_images])

View File

@ -18,7 +18,6 @@ from sqlalchemy.schema import MetaData
from trove.db.sqlalchemy.migrate_repo.schema import create_tables
from trove.db.sqlalchemy.migrate_repo.schema import DateTime
from trove.db.sqlalchemy.migrate_repo.schema import drop_tables
from trove.db.sqlalchemy.migrate_repo.schema import Integer
from trove.db.sqlalchemy.migrate_repo.schema import String
from trove.db.sqlalchemy.migrate_repo.schema import Table
@ -39,8 +38,3 @@ service_statuses = Table(
def upgrade(migrate_engine):
meta.bind = migrate_engine
create_tables([service_statuses])
def downgrade(migrate_engine):
meta.bind = migrate_engine
drop_tables([service_statuses])

View File

@ -18,7 +18,6 @@ from sqlalchemy.schema import MetaData
from trove.db.sqlalchemy.migrate_repo.schema import create_tables
from trove.db.sqlalchemy.migrate_repo.schema import DateTime
from trove.db.sqlalchemy.migrate_repo.schema import drop_tables
from trove.db.sqlalchemy.migrate_repo.schema import String
from trove.db.sqlalchemy.migrate_repo.schema import Table
@ -37,8 +36,3 @@ root_enabled_history = Table(
def upgrade(migrate_engine):
meta.bind = migrate_engine
create_tables([root_enabled_history])
def downgrade(migrate_engine):
meta.bind = migrate_engine
drop_tables([root_enabled_history])

View File

@ -18,7 +18,6 @@ from sqlalchemy.schema import MetaData
from trove.db.sqlalchemy.migrate_repo.schema import create_tables
from trove.db.sqlalchemy.migrate_repo.schema import DateTime
from trove.db.sqlalchemy.migrate_repo.schema import drop_tables
from trove.db.sqlalchemy.migrate_repo.schema import String
from trove.db.sqlalchemy.migrate_repo.schema import Table
@ -36,8 +35,3 @@ agent_heartbeats = Table(
def upgrade(migrate_engine):
meta.bind = migrate_engine
create_tables([agent_heartbeats])
def downgrade(migrate_engine):
meta.bind = migrate_engine
drop_tables([agent_heartbeats])

View File

@ -17,7 +17,6 @@ from sqlalchemy.schema import Column
from sqlalchemy.schema import MetaData
from trove.db.sqlalchemy.migrate_repo.schema import create_tables
from trove.db.sqlalchemy.migrate_repo.schema import drop_tables
from trove.db.sqlalchemy.migrate_repo.schema import String
from trove.db.sqlalchemy.migrate_repo.schema import Table
@ -34,8 +33,3 @@ dns_records = Table(
def upgrade(migrate_engine):
meta.bind = migrate_engine
create_tables([dns_records])
def downgrade(migrate_engine):
meta.bind = migrate_engine
drop_tables([dns_records])

View File

@ -31,14 +31,3 @@ def upgrade(migrate_engine):
instances.create_column(flavor_id)
instances.create_column(volume_size)
def downgrade(migrate_engine):
meta = MetaData()
meta.bind = migrate_engine
# drop column:
instances = Table('instances', meta, autoload=True)
instances.drop_column('flavor_id')
instances.drop_column('volume_size')

View File

@ -27,14 +27,3 @@ def upgrade(migrate_engine):
instances = Table('instances', meta, autoload=True)
instances.create_column(Column('tenant_id', String(36), nullable=True))
instances.create_column(Column('server_status', String(64)))
def downgrade(migrate_engine):
meta = MetaData()
meta.bind = migrate_engine
# drop column:
instances = Table('instances', meta, autoload=True)
instances.drop_column('tenant_id')
instances.drop_column('server_status')

View File

@ -28,13 +28,3 @@ def upgrade(migrate_engine):
instances = Table('instances', meta, autoload=True)
instances.create_column(Column('deleted', Boolean()))
instances.create_column(Column('deleted_at', DateTime()))
def downgrade(migrate_engine):
meta = MetaData()
meta.bind = migrate_engine
# drop column:
instances = Table('instances', meta, autoload=True)
instances.drop_column('deleted')
instances.drop_column('deleted_at')

View File

@ -18,7 +18,6 @@ from sqlalchemy.schema import MetaData
from trove.db.sqlalchemy.migrate_repo.schema import create_tables
from trove.db.sqlalchemy.migrate_repo.schema import DateTime
from trove.db.sqlalchemy.migrate_repo.schema import drop_tables
from trove.db.sqlalchemy.migrate_repo.schema import Integer
from trove.db.sqlalchemy.migrate_repo.schema import String
from trove.db.sqlalchemy.migrate_repo.schema import Table
@ -44,8 +43,3 @@ usage_events = Table(
def upgrade(migrate_engine):
meta.bind = migrate_engine
create_tables([usage_events])
def downgrade(migrate_engine):
meta.bind = migrate_engine
drop_tables([usage_events])

View File

@ -18,7 +18,6 @@ from sqlalchemy.schema import UniqueConstraint
from trove.db.sqlalchemy.migrate_repo.schema import create_tables
from trove.db.sqlalchemy.migrate_repo.schema import DateTime
from trove.db.sqlalchemy.migrate_repo.schema import drop_tables
from trove.db.sqlalchemy.migrate_repo.schema import Integer
from trove.db.sqlalchemy.migrate_repo.schema import String
from trove.db.sqlalchemy.migrate_repo.schema import Table
@ -60,8 +59,3 @@ reservations = Table('reservations', meta,
def upgrade(migrate_engine):
meta.bind = migrate_engine
create_tables([quotas, quota_usages, reservations])
def downgrade(migrate_engine):
meta.bind = migrate_engine
drop_tables([quotas, quota_usages, reservations])

View File

@ -18,7 +18,6 @@ from sqlalchemy.schema import MetaData
from trove.db.sqlalchemy.migrate_repo.schema import Boolean
from trove.db.sqlalchemy.migrate_repo.schema import create_tables
from trove.db.sqlalchemy.migrate_repo.schema import DateTime
from trove.db.sqlalchemy.migrate_repo.schema import drop_tables
from trove.db.sqlalchemy.migrate_repo.schema import Float
from trove.db.sqlalchemy.migrate_repo.schema import String
from trove.db.sqlalchemy.migrate_repo.schema import Table
@ -46,8 +45,3 @@ backups = Table('backups', meta,
def upgrade(migrate_engine):
meta.bind = migrate_engine
create_tables([backups, ])
def downgrade(migrate_engine):
meta.bind = migrate_engine
drop_tables([backups, ])

View File

@ -20,7 +20,6 @@ from sqlalchemy.schema import MetaData
from trove.db.sqlalchemy.migrate_repo.schema import Boolean
from trove.db.sqlalchemy.migrate_repo.schema import create_tables
from trove.db.sqlalchemy.migrate_repo.schema import DateTime
from trove.db.sqlalchemy.migrate_repo.schema import drop_tables
from trove.db.sqlalchemy.migrate_repo.schema import Integer
from trove.db.sqlalchemy.migrate_repo.schema import String
from trove.db.sqlalchemy.migrate_repo.schema import Table
@ -88,9 +87,3 @@ def upgrade(migrate_engine):
)
create_tables([security_groups, security_group_rules,
security_group_instance_associations])
def downgrade(migrate_engine):
meta.bind = migrate_engine
drop_tables([security_group_instance_associations,
security_group_rules, security_groups])

View File

@ -15,7 +15,6 @@
from sqlalchemy.schema import MetaData
from trove.db.sqlalchemy.migrate_repo.schema import Integer
from trove.db.sqlalchemy.migrate_repo.schema import String
from trove.db.sqlalchemy.migrate_repo.schema import Table
@ -33,13 +32,3 @@ def upgrade(migrate_engine):
instances = Table('instances', meta, autoload=True)
# modify column
instances.c.flavor_id.alter(type=Integer())
def downgrade(migrate_engine):
meta = MetaData()
meta.bind = migrate_engine
# int->char casts in pgsql still work fine without any USING clause,
# so downgrade is not affected.
# modify column:
instances = Table('instances', meta, autoload=True)
instances.c.flavor_id.alter(type=String(36))

View File

@ -26,11 +26,3 @@ def upgrade(migrate_engine):
service_type = Column('service_type', String(36))
instances.create_column(service_type)
instances.update().values({'service_type': 'mysql'}).execute()
def downgrade(migrate_engine):
meta = MetaData()
meta.bind = migrate_engine
# modify column:
instances = Table('instances', meta, autoload=True)
instances.drop_column('service_type')

View File

@ -19,10 +19,8 @@ from sqlalchemy.schema import UniqueConstraint
from trove.db.sqlalchemy.migrate_repo.schema import Boolean
from trove.db.sqlalchemy.migrate_repo.schema import create_tables
from trove.db.sqlalchemy.migrate_repo.schema import drop_tables
from trove.db.sqlalchemy.migrate_repo.schema import String
from trove.db.sqlalchemy.migrate_repo.schema import Table
from trove.db.sqlalchemy import utils as db_utils
meta = MetaData()
@ -62,23 +60,3 @@ def upgrade(migrate_engine):
# Table 'service_images' is deprecated since this version.
# Leave it for few releases.
# drop_tables([service_images])
def downgrade(migrate_engine):
meta.bind = migrate_engine
instances = Table('instances', meta, autoload=True)
constraint_names = db_utils.get_foreign_key_constraint_names(
engine=migrate_engine,
table='instances',
columns=['datastore_version_id'],
ref_table='datastore_versions',
ref_columns=['id'])
db_utils.drop_foreign_key_constraints(
constraint_names=constraint_names,
columns=[instances.c.datastore_version_id],
ref_columns=[datastore_versions.c.id])
instances.drop_column('datastore_version_id')
service_type = Column('service_type', String(36))
instances.create_column(service_type)
instances.update().values({'service_type': 'mysql'}).execute()
drop_tables([datastore_versions, datastores])

View File

@ -46,18 +46,3 @@ def upgrade(migrate_engine):
# drop column from datastores
datastores.drop_column('manager')
def downgrade(migrate_engine):
meta = MetaData()
meta.bind = migrate_engine
datastores = Table('datastores', meta, autoload=True)
datastore_versions = Table('datastore_versions', meta, autoload=True)
# drop column from datastore_versions
datastore_versions.drop_column('manager')
# add column to datastores
manager = Column('manager', String(255))
datastores.create_column(manager)

View File

@ -23,11 +23,3 @@ def upgrade(migrate_engine):
datastore_versions = Table('datastore_versions', meta, autoload=True)
# modify column
datastore_versions.c.name.alter(unique=False)
def downgrade(migrate_engine):
meta = MetaData()
meta.bind = migrate_engine
# modify column:
datastore_versions = Table('datastore_versions', meta, autoload=True)
datastore_versions.c.name.alter(unique=True)

View File

@ -13,7 +13,6 @@
# under the License.
from sqlalchemy.schema import MetaData
from sqlalchemy.sql.expression import delete
from sqlalchemy.sql.expression import insert
from sqlalchemy.sql.expression import select
from sqlalchemy.sql.expression import update
@ -129,33 +128,3 @@ def upgrade(migrate_engine):
constraint_names=constraint_names,
columns=[instance_table.c.datastore_version_id],
ref_columns=[datastore_versions_table.c.id])
def downgrade(migrate_engine):
meta.bind = migrate_engine
instance_table = Table('instances', meta, autoload=True)
instance_table.c.datastore_version_id.alter(nullable=True)
update(
table=instance_table,
whereclause="datastore_version_id='%s'" % LEGACY_VERSION_ID,
values=dict(datastore_version_id=None)
).execute()
datastores_table = Table('datastores',
meta,
autoload=True)
datastore_versions_table = Table('datastore_versions',
meta,
autoload=True)
delete(
table=datastore_versions_table,
whereclause="id='%s'" % LEGACY_VERSION_ID
).execute()
delete(
table=datastores_table,
whereclause="id='%s'" % LEGACY_DATASTORE_ID
).execute()

View File

@ -20,10 +20,8 @@ from sqlalchemy.schema import MetaData
from trove.db.sqlalchemy.migrate_repo.schema import Boolean
from trove.db.sqlalchemy.migrate_repo.schema import create_tables
from trove.db.sqlalchemy.migrate_repo.schema import DateTime
from trove.db.sqlalchemy.migrate_repo.schema import drop_tables
from trove.db.sqlalchemy.migrate_repo.schema import String
from trove.db.sqlalchemy.migrate_repo.schema import Table
from trove.db.sqlalchemy import utils as db_utils
meta = MetaData()
@ -59,20 +57,3 @@ def upgrade(migrate_engine):
instances = Table('instances', meta, autoload=True)
instances.create_column(Column('configuration_id', String(36),
ForeignKey("configurations.id")))
def downgrade(migrate_engine):
meta.bind = migrate_engine
instances = Table('instances', meta, autoload=True)
constraint_names = db_utils.get_foreign_key_constraint_names(
engine=migrate_engine,
table='instances',
columns=['configuration_id'],
ref_table='configurations',
ref_columns=['id'])
db_utils.drop_foreign_key_constraints(
constraint_names=constraint_names,
columns=[instances.c.configuration_id],
ref_columns=[configurations.c.id])
instances.drop_column('configuration_id')
drop_tables([configuration_parameters, configurations])

View File

@ -16,7 +16,6 @@ from sqlalchemy.schema import Column
from sqlalchemy.schema import MetaData
from trove.db.sqlalchemy.migrate_repo.schema import create_tables
from trove.db.sqlalchemy.migrate_repo.schema import drop_tables
from trove.db.sqlalchemy.migrate_repo.schema import Float
from trove.db.sqlalchemy.migrate_repo.schema import String
from trove.db.sqlalchemy.migrate_repo.schema import Table
@ -34,8 +33,3 @@ conductor_lastseen = Table(
def upgrade(migrate_engine):
meta.bind = migrate_engine
create_tables([conductor_lastseen])
def downgrade(migrate_engine):
meta.bind = migrate_engine
drop_tables([conductor_lastseen])

View File

@ -26,12 +26,3 @@ def upgrade(migrate_engine):
# add column:
backups = Table('backups', meta, autoload=True)
backups.create_column(Column('parent_id', String(36), nullable=True))
def downgrade(migrate_engine):
meta = MetaData()
meta.bind = migrate_engine
# drop column:
backups = Table('backups', meta, autoload=True)
backups.drop_column('parent_id')

View File

@ -40,16 +40,3 @@ def upgrade(migrate_engine):
deleted_idx.create()
except OperationalError as e:
logger.info(e)
def downgrade(migrate_engine):
meta = MetaData()
meta.bind = migrate_engine
instances = Table('instances', meta, autoload=True)
tenant_id_idx = Index("instances_tenant_id", instances.c.tenant_id)
tenant_id_idx.drop()
deleted_idx = Index("instances_deleted", instances.c.deleted)
deleted_idx.drop()

View File

@ -40,17 +40,3 @@ def upgrade(migrate_engine):
backups_deleted_idx.create()
except OperationalError as e:
logger.info(e)
def downgrade(migrate_engine):
meta = MetaData()
meta.bind = migrate_engine
backups = Table('backups', meta, autoload=True)
backups_instance_id_idx = Index("backups_instance_id",
backups.c.instance_id)
backups_deleted_idx = Index("backups_deleted", backups.c.deleted)
meta.bind = migrate_engine
backups_instance_id_idx.drop()
backups_deleted_idx.drop()

View File

@ -33,12 +33,3 @@ def upgrade(migrate_engine):
idx.create()
except OperationalError as e:
logger.info(e)
def downgrade(migrate_engine):
meta = MetaData()
meta.bind = migrate_engine
service_statuses = Table('service_statuses', meta, autoload=True)
idx = Index("service_statuses_instance_id", service_statuses.c.instance_id)
idx.drop()

View File

@ -41,10 +41,3 @@ def upgrade(migrate_engine):
uc.drop()
except (OperationalError, InternalError) as e:
logger.info(e)
def downgrade(migrate_engine):
# we aren't going to recreate the index in this case for 2 reasons:
# 1. this column being unique was a bug in the first place
# 2. adding a unique index to a column that has duplicates will fail
pass

View File

@ -19,7 +19,6 @@ from sqlalchemy.schema import UniqueConstraint
from trove.db.sqlalchemy.migrate_repo.schema import Boolean
from trove.db.sqlalchemy.migrate_repo.schema import create_tables
from trove.db.sqlalchemy.migrate_repo.schema import drop_tables
from trove.db.sqlalchemy.migrate_repo.schema import String
from trove.db.sqlalchemy.migrate_repo.schema import Table
@ -54,8 +53,3 @@ def upgrade(migrate_engine):
Table('datastores', meta, autoload=True)
Table('datastore_versions', meta, autoload=True)
create_tables([capabilities, capability_overrides])
def downgrade(migrate_engine):
meta.bind = migrate_engine
drop_tables([capability_overrides, capabilities])

View File

@ -53,30 +53,3 @@ def upgrade(migrate_engine):
logger.warn(e)
create_tables([new_agent_heartbeats])
def downgrade(migrate_engine):
meta = MetaData()
meta.bind = migrate_engine
# new table with desired columns, indexes, and constraints
new_agent_heartbeats = Table('agent_heartbeats', meta, autoload=True)
try:
drop_tables([new_agent_heartbeats])
except OperationalError as e:
logger.warn("This table may have been dropped by some other means.")
logger.warn(e)
# reset the migrate_engine
meta = MetaData()
meta.bind = migrate_engine
# original table from migration 005_heartbeat.py
previous_agent_heartbeats = Table(
'agent_heartbeats', meta, Column('id', String(36), primary_key=True,
nullable=False),
Column('instance_id', String(36), nullable=False),
Column('updated_at', DateTime()), extend_existing=True)
create_tables([previous_agent_heartbeats])

View File

@ -18,7 +18,6 @@ from sqlalchemy.schema import MetaData
from trove.db.sqlalchemy.migrate_repo.schema import String
from trove.db.sqlalchemy.migrate_repo.schema import Table
from trove.db.sqlalchemy import utils as db_utils
def upgrade(migrate_engine):
@ -29,21 +28,3 @@ def upgrade(migrate_engine):
datastore_version_id = Column('datastore_version_id', String(36),
ForeignKey('datastore_versions.id'))
backups.create_column(datastore_version_id)
def downgrade(migrate_engine):
meta = MetaData()
meta.bind = migrate_engine
backups = Table('backups', meta, autoload=True)
datastore_versions = Table('datastore_versions', meta, autoload=True)
constraint_names = db_utils.get_foreign_key_constraint_names(
engine=migrate_engine,
table='backups',
columns=['datastore_version_id'],
ref_table='datastore_versions',
ref_columns=['id'])
db_utils.drop_foreign_key_constraints(
constraint_names=constraint_names,
columns=[backups.c.datastore_version_id],
ref_columns=[datastore_versions.c.id])
backups.drop_column('datastore_version_id')

View File

@ -18,7 +18,6 @@ from sqlalchemy.schema import MetaData
from trove.db.sqlalchemy.migrate_repo.schema import String
from trove.db.sqlalchemy.migrate_repo.schema import Table
from trove.db.sqlalchemy import utils as db_utils
COLUMN_NAME = 'slave_of_id'
@ -31,20 +30,3 @@ def upgrade(migrate_engine):
instances.create_column(
Column(COLUMN_NAME, String(36), ForeignKey('instances.id')),
nullable=True)
def downgrade(migrate_engine):
meta = MetaData()
meta.bind = migrate_engine
instances = Table('instances', meta, autoload=True)
constraint_names = db_utils.get_foreign_key_constraint_names(
engine=migrate_engine,
table='instances',
columns=[COLUMN_NAME],
ref_table='instances',
ref_columns=['id'])
db_utils.drop_foreign_key_constraints(
constraint_names=constraint_names,
columns=[instances.c.slave_of_id],
ref_columns=[instances.c.id])
instances.drop_column(COLUMN_NAME)

View File

@ -26,10 +26,3 @@ def upgrade(migrate_engine):
updated = Column('updated', DateTime())
configurations.create_column(created)
configurations.create_column(updated)
def downgrade(migrate_engine):
meta = MetaData(bind=migrate_engine)
configurations = Table('configurations', meta, autoload=True)
configurations.drop_column('created')
configurations.drop_column('updated')

View File

@ -21,11 +21,9 @@ from sqlalchemy.schema import MetaData
from trove.db.sqlalchemy.migrate_repo.schema import Boolean
from trove.db.sqlalchemy.migrate_repo.schema import create_tables
from trove.db.sqlalchemy.migrate_repo.schema import DateTime
from trove.db.sqlalchemy.migrate_repo.schema import drop_tables
from trove.db.sqlalchemy.migrate_repo.schema import Integer
from trove.db.sqlalchemy.migrate_repo.schema import String
from trove.db.sqlalchemy.migrate_repo.schema import Table
from trove.db.sqlalchemy import utils as db_utils
meta = MetaData()
@ -59,37 +57,3 @@ def upgrade(migrate_engine):
instances.create_column(Column('type', String(64)))
cluster_id_idx = Index("instances_cluster_id", instances.c.cluster_id)
cluster_id_idx.create()
def downgrade(migrate_engine):
meta.bind = migrate_engine
datastore_versions = Table('datastore_versions', meta, autoload=True)
constraint_names = db_utils.get_foreign_key_constraint_names(
engine=migrate_engine,
table='clusters',
columns=['datastore_version_id'],
ref_table='datastore_versions',
ref_columns=['id'])
db_utils.drop_foreign_key_constraints(
constraint_names=constraint_names,
columns=[clusters.c.datastore_version_id],
ref_columns=[datastore_versions.c.id])
instances = Table('instances', meta, autoload=True)
constraint_names = db_utils.get_foreign_key_constraint_names(
engine=migrate_engine,
table='instances',
columns=['cluster_id'],
ref_table='clusters',
ref_columns=['id'])
db_utils.drop_foreign_key_constraints(
constraint_names=constraint_names,
columns=[instances.c.cluster_id],
ref_columns=[clusters.c.id])
instances.drop_column('cluster_id')
instances.drop_column('shard_id')
instances.drop_column('type')
drop_tables([clusters])

View File

@ -21,7 +21,6 @@ from sqlalchemy.schema import UniqueConstraint
from trove.db.sqlalchemy.migrate_repo.schema import Boolean
from trove.db.sqlalchemy.migrate_repo.schema import create_tables
from trove.db.sqlalchemy.migrate_repo.schema import DateTime
from trove.db.sqlalchemy.migrate_repo.schema import drop_tables
from trove.db.sqlalchemy.migrate_repo.schema import String
from trove.db.sqlalchemy.migrate_repo.schema import Table
@ -53,8 +52,3 @@ def upgrade(migrate_engine):
meta.bind = migrate_engine
Table('datastore_versions', meta, autoload=True)
create_tables([datastore_configuration_parameters])
def downgrade(migrate_engine):
meta.bind = migrate_engine
drop_tables([datastore_configuration_parameters])

View File

@ -23,7 +23,3 @@ def upgrade(migrate_engine):
meta.bind = migrate_engine
instances = Table('instances', meta, autoload=True)
instances.c.task_description.alter(type=String(255))
def downgrade(migrate_engine):
pass

View File

@ -15,7 +15,6 @@
from sqlalchemy.schema import MetaData
from trove.db.sqlalchemy.migrate_repo.schema import Integer
from trove.db.sqlalchemy.migrate_repo.schema import String
from trove.db.sqlalchemy.migrate_repo.schema import Table
@ -27,9 +26,3 @@ def upgrade(migrate_engine):
meta.bind = migrate_engine
instances = Table('instances', meta, autoload=True)
instances.c.flavor_id.alter(String(255))
def downgrade(migrate_engine):
meta.bind = migrate_engine
instances = Table('instances', meta, autoload=True)
instances.c.flavor_id.alter(Integer())

View File

@ -21,7 +21,6 @@ from sqlalchemy.schema import UniqueConstraint
from trove.db.sqlalchemy.migrate_repo.schema import Boolean
from trove.db.sqlalchemy.migrate_repo.schema import create_tables
from trove.db.sqlalchemy.migrate_repo.schema import DateTime
from trove.db.sqlalchemy.migrate_repo.schema import drop_tables
from trove.db.sqlalchemy.migrate_repo.schema import String
from trove.db.sqlalchemy.migrate_repo.schema import Table
@ -54,8 +53,3 @@ def upgrade(migrate_engine):
# creates datastore_version_metadata table
Table('datastore_versions', meta, autoload=True)
create_tables([datastore_version_metadata])
def downgrade(migrate_engine):
meta.bind = migrate_engine
drop_tables([datastore_version_metadata])

View File

@ -22,7 +22,6 @@ from sqlalchemy.schema import UniqueConstraint
from trove.db.sqlalchemy.migrate_repo.schema import Boolean
from trove.db.sqlalchemy.migrate_repo.schema import create_tables
from trove.db.sqlalchemy.migrate_repo.schema import DateTime
from trove.db.sqlalchemy.migrate_repo.schema import drop_tables
from trove.db.sqlalchemy.migrate_repo.schema import String
from trove.db.sqlalchemy.migrate_repo.schema import Table
from trove.db.sqlalchemy.migrate_repo.schema import Text
@ -77,8 +76,3 @@ def upgrade(migrate_engine):
meta.bind = migrate_engine
Table('instances', meta, autoload=True)
create_tables([modules, instance_modules])
def downgrade(migrate_engine):
meta.bind = migrate_engine
drop_tables([instance_modules, modules])

View File

@ -21,7 +21,6 @@ from sqlalchemy.schema import MetaData
from trove.db.sqlalchemy.migrate_repo.schema import Boolean
from trove.db.sqlalchemy.migrate_repo.schema import create_tables
from trove.db.sqlalchemy.migrate_repo.schema import DateTime
from trove.db.sqlalchemy.migrate_repo.schema import drop_tables
from trove.db.sqlalchemy.migrate_repo.schema import String
from trove.db.sqlalchemy.migrate_repo.schema import Table
from trove.db.sqlalchemy.migrate_repo.schema import Text
@ -49,8 +48,3 @@ def upgrade(migrate_engine):
meta.bind = migrate_engine
Table('instances', meta, autoload=True)
create_tables([instance_faults])
def downgrade(migrate_engine):
meta.bind = migrate_engine
drop_tables([instance_faults])

View File

@ -64,22 +64,6 @@ def upgrade(options, version=None, repo_path=None):
return versioning_api.upgrade(sql_connection, repo_path, version)
def downgrade(options, version, repo_path=None):
"""Downgrade the database's current migration level.
:param options: options dict
:param version: version to downgrade to
:retval version number
"""
db_version(options, repo_path) # Ensure db is under migration control
repo_path = get_migrate_repo_path(repo_path)
sql_connection = options['database']['connection']
logger.info("Downgrading %(sql_connection)s to version %(version)s" %
{'sql_connection': sql_connection, 'version': version})
return versioning_api.downgrade(sql_connection, repo_path, version)
def version_control(options, repo_path=None):
"""Place a database under migration control.

View File

@ -56,25 +56,22 @@ class ProjectTestCase(object):
py_glob = os.path.join(topdir, "trove", "db", "sqlalchemy",
"migrate_repo", "versions", "*.py")
missing_downgrade = []
downgrades_found = []
for path in glob.iglob(py_glob):
has_upgrade = False
has_downgrade = False
with open(path, "r") as f:
for line in f:
if 'def upgrade(' in line:
has_upgrade = True
if 'def downgrade(' in line:
has_downgrade = True
if has_upgrade and not has_downgrade:
if has_downgrade:
fname = os.path.basename(path)
missing_downgrade.append(fname)
downgrades_found.append(fname)
helpful_msg = (_("The following migration scripts are missing a "
helpful_msg = (_("The following migration scripts have a "
"downgrade implementation:\n\t%s") %
'\n\t'.join(sorted(missing_downgrade)))
assert_true(not missing_downgrade, helpful_msg)
'\n\t'.join(sorted(downgrades_found)))
assert_equal(downgrades_found, [], helpful_msg)
@test(depends_on_classes=[ProjectTestCase],
@ -171,10 +168,7 @@ class TestTroveMigrations(object):
"""Walk through and test the migration scripts
Determine latest version script from the repo, then
upgrade from 1 through to the latest, then downgrade from
the latest back to 1, with no data in the databases. This
just checks that the schema itself upgrades and downgrades
successfully.
upgrade from 1 through to the latest.
"""
# Place the database under version control
migration_api.version_control(engine, self.REPOSITORY,
@ -185,26 +179,9 @@ class TestTroveMigrations(object):
LOG.debug('Latest version is %s' % self.REPOSITORY.latest)
versions = range(self.INIT_VERSION + 1, self.REPOSITORY.latest + 1)
# Snake walk from version 1 to the latest, testing the upgrade paths.
# upgrade -> downgrade -> upgrade
# Walk from version 1 to the latest, testing the upgrade paths.
for version in versions:
self._migrate_up(engine, version)
self._migrate_down(engine, version - 1)
self._migrate_up(engine, version)
# Now snake walk back down to version 1 from the latest, testing the
# downgrade paths.
# downgrade -> upgrade -> downgrade
for version in reversed(versions):
self._migrate_down(engine, version - 1)
self._migrate_up(engine, version)
self._migrate_down(engine, version - 1)
def _migrate_down(self, engine, version):
"""Migrate down to an old version of database."""
migration_api.downgrade(engine, self.REPOSITORY, version)
assert_equal(version,
migration_api.db_version(engine, self.REPOSITORY))
def _migrate_up(self, engine, version):
"""Migrate up to a new version of database."""