From 5ce208d4724be89bc3798c129989c691395d4a8a Mon Sep 17 00:00:00 2001 From: Oleksii Chuprykov Date: Thu, 20 Nov 2014 18:13:16 +0200 Subject: [PATCH] Do not use LazyPluggable LazyPluggable was removed but was not replaced in all places of use. Closes-Bug: #1394641 Change-Id: Ie5bb32e409a6abce0509adb6e035c533547bb1f5 --- glance/db/metadata.py | 37 +++++++++++++++++++++++++++---------- setup.cfg | 2 ++ 2 files changed, 29 insertions(+), 10 deletions(-) diff --git a/glance/db/metadata.py b/glance/db/metadata.py index 4917993a22..1b10fa67fe 100644 --- a/glance/db/metadata.py +++ b/glance/db/metadata.py @@ -19,27 +19,44 @@ """Metadata setup commands.""" -from glance.common import utils +import threading + +from oslo.config import cfg +from oslo import db +from stevedore import driver + from glance.db.sqlalchemy import api as db_api -IMPL = utils.LazyPluggable( - 'backend', - config_group='database', - sqlalchemy='glance.db.sqlalchemy.metadata') + +_IMPL = None +_LOCK = threading.Lock() + +db.options.set_defaults(cfg.CONF) + + +def get_backend(): + global _IMPL + if _IMPL is None: + with _LOCK: + if _IMPL is None: + _IMPL = driver.DriverManager( + "glance.database.metadata_backend", + cfg.CONF.database.backend).driver + return _IMPL def load_metadefs(): """Read metadefinition files and insert data into the database""" - return IMPL.db_load_metadefs(engine=db_api.get_engine(), - metadata_path=None) + return get_backend().db_load_metadefs(engine=db_api.get_engine(), + metadata_path=None) def unload_metadefs(): """Unload metadefinitions from database""" - return IMPL.db_unload_metadefs(engine=db_api.get_engine()) + return get_backend().db_unload_metadefs(engine=db_api.get_engine()) def export_metadefs(): """Export metadefinitions from database to files""" - return IMPL.db_export_metadefs(engine=db_api.get_engine(), - metadata_path=None) + return get_backend().db_export_metadefs(engine=db_api.get_engine(), + metadata_path=None) diff --git a/setup.cfg b/setup.cfg index ea225a7f93..df002605b0 100644 --- a/setup.cfg +++ b/setup.cfg @@ -45,6 +45,8 @@ oslo.config.opts = glance.manage = glance.opts:list_manage_opts glance.database.migration_backend = sqlalchemy = oslo.db.sqlalchemy.migration +glance.database.metadata_backend = + sqlalchemy = glance.db.sqlalchemy.metadata [build_sphinx] all_files = 1