]> review.fuel-infra Code Review - openstack-build/heat-build.git/commitdiff
Establish an initial version of the database
authorZane Bitter <zbitter@redhat.com>
Mon, 11 Mar 2013 15:54:21 +0000 (16:54 +0100)
committerZane Bitter <zbitter@redhat.com>
Mon, 11 Mar 2013 16:36:06 +0000 (17:36 +0100)
Adapted from Nova commit ee2f6f1bed21a5ef92d84634cd4e949062073d62. This
will allow us to squash database migrations.

Change-Id: Icede692e4cc866cd27bae3aaa19c1f2466b989d0

heat/db/migration.py
heat/db/sqlalchemy/migration.py

index deaa2d4424f07dbb190dec6854b31bd12f804696..fb44022179bcd9c25091a94536a3f2898ba6410d 100644 (file)
@@ -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."""
index 4ac9d6dcdfbd90c26eee7cfc5d6ab452bfd69975..22c7345760f2743444a3eac634107f72dd669511 100644 (file)
@@ -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):