argus-alm 0.15.5__py3-none-any.whl → 0.15.7__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
@@ -1,7 +1,14 @@
1
1
  # file generated by setuptools-scm
2
2
  # don't change, don't track in version control
3
3
 
4
- __all__ = ["__version__", "__version_tuple__", "version", "version_tuple"]
4
+ __all__ = [
5
+ "__version__",
6
+ "__version_tuple__",
7
+ "version",
8
+ "version_tuple",
9
+ "__commit_id__",
10
+ "commit_id",
11
+ ]
5
12
 
6
13
  TYPE_CHECKING = False
7
14
  if TYPE_CHECKING:
@@ -9,13 +16,19 @@ if TYPE_CHECKING:
9
16
  from typing import Union
10
17
 
11
18
  VERSION_TUPLE = Tuple[Union[int, str], ...]
19
+ COMMIT_ID = Union[str, None]
12
20
  else:
13
21
  VERSION_TUPLE = object
22
+ COMMIT_ID = object
14
23
 
15
24
  version: str
16
25
  __version__: str
17
26
  __version_tuple__: VERSION_TUPLE
18
27
  version_tuple: VERSION_TUPLE
28
+ commit_id: COMMIT_ID
29
+ __commit_id__: COMMIT_ID
19
30
 
20
- __version__ = version = '0.15.5'
21
- __version_tuple__ = version_tuple = (0, 15, 5)
31
+ __version__ = version = '0.15.7'
32
+ __version_tuple__ = version_tuple = (0, 15, 7)
33
+
34
+ __commit_id__ = commit_id = None
argus/client/base.py CHANGED
@@ -37,16 +37,14 @@ class ArgusClient:
37
37
  self._auth_token = auth_token
38
38
  self._base_url = base_url
39
39
  self._api_ver = api_version
40
- self._extra_headers = extra_headers or {}
40
+ self.session = requests.Session()
41
+ if extra_headers:
42
+ self.session.headers.update(extra_headers)
41
43
 
42
44
  @property
43
45
  def auth_token(self) -> str:
44
46
  return self._auth_token
45
47
 
46
- @property
47
- def extra_headers(self) -> dict:
48
- return self._extra_headers
49
-
50
48
  def verify_location_params(self, endpoint: str, location_params: dict[str, str]) -> bool:
51
49
  required_params: list[str] = re.findall(r"\$[\w_]+", endpoint)
52
50
  for param in required_params:
@@ -92,7 +90,6 @@ class ArgusClient:
92
90
  "Authorization": f"token {self.auth_token}",
93
91
  "Accept": "application/json",
94
92
  "Content-Type": "application/json",
95
- **self.extra_headers,
96
93
  }
97
94
 
98
95
  def get(self, endpoint: str, location_params: dict[str, str] = None, params: dict = None) -> requests.Response:
@@ -101,7 +98,7 @@ class ArgusClient:
101
98
  location_params=location_params
102
99
  )
103
100
  LOGGER.debug("GET Request: %s, params: %s", url, params)
104
- response = requests.get(
101
+ response = self.session.get(
105
102
  url=url,
106
103
  params=params,
107
104
  headers=self.request_headers
@@ -122,7 +119,7 @@ class ArgusClient:
122
119
  location_params=location_params
123
120
  )
124
121
  LOGGER.debug("POST Request: %s, params: %s, body: %s", url, params, body)
125
- response = requests.post(
122
+ response = self.session.post(
126
123
  url=url,
127
124
  params=params,
128
125
  json=body,
@@ -2,7 +2,7 @@ import base64
2
2
  from typing import Any
3
3
  from uuid import UUID
4
4
  from dataclasses import asdict
5
- from argus.common.sct_types import GeminiResultsRequest, PerformanceResultsRequest
5
+ from argus.common.sct_types import GeminiResultsRequest, PerformanceResultsRequest, RawEventPayload
6
6
  from argus.common.enums import ResourceState, TestStatus
7
7
  from argus.client.base import ArgusClient
8
8
  from argus.client.sct.types import EventsInfo, LogLink, Package
@@ -25,6 +25,7 @@ class ArgusSCTClient(ArgusClient):
25
25
  SUBMIT_PERFORMANCE_RESULTS = "/sct/$id/performance/submit"
26
26
  FINALIZE_NEMESIS = "/sct/$id/nemesis/finalize"
27
27
  SUBMIT_EVENTS = "/sct/$id/events/submit"
28
+ SUBMIT_EVENT = "/sct/$id/event/submit"
28
29
  SUBMIT_JUNIT_REPORT = "/sct/$id/junit/submit"
29
30
 
30
31
  def __init__(self, run_id: UUID, auth_token: str, base_url: str, api_version="v1", extra_headers: dict | None = None) -> None:
@@ -81,6 +82,17 @@ class ArgusSCTClient(ArgusClient):
81
82
  response = super().update_product_version(run_type=self.test_type, run_id=self.run_id, product_version=version)
82
83
  self.check_response(response)
83
84
 
85
+ def submit_event(self, event_data: RawEventPayload | list[RawEventPayload]):
86
+ response = self.post(
87
+ endpoint=self.Routes.SUBMIT_EVENT,
88
+ location_params={"id": str(self.run_id)},
89
+ body={
90
+ **self.generic_body,
91
+ "data": event_data,
92
+ }
93
+ )
94
+ self.check_response(response)
95
+
84
96
  def submit_sct_logs(self, logs: list[LogLink]) -> None:
85
97
  """
86
98
  Submits links to logs collected from nodes by SCT
argus/common/enums.py CHANGED
@@ -39,6 +39,7 @@ class PytestStatus(str, Enum):
39
39
 
40
40
 
41
41
  class TestInvestigationStatus(str, Enum):
42
+ __test__ = False # prevent pytest from collecting this Enum as a test class
42
43
  NOT_INVESTIGATED = "not_investigated"
43
44
  IN_PROGRESS = "in_progress"
44
45
  INVESTIGATED = "investigated"
argus/common/sct_types.py CHANGED
@@ -1,6 +1,21 @@
1
1
  from typing import TypedDict
2
2
 
3
3
 
4
+ class RawEventPayload(TypedDict):
5
+ run_id: str
6
+ severity: str
7
+ ts: float
8
+ message: str
9
+ event_type: str
10
+ received_timestamp: str | None
11
+ nemesis_name: str | None
12
+ duration: float | None
13
+ node: str | None
14
+ target_node: str | None
15
+ known_issue: str | None
16
+ nemesis_status: str | None
17
+
18
+
4
19
  class RawHDRHistogram(TypedDict):
5
20
  start_time: int
6
21
  percentile_90: float
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: argus-alm
3
- Version: 0.15.5
3
+ Version: 0.15.7
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: prometheus-flask-exporter>=0.23.2; extra == "web-backend"
27
28
  Provides-Extra: docker-image
28
29
  Requires-Dist: supervisor~=4.2.4; extra == "docker-image"
29
30
  Provides-Extra: dev
@@ -50,6 +51,10 @@ Dynamic: license-file
50
51
 
51
52
  Argus is a test tracking system intended to provide observability into automated test pipelines which use long-running resources. It allows observation of a test status, its events and its allocated resources. It also allows easy comparison between particular runs of a specific test.
52
53
 
54
+ ## Contributing
55
+
56
+ Review the [Repository Guidelines](AGENTS.md) for project structure, tooling expectations, and pull request practices before submitting changes.
57
+
53
58
  ## Installation notes
54
59
 
55
60
  ### Development
@@ -106,7 +111,7 @@ yarn install
106
111
  Compile frontend files from `/frontend` into `/public/dist`
107
112
 
108
113
  ```bash
109
- yarn webpack
114
+ yarn rollup -c
110
115
  ```
111
116
 
112
117
  Create a `argus.local.yaml` configuration file (used to configure database connection) and a `argus_web.yaml` (used for webapp secrets) in your application install directory.
@@ -1,22 +1,22 @@
1
1
  argus/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2
- argus/_version.py,sha256=jQuZKhl-YcplxyXgfpbbOOVRFLWdzyF8mpyWtCtN7BI,513
2
+ argus/_version.py,sha256=1O-7DXv_QP9x_lKXMnZu-0Tvd9ZtVB4QqmLlRj7ZHIk,706
3
3
  argus/client/__init__.py,sha256=bO9_j5_jK5kvTHR46KEZ0Y-p0li7CBW8QSd-K5Ez4vA,42
4
- argus/client/base.py,sha256=XwqshXFkb6h_QJH3wlFmWjSYV3p66y7B2lufShSkWAs,8463
4
+ argus/client/base.py,sha256=FZ9-quDXwViWbz892XnuZlWJiAmzpnTgvkRXV9i8HlE,8423
5
5
  argus/client/generic_result.py,sha256=9D0zrpfEDiIL7PjL12TZnqk5Mi_1T1UvesF5wWeMfz0,6264
6
6
  argus/client/driver_matrix_tests/cli.py,sha256=JpI0v1hzRQr9KkrxO7D4hEbkzumexFFC_iRM8558zHU,8375
7
7
  argus/client/driver_matrix_tests/client.py,sha256=fFucqwog6WnDnje1xB-4ERfwHXblXP4upmtt9RtOkls,2806
8
8
  argus/client/generic/cli.py,sha256=jsdSwzwzefX1POyrZ4lFTRcjWPmTauuXBGjceM54Zk4,4707
9
9
  argus/client/generic/client.py,sha256=3MONtLIcF7rZ5x5OaAQKi4YGHCHb3-9ooCUhWtKs4C4,1971
10
- argus/client/sct/client.py,sha256=SWFPg2pe8m5mg5bERrqFbCPZeFWbc7tgmrHIHhxHMvo,11512
10
+ argus/client/sct/client.py,sha256=rlsuy6I3zZYKUUjJ07PaBlIfCyCpXB2l4eZoJ4waE-g,11943
11
11
  argus/client/sct/types.py,sha256=VLgVe7qPmJtCLqtPnuX8N8kMKZq-iY3SKz68nvU6nJ4,371
12
12
  argus/client/sirenada/client.py,sha256=lzhmBFAUnvPSAJfCjeQ0L5nbp50Q0YLHwIondO9rvt4,6321
13
13
  argus/common/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
14
- argus/common/enums.py,sha256=2ASF_NMUU_inJCHnrjkvZ1jXWL2zAWzVgmtjCUwSUjA,1206
15
- argus/common/sct_types.py,sha256=csRkFdYkjLw1qaJhikW2NKvzdA1DQ1a93nwtKUB1gRs,1329
14
+ argus/common/enums.py,sha256=FM308aseXxsaeOqoiyM-NIDWKHpbceLysd-sLDh7TkI,1287
15
+ argus/common/sct_types.py,sha256=GX0S1_eH3eBOO17WqBVtsDKzz86vgL2VUM7gi9Cjrmc,1649
16
16
  argus/common/sirenada_types.py,sha256=CZH2JXA1KYUj29eXYe8rIAAWdN1XPqOsDPAXvM25bVQ,698
17
- argus_alm-0.15.5.dist-info/licenses/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
18
- argus_alm-0.15.5.dist-info/METADATA,sha256=A3F6vz5jCyU4mZlAA8qs92PbcMFqfeyKqTwZZPqKnrY,4860
19
- argus_alm-0.15.5.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
20
- argus_alm-0.15.5.dist-info/entry_points.txt,sha256=5mSBLLPndhFHKY5M9SCF8WhDBAArrj-S2IL-uoiaJiE,140
21
- argus_alm-0.15.5.dist-info/top_level.txt,sha256=Pea173vTU-Et8xmNCctS34REW4cH0Xmjyiztu0HuM0c,6
22
- argus_alm-0.15.5.dist-info/RECORD,,
17
+ argus_alm-0.15.7.dist-info/licenses/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
18
+ argus_alm-0.15.7.dist-info/METADATA,sha256=k8ORcUno_hpWYcGefrNk1uHrkAKAuMuetlDswrBnVCY,5098
19
+ argus_alm-0.15.7.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
20
+ argus_alm-0.15.7.dist-info/entry_points.txt,sha256=5mSBLLPndhFHKY5M9SCF8WhDBAArrj-S2IL-uoiaJiE,140
21
+ argus_alm-0.15.7.dist-info/top_level.txt,sha256=Pea173vTU-Et8xmNCctS34REW4cH0Xmjyiztu0HuM0c,6
22
+ argus_alm-0.15.7.dist-info/RECORD,,