argus-alm 0.15.2__py3-none-any.whl → 0.15.3__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.
Files changed (109) hide show
  1. argus/_version.py +2 -2
  2. argus/client/generic_result.py +6 -1
  3. {argus_alm-0.15.2.dist-info → argus_alm-0.15.3.dist-info}/METADATA +1 -1
  4. argus_alm-0.15.3.dist-info/RECORD +22 -0
  5. argus/backend/.gitkeep +0 -0
  6. argus/backend/__init__.py +0 -0
  7. argus/backend/cli.py +0 -57
  8. argus/backend/controller/__init__.py +0 -0
  9. argus/backend/controller/admin.py +0 -20
  10. argus/backend/controller/admin_api.py +0 -355
  11. argus/backend/controller/api.py +0 -589
  12. argus/backend/controller/auth.py +0 -67
  13. argus/backend/controller/client_api.py +0 -109
  14. argus/backend/controller/main.py +0 -316
  15. argus/backend/controller/notification_api.py +0 -72
  16. argus/backend/controller/notifications.py +0 -13
  17. argus/backend/controller/planner_api.py +0 -194
  18. argus/backend/controller/team.py +0 -129
  19. argus/backend/controller/team_ui.py +0 -19
  20. argus/backend/controller/testrun_api.py +0 -513
  21. argus/backend/controller/view_api.py +0 -188
  22. argus/backend/controller/views_widgets/__init__.py +0 -0
  23. argus/backend/controller/views_widgets/graphed_stats.py +0 -54
  24. argus/backend/controller/views_widgets/graphs.py +0 -68
  25. argus/backend/controller/views_widgets/highlights.py +0 -135
  26. argus/backend/controller/views_widgets/nemesis_stats.py +0 -26
  27. argus/backend/controller/views_widgets/summary.py +0 -43
  28. argus/backend/db.py +0 -98
  29. argus/backend/error_handlers.py +0 -41
  30. argus/backend/events/event_processors.py +0 -34
  31. argus/backend/models/__init__.py +0 -0
  32. argus/backend/models/argus_ai.py +0 -24
  33. argus/backend/models/github_issue.py +0 -60
  34. argus/backend/models/plan.py +0 -24
  35. argus/backend/models/result.py +0 -187
  36. argus/backend/models/runtime_store.py +0 -58
  37. argus/backend/models/view_widgets.py +0 -25
  38. argus/backend/models/web.py +0 -403
  39. argus/backend/plugins/__init__.py +0 -0
  40. argus/backend/plugins/core.py +0 -248
  41. argus/backend/plugins/driver_matrix_tests/controller.py +0 -66
  42. argus/backend/plugins/driver_matrix_tests/model.py +0 -429
  43. argus/backend/plugins/driver_matrix_tests/plugin.py +0 -21
  44. argus/backend/plugins/driver_matrix_tests/raw_types.py +0 -62
  45. argus/backend/plugins/driver_matrix_tests/service.py +0 -61
  46. argus/backend/plugins/driver_matrix_tests/udt.py +0 -42
  47. argus/backend/plugins/generic/model.py +0 -86
  48. argus/backend/plugins/generic/plugin.py +0 -15
  49. argus/backend/plugins/generic/types.py +0 -14
  50. argus/backend/plugins/loader.py +0 -39
  51. argus/backend/plugins/sct/controller.py +0 -224
  52. argus/backend/plugins/sct/plugin.py +0 -37
  53. argus/backend/plugins/sct/resource_setup.py +0 -177
  54. argus/backend/plugins/sct/service.py +0 -682
  55. argus/backend/plugins/sct/testrun.py +0 -288
  56. argus/backend/plugins/sct/udt.py +0 -100
  57. argus/backend/plugins/sirenada/model.py +0 -118
  58. argus/backend/plugins/sirenada/plugin.py +0 -16
  59. argus/backend/service/admin.py +0 -26
  60. argus/backend/service/argus_service.py +0 -696
  61. argus/backend/service/build_system_monitor.py +0 -185
  62. argus/backend/service/client_service.py +0 -127
  63. argus/backend/service/event_service.py +0 -18
  64. argus/backend/service/github_service.py +0 -233
  65. argus/backend/service/jenkins_service.py +0 -269
  66. argus/backend/service/notification_manager.py +0 -159
  67. argus/backend/service/planner_service.py +0 -608
  68. argus/backend/service/release_manager.py +0 -229
  69. argus/backend/service/results_service.py +0 -690
  70. argus/backend/service/stats.py +0 -610
  71. argus/backend/service/team_manager_service.py +0 -82
  72. argus/backend/service/test_lookup.py +0 -172
  73. argus/backend/service/testrun.py +0 -489
  74. argus/backend/service/user.py +0 -308
  75. argus/backend/service/views.py +0 -219
  76. argus/backend/service/views_widgets/__init__.py +0 -0
  77. argus/backend/service/views_widgets/graphed_stats.py +0 -180
  78. argus/backend/service/views_widgets/highlights.py +0 -374
  79. argus/backend/service/views_widgets/nemesis_stats.py +0 -34
  80. argus/backend/template_filters.py +0 -27
  81. argus/backend/tests/__init__.py +0 -0
  82. argus/backend/tests/client_service/__init__.py +0 -0
  83. argus/backend/tests/client_service/test_submit_results.py +0 -79
  84. argus/backend/tests/conftest.py +0 -180
  85. argus/backend/tests/results_service/__init__.py +0 -0
  86. argus/backend/tests/results_service/test_best_results.py +0 -178
  87. argus/backend/tests/results_service/test_cell.py +0 -65
  88. argus/backend/tests/results_service/test_chartjs_additional_functions.py +0 -259
  89. argus/backend/tests/results_service/test_create_chartjs.py +0 -220
  90. argus/backend/tests/results_service/test_result_metadata.py +0 -100
  91. argus/backend/tests/results_service/test_results_service.py +0 -203
  92. argus/backend/tests/results_service/test_validation_rules.py +0 -213
  93. argus/backend/tests/view_widgets/__init__.py +0 -0
  94. argus/backend/tests/view_widgets/test_highlights_api.py +0 -532
  95. argus/backend/util/common.py +0 -65
  96. argus/backend/util/config.py +0 -38
  97. argus/backend/util/encoders.py +0 -56
  98. argus/backend/util/logsetup.py +0 -80
  99. argus/backend/util/module_loaders.py +0 -30
  100. argus/backend/util/send_email.py +0 -91
  101. argus/client/tests/__init__.py +0 -0
  102. argus/client/tests/conftest.py +0 -19
  103. argus/client/tests/test_package.py +0 -45
  104. argus/client/tests/test_results.py +0 -224
  105. argus_alm-0.15.2.dist-info/RECORD +0 -122
  106. {argus_alm-0.15.2.dist-info → argus_alm-0.15.3.dist-info}/WHEEL +0 -0
  107. {argus_alm-0.15.2.dist-info → argus_alm-0.15.3.dist-info}/entry_points.txt +0 -0
  108. {argus_alm-0.15.2.dist-info → argus_alm-0.15.3.dist-info}/licenses/LICENSE +0 -0
  109. {argus_alm-0.15.2.dist-info → argus_alm-0.15.3.dist-info}/top_level.txt +0 -0
@@ -1,229 +0,0 @@
1
- import logging
2
- from typing import TypedDict
3
- from uuid import UUID
4
- from argus.backend.db import ScyllaCluster
5
- from argus.backend.plugins.sct.testrun import SCTTestRun
6
- from argus.backend.models.web import ArgusRelease, ArgusGroup, ArgusTest
7
-
8
- LOGGER = logging.getLogger(__name__)
9
-
10
-
11
- class ReleaseManagerException(Exception):
12
- pass
13
-
14
-
15
- class ReleaseEditPayload(TypedDict):
16
- id: str
17
- pretty_name: str
18
- description: str
19
- valid_version_regex: str | None
20
- enabled: bool
21
- perpetual: bool
22
- dormant: bool
23
-
24
-
25
- class ReleaseManagerService:
26
- def __init__(self) -> None:
27
- self.session = ScyllaCluster.get_session()
28
- self.database = ScyllaCluster.get()
29
- self.runs_by_build_id_stmt = self.database.prepare(
30
- "SELECT id, test_id, group_id, release_id, build_id, start_time "
31
- f"FROM {SCTTestRun.table_name()} WHERE build_id = ?"
32
- )
33
- self.update_run_stmt = self.database.prepare(
34
- f"UPDATE {SCTTestRun.table_name()} SET test_id = ?, group_id = ?, release_id = ? "
35
- "WHERE build_id = ? AND start_time = ?"
36
- )
37
-
38
- def get_releases(self) -> list[ArgusRelease]:
39
- return list(ArgusRelease.all())
40
-
41
- def get_groups(self, release_id: UUID) -> list[ArgusGroup]:
42
- return list(ArgusGroup.filter(release_id=release_id).all())
43
-
44
- def get_tests(self, group_id: UUID) -> list[ArgusTest]:
45
- return list(ArgusTest.filter(group_id=group_id).all())
46
-
47
- def toggle_test_enabled(self, test_id: UUID, new_state: bool) -> bool:
48
- test: ArgusTest = ArgusTest.get(id=test_id)
49
- test.enabled = new_state
50
- test.save()
51
-
52
- return test
53
-
54
- def toggle_group_enabled(self, group_id: UUID, new_state: bool) -> bool:
55
- test: ArgusGroup = ArgusGroup.get(id=group_id)
56
- test.enabled = new_state
57
- test.save()
58
-
59
- return test
60
-
61
- def create_release(self, release_name: str, pretty_name: str, perpetual: bool) -> ArgusRelease:
62
- try:
63
- release = ArgusRelease.get(name=release_name)
64
- except ArgusRelease.DoesNotExist:
65
- release = ArgusRelease()
66
- release.name = release_name
67
- release.pretty_name = pretty_name
68
- release.perpetual = perpetual
69
-
70
- release.save()
71
- else:
72
- raise ReleaseManagerException(
73
- f"Release {release_name} already exists!", release_name)
74
-
75
- return release
76
-
77
- def create_group(self, group_name: str, pretty_name: str, build_system_id: str,
78
- release_id: str) -> ArgusGroup:
79
- release = ArgusRelease.get(id=UUID(release_id))
80
-
81
- new_group = ArgusGroup()
82
- new_group.name = group_name
83
- new_group.pretty_name = pretty_name
84
- new_group.release_id = release.id
85
- new_group.build_system_id = build_system_id
86
- new_group.save()
87
-
88
- return new_group
89
-
90
- def create_test(self, test_name, pretty_name, build_id, build_url, group_id, release_id, plugin_name) -> ArgusTest:
91
- release = ArgusRelease.get(id=UUID(release_id))
92
- group = ArgusGroup.get(id=UUID(group_id))
93
-
94
- new_test = ArgusTest()
95
- new_test.name = test_name
96
- new_test.pretty_name = pretty_name
97
- new_test.build_system_id = build_id
98
- new_test.release_id = release.id
99
- new_test.group_id = group.id
100
- new_test.plugin_name = plugin_name
101
- new_test.build_system_url = build_url
102
- new_test.validate_build_system_id()
103
- new_test.save()
104
- self.move_test_runs(new_test)
105
- return new_test
106
-
107
- def delete_group(self, group_id: str, delete_tests: bool = True, new_group_id: str = "") -> bool:
108
- group_to_delete = ArgusGroup.get(id=UUID(group_id))
109
-
110
- tests_to_change = ArgusTest.filter(
111
- group_id=group_to_delete.id)
112
- if delete_tests:
113
- for test in tests_to_change.all():
114
- test.delete()
115
- else:
116
- new_group = ArgusGroup.get(id=UUID(new_group_id))
117
- for test in tests_to_change.all():
118
- test.group_id = new_group.id
119
- test.save()
120
-
121
- group_to_delete.delete()
122
-
123
- return True
124
-
125
- def delete_test(self, test_id: str) -> bool:
126
- test_to_delete = ArgusTest.get(id=test_id)
127
- test_to_delete.delete()
128
-
129
- return True
130
-
131
- def update_group(self, group_id: str, name: str, pretty_name: str, enabled: bool, build_system_id: str) -> bool:
132
- group = ArgusGroup.get(id=UUID(group_id))
133
-
134
- group.name = name
135
- group.build_system_id = build_system_id
136
- group.pretty_name = pretty_name
137
- group.enabled = enabled
138
-
139
- group.save()
140
-
141
- return True
142
-
143
- def update_test(self, test_id: str, name: str, pretty_name: str, plugin_name: str,
144
- enabled: bool, build_system_id: str, build_system_url: str, group_id) -> bool:
145
- test: ArgusTest = ArgusTest.get(id=UUID(test_id))
146
- group = ArgusGroup.get(id=UUID(group_id))
147
-
148
- test.name = name
149
- test.pretty_name = pretty_name
150
- test.plugin_name = plugin_name
151
- test.enabled = enabled
152
- test.build_system_id = build_system_id
153
- test.build_system_url = build_system_url
154
- if test.group_id != group.id:
155
- test.group_id = group.id
156
- LOGGER.info("Relocating old test runs into a new group")
157
-
158
- test.validate_build_system_id()
159
- test.save()
160
- self.move_test_runs(test)
161
- return True
162
-
163
- def set_release_state(self, release_id: str, state: bool) -> bool:
164
- release = ArgusRelease.get(id=UUID(release_id))
165
- release.enabled = state
166
- release.save()
167
-
168
- return True
169
-
170
- def set_release_dormancy(self, release_id: str, dormant: bool) -> bool:
171
- release = ArgusRelease.get(id=UUID(release_id))
172
- release.dormant = dormant
173
- release.save()
174
-
175
- return True
176
-
177
- def set_release_perpetuality(self, release_id: str, perpetual: bool) -> bool:
178
- release = ArgusRelease.get(id=UUID(release_id))
179
- release.perpetual = perpetual
180
- release.save()
181
-
182
- return True
183
-
184
- def edit_release(self, payload: ReleaseEditPayload) -> bool:
185
-
186
- release: ArgusRelease = ArgusRelease.get(id=payload["id"])
187
- release.pretty_name = payload["pretty_name"]
188
- release.perpetual = payload["perpetual"]
189
- release.enabled = payload["enabled"]
190
- release.dormant = payload["dormant"]
191
- release.description = payload["description"]
192
- release.valid_version_regex = payload["valid_version_regex"]
193
-
194
- release.save()
195
- return True
196
-
197
- def delete_release(self, release_id: str) -> bool:
198
-
199
- release: ArgusRelease = ArgusRelease.get(id=release_id)
200
-
201
- release_groups = ArgusGroup.filter(release_id=release.id)
202
- release_tests = ArgusTest.filter(release_id=release.id)
203
-
204
- for entity in [*release_groups.all(), *release_tests.all()]:
205
- entity.delete()
206
-
207
- release.delete()
208
- return True
209
-
210
- def batch_move_tests(self, new_group_id: str, tests: list[str]) -> bool:
211
- group = ArgusGroup.get(id=UUID(new_group_id))
212
-
213
- tests: list[ArgusTest] = [ArgusTest.get(id=UUID(test_id)) for test_id in tests]
214
-
215
- for test in tests:
216
- test.group_id = group.id
217
- test.save()
218
- self.move_test_runs(test)
219
-
220
- return True
221
-
222
- def move_test_runs(self, test: ArgusTest) -> None:
223
- run_rows = self.session.execute(self.runs_by_build_id_stmt, parameters=(
224
- test.build_system_id,), execution_profile="read_fast")
225
- for run in run_rows:
226
- run["test_id"] = test.id
227
- run["group_id"] = test.group_id
228
- run["release_id"] = test.release_id
229
- self.session.execute(self.update_run_stmt, parameters=run)