From f6a024be81366c85ad1cbc61a4e6cb790fee113b Mon Sep 17 00:00:00 2001 From: Zane Bitter Date: Mon, 11 Mar 2013 16:54:21 +0100 Subject: [PATCH] Establish an initial version of the database Adapted from Nova commit ee2f6f1bed21a5ef92d84634cd4e949062073d62. This will allow us to squash database migrations. Change-Id: Icede692e4cc866cd27bae3aaa19c1f2466b989d0 --- heat/db/migration.py | 2 ++ heat/db/sqlalchemy/migration.py | 22 +++++++++++----------- 2 files changed, 13 insertions(+), 11 deletions(-) diff --git a/heat/db/migration.py b/heat/db/migration.py index deaa2d44..fb440221 100644 --- a/heat/db/migration.py +++ b/heat/db/migration.py @@ -20,6 +20,8 @@ from heat.db import utils IMPL = utils.LazyPluggable('db_backend', sqlalchemy='heat.db.sqlalchemy.migration') +INIT_VERSION = 0 + def db_sync(version=None): """Migrate the database to `version` or the most recent version.""" diff --git a/heat/db/sqlalchemy/migration.py b/heat/db/sqlalchemy/migration.py index 4ac9d6dc..22c73457 100644 --- a/heat/db/sqlalchemy/migration.py +++ b/heat/db/sqlalchemy/migration.py @@ -15,7 +15,9 @@ import distutils.version as dist_version import os import sys + from heat.db.sqlalchemy.session import get_engine +from heat.db import migration import sqlalchemy import migrate @@ -81,20 +83,18 @@ def db_version(): repository = _find_migrate_repo() try: return versioning_api.db_version(get_engine(), repository) - except versioning_exceptions.DatabaseNotControlledError: - # If we aren't version controlled we may already have the database - # in the state from before we started version control, check for that - # and set up version_control appropriately + except versioning_exceptions.DatabaseNotControlledError as exc: + # If we aren't version controlled there may be an existing, + # non-version controlled database present. meta = sqlalchemy.MetaData() engine = get_engine() meta.reflect(bind=engine) - try: - for table in ('stack', 'resource', 'event', - 'parsed_template', 'raw_template'): - assert table in meta.tables - return db_version_control(1) - except AssertionError: - return db_version_control(0) + tables = meta.tables + if len(tables): + raise exc + + db_version_control(migration.INIT_VERSION) + return versioning_api.db_version(get_engine(), repository) def db_version_control(version=None): -- 2.45.2