Establish an initial version of the database
Adapted from Nova commit ee2f6f1bed21a5ef92d84634cd4e949062073d62. This will allow us to squash database migrations. Change-Id: Icede692e4cc866cd27bae3aaa19c1f2466b989d0
This commit is contained in:
parent
6d5007e732
commit
f6a024be81
|
@ -20,6 +20,8 @@ from heat.db import utils
|
||||||
IMPL = utils.LazyPluggable('db_backend',
|
IMPL = utils.LazyPluggable('db_backend',
|
||||||
sqlalchemy='heat.db.sqlalchemy.migration')
|
sqlalchemy='heat.db.sqlalchemy.migration')
|
||||||
|
|
||||||
|
INIT_VERSION = 0
|
||||||
|
|
||||||
|
|
||||||
def db_sync(version=None):
|
def db_sync(version=None):
|
||||||
"""Migrate the database to `version` or the most recent version."""
|
"""Migrate the database to `version` or the most recent version."""
|
||||||
|
|
|
@ -15,7 +15,9 @@
|
||||||
import distutils.version as dist_version
|
import distutils.version as dist_version
|
||||||
import os
|
import os
|
||||||
import sys
|
import sys
|
||||||
|
|
||||||
from heat.db.sqlalchemy.session import get_engine
|
from heat.db.sqlalchemy.session import get_engine
|
||||||
|
from heat.db import migration
|
||||||
|
|
||||||
import sqlalchemy
|
import sqlalchemy
|
||||||
import migrate
|
import migrate
|
||||||
|
@ -81,20 +83,18 @@ def db_version():
|
||||||
repository = _find_migrate_repo()
|
repository = _find_migrate_repo()
|
||||||
try:
|
try:
|
||||||
return versioning_api.db_version(get_engine(), repository)
|
return versioning_api.db_version(get_engine(), repository)
|
||||||
except versioning_exceptions.DatabaseNotControlledError:
|
except versioning_exceptions.DatabaseNotControlledError as exc:
|
||||||
# If we aren't version controlled we may already have the database
|
# If we aren't version controlled there may be an existing,
|
||||||
# in the state from before we started version control, check for that
|
# non-version controlled database present.
|
||||||
# and set up version_control appropriately
|
|
||||||
meta = sqlalchemy.MetaData()
|
meta = sqlalchemy.MetaData()
|
||||||
engine = get_engine()
|
engine = get_engine()
|
||||||
meta.reflect(bind=engine)
|
meta.reflect(bind=engine)
|
||||||
try:
|
tables = meta.tables
|
||||||
for table in ('stack', 'resource', 'event',
|
if len(tables):
|
||||||
'parsed_template', 'raw_template'):
|
raise exc
|
||||||
assert table in meta.tables
|
|
||||||
return db_version_control(1)
|
db_version_control(migration.INIT_VERSION)
|
||||||
except AssertionError:
|
return versioning_api.db_version(get_engine(), repository)
|
||||||
return db_version_control(0)
|
|
||||||
|
|
||||||
|
|
||||||
def db_version_control(version=None):
|
def db_version_control(version=None):
|
||||||
|
|
Loading…
Reference in New Issue