argus-alm 0.15.9__tar.gz → 0.15.10__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.
- {argus_alm-0.15.9 → argus_alm-0.15.10}/PKG-INFO +2 -1
- {argus_alm-0.15.9 → argus_alm-0.15.10}/argus/_version.py +3 -3
- {argus_alm-0.15.9 → argus_alm-0.15.10}/argus/client/base.py +25 -2
- {argus_alm-0.15.9 → argus_alm-0.15.10}/argus/client/driver_matrix_tests/client.py +4 -2
- {argus_alm-0.15.9 → argus_alm-0.15.10}/argus/client/generic/client.py +4 -2
- {argus_alm-0.15.9 → argus_alm-0.15.10}/argus/client/sct/client.py +4 -2
- {argus_alm-0.15.9 → argus_alm-0.15.10}/argus/client/sirenada/client.py +4 -2
- {argus_alm-0.15.9 → argus_alm-0.15.10}/argus_alm.egg-info/PKG-INFO +2 -1
- {argus_alm-0.15.9 → argus_alm-0.15.10}/argus_alm.egg-info/SOURCES.txt +4 -2
- {argus_alm-0.15.9 → argus_alm-0.15.10}/argus_alm.egg-info/requires.txt +1 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/argus_web.example.yaml +8 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/dev-db/export_data.py +20 -2
- {argus_alm-0.15.9 → argus_alm-0.15.10}/dev-db/import_data.py +34 -1
- {argus_alm-0.15.9 → argus_alm-0.15.10}/docs/api_usage.md +8 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/docs/dev-setup.md +4 -5
- {argus_alm-0.15.9 → argus_alm-0.15.10}/docs/generic_results.md +3 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/Github/GithubIssue.svelte +20 -15
- argus_alm-0.15.9/frontend/Github/GithubIssues.svelte → argus_alm-0.15.10/frontend/Github/Issues.svelte +192 -50
- argus_alm-0.15.9/frontend/Github/GithubIssuesCopyModal.svelte → argus_alm-0.15.10/frontend/Github/IssuesCopyModal.svelte +21 -15
- argus_alm-0.15.10/frontend/Jira/JiraIssue.svelte +363 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/ReleaseDashboard/ReleaseDashboard.svelte +2 -2
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/TestRun/IssueTab.svelte +3 -3
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/Views/Widgets/PytestWidget/PytestResultRow.svelte +1 -1
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/Views/Widgets/SummaryWidget/RunIssues.svelte +3 -3
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/Views/Widgets/ViewGithubIssues.svelte +2 -2
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/argus.css +39 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/pyproject.toml +2 -1
- {argus_alm-0.15.9 → argus_alm-0.15.10}/pytest-argus-reporter/pytest_argus_reporter.py +5 -1
- {argus_alm-0.15.9 → argus_alm-0.15.10}/templates/email/css/styles.css +17 -0
- argus_alm-0.15.10/templates/email/partials/generic_results.html.j2 +46 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/uv.lock +62 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/.dockerignore +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/.envrc +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/.eslintrc.js +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/.github/workflows/.gitkeep +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/.github/workflows/lint.yml +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/.github/workflows/release.yml +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/.github/workflows/test.yml +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/.gitignore +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/.pre-commit-config.yaml +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/.prettierrc.js +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/AGENTS.md +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/Dockerfile +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/LICENSE +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/MANIFEST.in +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/README.md +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/argus/__init__.py +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/argus/client/__init__.py +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/argus/client/driver_matrix_tests/cli.py +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/argus/client/generic/cli.py +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/argus/client/generic_result.py +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/argus/client/sct/types.py +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/argus/common/__init__.py +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/argus/common/email.py +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/argus/common/enums.py +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/argus/common/sct_types.py +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/argus/common/sirenada_types.py +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/argus.yaml +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/argusAI/README.md +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/argusAI/deployment/argusai_event_similarity_processor.service +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/argusAI/event_similarity_processor.py +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/argusAI/logs/.gitignore +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/argusAI/pyproject.toml +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/argusAI/utils/__init__.py +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/argusAI/utils/event_message_sanitizer.py +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/argusAI/utils/scylla_connection.py +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/argusAI/uv.lock +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/argus_alm.egg-info/dependency_links.txt +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/argus_alm.egg-info/entry_points.txt +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/argus_alm.egg-info/top_level.txt +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/argus_backend.py +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/commitlint.config.js +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/dev-db/.gitignore +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/dev-db/alpha-config/cassandra-rackdc.properties +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/dev-db/alpha-config/machine_image_configured +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/dev-db/alpha-config/scylla.yaml +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/dev-db/alpha-data/.gitignore +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/dev-db/docker-compose.yaml +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/docker/config/nginx-docker.conf +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/docker/config/supervisord.conf +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/docker-entrypoint.sh +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/docs/argus_status_page.md +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/docs/argus_status_page_diagram.jpg +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/docs/config/argus.nginx.conf +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/docs/config/argus.service +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/docs/pypi-guide.md +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/AdminPanel/AdminPanel.svelte +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/AdminPanel/AdminPanelWelcome.svelte +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/AdminPanel/BatchTestMover.svelte +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/AdminPanel/GroupCreator.svelte +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/AdminPanel/ReleaseCreator.svelte +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/AdminPanel/ReleaseDeletionConfirmationPopup.svelte +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/AdminPanel/ReleaseEditor.svelte +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/AdminPanel/ReleaseManager.svelte +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/AdminPanel/ReleaseManagerGroup.svelte +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/AdminPanel/ReleaseManagerTest.svelte +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/AdminPanel/TestCreator.svelte +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/AdminPanel/UserManager.svelte +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/AdminPanel/ViewListItem.svelte +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/AdminPanel/ViewSelectItem.svelte +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/AdminPanel/ViewWidget.svelte +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/AdminPanel/ViewsManager.svelte +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/Alert.js +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/Alerts/AlertMessage.svelte +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/Alerts/AlertWidget.svelte +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/Common/ApiUtils.js +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/Common/ArgusNotification.ts +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/Common/AssigneeSelector.svelte +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/Common/AssigneeUtils.js +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/Common/DateUtils.js +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/Common/DriverMatrixTypes.ts +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/Common/IssueDestinations.js +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/Common/JenkinsSettingsHelp.js +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/Common/ModalWindow.svelte +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/Common/PluginDispatch.js +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/Common/PluginNames.js +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/Common/RunUtils.js +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/Common/SelectUtils.js +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/Common/StateManagement.js +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/Common/TestStatus.js +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/Common/TextUtils.js +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/Common/UserTypes.ts +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/Common/UserUtils.js +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/Common/ViewTypes.js +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/Debug/FlashDebugComponent.svelte +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/Discussion/Comment.svelte +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/Discussion/CommentEditor.svelte +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/Discussion/MarkedMentionExtension.js +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/Discussion/MentionSelector.svelte +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/Discussion/UserProfile.svelte +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/Profile/JobsList.svelte +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/Profile/Login.svelte +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/Profile/Notification.svelte +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/Profile/NotificationCommentWrapper.svelte +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/Profile/NotificationCounter.svelte +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/Profile/NotificationSender.svelte +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/Profile/NotificationTestRunWrapper.svelte +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/Profile/NotificationsReader.svelte +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/Profile/PlannedJob.svelte +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/Profile/PlannedJobs.svelte +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/Profile/ProfileJob.svelte +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/Profile/ProfileJobs.svelte +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/Profile/ProfileJobsTab.svelte +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/Profile/ProfileSchedules.svelte +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/Profile/User.svelte +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/Profile/UserSelection.svelte +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/Profile/ViewUserResolver.svelte +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/ReleaseDashboard/AssigneeFilter.svelte +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/ReleaseDashboard/FlatViewHelper.svelte +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/ReleaseDashboard/GroupedViewHelper.svelte +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/ReleaseDashboard/ReleaseActivity.svelte +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/ReleaseDashboard/ReleaseGithubIssues.svelte +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/ReleaseDashboard/TestDashboard.svelte +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/ReleaseDashboard/TestDashboardFlatView.svelte +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/ReleaseDashboard/TestDashboardGroup.svelte +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/ReleaseDashboard/TestDashboardTest.svelte +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/ReleaseDashboard/TestPopoutSelector.svelte +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/ReleaseDashboard/TestWithIssuesCard.svelte +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/ReleasePlanner/CommentTableRow.svelte +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/ReleasePlanner/DutyPlanner.svelte +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/ReleasePlanner/EntityReplacer.svelte +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/ReleasePlanner/ReleasePlan.svelte +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/ReleasePlanner/ReleasePlanCopyForm.svelte +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/ReleasePlanner/ReleasePlanCreator.svelte +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/ReleasePlanner/ReleasePlanEditor.svelte +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/ReleasePlanner/ReleasePlanTable.svelte +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/ReleasePlanner/ReleasePlanner.svelte +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/ReleasePlanner/ReleasePlannerGridView.svelte +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/ReleasePlanner/ReleaseScheduler.svelte +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/ReleasePlanner/Schedule.svelte +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/ReleasePlanner/ScheduleTable.svelte +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/ReleasePlanner/SearchBar.svelte +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/Stats/ChartStats.svelte +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/Stats/NumberStats.svelte +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/Stats/ProgressBarStats.svelte +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/Stats/ReleaseStats.svelte +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/Stats/StatsFetcher.svelte +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/Stores/AlertStore.js +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/Stores/AssigneeSubscriber.js +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/Stores/SingleTestRunSubscriber.js +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/Stores/TestRunsSubscriber.js +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/Stores/UserlistSubscriber.js +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/Stores/WorkspaceStore.js +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/Teams/TeamCreateForm.svelte +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/Teams/TeamDetail.svelte +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/Teams/TeamList.svelte +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/Teams/TeamManager.svelte +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/Teams/TeamMember.svelte +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/Teams/TeamShort.svelte +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/Teams/TeamUtils.ts +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/TestRun/ActivityTab.svelte +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/TestRun/ArtifactRow.svelte +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/TestRun/ArtifactTab.svelte +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/TestRun/Components/Cell.svelte +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/TestRun/Components/Filters.svelte +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/TestRun/Components/GraphFilters.svelte +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/TestRun/Components/ResultTable.svelte +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/TestRun/Components/ScreenshotModal.svelte +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/TestRun/DriverMatrixBreakdown.svelte +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/TestRun/DriverMatrixRunInfo.svelte +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/TestRun/DriverMatrixTestCollection.svelte +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/TestRun/DriverMatrixTestRun.svelte +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/TestRun/DriverMatrixTestSuites.svelte +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/TestRun/EventsTab.svelte +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/TestRun/Generic/GenericTestRun.svelte +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/TestRun/Generic/GenericTestRunInfo.svelte +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/TestRun/Generic/Subtest.js +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/TestRun/HeartbeatIndicator.svelte +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/TestRun/IssueTemplate.svelte +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/TestRun/Jenkins/Build.js +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/TestRun/Jenkins/BuildConfirmationDialog.svelte +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/TestRun/Jenkins/BuildStartPlaceholder.svelte +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/TestRun/Jenkins/BuildSuccessPlaceholder.svelte +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/TestRun/Jenkins/CheckParam.svelte +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/TestRun/Jenkins/CloneCreatePlaceholder.svelte +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/TestRun/Jenkins/CloneSuccess.svelte +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/TestRun/Jenkins/CloneTargetSelector.svelte +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/TestRun/Jenkins/DummyCheckParam.svelte +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/TestRun/Jenkins/DummySelectParam.svelte +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/TestRun/Jenkins/JenkinsBuildModal.svelte +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/TestRun/Jenkins/JenkinsCloneModal.svelte +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/TestRun/Jenkins/LoadTargetsPlaceholder.svelte +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/TestRun/Jenkins/ModalError.svelte +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/TestRun/Jenkins/ParamFetchPlaceholder.svelte +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/TestRun/Jenkins/ParameterEditor.svelte +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/TestRun/Jenkins/SCTParameterWizard.svelte +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/TestRun/Jenkins/SelectParam.svelte +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/TestRun/Jenkins/StringParam.svelte +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/TestRun/Jenkins/TextParam.svelte +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/TestRun/Jenkins/WizardUnavailable.svelte +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/TestRun/NemesisData.svelte +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/TestRun/NemesisReason.svelte +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/TestRun/NemesisTable.svelte +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/TestRun/PackagesInfo.svelte +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/TestRun/Pytest/DtestTab.svelte +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/TestRun/Pytest/PytestItem.svelte +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/TestRun/Pytest/PytestRun.svelte +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/TestRun/Pytest/PytestTab.svelte +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/TestRun/Pytest/index.js +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/TestRun/Pytest/types.ts +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/TestRun/RawEvent.svelte +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/TestRun/ResourcesInfo.svelte +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/TestRun/ResultsGraph.svelte +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/TestRun/ResultsGraphs.svelte +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/TestRun/ResultsTab.svelte +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/TestRun/RunAssigneeSelector.svelte +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/TestRun/RunInvestigationStatusButton.svelte +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/TestRun/RunStatusButton.svelte +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/TestRun/SCT/SctEvent.svelte +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/TestRun/SCT/SctEvents.svelte +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/TestRun/SCT/SctNemesis.svelte +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/TestRun/SCTSubTests/Gemini/GeminiTabBodyComponent.svelte +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/TestRun/SCTSubTests/Gemini/GeminiTabComponent.svelte +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/TestRun/SCTSubTests/Performance/PerformanceTabBodyComponent.svelte +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/TestRun/SCTSubTests/Performance/PerformanceTabComponent.svelte +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/TestRun/SCTSubTests/Subtest.js +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/TestRun/Screenshots.svelte +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/TestRun/Sirenada/SirenadaIssueTemplate.svelte +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/TestRun/Sirenada/SirenadaRunInfo.svelte +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/TestRun/Sirenada/SirenadaTestBreakdown.svelte +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/TestRun/Sirenada/SirenadaTestRun.svelte +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/TestRun/StructuredEvent.svelte +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/TestRun/TestRun.svelte +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/TestRun/TestRunComments.svelte +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/TestRun/TestRunInfo.svelte +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/TestRun/jUnitChart.svelte +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/TestRun/jUnitResults.svelte +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/Utils/IntersectionObserver.svelte +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/Views/ViewDashboard.svelte +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/Views/ViewSelect.svelte +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/Views/WidgetSettingTypes/CheckValue.svelte +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/Views/WidgetSettingTypes/IntegerValue.svelte +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/Views/WidgetSettingTypes/MultiSelectValue.svelte +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/Views/WidgetSettingTypes/MultiStringValue.svelte +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/Views/WidgetSettingTypes/StringValue.svelte +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/Views/Widgets/GraphsWidget/GraphsWidget.svelte +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/Views/Widgets/PytestWidget/PytestCalendarSelector.svelte +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/Views/Widgets/PytestWidget/PytestCollapseHelper.svelte +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/Views/Widgets/PytestWidget/PytestFlatHelper.svelte +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/Views/Widgets/PytestWidget/PytestOverviewWidget.svelte +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/Views/Widgets/PytestWidget/PytestTableWidget.svelte +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/Views/Widgets/PytestWidget/ViewPytestOverview.svelte +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/Views/Widgets/SummaryWidget/SummaryWidget.svelte +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/Views/Widgets/ViewGraphedStats/AssigneeCell.svelte +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/Views/Widgets/ViewGraphedStats/Filters.svelte +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/Views/Widgets/ViewGraphedStats/Interfaces.ts +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/Views/Widgets/ViewGraphedStats/InvestigationStatusCell.svelte +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/Views/Widgets/ViewGraphedStats/IssuesCell.svelte +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/Views/Widgets/ViewGraphedStats/NemesisTable.svelte +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/Views/Widgets/ViewGraphedStats/PaginatedTable.svelte +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/Views/Widgets/ViewGraphedStats/StackTracePreview.svelte +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/Views/Widgets/ViewGraphedStats/StatusBadge.svelte +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/Views/Widgets/ViewGraphedStats/StatusCell.svelte +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/Views/Widgets/ViewGraphedStats/TestRunTable.svelte +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/Views/Widgets/ViewGraphedStats.svelte +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/Views/Widgets/ViewHighlights/ActionItem.svelte +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/Views/Widgets/ViewHighlights/Comment.svelte +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/Views/Widgets/ViewHighlights/HighlightItem.svelte +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/Views/Widgets/ViewHighlights/ViewHighlights.svelte +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/Views/Widgets/ViewNemesisStats.svelte +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/Views/Widgets/ViewReleaseStats.svelte +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/Views/Widgets/ViewTestDashboard.svelte +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/Views/Widgets/ViewUnsupportedPlaceholder.svelte +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/WorkArea/AssigneeList.svelte +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/WorkArea/JobConfigureModal.svelte +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/WorkArea/RunGroup.svelte +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/WorkArea/RunRelease.svelte +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/WorkArea/Test.svelte +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/WorkArea/TestRunDispatcher.svelte +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/WorkArea/TestRuns.svelte +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/WorkArea/TestRunsMessage.svelte +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/WorkArea/TestRunsPanel.svelte +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/WorkArea/TestRunsSelector.svelte +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/WorkArea/UnknownTest.svelte +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/WorkArea/WorkArea.svelte +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/admin-panel.js +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/argus.js +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/duty-planner.js +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/flashDebug.js +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/font-awesome.css +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/font-awesome.js +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/fonts/NotoSans-Bold.ttf +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/fonts/NotoSans-BoldItalic.ttf +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/fonts/NotoSans-Italic.ttf +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/fonts/NotoSans-Regular.ttf +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/fonts/OFL.txt +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/fonts/noto.css +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/login.js +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/markdownOptions.js +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/notification-counter.js +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/plan.js +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/profile-jobs.js +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/profile-notifications.js +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/profile-schedules.js +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/release-dashboard.js +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/release-page.js +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/release-planner.js +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/release-scheduler.js +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/run-by-plugin.js +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/teams.js +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/test-run-details.js +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/test-runs-breakout.js +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/test-runs-standalone.js +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/view-dashboard.js +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/view-user-resolver.js +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/frontend/work-area.js +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/package.json +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/profile/.gitkeep +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/public/argus.png +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/public/no-user-picture.png +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/pytest-argus-reporter/.envrc +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/pytest-argus-reporter/LICENSE +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/pytest-argus-reporter/MANIFEST.in +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/pytest-argus-reporter/README.md +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/pytest-argus-reporter/noxfile.py +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/pytest-argus-reporter/pyproject.toml +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/rollup.config.js +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/run_with_profiler.py +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/scripts/argus-status-page/index.html +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/scripts/argus-status-page/js/status.js +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/scripts/argus-status-page/static/app.css +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/scripts/argus-status-page/static/argus.png +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/scripts/argus-status-page/static/scylla.png +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/scripts/argus-status-page/status.json +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/scripts/migration/migration_2023-04-07.py +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/scripts/migration/migration_2024-04-14.py +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/scripts/migration/migration_2025-07-18.py +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/setup.cfg +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/start_argus.sh +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/storage/profile_pictures/.gitignore +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/templates/admin/base.html.j2 +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/templates/admin/index.html.j2 +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/templates/auth/login.html.j2 +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/templates/auth/register.html.j2 +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/templates/base.html.j2 +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/templates/dashboard.html.j2 +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/templates/duty_planner.html.j2 +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/templates/email/base.html.j2 +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/templates/email/partials/cloud.html.j2 +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/templates/email/partials/custom_html.html.j2 +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/templates/email/partials/custom_table.html.j2 +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/templates/email/partials/events.html.j2 +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/templates/email/partials/header.html.j2 +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/templates/email/partials/logs.html.j2 +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/templates/email/partials/main.html.j2 +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/templates/email/partials/nemesis.html.j2 +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/templates/email/partials/packages.html.j2 +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/templates/email/partials/screenshots.html.j2 +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/templates/email/partials/unsupported.html.j2 +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/templates/error.html.j2 +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/templates/flash_debug.html.j2 +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/templates/groups.html.j2 +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/templates/home.html.j2 +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/templates/notifications/assigned.html.j2 +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/templates/notifications/assigned_email.html.j2 +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/templates/notifications/email_mention.html.j2 +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/templates/notifications/mention.html.j2 +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/templates/notifications/view_action_item_assigned.html.j2 +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/templates/notifications/view_action_item_assigned_email.html.j2 +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/templates/notifications/view_highlight_mention.html.j2 +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/templates/notifications/view_highlight_mention_email.html.j2 +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/templates/partials/nav_bar.html.j2 +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/templates/plan_dashboard.html.j2 +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/templates/profile.html.j2 +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/templates/profile_jobs.html.j2 +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/templates/profile_notifications.html.j2 +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/templates/profile_schedules.html.j2 +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/templates/release_dashboard.html.j2 +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/templates/release_planner.html.j2 +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/templates/release_schedule.html.j2 +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/templates/releases.html.j2 +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/templates/run_view_by_plugin.html.j2 +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/templates/runs.html.j2 +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/templates/standalone_test_with_runs.html.j2 +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/templates/teams.html.j2 +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/templates/test_run.html.j2 +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/templates/test_runs.html.j2 +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/templates/tests.html.j2 +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/templates/view_dashboard.html.j2 +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/templates/views.html.j2 +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/tsconfig.json +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/uwsgi.ini +0 -0
- {argus_alm-0.15.9 → argus_alm-0.15.10}/yarn.lock +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: argus-alm
|
|
3
|
-
Version: 0.15.
|
|
3
|
+
Version: 0.15.10
|
|
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: jira>=3.10.5; extra == "web-backend"
|
|
27
28
|
Requires-Dist: prometheus-flask-exporter>=0.23.2; extra == "web-backend"
|
|
28
29
|
Provides-Extra: docker-image
|
|
29
30
|
Requires-Dist: supervisor~=4.2.4; extra == "docker-image"
|
|
@@ -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.
|
|
32
|
-
__version_tuple__ = version_tuple = (0, 15,
|
|
31
|
+
__version__ = version = '0.15.10'
|
|
32
|
+
__version_tuple__ = version_tuple = (0, 15, 10)
|
|
33
33
|
|
|
34
|
-
__commit_id__ = commit_id = '
|
|
34
|
+
__commit_id__ = commit_id = 'gfb79cf01d'
|
|
@@ -5,6 +5,8 @@ from typing import Any, Type
|
|
|
5
5
|
from uuid import UUID
|
|
6
6
|
|
|
7
7
|
import requests
|
|
8
|
+
from requests.adapters import HTTPAdapter
|
|
9
|
+
from urllib3.util.retry import Retry
|
|
8
10
|
|
|
9
11
|
from argus.common.enums import TestStatus
|
|
10
12
|
from argus.client.generic_result import GenericResultTable
|
|
@@ -33,11 +35,30 @@ class ArgusClient:
|
|
|
33
35
|
FETCH_RESULTS = "/testrun/$type/$id/fetch_results"
|
|
34
36
|
FINALIZE = "/testrun/$type/$id/finalize"
|
|
35
37
|
|
|
36
|
-
def __init__(self, auth_token: str, base_url: str, api_version="v1", extra_headers: dict | None = None
|
|
38
|
+
def __init__(self, auth_token: str, base_url: str, api_version="v1", extra_headers: dict | None = None,
|
|
39
|
+
timeout: int = 60, max_retries: int = 3) -> None:
|
|
37
40
|
self._auth_token = auth_token
|
|
38
41
|
self._base_url = base_url
|
|
39
42
|
self._api_ver = api_version
|
|
43
|
+
self._timeout = timeout
|
|
40
44
|
self.session = requests.Session()
|
|
45
|
+
|
|
46
|
+
# Configure retry strategy
|
|
47
|
+
retry_strategy = Retry(
|
|
48
|
+
total=max_retries,
|
|
49
|
+
connect=max_retries,
|
|
50
|
+
read=max_retries,
|
|
51
|
+
status=0,
|
|
52
|
+
backoff_factor=1,
|
|
53
|
+
status_forcelist=(),
|
|
54
|
+
allowed_methods=["GET"],
|
|
55
|
+
)
|
|
56
|
+
|
|
57
|
+
# Mount adapter with retry strategy for both http and https
|
|
58
|
+
adapter = HTTPAdapter(max_retries=retry_strategy)
|
|
59
|
+
self.session.mount("http://", adapter)
|
|
60
|
+
self.session.mount("https://", adapter)
|
|
61
|
+
|
|
41
62
|
if extra_headers:
|
|
42
63
|
self.session.headers.update(extra_headers)
|
|
43
64
|
|
|
@@ -101,7 +122,8 @@ class ArgusClient:
|
|
|
101
122
|
response = self.session.get(
|
|
102
123
|
url=url,
|
|
103
124
|
params=params,
|
|
104
|
-
headers=self.request_headers
|
|
125
|
+
headers=self.request_headers,
|
|
126
|
+
timeout=self._timeout
|
|
105
127
|
)
|
|
106
128
|
LOGGER.debug("GET Response: %s %s", response.status_code, response.url)
|
|
107
129
|
|
|
@@ -124,6 +146,7 @@ class ArgusClient:
|
|
|
124
146
|
params=params,
|
|
125
147
|
json=body,
|
|
126
148
|
headers=self.request_headers,
|
|
149
|
+
timeout=self._timeout
|
|
127
150
|
)
|
|
128
151
|
LOGGER.debug("POST Response: %s %s", response.status_code, response.url)
|
|
129
152
|
|
|
@@ -12,8 +12,10 @@ class ArgusDriverMatrixClient(ArgusClient):
|
|
|
12
12
|
SUBMIT_DRIVER_FAILURE = "/driver_matrix/result/fail"
|
|
13
13
|
SUBMIT_ENV = "/driver_matrix/env/submit"
|
|
14
14
|
|
|
15
|
-
def __init__(self, run_id: UUID, auth_token: str, base_url: str, api_version="v1", extra_headers: dict | None = None
|
|
16
|
-
|
|
15
|
+
def __init__(self, run_id: UUID, auth_token: str, base_url: str, api_version="v1", extra_headers: dict | None = None,
|
|
16
|
+
timeout: int = 60, max_retries: int = 3) -> None:
|
|
17
|
+
super().__init__(auth_token, base_url, api_version, extra_headers=extra_headers,
|
|
18
|
+
timeout=timeout, max_retries=max_retries)
|
|
17
19
|
self.run_id = run_id
|
|
18
20
|
|
|
19
21
|
def submit_driver_matrix_run(self, job_name: str, job_url: str) -> None:
|
|
@@ -12,8 +12,10 @@ class ArgusGenericClient(ArgusClient):
|
|
|
12
12
|
class Routes(ArgusClient.Routes):
|
|
13
13
|
TRIGGER_JOBS = "/planning/plan/trigger"
|
|
14
14
|
|
|
15
|
-
def __init__(self, auth_token: str, base_url: str, api_version="v1", extra_headers: dict | None = None
|
|
16
|
-
|
|
15
|
+
def __init__(self, auth_token: str, base_url: str, api_version="v1", extra_headers: dict | None = None,
|
|
16
|
+
timeout: int = 180, max_retries: int = 3) -> None:
|
|
17
|
+
super().__init__(auth_token, base_url, api_version, extra_headers=extra_headers,
|
|
18
|
+
timeout=timeout, max_retries=max_retries)
|
|
17
19
|
|
|
18
20
|
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
21
|
request_body = {
|
|
@@ -30,8 +30,10 @@ class ArgusSCTClient(ArgusClient):
|
|
|
30
30
|
SUBMIT_JUNIT_REPORT = "/sct/$id/junit/submit"
|
|
31
31
|
SUBMIT_EMAIL = "/testrun/report/email"
|
|
32
32
|
|
|
33
|
-
def __init__(self, run_id: UUID, auth_token: str, base_url: str, api_version="v1", extra_headers: dict | None = None
|
|
34
|
-
|
|
33
|
+
def __init__(self, run_id: UUID, auth_token: str, base_url: str, api_version="v1", extra_headers: dict | None = None,
|
|
34
|
+
timeout: int = 60, max_retries: int = 3) -> None:
|
|
35
|
+
super().__init__(auth_token, base_url, api_version, extra_headers=extra_headers,
|
|
36
|
+
timeout=timeout, max_retries=max_retries)
|
|
35
37
|
self.run_id = run_id
|
|
36
38
|
|
|
37
39
|
def submit_sct_run(self, job_name: str, job_url: str, started_by: str, commit_id: str,
|
|
@@ -45,9 +45,11 @@ class ArgusSirenadaClient(ArgusClient):
|
|
|
45
45
|
"skipped": "skipped"
|
|
46
46
|
}
|
|
47
47
|
|
|
48
|
-
def __init__(self, auth_token: str, base_url: str, api_version="v1", extra_headers: dict | None = None
|
|
48
|
+
def __init__(self, auth_token: str, base_url: str, api_version="v1", extra_headers: dict | None = None,
|
|
49
|
+
timeout: int = 60, max_retries: int = 3) -> None:
|
|
49
50
|
self.results_path: Path | None = None
|
|
50
|
-
super().__init__(auth_token, base_url, api_version, extra_headers=extra_headers
|
|
51
|
+
super().__init__(auth_token, base_url, api_version, extra_headers=extra_headers,
|
|
52
|
+
timeout=timeout, max_retries=max_retries)
|
|
51
53
|
|
|
52
54
|
def _verify_required_files_exist(self, results_path: Path):
|
|
53
55
|
assert (results_path / self._junit_xml_filename).exists(), "Missing jUnit XML results file!"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: argus-alm
|
|
3
|
-
Version: 0.15.
|
|
3
|
+
Version: 0.15.10
|
|
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: jira>=3.10.5; extra == "web-backend"
|
|
27
28
|
Requires-Dist: prometheus-flask-exporter>=0.23.2; extra == "web-backend"
|
|
28
29
|
Provides-Extra: docker-image
|
|
29
30
|
Requires-Dist: supervisor~=4.2.4; extra == "docker-image"
|
|
@@ -148,8 +148,9 @@ frontend/Discussion/MarkedMentionExtension.js
|
|
|
148
148
|
frontend/Discussion/MentionSelector.svelte
|
|
149
149
|
frontend/Discussion/UserProfile.svelte
|
|
150
150
|
frontend/Github/GithubIssue.svelte
|
|
151
|
-
frontend/Github/
|
|
152
|
-
frontend/Github/
|
|
151
|
+
frontend/Github/Issues.svelte
|
|
152
|
+
frontend/Github/IssuesCopyModal.svelte
|
|
153
|
+
frontend/Jira/JiraIssue.svelte
|
|
153
154
|
frontend/Profile/JobsList.svelte
|
|
154
155
|
frontend/Profile/Login.svelte
|
|
155
156
|
frontend/Profile/Notification.svelte
|
|
@@ -401,6 +402,7 @@ templates/email/partials/cloud.html.j2
|
|
|
401
402
|
templates/email/partials/custom_html.html.j2
|
|
402
403
|
templates/email/partials/custom_table.html.j2
|
|
403
404
|
templates/email/partials/events.html.j2
|
|
405
|
+
templates/email/partials/generic_results.html.j2
|
|
404
406
|
templates/email/partials/header.html.j2
|
|
405
407
|
templates/email/partials/logs.html.j2
|
|
406
408
|
templates/email/partials/main.html.j2
|
|
@@ -50,6 +50,14 @@ GITHUB_REQUIRED_ORGANIZATIONS:
|
|
|
50
50
|
# at least one is required for user to successfully authenticate
|
|
51
51
|
- myorg
|
|
52
52
|
- otherorg
|
|
53
|
+
|
|
54
|
+
# JIRA Server address
|
|
55
|
+
JIRA_SERVER: https://your.jira.instance
|
|
56
|
+
# Email of the service user
|
|
57
|
+
JIRA_EMAIL: user@your.jira.instance
|
|
58
|
+
# API Token of the service user
|
|
59
|
+
JIRA_TOKEN: base64Token
|
|
60
|
+
|
|
53
61
|
JENKINS_URL: https://your_jenkins_hostname
|
|
54
62
|
JENKINS_USER: user
|
|
55
63
|
JENKINS_API_TOKEN_NAME: Optional
|
|
@@ -3,7 +3,7 @@ from pathlib import Path
|
|
|
3
3
|
from collections import defaultdict
|
|
4
4
|
|
|
5
5
|
from argus.backend.models.web import ArgusRelease, ArgusTest, ArgusGroup
|
|
6
|
-
from argus.backend.plugins.sct.testrun import SCTTestRun
|
|
6
|
+
from argus.backend.plugins.sct.testrun import SCTTestRun, SCTEvent
|
|
7
7
|
from argus.backend.db import ScyllaCluster
|
|
8
8
|
from argus.backend.util.encoders import ArgusJSONEncoder
|
|
9
9
|
from argus.backend.models.result import (
|
|
@@ -12,10 +12,11 @@ from argus.backend.models.result import (
|
|
|
12
12
|
ArgusBestResultData,
|
|
13
13
|
ArgusGraphView,
|
|
14
14
|
)
|
|
15
|
+
from argus.backend.models.github_issue import GithubIssue, IssueLink
|
|
15
16
|
|
|
16
17
|
db = ScyllaCluster.get()
|
|
17
18
|
|
|
18
|
-
release_name = "scylla-
|
|
19
|
+
release_name = "scylla-2025.4" # change name here
|
|
19
20
|
dest = Path(__file__).parent / "sample_data" / release_name
|
|
20
21
|
dest.mkdir(parents=True, exist_ok=True)
|
|
21
22
|
release = ArgusRelease.get(name=release_name)
|
|
@@ -77,3 +78,20 @@ for run in SCTTestRun.filter(release_id=release.id).all():
|
|
|
77
78
|
for partition_key, results in result_data_by_partition.items():
|
|
78
79
|
print(f"Saving generic result data for partition {partition_key}")
|
|
79
80
|
(dest / f"generic_result_data_{partition_key}.json").write_text(json.dumps(results, cls=ArgusJSONEncoder))
|
|
81
|
+
# Export SCTEvent for each run
|
|
82
|
+
events = list(SCTEvent.filter(run_id=run.id).allow_filtering().all())
|
|
83
|
+
if events:
|
|
84
|
+
print(f"Saving {len(events)} SCT events for run {run.id}")
|
|
85
|
+
(dest / f"sct_event_{run.id}.json").write_text(json.dumps(events, cls=ArgusJSONEncoder))
|
|
86
|
+
|
|
87
|
+
# Export IssueLink for each run
|
|
88
|
+
issue_links = list(IssueLink.filter(run_id=run.id).allow_filtering().all())
|
|
89
|
+
if issue_links:
|
|
90
|
+
print(f"Saving {len(issue_links)} issue links for run {run.id}")
|
|
91
|
+
(dest / f"issue_link_{run.id}.json").write_text(json.dumps(issue_links, cls=ArgusJSONEncoder))
|
|
92
|
+
|
|
93
|
+
print("getting github issues data (full table)")
|
|
94
|
+
all_issues = list(GithubIssue.all())
|
|
95
|
+
if all_issues:
|
|
96
|
+
print(f"Saving {len(all_issues)} GitHub issues")
|
|
97
|
+
(dest / "github_issues.json").write_text(json.dumps(all_issues, cls=ArgusJSONEncoder))
|
|
@@ -9,7 +9,7 @@ db = ScyllaCluster.get()
|
|
|
9
9
|
if "127.0.0.10" in Config.CONFIG.get("SCYLLA_CONTACT_POINTS"):
|
|
10
10
|
raise Exception("This script should not be run on local DB!")
|
|
11
11
|
|
|
12
|
-
release_name = "scylla-
|
|
12
|
+
release_name = "scylla-2025.4" # change name here
|
|
13
13
|
dest = Path(__file__).parent / "sample_data" / release_name
|
|
14
14
|
|
|
15
15
|
print("importing releases")
|
|
@@ -90,3 +90,36 @@ for file in dest.glob("generic_result_data_*.json"):
|
|
|
90
90
|
print(
|
|
91
91
|
f"Saved generic result data for run {result_data['run_id']}, test {result_data['test_id']}, name {result_data['name']}"
|
|
92
92
|
)
|
|
93
|
+
|
|
94
|
+
print("importing SCT events")
|
|
95
|
+
statement = db.prepare("INSERT INTO sct_event JSON ?")
|
|
96
|
+
for file in dest.glob("sct_event_*.json"):
|
|
97
|
+
with file.open(mode="rt", encoding="utf-8") as src:
|
|
98
|
+
events = json.loads(src.read())
|
|
99
|
+
for event in events:
|
|
100
|
+
event_raw = json.dumps(event)
|
|
101
|
+
db.session.execute(statement, parameters=(event_raw,))
|
|
102
|
+
run_id = file.stem.replace("sct_event_", "")
|
|
103
|
+
print(f"Saved {len(events)} SCT events for run {run_id}")
|
|
104
|
+
|
|
105
|
+
print("importing issue links")
|
|
106
|
+
statement = db.prepare("INSERT INTO issue_link JSON ?")
|
|
107
|
+
for file in dest.glob("issue_link_*.json"):
|
|
108
|
+
with file.open(mode="rt", encoding="utf-8") as src:
|
|
109
|
+
issue_links = json.loads(src.read())
|
|
110
|
+
for issue_link in issue_links:
|
|
111
|
+
issue_link_raw = json.dumps(issue_link)
|
|
112
|
+
db.session.execute(statement, parameters=(issue_link_raw,))
|
|
113
|
+
run_id = file.stem.replace("issue_link_", "")
|
|
114
|
+
print(f"Saved {len(issue_links)} issue links for run {run_id}")
|
|
115
|
+
|
|
116
|
+
print("importing GitHub issues (full table)")
|
|
117
|
+
github_issues_file = dest / "github_issues.json"
|
|
118
|
+
if github_issues_file.exists():
|
|
119
|
+
statement = db.prepare("INSERT INTO github_issue JSON ?")
|
|
120
|
+
with github_issues_file.open(mode="rt", encoding="utf-8") as src:
|
|
121
|
+
github_issues = json.loads(src.read())
|
|
122
|
+
for github_issue in github_issues:
|
|
123
|
+
github_issue_raw = json.dumps(github_issue)
|
|
124
|
+
db.session.execute(statement, parameters=(github_issue_raw,))
|
|
125
|
+
print(f"Saved {len(github_issues)} GitHub issues")
|
|
@@ -161,6 +161,7 @@ Supported sections are:
|
|
|
161
161
|
| logs| List of links to the log files stored on S3 for this run |
|
|
162
162
|
| cloud| Contains active remaining resources running at the end the test. Table |
|
|
163
163
|
| nemesis| Table of nemeses in the run with their status and durations |
|
|
164
|
+
| generic_results| Generic Result API results, formatted as tables |
|
|
164
165
|
| events| Event block of most recent events sorted by timestamp |
|
|
165
166
|
| screenshots| Grafana screenshot gallery |
|
|
166
167
|
| custom_table| Custom table element. Can be used to display arbitrary tables. HTML in cells is **not** supported |
|
|
@@ -181,6 +182,13 @@ The `section` block can be provided as empty array to use the default template.
|
|
|
181
182
|
|amount_per_severity| number | Amount of events per severity to display (default 10)|
|
|
182
183
|
|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
|
|
|
185
|
+
###### Generic Results
|
|
186
|
+
|
|
187
|
+
|Option|Type|Description|
|
|
188
|
+
|------|----|-----------|
|
|
189
|
+
|table_filter| string[] | Array of regexes to filter tables by. Default: [] - all tables will be shown|
|
|
190
|
+
|section_name| string | Heading value for the results tables|
|
|
191
|
+
|
|
184
192
|
###### Nemesis
|
|
185
193
|
|
|
186
194
|
|Option|Type|Description|
|
|
@@ -3,11 +3,10 @@
|
|
|
3
3
|
Minimal local dev setup with one db node (adjust accordingly if needed more nodes)
|
|
4
4
|
|
|
5
5
|
## Prerequisites
|
|
6
|
-
1.
|
|
7
|
-
2.
|
|
8
|
-
3.
|
|
9
|
-
4.
|
|
10
|
-
5. docker-compose
|
|
6
|
+
1. NodeJS >=16 (with npm)
|
|
7
|
+
2. Yarn (can be installed globally with `npm -g install yarn`)
|
|
8
|
+
3. uv (https://docs.astral.sh/uv/getting-started/installation/)
|
|
9
|
+
4. docker-compose
|
|
11
10
|
|
|
12
11
|
## Installing argus dependencies
|
|
13
12
|
```bash
|
|
@@ -38,6 +38,9 @@ Generic results are stored in Argus database and can be accessed via Argus API a
|
|
|
38
38
|
To send generic results to Argus, you need to create `ResultTable` class basing on `GenericResultTable` available in Argus Client library
|
|
39
39
|
and send it using `ArgusClient` class (or it's child class like `ArgusSCTClient`).
|
|
40
40
|
|
|
41
|
+
Note: Argus client requests use a 60s timeout by default. `ArgusGenericClient` defaults to 180s to accommodate larger payloads. Only GET
|
|
42
|
+
requests are retried, and only on timeouts; POST submissions surface timeouts to the caller so clients can handle retries explicitly.
|
|
43
|
+
|
|
41
44
|
Child class of `GenericResultTable` needs to define `Meta` class with `name` and `description` fields. It also needs to define `Columns`
|
|
42
45
|
field that will describe available columns details for given result: as a list of `ColumnMetadata` objects. Each `ColumnMetadata` object
|
|
43
46
|
needs to have `name`, `unit` and `type` and optionally `higher_is_better` fields. `type` field can be one of `ResultType` enum values.
|
|
@@ -14,16 +14,16 @@
|
|
|
14
14
|
import { sendMessage } from "../Stores/AlertStore";
|
|
15
15
|
import { userList } from "../Stores/UserlistSubscriber";
|
|
16
16
|
import { timestampToISODate } from "../Common/DateUtils";
|
|
17
|
-
import { apiMethodCall } from "../Common/ApiUtils";
|
|
18
|
-
import { determineLuma } from "../Common/TextUtils";
|
|
19
17
|
import { stateEncoder } from "../Common/StateManagement";
|
|
18
|
+
import type { GithubSubtype, Link, TestRun } from './Issues.svelte';
|
|
19
|
+
import { getUser } from '../Common/UserUtils';
|
|
20
20
|
|
|
21
21
|
const dispatch = createEventDispatcher();
|
|
22
22
|
let users = $state({});
|
|
23
23
|
run_1(() => {
|
|
24
24
|
users = $userList;
|
|
25
25
|
});
|
|
26
|
-
|
|
26
|
+
|
|
27
27
|
const IssueColorMap = {
|
|
28
28
|
open: "issue-open",
|
|
29
29
|
closed: "issue-closed",
|
|
@@ -35,8 +35,8 @@
|
|
|
35
35
|
};
|
|
36
36
|
|
|
37
37
|
interface Props {
|
|
38
|
-
issue?:
|
|
39
|
-
runId:
|
|
38
|
+
issue?: GithubSubtype;
|
|
39
|
+
runId: string;
|
|
40
40
|
deleteEnabled?: boolean;
|
|
41
41
|
aggregated?: boolean;
|
|
42
42
|
}
|
|
@@ -44,14 +44,16 @@
|
|
|
44
44
|
let {
|
|
45
45
|
issue = $bindable({
|
|
46
46
|
id: "",
|
|
47
|
-
|
|
48
|
-
|
|
47
|
+
subtype: "github",
|
|
48
|
+
number: "-1",
|
|
49
|
+
state: "open",
|
|
49
50
|
owner: "nobody",
|
|
50
51
|
repo: "no-repo",
|
|
51
52
|
title: "NO ISSUE",
|
|
52
53
|
links: [],
|
|
53
54
|
labels: [],
|
|
54
55
|
type: "issues",
|
|
56
|
+
assignees: [],
|
|
55
57
|
url: "https://github.com/",
|
|
56
58
|
user_id: "",
|
|
57
59
|
added_on: "Mon, 1 Jan 1970 9:00:00 GMT",
|
|
@@ -64,9 +66,11 @@
|
|
|
64
66
|
let deleting = $state(false);
|
|
65
67
|
let showRuns = $state(false);
|
|
66
68
|
|
|
67
|
-
let resolvedRuns
|
|
69
|
+
let resolvedRuns: {
|
|
70
|
+
[key: string]: TestRun,
|
|
71
|
+
};
|
|
68
72
|
|
|
69
|
-
const resolveRuns = async function(
|
|
73
|
+
const resolveRuns = async function(links: Link[]) {
|
|
70
74
|
if (resolvedRuns) return resolvedRuns;
|
|
71
75
|
let response = await fetch("/api/v1/get_runs_by_test_id_run_id",
|
|
72
76
|
{
|
|
@@ -74,7 +78,7 @@
|
|
|
74
78
|
headers: {
|
|
75
79
|
"Content-Type": "application/json",
|
|
76
80
|
},
|
|
77
|
-
body: JSON.stringify(
|
|
81
|
+
body: JSON.stringify(links.map(v => [v.test_id, v.run_id]))
|
|
78
82
|
}
|
|
79
83
|
);
|
|
80
84
|
|
|
@@ -86,7 +90,7 @@
|
|
|
86
90
|
return data.response.runs;
|
|
87
91
|
};
|
|
88
92
|
|
|
89
|
-
const resolveFirstUserForAggregation = function(issue) {
|
|
93
|
+
const resolveFirstUserForAggregation = function(issue: GithubSubtype) {
|
|
90
94
|
if (!issue.links) return {
|
|
91
95
|
id: issue.user_id,
|
|
92
96
|
date: issue.added_on,
|
|
@@ -129,10 +133,10 @@
|
|
|
129
133
|
throw apiJson;
|
|
130
134
|
}
|
|
131
135
|
} catch (error) {
|
|
132
|
-
if (error?.status === "error") {
|
|
136
|
+
if ((error as {status: string, response: { arguments: string[] }})?.status === "error") {
|
|
133
137
|
sendMessage(
|
|
134
138
|
"error",
|
|
135
|
-
`Unable to delete an issue.\nAPI Response: ${error.response.arguments[0]}`,
|
|
139
|
+
`Unable to delete an issue.\nAPI Response: ${(error as {status: string, response: { arguments: string[] }}).response.arguments[0]}`,
|
|
136
140
|
"GithubIssue::delete"
|
|
137
141
|
);
|
|
138
142
|
} else {
|
|
@@ -182,7 +186,7 @@
|
|
|
182
186
|
class="text-muted d-flex align-items-center"
|
|
183
187
|
title={new Date(issue.added_on).toISOString()}
|
|
184
188
|
>
|
|
185
|
-
<div>Added by <span class="fw-bold">@{
|
|
189
|
+
<div>Added by <span class="fw-bold">@{ getUser(resolveFirstUserForAggregation(issue).id, users).username }</span> on {timestampToISODate(new Date(resolveFirstUserForAggregation(issue).date))}</div>
|
|
186
190
|
{#if deleteEnabled && !aggregated}
|
|
187
191
|
<div class="ms-2 text-muted">
|
|
188
192
|
{#if deleting}
|
|
@@ -190,6 +194,7 @@
|
|
|
190
194
|
class="btn btn-sm btn-danger"
|
|
191
195
|
title="Please wait"
|
|
192
196
|
type="button"
|
|
197
|
+
aria-label="progress spinner"
|
|
193
198
|
>
|
|
194
199
|
<span class="spinner-border spinner-border-sm"></span>
|
|
195
200
|
</button>
|
|
@@ -233,7 +238,7 @@
|
|
|
233
238
|
onclick={() => {
|
|
234
239
|
showRuns = false;
|
|
235
240
|
}}
|
|
236
|
-
|
|
241
|
+
>X</button>
|
|
237
242
|
</div>
|
|
238
243
|
</div>
|
|
239
244
|
<div>
|