Skip to content

Commit 8133092

Browse files
committed
Remove use of pkg_resources
Use of this library has significant performance implications. While we're probably not too badly affected, we don't actually need to use it here. The 'parse_version' utility it exposes is intended to parse PEP440-compliant version identifiers, not the simple microversions placement uses, which the 'microversion_parse' library can competently parse for us. Change-Id: I9b7281caec6fa53600dea316492d052787cf799b Signed-off-by: Stephen Finucane <[email protected]>
1 parent de65131 commit 8133092

File tree

2 files changed

+11
-10
lines changed

2 files changed

+11
-10
lines changed

nova/cmd/status.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,10 +21,10 @@
2121
import traceback
2222

2323
from keystoneauth1 import exceptions as ks_exc
24+
import microversion_parse
2425
from oslo_config import cfg
2526
from oslo_upgradecheck import common_checks
2627
from oslo_upgradecheck import upgradecheck
27-
import pkg_resources
2828
import sqlalchemy as sa
2929
from sqlalchemy import func as sqlfunc
3030

@@ -175,9 +175,9 @@ def _check_placement(self):
175175
try:
176176
# TODO(efried): Use ksa's version filtering in _placement_get
177177
versions = self._placement_get("/")
178-
max_version = pkg_resources.parse_version(
178+
max_version = microversion_parse.parse_version_string(
179179
versions["versions"][0]["max_version"])
180-
needs_version = pkg_resources.parse_version(
180+
needs_version = microversion_parse.parse_version_string(
181181
MIN_PLACEMENT_MICROVERSION)
182182
if max_version < needs_version:
183183
msg = (_('Placement API version %(needed)s needed, '

nova/tests/functional/test_report_client.py

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -14,11 +14,11 @@
1414
import copy
1515
import ddt
1616
from keystoneauth1 import exceptions as kse
17+
import microversion_parse
1718
import mock
1819
import os_resource_classes as orc
1920
import os_traits as ot
2021
from oslo_utils.fixture import uuidsentinel as uuids
21-
import pkg_resources
2222

2323
from nova.cmd import status
2424
from nova.compute import provider_tree
@@ -39,9 +39,6 @@
3939

4040
CONF = conf.CONF
4141

42-
CMD_STATUS_MIN_MICROVERSION = pkg_resources.parse_version(
43-
status.MIN_PLACEMENT_MICROVERSION)
44-
4542

4643
class VersionCheckingReportClient(report.SchedulerReportClient):
4744
"""This wrapper around SchedulerReportClient checks microversions for
@@ -57,14 +54,18 @@ def _check_microversion(kwargs):
5754
if not microversion:
5855
return
5956

60-
seen_microversion = pkg_resources.parse_version(microversion)
61-
if seen_microversion > CMD_STATUS_MIN_MICROVERSION:
57+
min_microversion = microversion_parse.parse_version_string(
58+
status.MIN_PLACEMENT_MICROVERSION)
59+
got_microversion = microversion_parse.parse_version_string(
60+
microversion)
61+
if got_microversion > min_microversion:
6262
raise ValueError(
6363
"Report client is using microversion %s, but nova.cmd.status "
6464
"is only requiring %s. See "
6565
"I4369f7fb1453e896864222fa407437982be8f6b5 for an example of "
6666
"how to bump the minimum requirement." %
67-
(microversion, status.MIN_PLACEMENT_MICROVERSION))
67+
(got_microversion, min_microversion)
68+
)
6869

6970
def get(self, *args, **kwargs):
7071
self._check_microversion(kwargs)

0 commit comments

Comments
 (0)