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 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.3'
21
- __version_tuple__ = version_tuple = (0, 15, 3)
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=self.get_url_for_endpoint(
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=self.get_url_for_endpoint(
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
 
@@ -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
 
@@ -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
 
@@ -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
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~=3.26.8; extra == "web-backend"
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~=1.7.0; extra == "web-backend"
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~=2.6.1; extra == "web-backend"
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 webpack
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,,