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 +16 -3
- argus/client/base.py +5 -8
- argus/client/sct/client.py +13 -1
- argus/common/enums.py +1 -0
- argus/common/sct_types.py +15 -0
- {argus_alm-0.15.5.dist-info → argus_alm-0.15.7.dist-info}/METADATA +7 -2
- {argus_alm-0.15.5.dist-info → argus_alm-0.15.7.dist-info}/RECORD +11 -11
- {argus_alm-0.15.5.dist-info → argus_alm-0.15.7.dist-info}/WHEEL +0 -0
- {argus_alm-0.15.5.dist-info → argus_alm-0.15.7.dist-info}/entry_points.txt +0 -0
- {argus_alm-0.15.5.dist-info → argus_alm-0.15.7.dist-info}/licenses/LICENSE +0 -0
- {argus_alm-0.15.5.dist-info → argus_alm-0.15.7.dist-info}/top_level.txt +0 -0
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__ = [
|
|
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.
|
|
21
|
-
__version_tuple__ = version_tuple = (0, 15,
|
|
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.
|
|
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 =
|
|
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 =
|
|
122
|
+
response = self.session.post(
|
|
126
123
|
url=url,
|
|
127
124
|
params=params,
|
|
128
125
|
json=body,
|
argus/client/sct/client.py
CHANGED
|
@@ -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.
|
|
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
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
15
|
-
argus/common/sct_types.py,sha256=
|
|
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.
|
|
18
|
-
argus_alm-0.15.
|
|
19
|
-
argus_alm-0.15.
|
|
20
|
-
argus_alm-0.15.
|
|
21
|
-
argus_alm-0.15.
|
|
22
|
-
argus_alm-0.15.
|
|
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,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|