diff --git a/glance_store/multi_backend.py b/glance_store/multi_backend.py index e53222fb..5c7b85e3 100644 --- a/glance_store/multi_backend.py +++ b/glance_store/multi_backend.py @@ -331,6 +331,34 @@ def verify_store(): raise RuntimeError(msg) +def get_store_weight(store_identifier): + """Determine backing store weightage from identifier. + + Given a store identifier, return the appropriate weight of store + from memory. + """ + enabled_backends = CONF.enabled_backends + enabled_backends.update(_RESERVED_STORES) + + try: + scheme = enabled_backends[store_identifier] + except KeyError: + msg = _("Store for identifier %s not found") % store_identifier + raise exceptions.UnknownScheme(msg) + + try: + backend_map = location.SCHEME_TO_CLS_BACKEND_MAP[scheme] + scheme_info = backend_map[store_identifier] + except KeyError: + raise exceptions.UnknownScheme(scheme=scheme) + + store = scheme_info['store'] + if store: + return store.weight + + return 0 + + def get_store_from_store_identifier(store_identifier): """Determine backing store from identifier.