argus-alm 0.15.6__tar.gz → 0.15.8__tar.gz

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 (422) hide show
  1. argus_alm-0.15.8/AGENTS.md +27 -0
  2. {argus_alm-0.15.6 → argus_alm-0.15.8}/PKG-INFO +6 -1
  3. {argus_alm-0.15.6 → argus_alm-0.15.8}/README.md +4 -0
  4. {argus_alm-0.15.6 → argus_alm-0.15.8}/argus/_version.py +3 -3
  5. {argus_alm-0.15.6 → argus_alm-0.15.8}/argus/client/base.py +5 -8
  6. {argus_alm-0.15.6 → argus_alm-0.15.8}/argus/client/sct/client.py +21 -0
  7. argus_alm-0.15.8/argus/common/email.py +33 -0
  8. {argus_alm-0.15.6 → argus_alm-0.15.8}/argus/common/enums.py +1 -0
  9. {argus_alm-0.15.6 → argus_alm-0.15.8}/argus_alm.egg-info/PKG-INFO +6 -1
  10. {argus_alm-0.15.6 → argus_alm-0.15.8}/argus_alm.egg-info/SOURCES.txt +18 -0
  11. {argus_alm-0.15.6 → argus_alm-0.15.8}/argus_alm.egg-info/requires.txt +1 -0
  12. {argus_alm-0.15.6 → argus_alm-0.15.8}/argus_backend.py +28 -1
  13. {argus_alm-0.15.6 → argus_alm-0.15.8}/argus_web.example.yaml +1 -1
  14. argus_alm-0.15.8/docs/api_usage.md +280 -0
  15. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/AdminPanel/ViewWidget.svelte +33 -5
  16. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/AdminPanel/ViewsManager.svelte +28 -1
  17. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/Common/ModalWindow.svelte +5 -4
  18. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/Common/TestStatus.js +16 -0
  19. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/Common/ViewTypes.js +16 -0
  20. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/Profile/Login.svelte +1 -40
  21. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/ReleaseDashboard/AssigneeFilter.svelte +5 -1
  22. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/ReleaseDashboard/TestDashboard.svelte +2 -1
  23. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/Stats/NumberStats.svelte +3 -1
  24. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/Stats/ReleaseStats.svelte +3 -1
  25. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/TestRun/ArtifactRow.svelte +6 -0
  26. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/TestRun/ArtifactTab.svelte +40 -3
  27. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/TestRun/EventsTab.svelte +207 -49
  28. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/TestRun/IssueTemplate.svelte +8 -8
  29. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/TestRun/NemesisTable.svelte +1 -1
  30. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/TestRun/PackagesInfo.svelte +15 -2
  31. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/TestRun/ResourcesInfo.svelte +1 -1
  32. argus_alm-0.15.8/frontend/TestRun/SCT/SctEvent.svelte +209 -0
  33. argus_alm-0.15.8/frontend/TestRun/SCT/SctEvents.svelte +314 -0
  34. argus_alm-0.15.8/frontend/TestRun/SCT/SctNemesis.svelte +84 -0
  35. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/TestRun/StructuredEvent.svelte +29 -9
  36. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/TestRun/TestRun.svelte +81 -43
  37. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/Views/ViewDashboard.svelte +3 -1
  38. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/Views/Widgets/ViewGraphedStats.svelte +2 -4
  39. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/Views/Widgets/ViewHighlights/ViewHighlights.svelte +318 -63
  40. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/Views/Widgets/ViewReleaseStats.svelte +2 -1
  41. {argus_alm-0.15.6 → argus_alm-0.15.8}/pyproject.toml +1 -0
  42. {argus_alm-0.15.6 → argus_alm-0.15.8}/pytest-argus-reporter/pyproject.toml +1 -2
  43. {argus_alm-0.15.6 → argus_alm-0.15.8}/pytest-argus-reporter/pytest_argus_reporter.py +2 -1
  44. {argus_alm-0.15.6 → argus_alm-0.15.8}/start_argus.sh +5 -0
  45. argus_alm-0.15.8/templates/email/base.html.j2 +46 -0
  46. argus_alm-0.15.8/templates/email/css/styles.css +179 -0
  47. argus_alm-0.15.8/templates/email/partials/cloud.html.j2 +29 -0
  48. argus_alm-0.15.8/templates/email/partials/custom_html.html.j2 +8 -0
  49. argus_alm-0.15.8/templates/email/partials/custom_table.html.j2 +25 -0
  50. argus_alm-0.15.8/templates/email/partials/events.html.j2 +23 -0
  51. argus_alm-0.15.8/templates/email/partials/header.html.j2 +9 -0
  52. argus_alm-0.15.8/templates/email/partials/logs.html.j2 +12 -0
  53. argus_alm-0.15.8/templates/email/partials/main.html.j2 +27 -0
  54. argus_alm-0.15.8/templates/email/partials/nemesis.html.j2 +29 -0
  55. argus_alm-0.15.8/templates/email/partials/packages.html.j2 +21 -0
  56. argus_alm-0.15.8/templates/email/partials/screenshots.html.j2 +15 -0
  57. argus_alm-0.15.8/templates/email/partials/unsupported.html.j2 +11 -0
  58. {argus_alm-0.15.6 → argus_alm-0.15.8}/tsconfig.json +2 -2
  59. {argus_alm-0.15.6 → argus_alm-0.15.8}/uv.lock +25 -1
  60. {argus_alm-0.15.6 → argus_alm-0.15.8}/uwsgi.ini +1 -0
  61. {argus_alm-0.15.6 → argus_alm-0.15.8}/yarn.lock +30 -15
  62. argus_alm-0.15.6/docs/api_usage.md +0 -120
  63. {argus_alm-0.15.6 → argus_alm-0.15.8}/.dockerignore +0 -0
  64. {argus_alm-0.15.6 → argus_alm-0.15.8}/.envrc +0 -0
  65. {argus_alm-0.15.6 → argus_alm-0.15.8}/.eslintrc.js +0 -0
  66. {argus_alm-0.15.6 → argus_alm-0.15.8}/.github/workflows/.gitkeep +0 -0
  67. {argus_alm-0.15.6 → argus_alm-0.15.8}/.github/workflows/lint.yml +0 -0
  68. {argus_alm-0.15.6 → argus_alm-0.15.8}/.github/workflows/release.yml +0 -0
  69. {argus_alm-0.15.6 → argus_alm-0.15.8}/.github/workflows/test.yml +0 -0
  70. {argus_alm-0.15.6 → argus_alm-0.15.8}/.gitignore +0 -0
  71. {argus_alm-0.15.6 → argus_alm-0.15.8}/.pre-commit-config.yaml +0 -0
  72. {argus_alm-0.15.6 → argus_alm-0.15.8}/.prettierrc.js +0 -0
  73. {argus_alm-0.15.6 → argus_alm-0.15.8}/Dockerfile +0 -0
  74. {argus_alm-0.15.6 → argus_alm-0.15.8}/LICENSE +0 -0
  75. {argus_alm-0.15.6 → argus_alm-0.15.8}/MANIFEST.in +0 -0
  76. {argus_alm-0.15.6 → argus_alm-0.15.8}/argus/__init__.py +0 -0
  77. {argus_alm-0.15.6 → argus_alm-0.15.8}/argus/client/__init__.py +0 -0
  78. {argus_alm-0.15.6 → argus_alm-0.15.8}/argus/client/driver_matrix_tests/cli.py +0 -0
  79. {argus_alm-0.15.6 → argus_alm-0.15.8}/argus/client/driver_matrix_tests/client.py +0 -0
  80. {argus_alm-0.15.6 → argus_alm-0.15.8}/argus/client/generic/cli.py +0 -0
  81. {argus_alm-0.15.6 → argus_alm-0.15.8}/argus/client/generic/client.py +0 -0
  82. {argus_alm-0.15.6 → argus_alm-0.15.8}/argus/client/generic_result.py +0 -0
  83. {argus_alm-0.15.6 → argus_alm-0.15.8}/argus/client/sct/types.py +0 -0
  84. {argus_alm-0.15.6 → argus_alm-0.15.8}/argus/client/sirenada/client.py +0 -0
  85. {argus_alm-0.15.6 → argus_alm-0.15.8}/argus/common/__init__.py +0 -0
  86. {argus_alm-0.15.6 → argus_alm-0.15.8}/argus/common/sct_types.py +0 -0
  87. {argus_alm-0.15.6 → argus_alm-0.15.8}/argus/common/sirenada_types.py +0 -0
  88. {argus_alm-0.15.6 → argus_alm-0.15.8}/argus.yaml +0 -0
  89. {argus_alm-0.15.6 → argus_alm-0.15.8}/argusAI/README.md +0 -0
  90. {argus_alm-0.15.6 → argus_alm-0.15.8}/argusAI/deployment/argusai_event_similarity_processor.service +0 -0
  91. {argus_alm-0.15.6 → argus_alm-0.15.8}/argusAI/event_similarity_processor.py +0 -0
  92. {argus_alm-0.15.6 → argus_alm-0.15.8}/argusAI/logs/.gitignore +0 -0
  93. {argus_alm-0.15.6 → argus_alm-0.15.8}/argusAI/pyproject.toml +0 -0
  94. {argus_alm-0.15.6 → argus_alm-0.15.8}/argusAI/utils/__init__.py +0 -0
  95. {argus_alm-0.15.6 → argus_alm-0.15.8}/argusAI/utils/event_message_sanitizer.py +0 -0
  96. {argus_alm-0.15.6 → argus_alm-0.15.8}/argusAI/utils/scylla_connection.py +0 -0
  97. {argus_alm-0.15.6 → argus_alm-0.15.8}/argusAI/uv.lock +0 -0
  98. {argus_alm-0.15.6 → argus_alm-0.15.8}/argus_alm.egg-info/dependency_links.txt +0 -0
  99. {argus_alm-0.15.6 → argus_alm-0.15.8}/argus_alm.egg-info/entry_points.txt +0 -0
  100. {argus_alm-0.15.6 → argus_alm-0.15.8}/argus_alm.egg-info/top_level.txt +0 -0
  101. {argus_alm-0.15.6 → argus_alm-0.15.8}/commitlint.config.js +0 -0
  102. {argus_alm-0.15.6 → argus_alm-0.15.8}/dev-db/.gitignore +0 -0
  103. {argus_alm-0.15.6 → argus_alm-0.15.8}/dev-db/alpha-config/cassandra-rackdc.properties +0 -0
  104. {argus_alm-0.15.6 → argus_alm-0.15.8}/dev-db/alpha-config/machine_image_configured +0 -0
  105. {argus_alm-0.15.6 → argus_alm-0.15.8}/dev-db/alpha-config/scylla.yaml +0 -0
  106. {argus_alm-0.15.6 → argus_alm-0.15.8}/dev-db/alpha-data/.gitignore +0 -0
  107. {argus_alm-0.15.6 → argus_alm-0.15.8}/dev-db/docker-compose.yaml +0 -0
  108. {argus_alm-0.15.6 → argus_alm-0.15.8}/dev-db/export_data.py +0 -0
  109. {argus_alm-0.15.6 → argus_alm-0.15.8}/dev-db/import_data.py +0 -0
  110. {argus_alm-0.15.6 → argus_alm-0.15.8}/docker/config/nginx-docker.conf +0 -0
  111. {argus_alm-0.15.6 → argus_alm-0.15.8}/docker/config/supervisord.conf +0 -0
  112. {argus_alm-0.15.6 → argus_alm-0.15.8}/docker-entrypoint.sh +0 -0
  113. {argus_alm-0.15.6 → argus_alm-0.15.8}/docs/argus_status_page.md +0 -0
  114. {argus_alm-0.15.6 → argus_alm-0.15.8}/docs/argus_status_page_diagram.jpg +0 -0
  115. {argus_alm-0.15.6 → argus_alm-0.15.8}/docs/config/argus.nginx.conf +0 -0
  116. {argus_alm-0.15.6 → argus_alm-0.15.8}/docs/config/argus.service +0 -0
  117. {argus_alm-0.15.6 → argus_alm-0.15.8}/docs/dev-setup.md +0 -0
  118. {argus_alm-0.15.6 → argus_alm-0.15.8}/docs/generic_results.md +0 -0
  119. {argus_alm-0.15.6 → argus_alm-0.15.8}/docs/pypi-guide.md +0 -0
  120. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/AdminPanel/AdminPanel.svelte +0 -0
  121. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/AdminPanel/AdminPanelWelcome.svelte +0 -0
  122. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/AdminPanel/BatchTestMover.svelte +0 -0
  123. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/AdminPanel/GroupCreator.svelte +0 -0
  124. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/AdminPanel/ReleaseCreator.svelte +0 -0
  125. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/AdminPanel/ReleaseDeletionConfirmationPopup.svelte +0 -0
  126. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/AdminPanel/ReleaseEditor.svelte +0 -0
  127. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/AdminPanel/ReleaseManager.svelte +0 -0
  128. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/AdminPanel/ReleaseManagerGroup.svelte +0 -0
  129. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/AdminPanel/ReleaseManagerTest.svelte +0 -0
  130. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/AdminPanel/TestCreator.svelte +0 -0
  131. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/AdminPanel/UserManager.svelte +0 -0
  132. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/AdminPanel/ViewListItem.svelte +0 -0
  133. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/AdminPanel/ViewSelectItem.svelte +0 -0
  134. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/Alert.js +0 -0
  135. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/Alerts/AlertMessage.svelte +0 -0
  136. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/Alerts/AlertWidget.svelte +0 -0
  137. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/Common/ApiUtils.js +0 -0
  138. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/Common/ArgusNotification.ts +0 -0
  139. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/Common/AssigneeSelector.svelte +0 -0
  140. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/Common/AssigneeUtils.js +0 -0
  141. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/Common/DateUtils.js +0 -0
  142. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/Common/DriverMatrixTypes.ts +0 -0
  143. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/Common/IssueDestinations.js +0 -0
  144. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/Common/JenkinsSettingsHelp.js +0 -0
  145. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/Common/PluginDispatch.js +0 -0
  146. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/Common/PluginNames.js +0 -0
  147. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/Common/RunUtils.js +0 -0
  148. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/Common/SelectUtils.js +0 -0
  149. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/Common/StateManagement.js +0 -0
  150. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/Common/TextUtils.js +0 -0
  151. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/Common/UserTypes.ts +0 -0
  152. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/Common/UserUtils.js +0 -0
  153. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/Debug/FlashDebugComponent.svelte +0 -0
  154. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/Discussion/Comment.svelte +0 -0
  155. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/Discussion/CommentEditor.svelte +0 -0
  156. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/Discussion/MarkedMentionExtension.js +0 -0
  157. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/Discussion/MentionSelector.svelte +0 -0
  158. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/Discussion/UserProfile.svelte +0 -0
  159. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/Github/GithubIssue.svelte +0 -0
  160. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/Github/GithubIssues.svelte +0 -0
  161. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/Github/GithubIssuesCopyModal.svelte +0 -0
  162. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/Profile/JobsList.svelte +0 -0
  163. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/Profile/Notification.svelte +0 -0
  164. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/Profile/NotificationCommentWrapper.svelte +0 -0
  165. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/Profile/NotificationCounter.svelte +0 -0
  166. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/Profile/NotificationSender.svelte +0 -0
  167. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/Profile/NotificationTestRunWrapper.svelte +0 -0
  168. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/Profile/NotificationsReader.svelte +0 -0
  169. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/Profile/PlannedJob.svelte +0 -0
  170. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/Profile/PlannedJobs.svelte +0 -0
  171. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/Profile/ProfileJob.svelte +0 -0
  172. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/Profile/ProfileJobs.svelte +0 -0
  173. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/Profile/ProfileJobsTab.svelte +0 -0
  174. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/Profile/ProfileSchedules.svelte +0 -0
  175. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/Profile/User.svelte +0 -0
  176. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/Profile/UserSelection.svelte +0 -0
  177. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/Profile/ViewUserResolver.svelte +0 -0
  178. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/ReleaseDashboard/FlatViewHelper.svelte +0 -0
  179. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/ReleaseDashboard/GroupedViewHelper.svelte +0 -0
  180. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/ReleaseDashboard/ReleaseActivity.svelte +0 -0
  181. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/ReleaseDashboard/ReleaseDashboard.svelte +0 -0
  182. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/ReleaseDashboard/ReleaseGithubIssues.svelte +0 -0
  183. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/ReleaseDashboard/TestDashboardFlatView.svelte +0 -0
  184. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/ReleaseDashboard/TestDashboardGroup.svelte +0 -0
  185. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/ReleaseDashboard/TestDashboardTest.svelte +0 -0
  186. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/ReleaseDashboard/TestPopoutSelector.svelte +0 -0
  187. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/ReleaseDashboard/TestWithIssuesCard.svelte +0 -0
  188. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/ReleasePlanner/CommentTableRow.svelte +0 -0
  189. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/ReleasePlanner/DutyPlanner.svelte +0 -0
  190. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/ReleasePlanner/EntityReplacer.svelte +0 -0
  191. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/ReleasePlanner/ReleasePlan.svelte +0 -0
  192. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/ReleasePlanner/ReleasePlanCopyForm.svelte +0 -0
  193. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/ReleasePlanner/ReleasePlanCreator.svelte +0 -0
  194. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/ReleasePlanner/ReleasePlanEditor.svelte +0 -0
  195. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/ReleasePlanner/ReleasePlanTable.svelte +0 -0
  196. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/ReleasePlanner/ReleasePlanner.svelte +0 -0
  197. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/ReleasePlanner/ReleasePlannerGridView.svelte +0 -0
  198. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/ReleasePlanner/ReleaseScheduler.svelte +0 -0
  199. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/ReleasePlanner/Schedule.svelte +0 -0
  200. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/ReleasePlanner/ScheduleTable.svelte +0 -0
  201. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/ReleasePlanner/SearchBar.svelte +0 -0
  202. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/Stats/ChartStats.svelte +0 -0
  203. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/Stats/ProgressBarStats.svelte +0 -0
  204. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/Stats/StatsFetcher.svelte +0 -0
  205. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/Stores/AlertStore.js +0 -0
  206. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/Stores/AssigneeSubscriber.js +0 -0
  207. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/Stores/SingleTestRunSubscriber.js +0 -0
  208. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/Stores/TestRunsSubscriber.js +0 -0
  209. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/Stores/UserlistSubscriber.js +0 -0
  210. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/Stores/WorkspaceStore.js +0 -0
  211. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/Teams/TeamCreateForm.svelte +0 -0
  212. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/Teams/TeamDetail.svelte +0 -0
  213. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/Teams/TeamList.svelte +0 -0
  214. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/Teams/TeamManager.svelte +0 -0
  215. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/Teams/TeamMember.svelte +0 -0
  216. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/Teams/TeamShort.svelte +0 -0
  217. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/Teams/TeamUtils.ts +0 -0
  218. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/TestRun/ActivityTab.svelte +0 -0
  219. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/TestRun/Components/Cell.svelte +0 -0
  220. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/TestRun/Components/Filters.svelte +0 -0
  221. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/TestRun/Components/GraphFilters.svelte +0 -0
  222. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/TestRun/Components/ResultTable.svelte +0 -0
  223. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/TestRun/Components/ScreenshotModal.svelte +0 -0
  224. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/TestRun/DriverMatrixBreakdown.svelte +0 -0
  225. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/TestRun/DriverMatrixRunInfo.svelte +0 -0
  226. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/TestRun/DriverMatrixTestCollection.svelte +0 -0
  227. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/TestRun/DriverMatrixTestRun.svelte +0 -0
  228. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/TestRun/DriverMatrixTestSuites.svelte +0 -0
  229. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/TestRun/Generic/GenericTestRun.svelte +0 -0
  230. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/TestRun/Generic/GenericTestRunInfo.svelte +0 -0
  231. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/TestRun/Generic/Subtest.js +0 -0
  232. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/TestRun/HeartbeatIndicator.svelte +0 -0
  233. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/TestRun/IssueTab.svelte +0 -0
  234. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/TestRun/Jenkins/Build.js +0 -0
  235. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/TestRun/Jenkins/BuildConfirmationDialog.svelte +0 -0
  236. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/TestRun/Jenkins/BuildStartPlaceholder.svelte +0 -0
  237. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/TestRun/Jenkins/BuildSuccessPlaceholder.svelte +0 -0
  238. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/TestRun/Jenkins/CheckParam.svelte +0 -0
  239. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/TestRun/Jenkins/CloneCreatePlaceholder.svelte +0 -0
  240. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/TestRun/Jenkins/CloneSuccess.svelte +0 -0
  241. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/TestRun/Jenkins/CloneTargetSelector.svelte +0 -0
  242. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/TestRun/Jenkins/DummyCheckParam.svelte +0 -0
  243. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/TestRun/Jenkins/DummySelectParam.svelte +0 -0
  244. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/TestRun/Jenkins/JenkinsBuildModal.svelte +0 -0
  245. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/TestRun/Jenkins/JenkinsCloneModal.svelte +0 -0
  246. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/TestRun/Jenkins/LoadTargetsPlaceholder.svelte +0 -0
  247. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/TestRun/Jenkins/ModalError.svelte +0 -0
  248. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/TestRun/Jenkins/ParamFetchPlaceholder.svelte +0 -0
  249. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/TestRun/Jenkins/ParameterEditor.svelte +0 -0
  250. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/TestRun/Jenkins/SCTParameterWizard.svelte +0 -0
  251. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/TestRun/Jenkins/SelectParam.svelte +0 -0
  252. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/TestRun/Jenkins/StringParam.svelte +0 -0
  253. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/TestRun/Jenkins/TextParam.svelte +0 -0
  254. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/TestRun/Jenkins/WizardUnavailable.svelte +0 -0
  255. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/TestRun/NemesisData.svelte +0 -0
  256. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/TestRun/NemesisReason.svelte +0 -0
  257. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/TestRun/Pytest/DtestTab.svelte +0 -0
  258. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/TestRun/Pytest/PytestItem.svelte +0 -0
  259. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/TestRun/Pytest/PytestRun.svelte +0 -0
  260. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/TestRun/Pytest/PytestTab.svelte +0 -0
  261. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/TestRun/Pytest/index.js +0 -0
  262. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/TestRun/Pytest/types.ts +0 -0
  263. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/TestRun/RawEvent.svelte +0 -0
  264. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/TestRun/ResultsGraph.svelte +0 -0
  265. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/TestRun/ResultsGraphs.svelte +0 -0
  266. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/TestRun/ResultsTab.svelte +0 -0
  267. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/TestRun/RunAssigneeSelector.svelte +0 -0
  268. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/TestRun/RunInvestigationStatusButton.svelte +0 -0
  269. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/TestRun/RunStatusButton.svelte +0 -0
  270. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/TestRun/SCTSubTests/Gemini/GeminiTabBodyComponent.svelte +0 -0
  271. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/TestRun/SCTSubTests/Gemini/GeminiTabComponent.svelte +0 -0
  272. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/TestRun/SCTSubTests/Performance/PerformanceTabBodyComponent.svelte +0 -0
  273. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/TestRun/SCTSubTests/Performance/PerformanceTabComponent.svelte +0 -0
  274. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/TestRun/SCTSubTests/Subtest.js +0 -0
  275. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/TestRun/Screenshots.svelte +0 -0
  276. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/TestRun/Sirenada/SirenadaIssueTemplate.svelte +0 -0
  277. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/TestRun/Sirenada/SirenadaRunInfo.svelte +0 -0
  278. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/TestRun/Sirenada/SirenadaTestBreakdown.svelte +0 -0
  279. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/TestRun/Sirenada/SirenadaTestRun.svelte +0 -0
  280. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/TestRun/TestRunComments.svelte +0 -0
  281. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/TestRun/TestRunInfo.svelte +0 -0
  282. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/TestRun/jUnitChart.svelte +0 -0
  283. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/TestRun/jUnitResults.svelte +0 -0
  284. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/Utils/IntersectionObserver.svelte +0 -0
  285. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/Views/ViewSelect.svelte +0 -0
  286. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/Views/WidgetSettingTypes/CheckValue.svelte +0 -0
  287. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/Views/WidgetSettingTypes/IntegerValue.svelte +0 -0
  288. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/Views/WidgetSettingTypes/MultiSelectValue.svelte +0 -0
  289. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/Views/WidgetSettingTypes/MultiStringValue.svelte +0 -0
  290. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/Views/WidgetSettingTypes/StringValue.svelte +0 -0
  291. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/Views/Widgets/GraphsWidget/GraphsWidget.svelte +0 -0
  292. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/Views/Widgets/PytestWidget/PytestCalendarSelector.svelte +0 -0
  293. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/Views/Widgets/PytestWidget/PytestCollapseHelper.svelte +0 -0
  294. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/Views/Widgets/PytestWidget/PytestFlatHelper.svelte +0 -0
  295. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/Views/Widgets/PytestWidget/PytestOverviewWidget.svelte +0 -0
  296. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/Views/Widgets/PytestWidget/PytestResultRow.svelte +0 -0
  297. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/Views/Widgets/PytestWidget/PytestTableWidget.svelte +0 -0
  298. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/Views/Widgets/PytestWidget/ViewPytestOverview.svelte +0 -0
  299. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/Views/Widgets/SummaryWidget/RunIssues.svelte +0 -0
  300. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/Views/Widgets/SummaryWidget/SummaryWidget.svelte +0 -0
  301. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/Views/Widgets/ViewGithubIssues.svelte +0 -0
  302. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/Views/Widgets/ViewGraphedStats/AssigneeCell.svelte +0 -0
  303. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/Views/Widgets/ViewGraphedStats/Filters.svelte +0 -0
  304. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/Views/Widgets/ViewGraphedStats/Interfaces.ts +0 -0
  305. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/Views/Widgets/ViewGraphedStats/InvestigationStatusCell.svelte +0 -0
  306. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/Views/Widgets/ViewGraphedStats/IssuesCell.svelte +0 -0
  307. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/Views/Widgets/ViewGraphedStats/NemesisTable.svelte +0 -0
  308. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/Views/Widgets/ViewGraphedStats/PaginatedTable.svelte +0 -0
  309. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/Views/Widgets/ViewGraphedStats/StackTracePreview.svelte +0 -0
  310. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/Views/Widgets/ViewGraphedStats/StatusBadge.svelte +0 -0
  311. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/Views/Widgets/ViewGraphedStats/StatusCell.svelte +0 -0
  312. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/Views/Widgets/ViewGraphedStats/TestRunTable.svelte +0 -0
  313. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/Views/Widgets/ViewHighlights/ActionItem.svelte +0 -0
  314. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/Views/Widgets/ViewHighlights/Comment.svelte +0 -0
  315. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/Views/Widgets/ViewHighlights/HighlightItem.svelte +0 -0
  316. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/Views/Widgets/ViewNemesisStats.svelte +0 -0
  317. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/Views/Widgets/ViewTestDashboard.svelte +0 -0
  318. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/Views/Widgets/ViewUnsupportedPlaceholder.svelte +0 -0
  319. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/WorkArea/AssigneeList.svelte +0 -0
  320. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/WorkArea/JobConfigureModal.svelte +0 -0
  321. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/WorkArea/RunGroup.svelte +0 -0
  322. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/WorkArea/RunRelease.svelte +0 -0
  323. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/WorkArea/Test.svelte +0 -0
  324. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/WorkArea/TestRunDispatcher.svelte +0 -0
  325. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/WorkArea/TestRuns.svelte +0 -0
  326. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/WorkArea/TestRunsMessage.svelte +0 -0
  327. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/WorkArea/TestRunsPanel.svelte +0 -0
  328. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/WorkArea/TestRunsSelector.svelte +0 -0
  329. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/WorkArea/UnknownTest.svelte +0 -0
  330. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/WorkArea/WorkArea.svelte +0 -0
  331. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/admin-panel.js +0 -0
  332. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/argus.css +0 -0
  333. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/argus.js +0 -0
  334. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/duty-planner.js +0 -0
  335. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/flashDebug.js +0 -0
  336. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/font-awesome.css +0 -0
  337. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/font-awesome.js +0 -0
  338. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/fonts/NotoSans-Bold.ttf +0 -0
  339. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/fonts/NotoSans-BoldItalic.ttf +0 -0
  340. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/fonts/NotoSans-Italic.ttf +0 -0
  341. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/fonts/NotoSans-Regular.ttf +0 -0
  342. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/fonts/OFL.txt +0 -0
  343. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/fonts/noto.css +0 -0
  344. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/login.js +0 -0
  345. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/markdownOptions.js +0 -0
  346. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/notification-counter.js +0 -0
  347. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/plan.js +0 -0
  348. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/profile-jobs.js +0 -0
  349. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/profile-notifications.js +0 -0
  350. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/profile-schedules.js +0 -0
  351. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/release-dashboard.js +0 -0
  352. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/release-page.js +0 -0
  353. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/release-planner.js +0 -0
  354. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/release-scheduler.js +0 -0
  355. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/run-by-plugin.js +0 -0
  356. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/teams.js +0 -0
  357. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/test-run-details.js +0 -0
  358. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/test-runs-breakout.js +0 -0
  359. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/test-runs-standalone.js +0 -0
  360. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/view-dashboard.js +0 -0
  361. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/view-user-resolver.js +0 -0
  362. {argus_alm-0.15.6 → argus_alm-0.15.8}/frontend/work-area.js +0 -0
  363. {argus_alm-0.15.6 → argus_alm-0.15.8}/package.json +0 -0
  364. {argus_alm-0.15.6 → argus_alm-0.15.8}/profile/.gitkeep +0 -0
  365. {argus_alm-0.15.6 → argus_alm-0.15.8}/public/argus.png +0 -0
  366. {argus_alm-0.15.6 → argus_alm-0.15.8}/public/no-user-picture.png +0 -0
  367. {argus_alm-0.15.6 → argus_alm-0.15.8}/pytest-argus-reporter/.envrc +0 -0
  368. {argus_alm-0.15.6 → argus_alm-0.15.8}/pytest-argus-reporter/LICENSE +0 -0
  369. {argus_alm-0.15.6 → argus_alm-0.15.8}/pytest-argus-reporter/MANIFEST.in +0 -0
  370. {argus_alm-0.15.6 → argus_alm-0.15.8}/pytest-argus-reporter/README.md +0 -0
  371. {argus_alm-0.15.6 → argus_alm-0.15.8}/pytest-argus-reporter/noxfile.py +0 -0
  372. {argus_alm-0.15.6 → argus_alm-0.15.8}/rollup.config.js +0 -0
  373. {argus_alm-0.15.6 → argus_alm-0.15.8}/run_with_profiler.py +0 -0
  374. {argus_alm-0.15.6 → argus_alm-0.15.8}/scripts/argus-status-page/index.html +0 -0
  375. {argus_alm-0.15.6 → argus_alm-0.15.8}/scripts/argus-status-page/js/status.js +0 -0
  376. {argus_alm-0.15.6 → argus_alm-0.15.8}/scripts/argus-status-page/static/app.css +0 -0
  377. {argus_alm-0.15.6 → argus_alm-0.15.8}/scripts/argus-status-page/static/argus.png +0 -0
  378. {argus_alm-0.15.6 → argus_alm-0.15.8}/scripts/argus-status-page/static/scylla.png +0 -0
  379. {argus_alm-0.15.6 → argus_alm-0.15.8}/scripts/argus-status-page/status.json +0 -0
  380. {argus_alm-0.15.6 → argus_alm-0.15.8}/scripts/migration/migration_2023-04-07.py +0 -0
  381. {argus_alm-0.15.6 → argus_alm-0.15.8}/scripts/migration/migration_2024-04-14.py +0 -0
  382. {argus_alm-0.15.6 → argus_alm-0.15.8}/scripts/migration/migration_2025-07-18.py +0 -0
  383. {argus_alm-0.15.6 → argus_alm-0.15.8}/setup.cfg +0 -0
  384. {argus_alm-0.15.6 → argus_alm-0.15.8}/storage/profile_pictures/.gitignore +0 -0
  385. {argus_alm-0.15.6 → argus_alm-0.15.8}/templates/admin/base.html.j2 +0 -0
  386. {argus_alm-0.15.6 → argus_alm-0.15.8}/templates/admin/index.html.j2 +0 -0
  387. {argus_alm-0.15.6 → argus_alm-0.15.8}/templates/auth/login.html.j2 +0 -0
  388. {argus_alm-0.15.6 → argus_alm-0.15.8}/templates/auth/register.html.j2 +0 -0
  389. {argus_alm-0.15.6 → argus_alm-0.15.8}/templates/base.html.j2 +0 -0
  390. {argus_alm-0.15.6 → argus_alm-0.15.8}/templates/dashboard.html.j2 +0 -0
  391. {argus_alm-0.15.6 → argus_alm-0.15.8}/templates/duty_planner.html.j2 +0 -0
  392. {argus_alm-0.15.6 → argus_alm-0.15.8}/templates/error.html.j2 +0 -0
  393. {argus_alm-0.15.6 → argus_alm-0.15.8}/templates/flash_debug.html.j2 +0 -0
  394. {argus_alm-0.15.6 → argus_alm-0.15.8}/templates/groups.html.j2 +0 -0
  395. {argus_alm-0.15.6 → argus_alm-0.15.8}/templates/home.html.j2 +0 -0
  396. {argus_alm-0.15.6 → argus_alm-0.15.8}/templates/notifications/assigned.html.j2 +0 -0
  397. {argus_alm-0.15.6 → argus_alm-0.15.8}/templates/notifications/assigned_email.html.j2 +0 -0
  398. {argus_alm-0.15.6 → argus_alm-0.15.8}/templates/notifications/email_mention.html.j2 +0 -0
  399. {argus_alm-0.15.6 → argus_alm-0.15.8}/templates/notifications/mention.html.j2 +0 -0
  400. {argus_alm-0.15.6 → argus_alm-0.15.8}/templates/notifications/view_action_item_assigned.html.j2 +0 -0
  401. {argus_alm-0.15.6 → argus_alm-0.15.8}/templates/notifications/view_action_item_assigned_email.html.j2 +0 -0
  402. {argus_alm-0.15.6 → argus_alm-0.15.8}/templates/notifications/view_highlight_mention.html.j2 +0 -0
  403. {argus_alm-0.15.6 → argus_alm-0.15.8}/templates/notifications/view_highlight_mention_email.html.j2 +0 -0
  404. {argus_alm-0.15.6 → argus_alm-0.15.8}/templates/partials/nav_bar.html.j2 +0 -0
  405. {argus_alm-0.15.6 → argus_alm-0.15.8}/templates/plan_dashboard.html.j2 +0 -0
  406. {argus_alm-0.15.6 → argus_alm-0.15.8}/templates/profile.html.j2 +0 -0
  407. {argus_alm-0.15.6 → argus_alm-0.15.8}/templates/profile_jobs.html.j2 +0 -0
  408. {argus_alm-0.15.6 → argus_alm-0.15.8}/templates/profile_notifications.html.j2 +0 -0
  409. {argus_alm-0.15.6 → argus_alm-0.15.8}/templates/profile_schedules.html.j2 +0 -0
  410. {argus_alm-0.15.6 → argus_alm-0.15.8}/templates/release_dashboard.html.j2 +0 -0
  411. {argus_alm-0.15.6 → argus_alm-0.15.8}/templates/release_planner.html.j2 +0 -0
  412. {argus_alm-0.15.6 → argus_alm-0.15.8}/templates/release_schedule.html.j2 +0 -0
  413. {argus_alm-0.15.6 → argus_alm-0.15.8}/templates/releases.html.j2 +0 -0
  414. {argus_alm-0.15.6 → argus_alm-0.15.8}/templates/run_view_by_plugin.html.j2 +0 -0
  415. {argus_alm-0.15.6 → argus_alm-0.15.8}/templates/runs.html.j2 +0 -0
  416. {argus_alm-0.15.6 → argus_alm-0.15.8}/templates/standalone_test_with_runs.html.j2 +0 -0
  417. {argus_alm-0.15.6 → argus_alm-0.15.8}/templates/teams.html.j2 +0 -0
  418. {argus_alm-0.15.6 → argus_alm-0.15.8}/templates/test_run.html.j2 +0 -0
  419. {argus_alm-0.15.6 → argus_alm-0.15.8}/templates/test_runs.html.j2 +0 -0
  420. {argus_alm-0.15.6 → argus_alm-0.15.8}/templates/tests.html.j2 +0 -0
  421. {argus_alm-0.15.6 → argus_alm-0.15.8}/templates/view_dashboard.html.j2 +0 -0
  422. {argus_alm-0.15.6 → argus_alm-0.15.8}/templates/views.html.j2 +0 -0
@@ -0,0 +1,27 @@
1
+ # Repository Guidelines
2
+
3
+ ## Project Structure & Module Organization
4
+ Backend services live in `argus/backend` with Flask entry points defined in `argus_backend.py`; shared helpers sit in `argus/common`, while CLI tooling and client integrations are under `argus/client`. Frontend assets are in `frontend/`, compiled into `public/dist`, and HTML templates stay in `templates/`. Test suites are grouped in `argus/backend/tests`, `argus/client/tests`, and `pytest-argus-reporter/tests`.
5
+
6
+ ## Build, Test, and Development Commands
7
+ Install dependencies with `uv sync --all-extras` and `yarn install`. Rebuild the Svelte-based UI with `ROLLUP_ENV=development yarn rollup -c --watch`. Start the API locally via `FLASK_ENV=development FLASK_APP=argus_backend:start_server CQLENG_ALLOW_SCHEMA_MANAGEMENT=1 uv run flask run`. For linting, run `uv run ruff check`. Run server-side tests with `uv run pytest argus/backend/tests` and client utilities through `uv run pytest argus/client/tests`.
8
+
9
+ ## Coding Style & Naming Conventions
10
+ Python code targets 3.12, uses 4-space indentation, and a 120-character line width enforced by Ruff and Autopep8 (see `pyproject.toml`). Prefer descriptive snake_case for Python modules and functions; keep Svelte/JS components in PascalCase folders aligned with entry files (e.g., `frontend/AdminPanel/`). Organize Flask blueprints by feature under `argus/backend` and export public APIs through `__init__.py`.
11
+
12
+ ## Svelte 5 Frontend Patterns
13
+ - Favor the rune APIs (`$props`, `$state`, `$derived`, `run`) for component state and avoid legacy `$:` reactivity when a rune captures intent better.
14
+ - Reach into the DOM through Svelte bindings or actions (`bind:this`, `use:…`) rather than global selectors; never call `Node.querySelector*` inside components—track nodes via bindings and stores instead.
15
+ - Prefer component composition, snippets, and `@const/@render` blocks over imperative DOM updates; lean on `await tick()` when you must wait for the DOM after state changes.
16
+ - Keep data transformations in script context and pass plain data to the markup; don’t derive clipboard or export payloads by scraping rendered HTML.
17
+ - Encapsulate escape-hatch logic (Bootstrap collapse, portals, external widgets) inside reusable actions/helpers so behavior is testable and discoverable.
18
+ - Use TypeScript-friendly patterns (typed props, `import type …`) whenever you bind component instances or DOM nodes, and co-locate UI-specific helpers next to their components.
19
+
20
+ ## Testing Guidelines
21
+ Tests follow `test_*.py` naming and Pytest markers such as `@pytest.mark.docker_required` for Docker-heavy suites. Keep unit tests close to their modules (e.g., `results_service` tests). Execute full coverage with `uv run pytest --cov=argus backend/tests client/tests`. Add fixtures under `argus/backend/tests/conftest.py` when sharing setup.
22
+
23
+ ## Commit & Pull Request Guidelines
24
+ Adopt the Conventional Commits style observed in history (`fix(scope): message`, `feature(app): ...`). Compose commits around a single logical change and run lint/tests before pushing. Pull requests should describe intent, outline manual validation steps, and link tracking issues; include screenshots or API payload snippets when UI or API responses change.
25
+
26
+ ## Configuration & Security Notes
27
+ Never commit secrets: When testing against Cassandra, use the Docker compose setup in `dev-db/` and tear it down after use. Keep sample data archives outside the repository to avoid leaking production artifacts.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: argus-alm
3
- Version: 0.15.6
3
+ Version: 0.15.8
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
@@ -5,6 +5,10 @@
5
5
 
6
6
  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.
7
7
 
8
+ ## Contributing
9
+
10
+ Review the [Repository Guidelines](AGENTS.md) for project structure, tooling expectations, and pull request practices before submitting changes.
11
+
8
12
  ## Installation notes
9
13
 
10
14
  ### Development
@@ -28,7 +28,7 @@ version_tuple: VERSION_TUPLE
28
28
  commit_id: COMMIT_ID
29
29
  __commit_id__: COMMIT_ID
30
30
 
31
- __version__ = version = '0.15.6'
32
- __version_tuple__ = version_tuple = (0, 15, 6)
31
+ __version__ = version = '0.15.8'
32
+ __version_tuple__ = version_tuple = (0, 15, 8)
33
33
 
34
- __commit_id__ = commit_id = 'g46c898c68'
34
+ __commit_id__ = commit_id = 'geb08ab7cf'
@@ -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._extra_headers = extra_headers or {}
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 = requests.get(
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 = requests.post(
122
+ response = self.session.post(
126
123
  url=url,
127
124
  params=params,
128
125
  json=body,
@@ -2,6 +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.email import RawAttachment, ReportSection, ReportSectionShortHand
5
6
  from argus.common.sct_types import GeminiResultsRequest, PerformanceResultsRequest, RawEventPayload
6
7
  from argus.common.enums import ResourceState, TestStatus
7
8
  from argus.client.base import ArgusClient
@@ -27,6 +28,7 @@ class ArgusSCTClient(ArgusClient):
27
28
  SUBMIT_EVENTS = "/sct/$id/events/submit"
28
29
  SUBMIT_EVENT = "/sct/$id/event/submit"
29
30
  SUBMIT_JUNIT_REPORT = "/sct/$id/junit/submit"
31
+ SUBMIT_EMAIL = "/testrun/report"
30
32
 
31
33
  def __init__(self, run_id: UUID, auth_token: str, base_url: str, api_version="v1", extra_headers: dict | None = None) -> None:
32
34
  super().__init__(auth_token, base_url, api_version, extra_headers=extra_headers)
@@ -136,6 +138,25 @@ class ArgusSCTClient(ArgusClient):
136
138
  )
137
139
  self.check_response(response)
138
140
 
141
+ def send_email(self, recipients: list[str], title: str = "#auto", sections: list[ReportSection | ReportSectionShortHand] = None, attachments: list[RawAttachment] | None = None) -> None:
142
+ """
143
+ Send a testrun report email using Argus.
144
+ Documentation: https://github.com/scylladb/argus/blob/master/docs/api_usage.md#L124
145
+ """
146
+ response = self.post(
147
+ endpoint=self.Routes.SUBMIT_EMAIL,
148
+ location_params={},
149
+ body={
150
+ **self.generic_body,
151
+ "run_id": self.run_id,
152
+ "title": title,
153
+ "recipients": recipients,
154
+ "sections": sections or [],
155
+ "attachments": attachments or [],
156
+ }
157
+ )
158
+ self.check_response(response)
159
+
139
160
  def submit_gemini_results(self, gemini_data: GeminiResultsRequest) -> None:
140
161
  """
141
162
  Submits gemini results such as oracle node information and gemini command & its results
@@ -0,0 +1,33 @@
1
+
2
+ from typing import Any, Literal, TypedDict
3
+
4
+
5
+ class ReportSection(TypedDict):
6
+ type: str
7
+ options: dict[str, Any]
8
+
9
+
10
+ ReportSectionShortHand = Literal["main",
11
+ "header",
12
+ "packages",
13
+ "logs",
14
+ "cloud",
15
+ "nemesis",
16
+ "events",
17
+ "screenshots",
18
+ "custom_table",
19
+ "custom_html",]
20
+
21
+
22
+ class RawAttachment(TypedDict):
23
+ filename: str
24
+ data: str # Base64 string
25
+
26
+
27
+ class RawReportSendRequest(TypedDict):
28
+ schema_version: str
29
+ run_id: str
30
+ title: str
31
+ recipients: list[str]
32
+ sections: list[ReportSection]
33
+ attachments: list[RawAttachment]
@@ -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"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: argus-alm
3
- Version: 0.15.6
3
+ Version: 0.15.8
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
@@ -4,6 +4,7 @@
4
4
  .gitignore
5
5
  .pre-commit-config.yaml
6
6
  .prettierrc.js
7
+ AGENTS.md
7
8
  Dockerfile
8
9
  LICENSE
9
10
  MANIFEST.in
@@ -39,6 +40,7 @@ argus/client/sct/client.py
39
40
  argus/client/sct/types.py
40
41
  argus/client/sirenada/client.py
41
42
  argus/common/__init__.py
43
+ argus/common/email.py
42
44
  argus/common/enums.py
43
45
  argus/common/sct_types.py
44
46
  argus/common/sirenada_types.py
@@ -275,6 +277,9 @@ frontend/TestRun/Pytest/PytestRun.svelte
275
277
  frontend/TestRun/Pytest/PytestTab.svelte
276
278
  frontend/TestRun/Pytest/index.js
277
279
  frontend/TestRun/Pytest/types.ts
280
+ frontend/TestRun/SCT/SctEvent.svelte
281
+ frontend/TestRun/SCT/SctEvents.svelte
282
+ frontend/TestRun/SCT/SctNemesis.svelte
278
283
  frontend/TestRun/SCTSubTests/Subtest.js
279
284
  frontend/TestRun/SCTSubTests/Gemini/GeminiTabBodyComponent.svelte
280
285
  frontend/TestRun/SCTSubTests/Gemini/GeminiTabComponent.svelte
@@ -390,6 +395,19 @@ templates/admin/base.html.j2
390
395
  templates/admin/index.html.j2
391
396
  templates/auth/login.html.j2
392
397
  templates/auth/register.html.j2
398
+ templates/email/base.html.j2
399
+ templates/email/css/styles.css
400
+ templates/email/partials/cloud.html.j2
401
+ templates/email/partials/custom_html.html.j2
402
+ templates/email/partials/custom_table.html.j2
403
+ templates/email/partials/events.html.j2
404
+ templates/email/partials/header.html.j2
405
+ templates/email/partials/logs.html.j2
406
+ templates/email/partials/main.html.j2
407
+ templates/email/partials/nemesis.html.j2
408
+ templates/email/partials/packages.html.j2
409
+ templates/email/partials/screenshots.html.j2
410
+ templates/email/partials/unsupported.html.j2
393
411
  templates/notifications/assigned.html.j2
394
412
  templates/notifications/assigned_email.html.j2
395
413
  templates/notifications/email_mention.html.j2
@@ -33,3 +33,4 @@ python-jenkins>=1.7.0
33
33
  python-slugify~=6.1.1
34
34
  pygithub>=2.6.1
35
35
  boto3~=1.38.9
36
+ prometheus-flask-exporter>=0.23.2
@@ -1,5 +1,8 @@
1
1
  import logging
2
- from flask import Flask
2
+ import os
3
+ from flask import Flask, request
4
+ from prometheus_flask_exporter import NO_PREFIX
5
+ from argus.backend.metrics import METRICS
3
6
  from argus.backend.template_filters import export_filters
4
7
  from argus.backend.controller import admin, api, main
5
8
  from argus.backend.cli import cli_bp
@@ -12,8 +15,27 @@ from argus.backend.util.config import Config
12
15
  LOGGER = logging.getLogger(__name__)
13
16
 
14
17
 
18
+ def register_metrics():
19
+ METRICS.export_defaults(group_by="endpoint", prefix=NO_PREFIX)
20
+ METRICS.register_default(
21
+ METRICS.counter(
22
+ "http_request_by_endpoint_total",
23
+ "Total Requests made",
24
+ labels={
25
+ "endpoint": lambda: request.endpoint,
26
+ "method": lambda: request.method,
27
+ "status": lambda response: response.status,
28
+ },
29
+ )
30
+ )
31
+
32
+
15
33
  def start_server(config=None) -> Flask:
16
34
  app = Flask(__name__, static_url_path="/s/", static_folder="public")
35
+ METRICS.init_app(app)
36
+ if os.environ.get("PROMETHEUS_MULTIPROC_DIR"):
37
+ with app.app_context():
38
+ METRICS.register_endpoint("/metrics")
17
39
  app.json_provider_class = ArgusJSONProvider
18
40
  app.json = ArgusJSONProvider(app)
19
41
  app.jinja_env.policies["json.dumps_kwargs"]["default"] = app.json.default
@@ -35,6 +57,11 @@ def start_server(config=None) -> Flask:
35
57
  app.register_blueprint(api.bp)
36
58
  app.register_blueprint(admin.bp)
37
59
  app.register_blueprint(cli_bp)
60
+ with app.app_context():
61
+ try:
62
+ register_metrics()
63
+ except ValueError:
64
+ pass
38
65
 
39
66
  app.logger.info("Ready.")
40
67
  return app
@@ -40,7 +40,7 @@ AWS_CLIENT_SECRET: YourSecretKey
40
40
  # Client ID of a github oauth application
41
41
  GITHUB_CLIENT_ID: YOUR_GITHUB_CLIENT_ID
42
42
  # Scopes used for Github Application:
43
- # GITHUB_SCOPES: 'user:email read:user read:org repo'
43
+ # GITHUB_SCOPES: 'user:email read:user read:org'
44
44
  # Client secret of a github oauth application
45
45
  GITHUB_CLIENT_SECRET: YOUR_GITHUB_CLIENT_SECRET
46
46
  # Github personal access token
@@ -0,0 +1,280 @@
1
+ # Argus API
2
+
3
+ To use argus API the user first should generate an API token. To do so, proceed to the Profile Page inside the application and locate the button to generate the token. WARNING: The token will be shown only once, so be sure to save it after copying. For each API call, the token should be provided as part of Authorization header, example:
4
+
5
+ ```sh
6
+ curl --request GET \
7
+ --url https://argus.scylladb.com/api/v1/client/driver_matrix/test_report?buildId=example/driver-matrix/test \
8
+ --header "Authorization: token YourTokenHere"
9
+ ```
10
+
11
+ ## Current endpoints
12
+
13
+ ```http
14
+ GET /api/v1/client/driver_matrix/test_report
15
+ ```
16
+
17
+ Accepts following parameters:
18
+
19
+ | Parameter | Type | Description |
20
+ | --------- | ---- | ------------|
21
+ | buildId | string | build id of the test to query |
22
+
23
+ ```json
24
+ {
25
+ "response": {
26
+ "build_id": "example/driver-matrix/test",
27
+ "release": "xxxxxxxx",
28
+ "test": "testing-driver-matrix",
29
+ "versions": {
30
+ "datastax": [
31
+ "pytest.datastax.v3.3.24.0",
32
+ "pytest.datastax.v3.3.25.0",
33
+ "pytest.datastax.v4.3.24.0",
34
+ "pytest.datastax.v4.3.25.0"
35
+ ],
36
+ "scylla": [
37
+ "pytest.scylla.v3.3.24.8",
38
+ "pytest.scylla.v3.3.25.5",
39
+ "pytest.scylla.v4.3.24.8",
40
+ "pytest.scylla.v4.3.25.5"
41
+ ]
42
+ }
43
+ },
44
+ "status": "ok"
45
+ }
46
+ ```
47
+
48
+ ```http
49
+ POST /api/v1/planning/plan/trigger
50
+ ```
51
+
52
+ Accepts following payload:
53
+
54
+ Type: application/json
55
+
56
+ | Parameter | Type | Description |
57
+ | --------- | ---- | ------------|
58
+ | release | string | Release name to trigger plans in (can be mixed vith version to narrow filter) |
59
+ | plan_id | string | Specific plan id to trigger |
60
+ | version | string | Target scylla version of plans to trigger |
61
+ | common_params | object{ param_name: value } | Common parameters, such as backend |
62
+ | params | object{ param_name: value }[] | specific job parameters |
63
+
64
+ Example payload:
65
+
66
+ ```json
67
+ {
68
+ {
69
+ "version": "2024.3.1~rc0",
70
+ "release": "scylla-master",
71
+ "plan_id": "some-plan-uuid",
72
+ "common_params": {
73
+ "instance_provision": "spot",
74
+ },
75
+ "params": [
76
+ {
77
+ "test": "longevity",
78
+ "backend": "aws",
79
+ "region": "eu-west-1",
80
+ "scylla_ami_id": "ami-abcd"
81
+ },
82
+ {
83
+ "test": "longevity",
84
+ "backend": "azure",
85
+ "region": "us-east1",
86
+ "azure_image_id": "/subscriptions…",
87
+ }
88
+ ]
89
+ }
90
+
91
+ }
92
+ ```
93
+
94
+ ```json
95
+ {
96
+ "response": {
97
+ "jobs": [
98
+ "http://jenkins/path/job/one/1",
99
+ "http://jenkins/path/job/two/3",
100
+ "http://jenkins/path/job/three/5",
101
+ "http://jenkins/path/job/four/9"
102
+ ],
103
+ "failed_to_execute": [
104
+ "path/job/one",
105
+ "path/job/two",
106
+ "path/job/three",
107
+ "path/job/four"
108
+ ]
109
+ },
110
+ "status": "ok"
111
+ }
112
+ ```
113
+
114
+ Additionally, this endpoint is available inside `argus-client-generic` executable, as follows:
115
+
116
+ ```bash
117
+ argus-client-generic trigger-jobs --api-key $key --version $version --plan_id $id --release $release --job-info-file $file_path
118
+ ```
119
+
120
+ `--job-info-file` is a .json file containing `common_params` and `params` parts of the payload, everything else is specified on the command line.
121
+
122
+
123
+
124
+ ## Email reporting API
125
+
126
+ ```http
127
+ POST /api/v1/client/testrun/report/email
128
+ ```
129
+
130
+ ### Payload
131
+
132
+ |Key|Type|Description|
133
+ |---|----|-----------|
134
+ |recepients|array of string| List of email report recepients |
135
+ |title|string| Title of the email. Use `#auto` for automatically generated title |
136
+ |run_id|string| UUID of the run to report |
137
+ |attachments| Attachment[] | list of attachments to send |
138
+ |sections | mixed(string, Section)[] | list of mixed strings of section names or Section object |
139
+
140
+ #### Attachment
141
+
142
+ |Field|Type|Description|
143
+ |-----|----|-----------|
144
+ |filename|string| Filename of the attachment |
145
+ |data|string| Base64 encoded payload |
146
+
147
+ #### Section
148
+
149
+ |Field|Type|Description|
150
+ |-----|----|-----------|
151
+ |type|string| Section type [Required]|
152
+ |options| Options | Options object with supported option keys |
153
+
154
+ Supported sections are:
155
+
156
+ | Name|Description|
157
+ |-----|-----------|
158
+ | header| Topmost header of the email. Contains the link to the Argus run and a status icon |
159
+ | main| Info block similar to the Info tab on the Argus run page. Contains info about the run such as runtime, used scylla version and sct branch and others. |
160
+ | packages| Table with package name and version information |
161
+ | logs| List of links to the log files stored on S3 for this run |
162
+ | cloud| Contains active remaining resources running at the end the test. Table |
163
+ | nemesis| Table of nemeses in the run with their status and durations |
164
+ | events| Event block of most recent events sorted by timestamp |
165
+ | screenshots| Grafana screenshot gallery |
166
+ | custom_table| Custom table element. Can be used to display arbitrary tables. HTML in cells is **not** supported |
167
+ | custom_html| Arbitrary HTML |
168
+
169
+ If a section is unrecognized, it will be rendered as a special "Unsupported" section which will print all the options sent to that section.
170
+
171
+ If a section is passed but data for it in Argus is empty, the section won't be rendered. Some sections are always attempted to be rendered.
172
+
173
+ The `section` block can be provided as empty array to use the default template.
174
+
175
+ ##### Section options
176
+
177
+ ###### Events
178
+
179
+ |Option|Type|Description|
180
+ |------|----|-----------|
181
+ |amount_per_severity| number | Amount of events per severity to display (default 10)|
182
+ |severity_filter| string[] | Names of severities to include in the email (default [CRITICAL, ERROR]). Available severities: CRITICAL, ERROR, WARNING, NORMAL, DEBUG (case-sensitive)|
183
+
184
+ ###### Nemesis
185
+
186
+ |Option|Type|Description|
187
+ |------|----|-----------|
188
+ |sort_order| tuple of key of NemesisRunInfo, direction | Default (start_time, desc). Direction can be: asc, desc. `NemesisRunInfo` can be viewed [here](https://github.com/scylladb/argus/blob/master/argus/backend/plugins/sct/udt.py#L78) |
189
+ |status_filter| string[] | Names of nemesis status to include in the email (default [failed, succeeded]). Available statuses: started, running, failed, skipped, succeeded, terminated (case-sensitive)|
190
+
191
+ ###### Custom Table
192
+
193
+ |Option|Type|Description|
194
+ |------|----|-----------|
195
+ |table_name| string | Table title|
196
+ |headers| any[] | Table header columns (Required) |
197
+ |rows| any[][] | Array of table cell arrays. |
198
+
199
+ ###### Custom HTML
200
+
201
+ |Option|Type|Description|
202
+ |------|----|-----------|
203
+ |section_name| string | Section Title |
204
+ |html| string | Section HTML Content |
205
+
206
+ Example:
207
+
208
+ ```json
209
+ {
210
+ "section_name": "Additional Info",
211
+ "html": "<h1 title='lorem' style='background-color: red'>loremLorem, ipsum dolor.</h1><p>Lorem ipsum dolor sit amet consectetur adipisicing elit. Nisi maiores, eius nemo veritatis dolorem blanditiis nam magni dicta laborum iste!</p>"
212
+ }
213
+ ```
214
+
215
+
216
+ ### Example payload
217
+
218
+ ```json
219
+ {
220
+ "recepients": [
221
+ "john.smith@scylladb.com"
222
+ ],
223
+ "run_id": "17351a94-3aba-41de-aba5-cda123dff0bb",
224
+ "title": "#auto",
225
+ "attachments": [
226
+ ],
227
+ "sections": [
228
+ "header",
229
+ "main",
230
+ "packages",
231
+ "screenshots",
232
+ "cloud",
233
+ {
234
+ "type": "events",
235
+ "options": {
236
+ "amount_per_severity": 10,
237
+ "severity_filter": [
238
+ "CRITICAL",
239
+ "ERROR"
240
+ ]
241
+ }
242
+ },
243
+ {
244
+ "type": "nemesis",
245
+ "options": {
246
+ "sort_order": [
247
+ "start_time",
248
+ "desc"
249
+ ],
250
+ "status_filter": [
251
+ "failed",
252
+ "succeeded"
253
+ ]
254
+ }
255
+ },
256
+ "logs",
257
+ {
258
+ "type": "custom_table",
259
+ "options": {
260
+ "table_name": "My Table",
261
+ "headers": ["hello", "one", "two"],
262
+ "rows": [
263
+ [1,2,3],
264
+ ["four", "five", "six"]
265
+ ]
266
+ }
267
+ }
268
+ ]
269
+ }
270
+
271
+ ```
272
+
273
+ ### Response
274
+
275
+ ```json
276
+ {
277
+ "response": true,
278
+ "status": "ok"
279
+ }
280
+ ```