diff options
Diffstat (limited to 'oslo_db/sqlalchemy/migration_cli/manager.py')
-rw-r--r-- | oslo_db/sqlalchemy/migration_cli/manager.py | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/oslo_db/sqlalchemy/migration_cli/manager.py b/oslo_db/sqlalchemy/migration_cli/manager.py index bda3c2a..9b55887 100644 --- a/oslo_db/sqlalchemy/migration_cli/manager.py +++ b/oslo_db/sqlalchemy/migration_cli/manager.py @@ -10,6 +10,7 @@ # License for the specific language governing permissions and limitations # under the License. +import sqlalchemy from stevedore import enabled @@ -23,11 +24,21 @@ def check_plugin_enabled(ext): class MigrationManager(object): - def __init__(self, migration_config): + def __init__(self, migration_config, engine=None): + if engine is None: + if migration_config.get('db_url'): + engine = sqlalchemy.create_engine( + migration_config['db_url'], + poolclass=sqlalchemy.pool.NullPool, + ) + else: + raise ValueError('Either database url or engine' + ' must be provided.') + self._manager = enabled.EnabledExtensionManager( MIGRATION_NAMESPACE, check_plugin_enabled, - invoke_kwds={'migration_config': migration_config}, + invoke_args=(engine, migration_config), invoke_on_load=True ) if not self._plugins: |