Sync up plugin code from Moniker
Use the get_plugin of StorageEngine instead Add get_plugin() to Plugin Change-Id: Icc52b65d7ce98d19da54ffaac523d729feffdeb6
This commit is contained in:
parent
1ad51d967a
commit
a69b12e620
|
@ -14,6 +14,7 @@
|
||||||
# License for the specific language governing permissions and limitations
|
# License for the specific language governing permissions and limitations
|
||||||
# under the License.
|
# under the License.
|
||||||
import abc
|
import abc
|
||||||
|
from stevedore import driver
|
||||||
|
|
||||||
from bufunfa.openstack.common import cfg
|
from bufunfa.openstack.common import cfg
|
||||||
from bufunfa.openstack.common import log as logging
|
from bufunfa.openstack.common import log as logging
|
||||||
|
@ -42,6 +43,22 @@ class Plugin(object):
|
||||||
"""
|
"""
|
||||||
return True
|
return True
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def get_plugin(cls, name, ns=None, conf=None, invoke_on_load=False,
|
||||||
|
invoke_args=(), invoke_kwds={}):
|
||||||
|
"""
|
||||||
|
Load a plugin from namespace
|
||||||
|
"""
|
||||||
|
ns = ns or cls.__plugin_ns__
|
||||||
|
if ns is None:
|
||||||
|
raise RuntimeError('No namespace provided or __plugin_ns__ unset')
|
||||||
|
LOG.debug('Looking for plugin %s in %s', name, ns)
|
||||||
|
mgr = driver.DriverManager(ns, name)
|
||||||
|
if conf:
|
||||||
|
mgr.driver.register_opts(conf)
|
||||||
|
return mgr.driver(*invoke_args, **invoke_kwds) if invoke_on_load \
|
||||||
|
else mgr.driver
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def get_canonical_name(cls):
|
def get_canonical_name(cls):
|
||||||
"""
|
"""
|
||||||
|
|
|
@ -17,14 +17,12 @@
|
||||||
# under the License.
|
# under the License.
|
||||||
# NOTE(zykes): Copied from Ceilometer
|
# NOTE(zykes): Copied from Ceilometer
|
||||||
from urlparse import urlparse
|
from urlparse import urlparse
|
||||||
from stevedore import driver
|
|
||||||
from bufunfa.openstack.common import cfg
|
from bufunfa.openstack.common import cfg
|
||||||
from bufunfa.openstack.common import log
|
from bufunfa.openstack.common import log
|
||||||
|
from bufunfa.storage.base import StorageEngine
|
||||||
|
|
||||||
LOG = log.getLogger(__name__)
|
LOG = log.getLogger(__name__)
|
||||||
|
|
||||||
DRIVER_NAMESPACE = 'bufunfa.storage'
|
|
||||||
|
|
||||||
cfg.CONF.register_opts([
|
cfg.CONF.register_opts([
|
||||||
cfg.StrOpt('database_connection',
|
cfg.StrOpt('database_connection',
|
||||||
default='sqlite:///$state_path/bufunfa.db',
|
default='sqlite:///$state_path/bufunfa.db',
|
||||||
|
@ -42,13 +40,8 @@ def get_engine_name(string):
|
||||||
def get_engine(conf):
|
def get_engine(conf):
|
||||||
scheme = urlparse(conf.database_connection).scheme
|
scheme = urlparse(conf.database_connection).scheme
|
||||||
engine_name = get_engine_name(scheme)
|
engine_name = get_engine_name(scheme)
|
||||||
LOG.debug('looking for %r engine in %r', engine_name, DRIVER_NAMESPACE)
|
return StorageEngine.get_plugin(
|
||||||
mgr = driver.DriverManager(
|
engine_name, conf=conf, invoke_on_load=True)
|
||||||
DRIVER_NAMESPACE,
|
|
||||||
engine_name,
|
|
||||||
invoke_on_load=False)
|
|
||||||
mgr.driver.register_opts(conf)
|
|
||||||
return mgr.driver()
|
|
||||||
|
|
||||||
|
|
||||||
def get_connection(conf):
|
def get_connection(conf):
|
||||||
|
|
|
@ -23,6 +23,7 @@ class StorageEngine(Plugin):
|
||||||
Base class for storage engines
|
Base class for storage engines
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
__plugin_ns__ = 'bufunfa.storage'
|
||||||
__plugin_type__ = 'storage'
|
__plugin_type__ = 'storage'
|
||||||
|
|
||||||
@abc.abstractmethod
|
@abc.abstractmethod
|
||||||
|
|
Loading…
Reference in New Issue