Add cache for get_microversion() against Nova

Actions "Lock" and "Unlock" of instance on instances table are calling
api.nova.is_feature_available() to check if the feature is supported
by current Nova server. Unfortunately, the function get_microversion()
called by is_feature_available() is not cached, which is causing about
40 unnecesary REST API calls. If the Nova's version is under Mitaka,
it could be even worse, about 80 unnecesary API calls, see
openstack_dashboard/api/nova.py#L60 and
novaclient/v2/versions.py#L47 for more details.

Closes-Bug: #1721423

Change-Id: Ie96b1a35e379d4cf407bfd53b1ee734178f9cb07
This commit is contained in:
Feilong Wang 2017-10-05 14:37:34 +13:00
parent 9adb636437
commit fa2e8327b9
1 changed files with 1 additions and 0 deletions

View File

@ -57,6 +57,7 @@ INSECURE = getattr(settings, 'OPENSTACK_SSL_NO_VERIFY', False)
CACERT = getattr(settings, 'OPENSTACK_SSL_CACERT', None)
@memoized
def get_microversion(request, feature):
client = novaclient(request)
min_ver, max_ver = api_versions._get_server_version_range(client)