argus-alm 0.15.8__py3-none-any.whl → 0.15.10__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
argus/_version.py CHANGED
@@ -28,7 +28,7 @@ version_tuple: VERSION_TUPLE
28
28
  commit_id: COMMIT_ID
29
29
  __commit_id__: COMMIT_ID
30
30
 
31
- __version__ = version = '0.15.8'
32
- __version_tuple__ = version_tuple = (0, 15, 8)
31
+ __version__ = version = '0.15.10'
32
+ __version_tuple__ = version_tuple = (0, 15, 10)
33
33
 
34
34
  __commit_id__ = commit_id = None
argus/client/base.py CHANGED
@@ -5,6 +5,8 @@ from typing import Any, Type
5
5
  from uuid import UUID
6
6
 
7
7
  import requests
8
+ from requests.adapters import HTTPAdapter
9
+ from urllib3.util.retry import Retry
8
10
 
9
11
  from argus.common.enums import TestStatus
10
12
  from argus.client.generic_result import GenericResultTable
@@ -33,11 +35,30 @@ class ArgusClient:
33
35
  FETCH_RESULTS = "/testrun/$type/$id/fetch_results"
34
36
  FINALIZE = "/testrun/$type/$id/finalize"
35
37
 
36
- def __init__(self, auth_token: str, base_url: str, api_version="v1", extra_headers: dict | None = None) -> None:
38
+ def __init__(self, auth_token: str, base_url: str, api_version="v1", extra_headers: dict | None = None,
39
+ timeout: int = 60, max_retries: int = 3) -> None:
37
40
  self._auth_token = auth_token
38
41
  self._base_url = base_url
39
42
  self._api_ver = api_version
43
+ self._timeout = timeout
40
44
  self.session = requests.Session()
45
+
46
+ # Configure retry strategy
47
+ retry_strategy = Retry(
48
+ total=max_retries,
49
+ connect=max_retries,
50
+ read=max_retries,
51
+ status=0,
52
+ backoff_factor=1,
53
+ status_forcelist=(),
54
+ allowed_methods=["GET"],
55
+ )
56
+
57
+ # Mount adapter with retry strategy for both http and https
58
+ adapter = HTTPAdapter(max_retries=retry_strategy)
59
+ self.session.mount("http://", adapter)
60
+ self.session.mount("https://", adapter)
61
+
41
62
  if extra_headers:
42
63
  self.session.headers.update(extra_headers)
43
64
 
@@ -101,7 +122,8 @@ class ArgusClient:
101
122
  response = self.session.get(
102
123
  url=url,
103
124
  params=params,
104
- headers=self.request_headers
125
+ headers=self.request_headers,
126
+ timeout=self._timeout
105
127
  )
106
128
  LOGGER.debug("GET Response: %s %s", response.status_code, response.url)
107
129
 
@@ -124,6 +146,7 @@ class ArgusClient:
124
146
  params=params,
125
147
  json=body,
126
148
  headers=self.request_headers,
149
+ timeout=self._timeout
127
150
  )
128
151
  LOGGER.debug("POST Response: %s %s", response.status_code, response.url)
129
152
 
@@ -12,8 +12,10 @@ class ArgusDriverMatrixClient(ArgusClient):
12
12
  SUBMIT_DRIVER_FAILURE = "/driver_matrix/result/fail"
13
13
  SUBMIT_ENV = "/driver_matrix/env/submit"
14
14
 
15
- def __init__(self, run_id: UUID, auth_token: str, base_url: str, api_version="v1", extra_headers: dict | None = None) -> None:
16
- super().__init__(auth_token, base_url, api_version, extra_headers=extra_headers)
15
+ def __init__(self, run_id: UUID, auth_token: str, base_url: str, api_version="v1", extra_headers: dict | None = None,
16
+ timeout: int = 60, max_retries: int = 3) -> None:
17
+ super().__init__(auth_token, base_url, api_version, extra_headers=extra_headers,
18
+ timeout=timeout, max_retries=max_retries)
17
19
  self.run_id = run_id
18
20
 
19
21
  def submit_driver_matrix_run(self, job_name: str, job_url: str) -> None:
@@ -12,8 +12,10 @@ class ArgusGenericClient(ArgusClient):
12
12
  class Routes(ArgusClient.Routes):
13
13
  TRIGGER_JOBS = "/planning/plan/trigger"
14
14
 
15
- def __init__(self, auth_token: str, base_url: str, api_version="v1", extra_headers: dict | None = None) -> None:
16
- super().__init__(auth_token, base_url, api_version, extra_headers=extra_headers)
15
+ def __init__(self, auth_token: str, base_url: str, api_version="v1", extra_headers: dict | None = None,
16
+ timeout: int = 180, max_retries: int = 3) -> None:
17
+ super().__init__(auth_token, base_url, api_version, extra_headers=extra_headers,
18
+ timeout=timeout, max_retries=max_retries)
17
19
 
18
20
  def submit_generic_run(self, build_id: str, run_id: str, started_by: str, build_url: str, sub_type: str = None, scylla_version: str | None = None):
19
21
  request_body = {
@@ -28,10 +28,12 @@ class ArgusSCTClient(ArgusClient):
28
28
  SUBMIT_EVENTS = "/sct/$id/events/submit"
29
29
  SUBMIT_EVENT = "/sct/$id/event/submit"
30
30
  SUBMIT_JUNIT_REPORT = "/sct/$id/junit/submit"
31
- SUBMIT_EMAIL = "/testrun/report"
31
+ SUBMIT_EMAIL = "/testrun/report/email"
32
32
 
33
- def __init__(self, run_id: UUID, auth_token: str, base_url: str, api_version="v1", extra_headers: dict | None = None) -> None:
34
- super().__init__(auth_token, base_url, api_version, extra_headers=extra_headers)
33
+ def __init__(self, run_id: UUID, auth_token: str, base_url: str, api_version="v1", extra_headers: dict | None = None,
34
+ timeout: int = 60, max_retries: int = 3) -> None:
35
+ super().__init__(auth_token, base_url, api_version, extra_headers=extra_headers,
36
+ timeout=timeout, max_retries=max_retries)
35
37
  self.run_id = run_id
36
38
 
37
39
  def submit_sct_run(self, job_name: str, job_url: str, started_by: str, commit_id: str,
@@ -45,9 +45,11 @@ class ArgusSirenadaClient(ArgusClient):
45
45
  "skipped": "skipped"
46
46
  }
47
47
 
48
- def __init__(self, auth_token: str, base_url: str, api_version="v1", extra_headers: dict | None = None) -> None:
48
+ def __init__(self, auth_token: str, base_url: str, api_version="v1", extra_headers: dict | None = None,
49
+ timeout: int = 60, max_retries: int = 3) -> None:
49
50
  self.results_path: Path | None = None
50
- super().__init__(auth_token, base_url, api_version, extra_headers=extra_headers)
51
+ super().__init__(auth_token, base_url, api_version, extra_headers=extra_headers,
52
+ timeout=timeout, max_retries=max_retries)
51
53
 
52
54
  def _verify_required_files_exist(self, results_path: Path):
53
55
  assert (results_path / self._junit_xml_filename).exists(), "Missing jUnit XML results file!"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: argus-alm
3
- Version: 0.15.8
3
+ Version: 0.15.10
4
4
  Summary: Argus
5
5
  Author-email: Alexey Kartashov <alexey.kartashov@scylladb.com>, Łukasz Sójka <lukasz.sojka@scylladb.com>
6
6
  License-Expression: Apache-2.0
@@ -24,6 +24,7 @@ Requires-Dist: python-jenkins>=1.7.0; extra == "web-backend"
24
24
  Requires-Dist: python-slugify~=6.1.1; extra == "web-backend"
25
25
  Requires-Dist: pygithub>=2.6.1; extra == "web-backend"
26
26
  Requires-Dist: boto3~=1.38.9; extra == "web-backend"
27
+ Requires-Dist: jira>=3.10.5; extra == "web-backend"
27
28
  Requires-Dist: prometheus-flask-exporter>=0.23.2; extra == "web-backend"
28
29
  Provides-Extra: docker-image
29
30
  Requires-Dist: supervisor~=4.2.4; extra == "docker-image"
@@ -0,0 +1,23 @@
1
+ argus/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2
+ argus/_version.py,sha256=4uVtcREcPon7-Lck4ArrQWHqvO4Y03ptuPD8QKqRhSM,708
3
+ argus/client/__init__.py,sha256=bO9_j5_jK5kvTHR46KEZ0Y-p0li7CBW8QSd-K5Ez4vA,42
4
+ argus/client/base.py,sha256=M39ShKHcyIlpnFkvHgzpyUUBAf5BTTocYR8qOVg0pHA,9178
5
+ argus/client/generic_result.py,sha256=9D0zrpfEDiIL7PjL12TZnqk5Mi_1T1UvesF5wWeMfz0,6264
6
+ argus/client/driver_matrix_tests/cli.py,sha256=JpI0v1hzRQr9KkrxO7D4hEbkzumexFFC_iRM8558zHU,8375
7
+ argus/client/driver_matrix_tests/client.py,sha256=6wRRDO8tyM_1c3cP0vD-I4xkI8wKczb6-NPE-yvqy1g,2931
8
+ argus/client/generic/cli.py,sha256=jsdSwzwzefX1POyrZ4lFTRcjWPmTauuXBGjceM54Zk4,4707
9
+ argus/client/generic/client.py,sha256=-OLeLyXN5BBrv-QouDYH3IL3W17BhywiUrLEBA-CJzw,2097
10
+ argus/client/sct/client.py,sha256=oKm-tdH-HS6wrK0kcYzKfLYnhhwJW7J89lk3Hsj5sOw,12997
11
+ argus/client/sct/types.py,sha256=VLgVe7qPmJtCLqtPnuX8N8kMKZq-iY3SKz68nvU6nJ4,371
12
+ argus/client/sirenada/client.py,sha256=RGgx4uSGI3LN55gJC4-DbCamVidA8IE2CQmU3-P9tx8,6446
13
+ argus/common/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
14
+ argus/common/email.py,sha256=YUgin4yA3-1bH6HbtXIh09SLAzYSzSJPKM9sIvroAMA,842
15
+ argus/common/enums.py,sha256=FM308aseXxsaeOqoiyM-NIDWKHpbceLysd-sLDh7TkI,1287
16
+ argus/common/sct_types.py,sha256=GX0S1_eH3eBOO17WqBVtsDKzz86vgL2VUM7gi9Cjrmc,1649
17
+ argus/common/sirenada_types.py,sha256=CZH2JXA1KYUj29eXYe8rIAAWdN1XPqOsDPAXvM25bVQ,698
18
+ argus_alm-0.15.10.dist-info/licenses/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
19
+ argus_alm-0.15.10.dist-info/METADATA,sha256=YT8S9y6TQ5eAjT3ovSyLWGsRUrTORZlxgb9EhsPip8I,5151
20
+ argus_alm-0.15.10.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
21
+ argus_alm-0.15.10.dist-info/entry_points.txt,sha256=5mSBLLPndhFHKY5M9SCF8WhDBAArrj-S2IL-uoiaJiE,140
22
+ argus_alm-0.15.10.dist-info/top_level.txt,sha256=Pea173vTU-Et8xmNCctS34REW4cH0Xmjyiztu0HuM0c,6
23
+ argus_alm-0.15.10.dist-info/RECORD,,
@@ -1,23 +0,0 @@
1
- argus/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2
- argus/_version.py,sha256=OZz2ObefAkpiEMaFTa9SJuKISgl89HYDOVrF-rvuYh8,706
3
- argus/client/__init__.py,sha256=bO9_j5_jK5kvTHR46KEZ0Y-p0li7CBW8QSd-K5Ez4vA,42
4
- argus/client/base.py,sha256=FZ9-quDXwViWbz892XnuZlWJiAmzpnTgvkRXV9i8HlE,8423
5
- argus/client/generic_result.py,sha256=9D0zrpfEDiIL7PjL12TZnqk5Mi_1T1UvesF5wWeMfz0,6264
6
- argus/client/driver_matrix_tests/cli.py,sha256=JpI0v1hzRQr9KkrxO7D4hEbkzumexFFC_iRM8558zHU,8375
7
- argus/client/driver_matrix_tests/client.py,sha256=fFucqwog6WnDnje1xB-4ERfwHXblXP4upmtt9RtOkls,2806
8
- argus/client/generic/cli.py,sha256=jsdSwzwzefX1POyrZ4lFTRcjWPmTauuXBGjceM54Zk4,4707
9
- argus/client/generic/client.py,sha256=3MONtLIcF7rZ5x5OaAQKi4YGHCHb3-9ooCUhWtKs4C4,1971
10
- argus/client/sct/client.py,sha256=3qn_2ioFEleg8XzZWXFvythTIpCwMPvLzXMBxf57fR8,12866
11
- argus/client/sct/types.py,sha256=VLgVe7qPmJtCLqtPnuX8N8kMKZq-iY3SKz68nvU6nJ4,371
12
- argus/client/sirenada/client.py,sha256=lzhmBFAUnvPSAJfCjeQ0L5nbp50Q0YLHwIondO9rvt4,6321
13
- argus/common/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
14
- argus/common/email.py,sha256=YUgin4yA3-1bH6HbtXIh09SLAzYSzSJPKM9sIvroAMA,842
15
- argus/common/enums.py,sha256=FM308aseXxsaeOqoiyM-NIDWKHpbceLysd-sLDh7TkI,1287
16
- argus/common/sct_types.py,sha256=GX0S1_eH3eBOO17WqBVtsDKzz86vgL2VUM7gi9Cjrmc,1649
17
- argus/common/sirenada_types.py,sha256=CZH2JXA1KYUj29eXYe8rIAAWdN1XPqOsDPAXvM25bVQ,698
18
- argus_alm-0.15.8.dist-info/licenses/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
19
- argus_alm-0.15.8.dist-info/METADATA,sha256=fn-TaUp-ZELmGImVprz5aQxhcvm-vTPd9o9I9ZYF1bI,5098
20
- argus_alm-0.15.8.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
21
- argus_alm-0.15.8.dist-info/entry_points.txt,sha256=5mSBLLPndhFHKY5M9SCF8WhDBAArrj-S2IL-uoiaJiE,140
22
- argus_alm-0.15.8.dist-info/top_level.txt,sha256=Pea173vTU-Et8xmNCctS34REW4cH0Xmjyiztu0HuM0c,6
23
- argus_alm-0.15.8.dist-info/RECORD,,