Merge "Replace custom lazy loading by stevedore"
This commit is contained in:
commit
fc93159233
@ -145,41 +145,6 @@ def random_alnum(size=32):
|
|||||||
return ''.join(random.choice(characters) for _ in range(size))
|
return ''.join(random.choice(characters) for _ in range(size))
|
||||||
|
|
||||||
|
|
||||||
class LazyPluggable(object):
|
|
||||||
"""A pluggable backend loaded lazily based on some value."""
|
|
||||||
|
|
||||||
def __init__(self, pivot, config_group=None, **backends):
|
|
||||||
self.__backends = backends
|
|
||||||
self.__pivot = pivot
|
|
||||||
self.__backend = None
|
|
||||||
self.__config_group = config_group
|
|
||||||
|
|
||||||
def __get_backend(self):
|
|
||||||
if not self.__backend:
|
|
||||||
if self.__config_group is None:
|
|
||||||
backend_name = CONF[self.__pivot]
|
|
||||||
else:
|
|
||||||
backend_name = CONF[self.__config_group][self.__pivot]
|
|
||||||
if backend_name not in self.__backends:
|
|
||||||
msg = _('Invalid backend: %s') % backend_name
|
|
||||||
raise exception.IronicException(msg)
|
|
||||||
|
|
||||||
backend = self.__backends[backend_name]
|
|
||||||
if isinstance(backend, tuple):
|
|
||||||
name = backend[0]
|
|
||||||
fromlist = backend[1]
|
|
||||||
else:
|
|
||||||
name = backend
|
|
||||||
fromlist = backend
|
|
||||||
|
|
||||||
self.__backend = __import__(name, None, None, fromlist)
|
|
||||||
return self.__backend
|
|
||||||
|
|
||||||
def __getattr__(self, key):
|
|
||||||
backend = self.__get_backend()
|
|
||||||
return getattr(backend, key)
|
|
||||||
|
|
||||||
|
|
||||||
def delete_if_exists(pathname):
|
def delete_if_exists(pathname):
|
||||||
"""delete a file, but ignore file not found error."""
|
"""delete a file, but ignore file not found error."""
|
||||||
|
|
||||||
|
@ -16,34 +16,41 @@
|
|||||||
|
|
||||||
"""Database setup and migration commands."""
|
"""Database setup and migration commands."""
|
||||||
|
|
||||||
from ironic.common import utils
|
from oslo.config import cfg
|
||||||
|
from stevedore import driver
|
||||||
|
|
||||||
IMPL = utils.LazyPluggable(
|
_IMPL = None
|
||||||
pivot='backend',
|
|
||||||
config_group='database',
|
|
||||||
sqlalchemy='ironic.db.sqlalchemy.migration')
|
def get_backend():
|
||||||
|
global _IMPL
|
||||||
|
if not _IMPL:
|
||||||
|
cfg.CONF.import_opt('backend', 'oslo.db.options', group='database')
|
||||||
|
_IMPL = driver.DriverManager("ironic.database.migration_backend",
|
||||||
|
cfg.CONF.database.backend).driver
|
||||||
|
return _IMPL
|
||||||
|
|
||||||
|
|
||||||
def upgrade(version=None):
|
def upgrade(version=None):
|
||||||
"""Migrate the database to `version` or the most recent version."""
|
"""Migrate the database to `version` or the most recent version."""
|
||||||
return IMPL.upgrade(version)
|
return get_backend().upgrade(version)
|
||||||
|
|
||||||
|
|
||||||
def downgrade(version=None):
|
def downgrade(version=None):
|
||||||
return IMPL.downgrade(version)
|
return get_backend().downgrade(version)
|
||||||
|
|
||||||
|
|
||||||
def version():
|
def version():
|
||||||
return IMPL.version()
|
return get_backend().version()
|
||||||
|
|
||||||
|
|
||||||
def stamp(version):
|
def stamp(version):
|
||||||
return IMPL.stamp(version)
|
return get_backend().stamp(version)
|
||||||
|
|
||||||
|
|
||||||
def revision(message, autogenerate):
|
def revision(message, autogenerate):
|
||||||
return IMPL.revision(message, autogenerate)
|
return get_backend().revision(message, autogenerate)
|
||||||
|
|
||||||
|
|
||||||
def create_schema():
|
def create_schema():
|
||||||
return IMPL.create_schema()
|
return get_backend().create_schema()
|
||||||
|
@ -60,6 +60,9 @@ ironic.drivers =
|
|||||||
pxe_drac = ironic.drivers.drac:PXEDracDriver
|
pxe_drac = ironic.drivers.drac:PXEDracDriver
|
||||||
pxe_snmp = ironic.drivers.pxe:PXEAndSNMPDriver
|
pxe_snmp = ironic.drivers.pxe:PXEAndSNMPDriver
|
||||||
|
|
||||||
|
ironic.database.migration_backend =
|
||||||
|
sqlalchemy = ironic.db.sqlalchemy.migration
|
||||||
|
|
||||||
[pbr]
|
[pbr]
|
||||||
autodoc_index_modules = True
|
autodoc_index_modules = True
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user