Migration DB_INIT_VERSION in common place

Init version value exists only in migration_helpers. migration_helpers
shouldn't know nothing about migrate repos, primarily because it is
intended for handling of any migrate repo in the project.

Change-Id: I8bceea0cf5eaf8e623efbb39e385b1990eca0a6f
Closes-Bug: #1308593
This commit is contained in:
Ilya Pekelny 2014-04-16 18:48:02 +03:00
parent ca370e2ac5
commit 3c6edad944
3 changed files with 32 additions and 14 deletions

View File

@ -0,0 +1,17 @@
# Copyright 2014 Mirantis.inc
# All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
DB_INIT_VERSION = 35

View File

@ -22,6 +22,7 @@ from migrate import exceptions
import sqlalchemy
from keystone.common import sql
from keystone.common.sql import migrate_repo
from keystone import config
from keystone import contrib
from keystone import exception
@ -31,7 +32,6 @@ from keystone.openstack.common import importutils
from keystone.openstack.common import jsonutils
DB_INIT_VERSION = 35
CONF = config.CONF
@ -135,7 +135,7 @@ def find_migrate_repo(package=None, repo_name='migrate_repo'):
def sync_database_to_version(extension=None, version=None):
if not extension:
abs_path = find_migrate_repo()
init_version = DB_INIT_VERSION
init_version = migrate_repo.DB_INIT_VERSION
else:
init_version = 0
try:

View File

@ -39,6 +39,7 @@ import sqlalchemy.exc
from keystone.assignment.backends import sql as assignment_sql
from keystone.common import sql
from keystone.common.sql import migrate_repo
from keystone.common.sql import migration_helpers
from keystone import config
from keystone.contrib import federation
@ -231,18 +232,18 @@ class SqlMigrateBase(tests.SQLDriverOverrides, tests.TestCase):
class SqlUpgradeTests(SqlMigrateBase):
_initial_db_version = migration_helpers.DB_INIT_VERSION
_initial_db_version = migrate_repo.DB_INIT_VERSION
def test_blank_db_to_start(self):
self.assertTableDoesNotExist('user')
def test_start_version_db_init_version(self):
version = migration.db_version(sql.get_engine(), self.repo_path,
migration_helpers.DB_INIT_VERSION)
migrate_repo.DB_INIT_VERSION)
self.assertEqual(
version,
migration_helpers.DB_INIT_VERSION,
'DB is not at version %s' % migration_helpers.DB_INIT_VERSION)
migrate_repo.DB_INIT_VERSION,
'DB is not at version %s' % migrate_repo.DB_INIT_VERSION)
def test_two_steps_forward_one_step_back(self):
"""You should be able to cleanly undo and re-apply all upgrades.
@ -250,7 +251,7 @@ class SqlUpgradeTests(SqlMigrateBase):
Upgrades are run in the following order::
Starting with the initial version defined at
keystone.common.migration_helpers.DB_INIT_VERSION
keystone.common.migrate_repo.DB_INIT_VERSION
INIT +1 -> INIT +2 -> INIT +1 -> INIT +2 -> INIT +3 -> INIT +2 ...
^---------------------^ ^---------------------^
@ -270,18 +271,18 @@ class SqlUpgradeTests(SqlMigrateBase):
applied.
"""
for x in range(migration_helpers.DB_INIT_VERSION + 1,
for x in range(migrate_repo.DB_INIT_VERSION + 1,
self.max_version + 1):
self.upgrade(x)
downgrade_ver = x - 1
# Don't actually downgrade to the init version. This will raise
# a not-implemented error.
if downgrade_ver != migration_helpers.DB_INIT_VERSION:
if downgrade_ver != migrate_repo.DB_INIT_VERSION:
self.downgrade(x - 1)
self.upgrade(x)
def test_upgrade_add_initial_tables(self):
self.upgrade(migration_helpers.DB_INIT_VERSION + 1)
self.upgrade(migrate_repo.DB_INIT_VERSION + 1)
self.check_initial_table_structure()
def check_initial_table_structure(self):
@ -310,7 +311,7 @@ class SqlUpgradeTests(SqlMigrateBase):
if self.engine.name == 'mysql':
self._mysql_check_all_tables_innodb()
self.downgrade(migration_helpers.DB_INIT_VERSION + 1)
self.downgrade(migrate_repo.DB_INIT_VERSION + 1)
self.check_initial_table_structure()
meta = sqlalchemy.MetaData()
@ -328,7 +329,7 @@ class SqlUpgradeTests(SqlMigrateBase):
# supported. A NotImplementedError should be raised when attempting to
# downgrade.
self.assertRaises(NotImplementedError, self.downgrade,
migration_helpers.DB_INIT_VERSION)
migrate_repo.DB_INIT_VERSION)
def insert_dict(self, session, table_name, d, table=None):
"""Naively inserts key-value pairs into a table, given a dictionary."""
@ -1326,12 +1327,12 @@ class SqlUpgradeTests(SqlMigrateBase):
class VersionTests(SqlMigrateBase):
_initial_db_version = migration_helpers.DB_INIT_VERSION
_initial_db_version = migrate_repo.DB_INIT_VERSION
def test_core_initial(self):
"""Get the version before migrated, it's the initial DB version."""
version = migration_helpers.get_db_version()
self.assertEqual(migration_helpers.DB_INIT_VERSION, version)
self.assertEqual(migrate_repo.DB_INIT_VERSION, version)
def test_core_max(self):
"""When get the version after upgrading, it's the new version."""