argus-alm 0.15.3__py3-none-any.whl → 0.15.6__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 +14 -8
- argus/client/generic/cli.py +3 -2
- argus/client/generic/client.py +2 -1
- argus/client/sct/client.py +15 -2
- argus/common/enums.py +16 -0
- argus/common/sct_types.py +15 -0
- {argus_alm-0.15.3.dist-info → argus_alm-0.15.6.dist-info}/METADATA +5 -5
- argus_alm-0.15.6.dist-info/RECORD +22 -0
- argus_alm-0.15.3.dist-info/RECORD +0 -22
- {argus_alm-0.15.3.dist-info → argus_alm-0.15.6.dist-info}/WHEEL +0 -0
- {argus_alm-0.15.3.dist-info → argus_alm-0.15.6.dist-info}/entry_points.txt +0 -0
- {argus_alm-0.15.3.dist-info → argus_alm-0.15.6.dist-info}/licenses/LICENSE +0 -0
- {argus_alm-0.15.3.dist-info → argus_alm-0.15.6.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.6'
|
|
32
|
+
__version_tuple__ = version_tuple = (0, 15, 6)
|
|
33
|
+
|
|
34
|
+
__commit_id__ = commit_id = None
|
argus/client/base.py
CHANGED
|
@@ -96,14 +96,17 @@ class ArgusClient:
|
|
|
96
96
|
}
|
|
97
97
|
|
|
98
98
|
def get(self, endpoint: str, location_params: dict[str, str] = None, params: dict = None) -> requests.Response:
|
|
99
|
+
url = self.get_url_for_endpoint(
|
|
100
|
+
endpoint=endpoint,
|
|
101
|
+
location_params=location_params
|
|
102
|
+
)
|
|
103
|
+
LOGGER.debug("GET Request: %s, params: %s", url, params)
|
|
99
104
|
response = requests.get(
|
|
100
|
-
url=
|
|
101
|
-
endpoint=endpoint,
|
|
102
|
-
location_params=location_params
|
|
103
|
-
),
|
|
105
|
+
url=url,
|
|
104
106
|
params=params,
|
|
105
107
|
headers=self.request_headers
|
|
106
108
|
)
|
|
109
|
+
LOGGER.debug("GET Response: %s %s", response.status_code, response.url)
|
|
107
110
|
|
|
108
111
|
return response
|
|
109
112
|
|
|
@@ -114,15 +117,18 @@ class ArgusClient:
|
|
|
114
117
|
params: dict = None,
|
|
115
118
|
body: dict = None,
|
|
116
119
|
) -> requests.Response:
|
|
120
|
+
url = self.get_url_for_endpoint(
|
|
121
|
+
endpoint=endpoint,
|
|
122
|
+
location_params=location_params
|
|
123
|
+
)
|
|
124
|
+
LOGGER.debug("POST Request: %s, params: %s, body: %s", url, params, body)
|
|
117
125
|
response = requests.post(
|
|
118
|
-
url=
|
|
119
|
-
endpoint=endpoint,
|
|
120
|
-
location_params=location_params
|
|
121
|
-
),
|
|
126
|
+
url=url,
|
|
122
127
|
params=params,
|
|
123
128
|
json=body,
|
|
124
129
|
headers=self.request_headers,
|
|
125
130
|
)
|
|
131
|
+
LOGGER.debug("POST Response: %s %s", response.status_code, response.url)
|
|
126
132
|
|
|
127
133
|
return response
|
|
128
134
|
|
argus/client/generic/cli.py
CHANGED
|
@@ -32,13 +32,14 @@ def cli():
|
|
|
32
32
|
@click.option("--build-id", required=True, help="Unique job identifier in the build system, e.g. scylla-master/group/job for jenkins (The full path)")
|
|
33
33
|
@click.option("--build-url", required=True, help="Job URL in the build system")
|
|
34
34
|
@click.option("--started-by", required=True, help="Username of the user who started the job")
|
|
35
|
+
@click.option("--sub-type", required=False, help="Sub-type of the generic test: pytest, dtest")
|
|
35
36
|
@click.option("--scylla-version", required=False, default=None, help="Version of Scylla used for this job")
|
|
36
37
|
@click.option("--extra-headers", default={}, type=click.UNPROCESSED, callback=validate_extra_headers, help="extra headers to pass to argus, should be in json format", envvar='ARGUS_EXTRA_HEADERS')
|
|
37
|
-
def submit_run(api_key: str, base_url: str, id: str, build_id: str, build_url: str, started_by: str, scylla_version: str = None, extra_headers: dict | None = None):
|
|
38
|
+
def submit_run(api_key: str, base_url: str, id: str, build_id: str, build_url: str, started_by: str, sub_type: str = None, scylla_version: str = None, extra_headers: dict | None = None):
|
|
38
39
|
LOGGER.info("Submitting %s (%s) to Argus...", build_id, id)
|
|
39
40
|
client = ArgusGenericClient(auth_token=api_key, base_url=base_url, extra_headers=extra_headers)
|
|
40
41
|
client.submit_generic_run(build_id=build_id, run_id=id, started_by=started_by,
|
|
41
|
-
build_url=build_url, scylla_version=scylla_version)
|
|
42
|
+
build_url=build_url, scylla_version=scylla_version, sub_type=sub_type)
|
|
42
43
|
LOGGER.info("Done.")
|
|
43
44
|
|
|
44
45
|
|
argus/client/generic/client.py
CHANGED
|
@@ -15,12 +15,13 @@ class ArgusGenericClient(ArgusClient):
|
|
|
15
15
|
def __init__(self, auth_token: str, base_url: str, api_version="v1", extra_headers: dict | None = None) -> None:
|
|
16
16
|
super().__init__(auth_token, base_url, api_version, extra_headers=extra_headers)
|
|
17
17
|
|
|
18
|
-
def submit_generic_run(self, build_id: str, run_id: str, started_by: str, build_url: str, scylla_version: str | None = None):
|
|
18
|
+
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
19
|
request_body = {
|
|
20
20
|
"build_id": build_id,
|
|
21
21
|
"run_id": run_id,
|
|
22
22
|
"started_by": started_by,
|
|
23
23
|
"build_url": build_url,
|
|
24
|
+
"sub_type": sub_type,
|
|
24
25
|
"scylla_version": scylla_version
|
|
25
26
|
}
|
|
26
27
|
|
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
|
|
@@ -152,7 +164,7 @@ class ArgusSCTClient(ArgusClient):
|
|
|
152
164
|
)
|
|
153
165
|
self.check_response(response)
|
|
154
166
|
|
|
155
|
-
def create_resource(self, name: str, resource_type: str, public_ip: str, private_ip: str,
|
|
167
|
+
def create_resource(self, name: str, resource_type: str, public_ip: str, private_ip: str, instance_type: str,
|
|
156
168
|
region: str, provider: str, dc_name: str, rack_name: str, shards_amount: int, state=ResourceState.RUNNING) -> None:
|
|
157
169
|
"""
|
|
158
170
|
Creates a cloud resource record in argus.
|
|
@@ -167,6 +179,7 @@ class ArgusSCTClient(ArgusClient):
|
|
|
167
179
|
"state": state,
|
|
168
180
|
"resource_type": resource_type,
|
|
169
181
|
"instance_details": {
|
|
182
|
+
"instance_type": instance_type,
|
|
170
183
|
"provider": provider,
|
|
171
184
|
"region": region,
|
|
172
185
|
"dc_name": dc_name,
|
argus/common/enums.py
CHANGED
|
@@ -22,6 +22,22 @@ class TestStatus(str, Enum):
|
|
|
22
22
|
NOT_RUN = "not_run"
|
|
23
23
|
|
|
24
24
|
|
|
25
|
+
class PytestStatus(str, Enum):
|
|
26
|
+
ERROR = "error"
|
|
27
|
+
PASSED = "passed"
|
|
28
|
+
FAILURE = "failure"
|
|
29
|
+
SKIPPED = "skipped"
|
|
30
|
+
XFAILED = "xfailed"
|
|
31
|
+
XPASS = "xpass"
|
|
32
|
+
# Following statuses reflect test & teardown state
|
|
33
|
+
# Example: passed & error means the test passed
|
|
34
|
+
# but the tearDown stage errored
|
|
35
|
+
PASSED_ERROR = "passed & error"
|
|
36
|
+
FAILURE_ERROR = "failure & error"
|
|
37
|
+
SKIPPED_ERROR = "skipped & error"
|
|
38
|
+
ERROR_ERROR = "error & error"
|
|
39
|
+
|
|
40
|
+
|
|
25
41
|
class TestInvestigationStatus(str, Enum):
|
|
26
42
|
NOT_INVESTIGATED = "not_investigated"
|
|
27
43
|
IN_PROGRESS = "in_progress"
|
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.6
|
|
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
|
|
@@ -13,16 +13,16 @@ Requires-Dist: requests>=2.26.0
|
|
|
13
13
|
Requires-Dist: click>=8.1.3
|
|
14
14
|
Provides-Extra: web-backend
|
|
15
15
|
Requires-Dist: PyYAML~=6.0.0; extra == "web-backend"
|
|
16
|
-
Requires-Dist: scylla-driver
|
|
16
|
+
Requires-Dist: scylla-driver>=3.26.8; extra == "web-backend"
|
|
17
17
|
Requires-Dist: Flask~=3.0.0; extra == "web-backend"
|
|
18
18
|
Requires-Dist: Flask-WTF~=1.0.0; extra == "web-backend"
|
|
19
19
|
Requires-Dist: Flask-Login~=0.5.0; extra == "web-backend"
|
|
20
20
|
Requires-Dist: humanize~=3.13.1; extra == "web-backend"
|
|
21
21
|
Requires-Dist: python-magic~=0.4.24; extra == "web-backend"
|
|
22
22
|
Requires-Dist: uwsgi~=2.0.20; extra == "web-backend"
|
|
23
|
-
Requires-Dist: python-jenkins
|
|
23
|
+
Requires-Dist: python-jenkins>=1.7.0; extra == "web-backend"
|
|
24
24
|
Requires-Dist: python-slugify~=6.1.1; extra == "web-backend"
|
|
25
|
-
Requires-Dist: pygithub
|
|
25
|
+
Requires-Dist: pygithub>=2.6.1; extra == "web-backend"
|
|
26
26
|
Requires-Dist: boto3~=1.38.9; extra == "web-backend"
|
|
27
27
|
Provides-Extra: docker-image
|
|
28
28
|
Requires-Dist: supervisor~=4.2.4; extra == "docker-image"
|
|
@@ -106,7 +106,7 @@ yarn install
|
|
|
106
106
|
Compile frontend files from `/frontend` into `/public/dist`
|
|
107
107
|
|
|
108
108
|
```bash
|
|
109
|
-
yarn
|
|
109
|
+
yarn rollup -c
|
|
110
110
|
```
|
|
111
111
|
|
|
112
112
|
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.
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
argus/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
2
|
+
argus/_version.py,sha256=qcnrtWShhkWqmd45V8inc2JAvXS6NkAKo5vOn5LwP3M,706
|
|
3
|
+
argus/client/__init__.py,sha256=bO9_j5_jK5kvTHR46KEZ0Y-p0li7CBW8QSd-K5Ez4vA,42
|
|
4
|
+
argus/client/base.py,sha256=XwqshXFkb6h_QJH3wlFmWjSYV3p66y7B2lufShSkWAs,8463
|
|
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=rlsuy6I3zZYKUUjJ07PaBlIfCyCpXB2l4eZoJ4waE-g,11943
|
|
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/enums.py,sha256=2ASF_NMUU_inJCHnrjkvZ1jXWL2zAWzVgmtjCUwSUjA,1206
|
|
15
|
+
argus/common/sct_types.py,sha256=GX0S1_eH3eBOO17WqBVtsDKzz86vgL2VUM7gi9Cjrmc,1649
|
|
16
|
+
argus/common/sirenada_types.py,sha256=CZH2JXA1KYUj29eXYe8rIAAWdN1XPqOsDPAXvM25bVQ,698
|
|
17
|
+
argus_alm-0.15.6.dist-info/licenses/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
|
|
18
|
+
argus_alm-0.15.6.dist-info/METADATA,sha256=jkkC_qxHOtsMDOX0OtuE9L84V8ve9f6rmqYpI3NdWrA,4862
|
|
19
|
+
argus_alm-0.15.6.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
20
|
+
argus_alm-0.15.6.dist-info/entry_points.txt,sha256=5mSBLLPndhFHKY5M9SCF8WhDBAArrj-S2IL-uoiaJiE,140
|
|
21
|
+
argus_alm-0.15.6.dist-info/top_level.txt,sha256=Pea173vTU-Et8xmNCctS34REW4cH0Xmjyiztu0HuM0c,6
|
|
22
|
+
argus_alm-0.15.6.dist-info/RECORD,,
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
argus/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
2
|
-
argus/_version.py,sha256=PbirELW_mdGsRZ5YJl3tATepVxI3ZSPTmrkO5T21Xtw,513
|
|
3
|
-
argus/client/__init__.py,sha256=bO9_j5_jK5kvTHR46KEZ0Y-p0li7CBW8QSd-K5Ez4vA,42
|
|
4
|
-
argus/client/base.py,sha256=QlJDC-E6OXf33FtPagOuH1wWsTd9NEBJO2lBUL5eAqE,8143
|
|
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=0mTTjbeB0iDiR5kKim9JYu_0PetCHiJUf8VYvdvmLHo,4570
|
|
9
|
-
argus/client/generic/client.py,sha256=D9j2047guXO0SgkcWQSftuntvj3LtTSAxBMBr4-4v58,1915
|
|
10
|
-
argus/client/sct/client.py,sha256=q5W0RL1BhA6Foc9rA10jLsnQ7MNGWgjbmy3_E0ePjeI,11436
|
|
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/enums.py,sha256=EhTQrgedlEz5sDYJ1gFnE2eC2nc1neQCRgzOgssQvWY,749
|
|
15
|
-
argus/common/sct_types.py,sha256=csRkFdYkjLw1qaJhikW2NKvzdA1DQ1a93nwtKUB1gRs,1329
|
|
16
|
-
argus/common/sirenada_types.py,sha256=CZH2JXA1KYUj29eXYe8rIAAWdN1XPqOsDPAXvM25bVQ,698
|
|
17
|
-
argus_alm-0.15.3.dist-info/licenses/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
|
|
18
|
-
argus_alm-0.15.3.dist-info/METADATA,sha256=GMIcQjxIfBHn3EBlD8JAJGMGz7HPYsiWIaD8YltMGZg,4860
|
|
19
|
-
argus_alm-0.15.3.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
20
|
-
argus_alm-0.15.3.dist-info/entry_points.txt,sha256=5mSBLLPndhFHKY5M9SCF8WhDBAArrj-S2IL-uoiaJiE,140
|
|
21
|
-
argus_alm-0.15.3.dist-info/top_level.txt,sha256=Pea173vTU-Et8xmNCctS34REW4cH0Xmjyiztu0HuM0c,6
|
|
22
|
-
argus_alm-0.15.3.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|