summaryrefslogtreecommitdiff
path: root/oslo_db/sqlalchemy/migration_cli/manager.py
diff options
context:
space:
mode:
Diffstat (limited to 'oslo_db/sqlalchemy/migration_cli/manager.py')
-rw-r--r--oslo_db/sqlalchemy/migration_cli/manager.py15
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: