db: Stop checking for DB under sqlalchemy-migrate control
This has been in place since Ocata. If any version since then has been deployed, this will have already been deployed. Time to drop this. UpgradeImpact Change-Id: I5412d78c63cf3381782f5c6fc059641489f89053 Implements: blueprint remove-sqlalchemy-migrate Signed-off-by: Stephen Finucane <sfinucan@redhat.com>
This commit is contained in:
parent
77676e833f
commit
7fb274f6db
@ -172,8 +172,6 @@ class DbCommands(object):
|
|||||||
Place an existing database under migration control and upgrade it.
|
Place an existing database under migration control and upgrade it.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
alembic_migrations.place_database_under_alembic_control()
|
|
||||||
|
|
||||||
a_config = alembic_migrations.get_alembic_config()
|
a_config = alembic_migrations.get_alembic_config()
|
||||||
alembic_command.upgrade(a_config, version)
|
alembic_command.upgrade(a_config, version)
|
||||||
heads = alembic_migrations.get_current_alembic_heads()
|
heads = alembic_migrations.get_current_alembic_heads()
|
||||||
|
@ -19,7 +19,6 @@
|
|||||||
|
|
||||||
"""Database setup and migration commands."""
|
"""Database setup and migration commands."""
|
||||||
|
|
||||||
import os
|
|
||||||
import threading
|
import threading
|
||||||
|
|
||||||
from oslo_config import cfg
|
from oslo_config import cfg
|
||||||
@ -49,11 +48,3 @@ EXPAND_BRANCH = 'expand'
|
|||||||
CONTRACT_BRANCH = 'contract'
|
CONTRACT_BRANCH = 'contract'
|
||||||
CURRENT_RELEASE = 'wallaby'
|
CURRENT_RELEASE = 'wallaby'
|
||||||
ALEMBIC_INIT_VERSION = 'liberty'
|
ALEMBIC_INIT_VERSION = 'liberty'
|
||||||
LATEST_REVISION = 'wallaby_contract01'
|
|
||||||
INIT_VERSION = 0
|
|
||||||
|
|
||||||
MIGRATE_REPO_PATH = os.path.join(
|
|
||||||
os.path.abspath(os.path.dirname(__file__)),
|
|
||||||
'sqlalchemy',
|
|
||||||
'migrate_repo',
|
|
||||||
)
|
|
||||||
|
@ -14,19 +14,13 @@
|
|||||||
# under the License.
|
# under the License.
|
||||||
|
|
||||||
import os
|
import os
|
||||||
import sys
|
|
||||||
|
|
||||||
from alembic import command as alembic_command
|
|
||||||
from alembic import config as alembic_config
|
from alembic import config as alembic_config
|
||||||
from alembic import migration as alembic_migration
|
from alembic import migration as alembic_migration
|
||||||
from alembic import script as alembic_script
|
from alembic import script as alembic_script
|
||||||
from sqlalchemy import MetaData, Table
|
from sqlalchemy import MetaData, Table
|
||||||
from oslo_db import exception as db_exception
|
|
||||||
from oslo_db.sqlalchemy import migration as sqla_migration
|
|
||||||
|
|
||||||
from glance.db import migration as db_migration
|
|
||||||
from glance.db.sqlalchemy import api as db_api
|
from glance.db.sqlalchemy import api as db_api
|
||||||
from glance.i18n import _
|
|
||||||
|
|
||||||
|
|
||||||
def get_alembic_config(engine=None):
|
def get_alembic_config(engine=None):
|
||||||
@ -75,60 +69,6 @@ def get_current_alembic_heads():
|
|||||||
return heads
|
return heads
|
||||||
|
|
||||||
|
|
||||||
def get_current_legacy_head():
|
|
||||||
try:
|
|
||||||
legacy_head = sqla_migration.db_version(db_api.get_engine(),
|
|
||||||
db_migration.MIGRATE_REPO_PATH,
|
|
||||||
db_migration.INIT_VERSION)
|
|
||||||
except db_exception.DBMigrationError:
|
|
||||||
legacy_head = None
|
|
||||||
return legacy_head
|
|
||||||
|
|
||||||
|
|
||||||
def is_database_under_alembic_control():
|
|
||||||
if get_current_alembic_heads():
|
|
||||||
return True
|
|
||||||
return False
|
|
||||||
|
|
||||||
|
|
||||||
def is_database_under_migrate_control():
|
|
||||||
if get_current_legacy_head():
|
|
||||||
return True
|
|
||||||
return False
|
|
||||||
|
|
||||||
|
|
||||||
def place_database_under_alembic_control():
|
|
||||||
a_config = get_alembic_config()
|
|
||||||
|
|
||||||
if not is_database_under_migrate_control():
|
|
||||||
return
|
|
||||||
|
|
||||||
if not is_database_under_alembic_control():
|
|
||||||
print(_("Database is currently not under Alembic's migration "
|
|
||||||
"control."))
|
|
||||||
head = get_current_legacy_head()
|
|
||||||
if head == 42:
|
|
||||||
alembic_version = 'liberty'
|
|
||||||
elif head == 43:
|
|
||||||
alembic_version = 'mitaka01'
|
|
||||||
elif head == 44:
|
|
||||||
alembic_version = 'mitaka02'
|
|
||||||
elif head == 45:
|
|
||||||
alembic_version = 'ocata01'
|
|
||||||
elif head in range(1, 42):
|
|
||||||
print("Legacy head: ", head)
|
|
||||||
sys.exit(_("The current database version is not supported any "
|
|
||||||
"more. Please upgrade to Liberty release first."))
|
|
||||||
else:
|
|
||||||
sys.exit(_("Unable to place database under Alembic's migration "
|
|
||||||
"control. Unknown database state, can't proceed "
|
|
||||||
"further."))
|
|
||||||
|
|
||||||
print(_("Placing database under Alembic's migration control at "
|
|
||||||
"revision:"), alembic_version)
|
|
||||||
alembic_command.stamp(a_config, alembic_version)
|
|
||||||
|
|
||||||
|
|
||||||
def get_alembic_branch_head(branch):
|
def get_alembic_branch_head(branch):
|
||||||
"""Return head revision name for particular branch"""
|
"""Return head revision name for particular branch"""
|
||||||
a_config = get_alembic_config()
|
a_config = get_alembic_config()
|
||||||
|
@ -258,11 +258,8 @@ class TestManage(TestManageBase):
|
|||||||
'glance.db.sqlalchemy.alembic_migrations.get_current_alembic_heads')
|
'glance.db.sqlalchemy.alembic_migrations.get_current_alembic_heads')
|
||||||
@mock.patch(
|
@mock.patch(
|
||||||
'glance.db.sqlalchemy.alembic_migrations.get_alembic_branch_head')
|
'glance.db.sqlalchemy.alembic_migrations.get_alembic_branch_head')
|
||||||
@mock.patch('glance.db.sqlalchemy.alembic_migrations.'
|
|
||||||
'place_database_under_alembic_control')
|
|
||||||
@mock.patch('alembic.command.upgrade')
|
@mock.patch('alembic.command.upgrade')
|
||||||
def test_sync_db_is_already_sync(self, mock_upgrade,
|
def test_sync_db_is_already_sync(self, mock_upgrade,
|
||||||
mock_db_under_alembic_control,
|
|
||||||
mock_get_alembic_branch_head,
|
mock_get_alembic_branch_head,
|
||||||
mock_get_current_alembic_heads):
|
mock_get_current_alembic_heads):
|
||||||
mock_get_current_alembic_heads.return_value = ['pike_contract01']
|
mock_get_current_alembic_heads.return_value = ['pike_contract01']
|
||||||
|
@ -0,0 +1,8 @@
|
|||||||
|
---
|
||||||
|
upgrade:
|
||||||
|
- |
|
||||||
|
The database migration engine used by Glance for database upgrades was
|
||||||
|
changed from *SQLAlchemy Migrate* to *Alembic* in the 14.0.0 (Ocata)
|
||||||
|
release. Support for *SQLAlchemy Migrate* has now been removed. This
|
||||||
|
means in order to upgrade from a pre-Ocata release to Xena or later,
|
||||||
|
you must upgrade to Wallaby or earlier first.
|
Loading…
Reference in New Issue
Block a user