summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZuul <zuul@review.opendev.org>2022-02-09 21:11:31 +0000
committerGerrit Code Review <review@openstack.org>2022-02-09 21:11:31 +0000
commita1d0694d5c15f2f1542ee85107067b0af5daa1b8 (patch)
treee097b9926508b95d0ffb566a16381ada40259255
parent9ad9a46616f31b86f048caec0407e25546fa45b7 (diff)
parent1885f81576f6cf9231d34454ba462b571fb117a9 (diff)
downloadkeystone-a1d0694d5c15f2f1542ee85107067b0af5daa1b8.tar.gz
Merge "sql: Move test-only code to tests"
-rw-r--r--keystone/common/sql/upgrades.py44
-rw-r--r--keystone/tests/unit/test_sql_upgrade.py51
2 files changed, 53 insertions, 42 deletions
diff --git a/keystone/common/sql/upgrades.py b/keystone/common/sql/upgrades.py
index 00d21aed7..f0657e01a 100644
--- a/keystone/common/sql/upgrades.py
+++ b/keystone/common/sql/upgrades.py
@@ -24,6 +24,7 @@ import sqlalchemy as sa
from keystone.common import sql
from keystone import exception
+from keystone.i18n import _
INITIAL_VERSION = 72
LATEST_VERSION = 79
@@ -32,43 +33,6 @@ DATA_MIGRATION_REPO = 'data_migration_repo'
CONTRACT_REPO = 'contract_repo'
-class Repository(object):
- def __init__(self, engine, repo_name):
- self.repo_name = repo_name
-
- self.repo_path = _get_migrate_repo_path(self.repo_name)
- self.min_version = INITIAL_VERSION
- self.schema_ = migrate_api.ControlledSchema.create(
- engine, self.repo_path, self.min_version)
- self.max_version = self.schema_.repository.version().version
-
- def upgrade(self, version=None, current_schema=None):
- version = version or self.max_version
- err = ''
- upgrade = True
- version = migrate_api._migrate_version(
- self.schema_, version, upgrade, err)
- validate_upgrade_order(self.repo_name, target_repo_version=version)
- if not current_schema:
- current_schema = self.schema_
- changeset = current_schema.changeset(version)
- for ver, change in changeset:
- self.schema_.runchange(ver, change, changeset.step)
-
- if self.schema_.version != version:
- raise Exception(
- 'Actual version (%s) of %s does not equal expected '
- 'version (%s)' % (
- self.schema_.version, self.repo_name, version))
-
- @property
- def version(self):
- with sql.session_for_read() as session:
- return _migrate_db_version(
- session.get_bind(), self.repo_path, self.min_version,
- )
-
-
def _get_migrate_repo_path(repo_name):
abs_path = os.path.abspath(
os.path.join(
@@ -235,8 +199,10 @@ def validate_upgrade_order(repo_name, target_repo_version=None):
"""
# Initialize a dict to have each key assigned a repo with their value being
# the repo that comes before.
- db_sync_order = {DATA_MIGRATION_REPO: EXPAND_REPO,
- CONTRACT_REPO: DATA_MIGRATION_REPO}
+ db_sync_order = {
+ DATA_MIGRATION_REPO: EXPAND_REPO,
+ CONTRACT_REPO: DATA_MIGRATION_REPO,
+ }
if repo_name == EXPAND_REPO:
return
diff --git a/keystone/tests/unit/test_sql_upgrade.py b/keystone/tests/unit/test_sql_upgrade.py
index bb5b19208..09c99dcb0 100644
--- a/keystone/tests/unit/test_sql_upgrade.py
+++ b/keystone/tests/unit/test_sql_upgrade.py
@@ -43,6 +43,7 @@ import glob
import os
import fixtures
+from migrate.versioning import api as migrate_api
from migrate.versioning import script
from oslo_db import exception as db_exception
from oslo_db.sqlalchemy import enginefacade
@@ -229,6 +230,50 @@ INITIAL_TABLE_STRUCTURE = {
}
+class Repository:
+
+ def __init__(self, engine, repo_name):
+ self.repo_name = repo_name
+
+ self.repo_path = upgrades._get_migrate_repo_path(self.repo_name)
+ self.min_version = upgrades.INITIAL_VERSION
+ self.schema_ = migrate_api.ControlledSchema.create(
+ engine, self.repo_path, self.min_version,
+ )
+ self.max_version = self.schema_.repository.version().version
+
+ def upgrade(self, version=None, current_schema=None):
+ version = version or self.max_version
+ err = ''
+ upgrade = True
+ version = migrate_api._migrate_version(
+ self.schema_, version, upgrade, err,
+ )
+ upgrades.validate_upgrade_order(
+ self.repo_name, target_repo_version=version,
+ )
+ if not current_schema:
+ current_schema = self.schema_
+ changeset = current_schema.changeset(version)
+ for ver, change in changeset:
+ self.schema_.runchange(ver, change, changeset.step)
+
+ if self.schema_.version != version:
+ raise Exception(
+ 'Actual version (%s) of %s does not equal expected '
+ 'version (%s)' % (
+ self.schema_.version, self.repo_name, version,
+ ),
+ )
+
+ @property
+ def version(self):
+ with sql.session_for_read() as session:
+ return upgrades._migrate_db_version(
+ session.get_bind(), self.repo_path, self.min_version,
+ )
+
+
class MigrateBase(
db_fixtures.OpportunisticDBTestMixin,
test_base.BaseTestCase,
@@ -261,13 +306,13 @@ class MigrateBase(
self.addCleanup(sql.cleanup)
self.repos = {
- upgrades.EXPAND_REPO: upgrades.Repository(
+ upgrades.EXPAND_REPO: Repository(
self.engine, upgrades.EXPAND_REPO,
),
- upgrades.DATA_MIGRATION_REPO: upgrades.Repository(
+ upgrades.DATA_MIGRATION_REPO: Repository(
self.engine, upgrades.DATA_MIGRATION_REPO,
),
- upgrades.CONTRACT_REPO: upgrades.Repository(
+ upgrades.CONTRACT_REPO: Repository(
self.engine, upgrades.CONTRACT_REPO,
),
}