|
2 | 2 | import logging |
3 | 3 | import time |
4 | 4 | import warnings |
5 | | -from distutils.version import LooseVersion |
6 | 5 | from typing import Dict, Optional, Tuple, Union |
7 | 6 | from urllib.parse import urlencode |
8 | 7 |
|
9 | 8 | from requests import ReadTimeout |
| 9 | +from verlib2 import Version |
10 | 10 |
|
11 | 11 | from ..client import GrafanaBadInputError, GrafanaClientError, GrafanaServerError |
12 | 12 | from ..knowledge import get_healthcheck_expression, query_factory |
|
15 | 15 |
|
16 | 16 | logger = logging.getLogger(__name__) |
17 | 17 |
|
18 | | -VERSION_9 = LooseVersion("9") |
19 | | -VERSION_8 = LooseVersion("8") |
20 | | -VERSION_7 = LooseVersion("7") |
| 18 | +VERSION_9 = Version("9") |
| 19 | +VERSION_8 = Version("8") |
| 20 | +VERSION_7 = Version("7") |
21 | 21 | VERBOSE = False |
22 | 22 |
|
23 | 23 |
|
@@ -375,7 +375,7 @@ def smartquery( |
375 | 375 | request_kwargs = {} |
376 | 376 | send_request = self.client.GET |
377 | 377 |
|
378 | | - elif datasource_type in ("prometheus", "loki") and LooseVersion(self.api.version) <= VERSION_7: |
| 378 | + elif datasource_type in ("prometheus", "loki") and Version(self.api.version) <= VERSION_7: |
379 | 379 | if ( |
380 | 380 | "queries" in request["data"] |
381 | 381 | and len(request["data"]["queries"]) > 0 |
@@ -490,7 +490,7 @@ def health_check(self, datasource: Union[DatasourceIdentifier, Dict]) -> Datasou |
490 | 490 | message = f"Invalid response. {reason}" |
491 | 491 |
|
492 | 492 | elif datasource_type == "loki": |
493 | | - if self.api.version and VERSION_7 <= LooseVersion(self.api.version) < VERSION_8: |
| 493 | + if self.api.version and VERSION_7 <= Version(self.api.version) < VERSION_8: |
494 | 494 | if "status" in response and response["status"] == "success": |
495 | 495 | message = "Success" |
496 | 496 | success = True |
@@ -607,7 +607,7 @@ def health_inquiry(self, datasource_uid: str) -> DatasourceHealthResponse: |
607 | 607 | start = time.time() |
608 | 608 | raised = True |
609 | 609 | noop = False |
610 | | - if self.api.version and LooseVersion(self.api.version) >= VERSION_9: |
| 610 | + if self.api.version and Version(self.api.version) >= VERSION_9: |
611 | 611 | try: |
612 | 612 | health_native = self.health(datasource_uid=datasource_uid) |
613 | 613 | logger.debug(f"Response from native data source health check: {health_native}") |
|
0 commit comments