argus-alm 0.15.2__py3-none-any.whl → 0.15.5__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 (114) hide show
  1. argus/_version.py +2 -2
  2. argus/client/base.py +14 -8
  3. argus/client/generic/cli.py +3 -2
  4. argus/client/generic/client.py +2 -1
  5. argus/client/generic_result.py +6 -1
  6. argus/client/sct/client.py +2 -1
  7. argus/common/enums.py +16 -0
  8. {argus_alm-0.15.2.dist-info → argus_alm-0.15.5.dist-info}/METADATA +4 -4
  9. argus_alm-0.15.5.dist-info/RECORD +22 -0
  10. argus/backend/.gitkeep +0 -0
  11. argus/backend/__init__.py +0 -0
  12. argus/backend/cli.py +0 -57
  13. argus/backend/controller/__init__.py +0 -0
  14. argus/backend/controller/admin.py +0 -20
  15. argus/backend/controller/admin_api.py +0 -355
  16. argus/backend/controller/api.py +0 -589
  17. argus/backend/controller/auth.py +0 -67
  18. argus/backend/controller/client_api.py +0 -109
  19. argus/backend/controller/main.py +0 -316
  20. argus/backend/controller/notification_api.py +0 -72
  21. argus/backend/controller/notifications.py +0 -13
  22. argus/backend/controller/planner_api.py +0 -194
  23. argus/backend/controller/team.py +0 -129
  24. argus/backend/controller/team_ui.py +0 -19
  25. argus/backend/controller/testrun_api.py +0 -513
  26. argus/backend/controller/view_api.py +0 -188
  27. argus/backend/controller/views_widgets/__init__.py +0 -0
  28. argus/backend/controller/views_widgets/graphed_stats.py +0 -54
  29. argus/backend/controller/views_widgets/graphs.py +0 -68
  30. argus/backend/controller/views_widgets/highlights.py +0 -135
  31. argus/backend/controller/views_widgets/nemesis_stats.py +0 -26
  32. argus/backend/controller/views_widgets/summary.py +0 -43
  33. argus/backend/db.py +0 -98
  34. argus/backend/error_handlers.py +0 -41
  35. argus/backend/events/event_processors.py +0 -34
  36. argus/backend/models/__init__.py +0 -0
  37. argus/backend/models/argus_ai.py +0 -24
  38. argus/backend/models/github_issue.py +0 -60
  39. argus/backend/models/plan.py +0 -24
  40. argus/backend/models/result.py +0 -187
  41. argus/backend/models/runtime_store.py +0 -58
  42. argus/backend/models/view_widgets.py +0 -25
  43. argus/backend/models/web.py +0 -403
  44. argus/backend/plugins/__init__.py +0 -0
  45. argus/backend/plugins/core.py +0 -248
  46. argus/backend/plugins/driver_matrix_tests/controller.py +0 -66
  47. argus/backend/plugins/driver_matrix_tests/model.py +0 -429
  48. argus/backend/plugins/driver_matrix_tests/plugin.py +0 -21
  49. argus/backend/plugins/driver_matrix_tests/raw_types.py +0 -62
  50. argus/backend/plugins/driver_matrix_tests/service.py +0 -61
  51. argus/backend/plugins/driver_matrix_tests/udt.py +0 -42
  52. argus/backend/plugins/generic/model.py +0 -86
  53. argus/backend/plugins/generic/plugin.py +0 -15
  54. argus/backend/plugins/generic/types.py +0 -14
  55. argus/backend/plugins/loader.py +0 -39
  56. argus/backend/plugins/sct/controller.py +0 -224
  57. argus/backend/plugins/sct/plugin.py +0 -37
  58. argus/backend/plugins/sct/resource_setup.py +0 -177
  59. argus/backend/plugins/sct/service.py +0 -682
  60. argus/backend/plugins/sct/testrun.py +0 -288
  61. argus/backend/plugins/sct/udt.py +0 -100
  62. argus/backend/plugins/sirenada/model.py +0 -118
  63. argus/backend/plugins/sirenada/plugin.py +0 -16
  64. argus/backend/service/admin.py +0 -26
  65. argus/backend/service/argus_service.py +0 -696
  66. argus/backend/service/build_system_monitor.py +0 -185
  67. argus/backend/service/client_service.py +0 -127
  68. argus/backend/service/event_service.py +0 -18
  69. argus/backend/service/github_service.py +0 -233
  70. argus/backend/service/jenkins_service.py +0 -269
  71. argus/backend/service/notification_manager.py +0 -159
  72. argus/backend/service/planner_service.py +0 -608
  73. argus/backend/service/release_manager.py +0 -229
  74. argus/backend/service/results_service.py +0 -690
  75. argus/backend/service/stats.py +0 -610
  76. argus/backend/service/team_manager_service.py +0 -82
  77. argus/backend/service/test_lookup.py +0 -172
  78. argus/backend/service/testrun.py +0 -489
  79. argus/backend/service/user.py +0 -308
  80. argus/backend/service/views.py +0 -219
  81. argus/backend/service/views_widgets/__init__.py +0 -0
  82. argus/backend/service/views_widgets/graphed_stats.py +0 -180
  83. argus/backend/service/views_widgets/highlights.py +0 -374
  84. argus/backend/service/views_widgets/nemesis_stats.py +0 -34
  85. argus/backend/template_filters.py +0 -27
  86. argus/backend/tests/__init__.py +0 -0
  87. argus/backend/tests/client_service/__init__.py +0 -0
  88. argus/backend/tests/client_service/test_submit_results.py +0 -79
  89. argus/backend/tests/conftest.py +0 -180
  90. argus/backend/tests/results_service/__init__.py +0 -0
  91. argus/backend/tests/results_service/test_best_results.py +0 -178
  92. argus/backend/tests/results_service/test_cell.py +0 -65
  93. argus/backend/tests/results_service/test_chartjs_additional_functions.py +0 -259
  94. argus/backend/tests/results_service/test_create_chartjs.py +0 -220
  95. argus/backend/tests/results_service/test_result_metadata.py +0 -100
  96. argus/backend/tests/results_service/test_results_service.py +0 -203
  97. argus/backend/tests/results_service/test_validation_rules.py +0 -213
  98. argus/backend/tests/view_widgets/__init__.py +0 -0
  99. argus/backend/tests/view_widgets/test_highlights_api.py +0 -532
  100. argus/backend/util/common.py +0 -65
  101. argus/backend/util/config.py +0 -38
  102. argus/backend/util/encoders.py +0 -56
  103. argus/backend/util/logsetup.py +0 -80
  104. argus/backend/util/module_loaders.py +0 -30
  105. argus/backend/util/send_email.py +0 -91
  106. argus/client/tests/__init__.py +0 -0
  107. argus/client/tests/conftest.py +0 -19
  108. argus/client/tests/test_package.py +0 -45
  109. argus/client/tests/test_results.py +0 -224
  110. argus_alm-0.15.2.dist-info/RECORD +0 -122
  111. {argus_alm-0.15.2.dist-info → argus_alm-0.15.5.dist-info}/WHEEL +0 -0
  112. {argus_alm-0.15.2.dist-info → argus_alm-0.15.5.dist-info}/entry_points.txt +0 -0
  113. {argus_alm-0.15.2.dist-info → argus_alm-0.15.5.dist-info}/licenses/LICENSE +0 -0
  114. {argus_alm-0.15.2.dist-info → argus_alm-0.15.5.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)