|
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