¡@

Home 

OpenStack Study: cache.py

OpenStack Index

**** CubicPower OpenStack Study ****

def _get_olso_configs():

    """Returns the oslo.config options to register."""

    # NOTE(flaper87): Oslo config should be

    # optional. Instead of doing try / except

    # at the top of this file, lets import cfg

    # here and assume that the caller of this

    # function already took care of this dependency.

    from oslo.config import cfg

    return [

        cfg.StrOpt('cache_url', default='memory://',

                   help='URL to connect to the cache back end.')

    ]

**** CubicPower OpenStack Study ****

def register_oslo_configs(conf):

    """Registers a cache configuration options

    :params conf: Config object.

    :type conf: `cfg.ConfigOptions`

    """

    conf.register_opts(_get_olso_configs())

**** CubicPower OpenStack Study ****

def get_cache(url='memory://'):

    """Loads the cache backend

    This function loads the cache backend

    specified in the given configuration.

    :param conf: Configuration instance to use

    """

    parsed = parse.urlparse(url)

    backend = parsed.scheme

    query = parsed.query

    # NOTE(flaper87): We need the following hack

    # for python versions < 2.7.5. Previous versions

    # of python parsed query params just for 'known'

    # schemes. This was changed in this patch:

    # http://hg.python.org/cpython/rev/79e6ff3d9afd

    if not query and '?' in parsed.path:

        query = parsed.path.split('?', 1)[-1]

    parameters = parse.parse_qsl(query)

    kwargs = {'options': dict(parameters)}

    mgr = driver.DriverManager('neutron.openstack.common.cache.backends', backend,

                               invoke_on_load=True,

                               invoke_args=[parsed],

                               invoke_kwds=kwargs)

    return mgr.driver