Skip to content

Commit

Permalink
Add interface to get store weight from memory
Browse files Browse the repository at this point in the history
Some of the available glance stores like file, cinder etc has
capability to reuse already initiated driver
(DRIVER_REUSABLE = 0b01000000). In Caracal we have added a
feature to sort image locations based on store weight. As RBD
driver of glance does not have this reuse capability, during
image list API call it initializes the RBD driver for each of
the available image which is causing noticable delay in list
call.

To avoid this, introducing new interface in glance_store which
will directly get the weight of the store from memory and return
it back to user.

NOTE: Since the current module does not have any test coverage,
corresponding tests will be added in glance once we release
glance_store with this change.

Related-Bug: #2086675
Change-Id: If6861f3271f50680af271090b516f2add6e392b9
(cherry picked from commit bb45873)
  • Loading branch information
konan-abhi authored and bbezak committed Feb 6, 2025
1 parent 54020a8 commit 8a25e10
Showing 1 changed file with 28 additions and 0 deletions.
28 changes: 28 additions & 0 deletions glance_store/multi_backend.py
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand Down

0 comments on commit 8a25e10

Please sign in to comment.