From a25e041242dbf772bb872d2d8a19b03ee70c80ca Mon Sep 17 00:00:00 2001 From: Ruslan Kamaldinov Date: Wed, 16 Jul 2014 02:44:02 +0400 Subject: [PATCH] Add version command to murano-db-manage Now we can use "murano-db-manage version" to print current migration version applied to the database. Change-Id: I933faaacd98b85cfa0b86bfc8c2c70d2548ac573 Closes-bug: #1342259 --- murano/cmd/db_manage.py | 6 ++++++ murano/db/migration/migration.py | 12 +++++++++--- murano/tests/db/migration/test_migrations.py | 6 ++++++ 3 files changed, 21 insertions(+), 3 deletions(-) diff --git a/murano/cmd/db_manage.py b/murano/cmd/db_manage.py index 1e0422de..0bb713b1 100644 --- a/murano/cmd/db_manage.py +++ b/murano/cmd/db_manage.py @@ -36,6 +36,9 @@ class DBCommand(object): def stamp(self, config): migration.stamp(CONF.command.revision, config=config) + def version(self, config): + print(migration.version()) + def add_command_parsers(subparsers): command_object = DBCommand() @@ -57,6 +60,9 @@ def add_command_parsers(subparsers): parser.add_argument('--autogenerate', action='store_true') parser.set_defaults(func=command_object.revision) + parser = subparsers.add_parser('version') + parser.set_defaults(func=command_object.version) + command_opt = cfg.SubCommandOpt('command', title='Command', diff --git a/murano/db/migration/migration.py b/murano/db/migration/migration.py index c302c77c..c8cd72eb 100644 --- a/murano/db/migration/migration.py +++ b/murano/db/migration/migration.py @@ -14,6 +14,9 @@ import os import alembic from alembic import config as alembic_config +from alembic import migration as alembic_migration + +from murano.db import session as db_session def get_alembic_config(): @@ -25,9 +28,12 @@ def get_alembic_config(): return config -# TODO(ruhe): implement me -#def version(config=None): -# """Current database version.""" +def version(): + """Returns current database version.""" + engine = db_session.get_engine() + with engine.connect() as conn: + context = alembic_migration.MigrationContext.configure(conn) + return context.get_current_revision() def upgrade(revision, config=None): diff --git a/murano/tests/db/migration/test_migrations.py b/murano/tests/db/migration/test_migrations.py index 70e8b46c..dd1293dd 100644 --- a/murano/tests/db/migration/test_migrations.py +++ b/murano/tests/db/migration/test_migrations.py @@ -17,6 +17,7 @@ import uuid from oslo.config import cfg from sqlalchemy import exc +from murano.db.migration import migration from murano.db import models # noqa from murano.openstack.common.db.sqlalchemy import utils as db_utils from murano.tests.db.migration import test_migrations_base as base @@ -70,6 +71,7 @@ class TestMigrations(base.BaseWalkMigrationTestCase, base.CommonTestsMixIn): self.assertEqual(sorted(members), sorted(index_columns)) def _check_001(self, engine, data): + self.assertEqual('001', migration.version()) self.assertColumnExists(engine, 'category', 'id') self.assertColumnExists(engine, 'environment', 'tenant_id') @@ -112,3 +114,7 @@ class TestMigrations(base.BaseWalkMigrationTestCase, base.CommonTestsMixIn): package['id'] = str(uuid.uuid4()) self.assertRaises(exc.IntegrityError, package_table.insert().execute, package) + + def _check_002(self, engine, data): + self.assertEqual('002', migration.version()) + self.assertColumnExists(engine, 'package', 'supplier_logo')