argus-alm 0.15.2__tar.gz → 0.15.5__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.2 → argus_alm-0.15.5}/.github/workflows/release.yml +4 -2
- {argus_alm-0.15.2 → argus_alm-0.15.5}/.gitignore +1 -0
- argus_alm-0.15.5/MANIFEST.in +2 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/PKG-INFO +4 -4
- {argus_alm-0.15.2 → argus_alm-0.15.5}/argus/_version.py +2 -2
- {argus_alm-0.15.2 → argus_alm-0.15.5}/argus/client/base.py +14 -8
- {argus_alm-0.15.2 → argus_alm-0.15.5}/argus/client/generic/cli.py +3 -2
- {argus_alm-0.15.2 → argus_alm-0.15.5}/argus/client/generic/client.py +2 -1
- {argus_alm-0.15.2 → argus_alm-0.15.5}/argus/client/generic_result.py +6 -1
- {argus_alm-0.15.2 → argus_alm-0.15.5}/argus/client/sct/client.py +2 -1
- {argus_alm-0.15.2 → argus_alm-0.15.5}/argus/common/enums.py +16 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/argusAI/deployment/argusai_event_similarity_processor.service +1 -1
- {argus_alm-0.15.2 → argus_alm-0.15.5}/argusAI/event_similarity_processor.py +43 -16
- {argus_alm-0.15.2 → argus_alm-0.15.5}/argusAI/pyproject.toml +1 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/argusAI/utils/event_message_sanitizer.py +33 -0
- argus_alm-0.15.5/argusAI/uv.lock +1636 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/argus_alm.egg-info/PKG-INFO +4 -4
- {argus_alm-0.15.2 → argus_alm-0.15.5}/argus_alm.egg-info/SOURCES.txt +19 -104
- {argus_alm-0.15.2 → argus_alm-0.15.5}/argus_alm.egg-info/requires.txt +3 -3
- {argus_alm-0.15.2 → argus_alm-0.15.5}/argus_web.example.yaml +10 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/Common/TestStatus.js +98 -5
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/Common/ViewTypes.js +22 -1
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/Github/GithubIssue.svelte +24 -1
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/Github/GithubIssues.svelte +4 -4
- argus_alm-0.15.5/frontend/Profile/PlannedJob.svelte +56 -0
- argus_alm-0.15.5/frontend/Profile/PlannedJobs.svelte +100 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/Profile/ProfileJobs.svelte +12 -3
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/ReleaseDashboard/AssigneeFilter.svelte +2 -1
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/ReleaseDashboard/TestDashboard.svelte +238 -18
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/ReleaseDashboard/TestDashboardFlatView.svelte +2 -3
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/ReleaseDashboard/TestDashboardGroup.svelte +11 -4
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/ReleaseDashboard/TestDashboardTest.svelte +2 -3
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/ReleasePlanner/ReleasePlanCreator.svelte +7 -2
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/TestRun/Components/ResultTable.svelte +15 -9
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/TestRun/EventsTab.svelte +186 -6
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/TestRun/Generic/GenericTestRun.svelte +115 -80
- argus_alm-0.15.5/frontend/TestRun/Generic/Subtest.js +17 -0
- argus_alm-0.15.5/frontend/TestRun/IssueTab.svelte +74 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/TestRun/IssueTemplate.svelte +127 -2
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/TestRun/Jenkins/SCTParameterWizard.svelte +2 -2
- argus_alm-0.15.5/frontend/TestRun/Pytest/DtestTab.svelte +22 -0
- argus_alm-0.15.5/frontend/TestRun/Pytest/PytestItem.svelte +103 -0
- argus_alm-0.15.5/frontend/TestRun/Pytest/PytestRun.svelte +164 -0
- argus_alm-0.15.5/frontend/TestRun/Pytest/PytestTab.svelte +22 -0
- argus_alm-0.15.5/frontend/TestRun/Pytest/index.js +7 -0
- argus_alm-0.15.5/frontend/TestRun/Pytest/types.ts +39 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/TestRun/ResourcesInfo.svelte +21 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/TestRun/ResultsTab.svelte +15 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/TestRun/StructuredEvent.svelte +83 -9
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/TestRun/TestRun.svelte +163 -54
- argus_alm-0.15.5/frontend/Utils/IntersectionObserver.svelte +58 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/Views/ViewDashboard.svelte +1 -3
- argus_alm-0.15.5/frontend/Views/Widgets/PytestWidget/PytestCalendarSelector.svelte +51 -0
- argus_alm-0.15.5/frontend/Views/Widgets/PytestWidget/PytestCollapseHelper.svelte +30 -0
- argus_alm-0.15.5/frontend/Views/Widgets/PytestWidget/PytestFlatHelper.svelte +12 -0
- argus_alm-0.15.5/frontend/Views/Widgets/PytestWidget/PytestOverviewWidget.svelte +22 -0
- argus_alm-0.15.5/frontend/Views/Widgets/PytestWidget/PytestResultRow.svelte +138 -0
- argus_alm-0.15.5/frontend/Views/Widgets/PytestWidget/PytestTableWidget.svelte +84 -0
- argus_alm-0.15.5/frontend/Views/Widgets/PytestWidget/ViewPytestOverview.svelte +424 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/Views/Widgets/SummaryWidget/SummaryWidget.svelte +23 -4
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/view-dashboard.js +2 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/package.json +2 -1
- {argus_alm-0.15.2 → argus_alm-0.15.5}/pyproject.toml +3 -3
- {argus_alm-0.15.2 → argus_alm-0.15.5}/pytest-argus-reporter/pytest_argus_reporter.py +1 -1
- argus_alm-0.15.5/scripts/migration/migration_2025-07-18.py +63 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/templates/partials/nav_bar.html.j2 +6 -1
- {argus_alm-0.15.2 → argus_alm-0.15.5}/uv.lock +128 -120
- argus_alm-0.15.2/argus/backend/cli.py +0 -57
- argus_alm-0.15.2/argus/backend/controller/admin.py +0 -20
- argus_alm-0.15.2/argus/backend/controller/admin_api.py +0 -355
- argus_alm-0.15.2/argus/backend/controller/api.py +0 -589
- argus_alm-0.15.2/argus/backend/controller/auth.py +0 -67
- argus_alm-0.15.2/argus/backend/controller/client_api.py +0 -109
- argus_alm-0.15.2/argus/backend/controller/main.py +0 -316
- argus_alm-0.15.2/argus/backend/controller/notification_api.py +0 -72
- argus_alm-0.15.2/argus/backend/controller/notifications.py +0 -13
- argus_alm-0.15.2/argus/backend/controller/planner_api.py +0 -194
- argus_alm-0.15.2/argus/backend/controller/team.py +0 -129
- argus_alm-0.15.2/argus/backend/controller/team_ui.py +0 -19
- argus_alm-0.15.2/argus/backend/controller/testrun_api.py +0 -513
- argus_alm-0.15.2/argus/backend/controller/view_api.py +0 -188
- argus_alm-0.15.2/argus/backend/controller/views_widgets/__init__.py +0 -0
- argus_alm-0.15.2/argus/backend/controller/views_widgets/graphed_stats.py +0 -54
- argus_alm-0.15.2/argus/backend/controller/views_widgets/graphs.py +0 -68
- argus_alm-0.15.2/argus/backend/controller/views_widgets/highlights.py +0 -135
- argus_alm-0.15.2/argus/backend/controller/views_widgets/nemesis_stats.py +0 -26
- argus_alm-0.15.2/argus/backend/controller/views_widgets/summary.py +0 -43
- argus_alm-0.15.2/argus/backend/db.py +0 -98
- argus_alm-0.15.2/argus/backend/error_handlers.py +0 -41
- argus_alm-0.15.2/argus/backend/events/event_processors.py +0 -34
- argus_alm-0.15.2/argus/backend/models/__init__.py +0 -0
- argus_alm-0.15.2/argus/backend/models/argus_ai.py +0 -24
- argus_alm-0.15.2/argus/backend/models/github_issue.py +0 -60
- argus_alm-0.15.2/argus/backend/models/plan.py +0 -24
- argus_alm-0.15.2/argus/backend/models/result.py +0 -187
- argus_alm-0.15.2/argus/backend/models/runtime_store.py +0 -58
- argus_alm-0.15.2/argus/backend/models/view_widgets.py +0 -25
- argus_alm-0.15.2/argus/backend/models/web.py +0 -403
- argus_alm-0.15.2/argus/backend/plugins/__init__.py +0 -0
- argus_alm-0.15.2/argus/backend/plugins/core.py +0 -248
- argus_alm-0.15.2/argus/backend/plugins/driver_matrix_tests/controller.py +0 -66
- argus_alm-0.15.2/argus/backend/plugins/driver_matrix_tests/model.py +0 -429
- argus_alm-0.15.2/argus/backend/plugins/driver_matrix_tests/plugin.py +0 -21
- argus_alm-0.15.2/argus/backend/plugins/driver_matrix_tests/raw_types.py +0 -62
- argus_alm-0.15.2/argus/backend/plugins/driver_matrix_tests/service.py +0 -61
- argus_alm-0.15.2/argus/backend/plugins/driver_matrix_tests/udt.py +0 -42
- argus_alm-0.15.2/argus/backend/plugins/generic/model.py +0 -86
- argus_alm-0.15.2/argus/backend/plugins/generic/plugin.py +0 -15
- argus_alm-0.15.2/argus/backend/plugins/generic/types.py +0 -14
- argus_alm-0.15.2/argus/backend/plugins/loader.py +0 -39
- argus_alm-0.15.2/argus/backend/plugins/sct/controller.py +0 -224
- argus_alm-0.15.2/argus/backend/plugins/sct/plugin.py +0 -37
- argus_alm-0.15.2/argus/backend/plugins/sct/resource_setup.py +0 -177
- argus_alm-0.15.2/argus/backend/plugins/sct/service.py +0 -682
- argus_alm-0.15.2/argus/backend/plugins/sct/testrun.py +0 -288
- argus_alm-0.15.2/argus/backend/plugins/sct/udt.py +0 -100
- argus_alm-0.15.2/argus/backend/plugins/sirenada/model.py +0 -118
- argus_alm-0.15.2/argus/backend/plugins/sirenada/plugin.py +0 -16
- argus_alm-0.15.2/argus/backend/service/admin.py +0 -26
- argus_alm-0.15.2/argus/backend/service/argus_service.py +0 -696
- argus_alm-0.15.2/argus/backend/service/build_system_monitor.py +0 -185
- argus_alm-0.15.2/argus/backend/service/client_service.py +0 -127
- argus_alm-0.15.2/argus/backend/service/event_service.py +0 -18
- argus_alm-0.15.2/argus/backend/service/github_service.py +0 -233
- argus_alm-0.15.2/argus/backend/service/jenkins_service.py +0 -269
- argus_alm-0.15.2/argus/backend/service/notification_manager.py +0 -159
- argus_alm-0.15.2/argus/backend/service/planner_service.py +0 -608
- argus_alm-0.15.2/argus/backend/service/release_manager.py +0 -229
- argus_alm-0.15.2/argus/backend/service/results_service.py +0 -690
- argus_alm-0.15.2/argus/backend/service/stats.py +0 -610
- argus_alm-0.15.2/argus/backend/service/team_manager_service.py +0 -82
- argus_alm-0.15.2/argus/backend/service/test_lookup.py +0 -172
- argus_alm-0.15.2/argus/backend/service/testrun.py +0 -489
- argus_alm-0.15.2/argus/backend/service/user.py +0 -308
- argus_alm-0.15.2/argus/backend/service/views.py +0 -219
- argus_alm-0.15.2/argus/backend/service/views_widgets/__init__.py +0 -0
- argus_alm-0.15.2/argus/backend/service/views_widgets/graphed_stats.py +0 -180
- argus_alm-0.15.2/argus/backend/service/views_widgets/highlights.py +0 -374
- argus_alm-0.15.2/argus/backend/service/views_widgets/nemesis_stats.py +0 -34
- argus_alm-0.15.2/argus/backend/template_filters.py +0 -27
- argus_alm-0.15.2/argus/backend/tests/__init__.py +0 -0
- argus_alm-0.15.2/argus/backend/tests/client_service/__init__.py +0 -0
- argus_alm-0.15.2/argus/backend/tests/client_service/test_submit_results.py +0 -79
- argus_alm-0.15.2/argus/backend/tests/conftest.py +0 -180
- argus_alm-0.15.2/argus/backend/tests/results_service/__init__.py +0 -0
- argus_alm-0.15.2/argus/backend/tests/results_service/test_best_results.py +0 -178
- argus_alm-0.15.2/argus/backend/tests/results_service/test_cell.py +0 -65
- argus_alm-0.15.2/argus/backend/tests/results_service/test_chartjs_additional_functions.py +0 -259
- argus_alm-0.15.2/argus/backend/tests/results_service/test_create_chartjs.py +0 -220
- argus_alm-0.15.2/argus/backend/tests/results_service/test_result_metadata.py +0 -100
- argus_alm-0.15.2/argus/backend/tests/results_service/test_results_service.py +0 -203
- argus_alm-0.15.2/argus/backend/tests/results_service/test_validation_rules.py +0 -213
- argus_alm-0.15.2/argus/backend/tests/view_widgets/__init__.py +0 -0
- argus_alm-0.15.2/argus/backend/tests/view_widgets/test_highlights_api.py +0 -532
- argus_alm-0.15.2/argus/backend/util/common.py +0 -65
- argus_alm-0.15.2/argus/backend/util/config.py +0 -38
- argus_alm-0.15.2/argus/backend/util/encoders.py +0 -56
- argus_alm-0.15.2/argus/backend/util/logsetup.py +0 -80
- argus_alm-0.15.2/argus/backend/util/module_loaders.py +0 -30
- argus_alm-0.15.2/argus/backend/util/send_email.py +0 -91
- argus_alm-0.15.2/argus/client/tests/__init__.py +0 -0
- argus_alm-0.15.2/argus/client/tests/conftest.py +0 -19
- argus_alm-0.15.2/argus/client/tests/test_package.py +0 -45
- argus_alm-0.15.2/argus/client/tests/test_results.py +0 -224
- argus_alm-0.15.2/argus/common/__init__.py +0 -0
- argus_alm-0.15.2/argusAI/utils/__init__.py +0 -0
- argus_alm-0.15.2/argusAI/uv.lock +0 -1412
- argus_alm-0.15.2/frontend/TestRun/IssueTab.svelte +0 -22
- argus_alm-0.15.2/profile/.gitkeep +0 -0
- argus_alm-0.15.2/pytest-argus-reporter/tests/conftest.py +0 -75
- argus_alm-0.15.2/pytest-argus-reporter/tests/test_argus_reporter.py +0 -511
- argus_alm-0.15.2/pytest-argus-reporter/tests/test_slices.py +0 -61
- argus_alm-0.15.2/pytest-argus-reporter/tests/test_xdist.py +0 -42
- {argus_alm-0.15.2 → argus_alm-0.15.5}/.dockerignore +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/.envrc +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/.eslintrc.js +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/.github/workflows/.gitkeep +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/.github/workflows/lint.yml +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/.github/workflows/test.yml +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/.pre-commit-config.yaml +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/.prettierrc.js +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/Dockerfile +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/LICENSE +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/README.md +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/argus/__init__.py +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/argus/client/__init__.py +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/argus/client/driver_matrix_tests/cli.py +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/argus/client/driver_matrix_tests/client.py +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/argus/client/sct/types.py +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/argus/client/sirenada/client.py +0 -0
- {argus_alm-0.15.2/argus/backend → argus_alm-0.15.5/argus/common}/__init__.py +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/argus/common/sct_types.py +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/argus/common/sirenada_types.py +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/argus.yaml +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/argusAI/README.md +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/argusAI/logs/.gitignore +0 -0
- {argus_alm-0.15.2/argus/backend/controller → argus_alm-0.15.5/argusAI/utils}/__init__.py +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/argusAI/utils/scylla_connection.py +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/argus_alm.egg-info/dependency_links.txt +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/argus_alm.egg-info/entry_points.txt +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/argus_alm.egg-info/top_level.txt +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/argus_backend.py +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/commitlint.config.js +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/dev-db/.gitignore +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/dev-db/alpha-config/cassandra-rackdc.properties +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/dev-db/alpha-config/machine_image_configured +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/dev-db/alpha-config/scylla.yaml +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/dev-db/alpha-data/.gitignore +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/dev-db/docker-compose.yaml +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/dev-db/export_data.py +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/dev-db/import_data.py +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/docker/config/nginx-docker.conf +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/docker/config/supervisord.conf +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/docker-entrypoint.sh +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/docs/api_usage.md +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/docs/argus_status_page.md +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/docs/argus_status_page_diagram.jpg +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/docs/config/argus.nginx.conf +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/docs/config/argus.service +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/docs/dev-setup.md +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/docs/generic_results.md +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/docs/pypi-guide.md +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/AdminPanel/AdminPanel.svelte +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/AdminPanel/AdminPanelWelcome.svelte +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/AdminPanel/BatchTestMover.svelte +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/AdminPanel/GroupCreator.svelte +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/AdminPanel/ReleaseCreator.svelte +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/AdminPanel/ReleaseDeletionConfirmationPopup.svelte +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/AdminPanel/ReleaseEditor.svelte +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/AdminPanel/ReleaseManager.svelte +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/AdminPanel/ReleaseManagerGroup.svelte +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/AdminPanel/ReleaseManagerTest.svelte +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/AdminPanel/TestCreator.svelte +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/AdminPanel/UserManager.svelte +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/AdminPanel/ViewListItem.svelte +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/AdminPanel/ViewSelectItem.svelte +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/AdminPanel/ViewWidget.svelte +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/AdminPanel/ViewsManager.svelte +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/Alert.js +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/Alerts/AlertMessage.svelte +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/Alerts/AlertWidget.svelte +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/Common/ApiUtils.js +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/Common/ArgusNotification.ts +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/Common/AssigneeSelector.svelte +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/Common/AssigneeUtils.js +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/Common/DateUtils.js +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/Common/DriverMatrixTypes.ts +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/Common/IssueDestinations.js +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/Common/JenkinsSettingsHelp.js +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/Common/ModalWindow.svelte +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/Common/PluginDispatch.js +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/Common/PluginNames.js +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/Common/RunUtils.js +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/Common/SelectUtils.js +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/Common/StateManagement.js +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/Common/TextUtils.js +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/Common/UserTypes.ts +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/Common/UserUtils.js +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/Debug/FlashDebugComponent.svelte +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/Discussion/Comment.svelte +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/Discussion/CommentEditor.svelte +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/Discussion/MarkedMentionExtension.js +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/Discussion/MentionSelector.svelte +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/Discussion/UserProfile.svelte +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/Github/GithubIssuesCopyModal.svelte +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/Profile/JobsList.svelte +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/Profile/Login.svelte +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/Profile/Notification.svelte +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/Profile/NotificationCommentWrapper.svelte +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/Profile/NotificationCounter.svelte +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/Profile/NotificationSender.svelte +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/Profile/NotificationTestRunWrapper.svelte +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/Profile/NotificationsReader.svelte +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/Profile/ProfileJob.svelte +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/Profile/ProfileJobsTab.svelte +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/Profile/ProfileSchedules.svelte +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/Profile/User.svelte +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/Profile/UserSelection.svelte +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/Profile/ViewUserResolver.svelte +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/ReleaseDashboard/FlatViewHelper.svelte +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/ReleaseDashboard/GroupedViewHelper.svelte +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/ReleaseDashboard/ReleaseActivity.svelte +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/ReleaseDashboard/ReleaseDashboard.svelte +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/ReleaseDashboard/ReleaseGithubIssues.svelte +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/ReleaseDashboard/TestPopoutSelector.svelte +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/ReleaseDashboard/TestWithIssuesCard.svelte +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/ReleasePlanner/CommentTableRow.svelte +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/ReleasePlanner/DutyPlanner.svelte +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/ReleasePlanner/EntityReplacer.svelte +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/ReleasePlanner/ReleasePlan.svelte +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/ReleasePlanner/ReleasePlanCopyForm.svelte +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/ReleasePlanner/ReleasePlanEditor.svelte +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/ReleasePlanner/ReleasePlanTable.svelte +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/ReleasePlanner/ReleasePlanner.svelte +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/ReleasePlanner/ReleasePlannerGridView.svelte +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/ReleasePlanner/ReleaseScheduler.svelte +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/ReleasePlanner/Schedule.svelte +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/ReleasePlanner/ScheduleTable.svelte +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/ReleasePlanner/SearchBar.svelte +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/Stats/ChartStats.svelte +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/Stats/NumberStats.svelte +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/Stats/ProgressBarStats.svelte +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/Stats/ReleaseStats.svelte +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/Stats/StatsFetcher.svelte +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/Stores/AlertStore.js +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/Stores/AssigneeSubscriber.js +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/Stores/SingleTestRunSubscriber.js +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/Stores/TestRunsSubscriber.js +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/Stores/UserlistSubscriber.js +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/Stores/WorkspaceStore.js +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/Teams/TeamCreateForm.svelte +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/Teams/TeamDetail.svelte +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/Teams/TeamList.svelte +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/Teams/TeamManager.svelte +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/Teams/TeamMember.svelte +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/Teams/TeamShort.svelte +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/Teams/TeamUtils.ts +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/TestRun/ActivityTab.svelte +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/TestRun/ArtifactRow.svelte +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/TestRun/ArtifactTab.svelte +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/TestRun/Components/Cell.svelte +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/TestRun/Components/Filters.svelte +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/TestRun/Components/GraphFilters.svelte +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/TestRun/Components/ScreenshotModal.svelte +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/TestRun/DriverMatrixBreakdown.svelte +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/TestRun/DriverMatrixRunInfo.svelte +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/TestRun/DriverMatrixTestCollection.svelte +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/TestRun/DriverMatrixTestRun.svelte +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/TestRun/DriverMatrixTestSuites.svelte +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/TestRun/Generic/GenericTestRunInfo.svelte +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/TestRun/HeartbeatIndicator.svelte +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/TestRun/Jenkins/Build.js +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/TestRun/Jenkins/BuildConfirmationDialog.svelte +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/TestRun/Jenkins/BuildStartPlaceholder.svelte +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/TestRun/Jenkins/BuildSuccessPlaceholder.svelte +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/TestRun/Jenkins/CheckParam.svelte +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/TestRun/Jenkins/CloneCreatePlaceholder.svelte +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/TestRun/Jenkins/CloneSuccess.svelte +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/TestRun/Jenkins/CloneTargetSelector.svelte +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/TestRun/Jenkins/DummyCheckParam.svelte +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/TestRun/Jenkins/DummySelectParam.svelte +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/TestRun/Jenkins/JenkinsBuildModal.svelte +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/TestRun/Jenkins/JenkinsCloneModal.svelte +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/TestRun/Jenkins/LoadTargetsPlaceholder.svelte +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/TestRun/Jenkins/ModalError.svelte +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/TestRun/Jenkins/ParamFetchPlaceholder.svelte +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/TestRun/Jenkins/ParameterEditor.svelte +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/TestRun/Jenkins/SelectParam.svelte +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/TestRun/Jenkins/StringParam.svelte +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/TestRun/Jenkins/TextParam.svelte +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/TestRun/Jenkins/WizardUnavailable.svelte +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/TestRun/NemesisData.svelte +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/TestRun/NemesisReason.svelte +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/TestRun/NemesisTable.svelte +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/TestRun/PackagesInfo.svelte +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/TestRun/RawEvent.svelte +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/TestRun/ResultsGraph.svelte +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/TestRun/ResultsGraphs.svelte +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/TestRun/RunAssigneeSelector.svelte +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/TestRun/RunInvestigationStatusButton.svelte +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/TestRun/RunStatusButton.svelte +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/TestRun/SCTSubTests/Gemini/GeminiTabBodyComponent.svelte +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/TestRun/SCTSubTests/Gemini/GeminiTabComponent.svelte +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/TestRun/SCTSubTests/Performance/PerformanceTabBodyComponent.svelte +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/TestRun/SCTSubTests/Performance/PerformanceTabComponent.svelte +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/TestRun/SCTSubTests/Subtest.js +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/TestRun/Screenshots.svelte +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/TestRun/Sirenada/SirenadaIssueTemplate.svelte +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/TestRun/Sirenada/SirenadaRunInfo.svelte +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/TestRun/Sirenada/SirenadaTestBreakdown.svelte +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/TestRun/Sirenada/SirenadaTestRun.svelte +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/TestRun/TestRunComments.svelte +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/TestRun/TestRunInfo.svelte +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/TestRun/jUnitChart.svelte +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/TestRun/jUnitResults.svelte +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/Views/ViewSelect.svelte +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/Views/WidgetSettingTypes/CheckValue.svelte +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/Views/WidgetSettingTypes/IntegerValue.svelte +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/Views/WidgetSettingTypes/MultiSelectValue.svelte +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/Views/WidgetSettingTypes/MultiStringValue.svelte +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/Views/WidgetSettingTypes/StringValue.svelte +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/Views/Widgets/GraphsWidget/GraphsWidget.svelte +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/Views/Widgets/SummaryWidget/RunIssues.svelte +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/Views/Widgets/ViewGithubIssues.svelte +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/Views/Widgets/ViewGraphedStats/AssigneeCell.svelte +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/Views/Widgets/ViewGraphedStats/Filters.svelte +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/Views/Widgets/ViewGraphedStats/Interfaces.ts +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/Views/Widgets/ViewGraphedStats/InvestigationStatusCell.svelte +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/Views/Widgets/ViewGraphedStats/IssuesCell.svelte +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/Views/Widgets/ViewGraphedStats/NemesisTable.svelte +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/Views/Widgets/ViewGraphedStats/PaginatedTable.svelte +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/Views/Widgets/ViewGraphedStats/StackTracePreview.svelte +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/Views/Widgets/ViewGraphedStats/StatusBadge.svelte +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/Views/Widgets/ViewGraphedStats/StatusCell.svelte +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/Views/Widgets/ViewGraphedStats/TestRunTable.svelte +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/Views/Widgets/ViewGraphedStats.svelte +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/Views/Widgets/ViewHighlights/ActionItem.svelte +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/Views/Widgets/ViewHighlights/Comment.svelte +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/Views/Widgets/ViewHighlights/HighlightItem.svelte +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/Views/Widgets/ViewHighlights/ViewHighlights.svelte +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/Views/Widgets/ViewNemesisStats.svelte +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/Views/Widgets/ViewReleaseStats.svelte +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/Views/Widgets/ViewTestDashboard.svelte +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/Views/Widgets/ViewUnsupportedPlaceholder.svelte +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/WorkArea/AssigneeList.svelte +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/WorkArea/JobConfigureModal.svelte +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/WorkArea/RunGroup.svelte +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/WorkArea/RunRelease.svelte +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/WorkArea/Test.svelte +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/WorkArea/TestRunDispatcher.svelte +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/WorkArea/TestRuns.svelte +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/WorkArea/TestRunsMessage.svelte +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/WorkArea/TestRunsPanel.svelte +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/WorkArea/TestRunsSelector.svelte +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/WorkArea/UnknownTest.svelte +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/WorkArea/WorkArea.svelte +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/admin-panel.js +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/argus.css +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/argus.js +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/duty-planner.js +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/flashDebug.js +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/font-awesome.css +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/font-awesome.js +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/fonts/NotoSans-Bold.ttf +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/fonts/NotoSans-BoldItalic.ttf +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/fonts/NotoSans-Italic.ttf +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/fonts/NotoSans-Regular.ttf +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/fonts/OFL.txt +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/fonts/noto.css +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/login.js +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/markdownOptions.js +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/notification-counter.js +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/plan.js +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/profile-jobs.js +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/profile-notifications.js +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/profile-schedules.js +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/release-dashboard.js +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/release-page.js +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/release-planner.js +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/release-scheduler.js +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/run-by-plugin.js +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/teams.js +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/test-run-details.js +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/test-runs-breakout.js +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/test-runs-standalone.js +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/view-user-resolver.js +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/work-area.js +0 -0
- {argus_alm-0.15.2/argus/backend → argus_alm-0.15.5/profile}/.gitkeep +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/public/argus.png +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/public/no-user-picture.png +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/pytest-argus-reporter/.envrc +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/pytest-argus-reporter/LICENSE +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/pytest-argus-reporter/MANIFEST.in +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/pytest-argus-reporter/README.md +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/pytest-argus-reporter/noxfile.py +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/pytest-argus-reporter/pyproject.toml +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/run_with_profiler.py +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/scripts/argus-status-page/index.html +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/scripts/argus-status-page/js/status.js +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/scripts/argus-status-page/static/app.css +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/scripts/argus-status-page/static/argus.png +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/scripts/argus-status-page/static/scylla.png +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/scripts/argus-status-page/status.json +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/scripts/migration/migration_2023-04-07.py +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/scripts/migration/migration_2024-04-14.py +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/setup.cfg +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/start_argus.sh +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/storage/profile_pictures/.gitignore +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/templates/admin/base.html.j2 +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/templates/admin/index.html.j2 +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/templates/auth/login.html.j2 +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/templates/auth/register.html.j2 +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/templates/base.html.j2 +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/templates/dashboard.html.j2 +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/templates/duty_planner.html.j2 +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/templates/error.html.j2 +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/templates/flash_debug.html.j2 +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/templates/groups.html.j2 +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/templates/home.html.j2 +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/templates/notifications/assigned.html.j2 +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/templates/notifications/assigned_email.html.j2 +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/templates/notifications/email_mention.html.j2 +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/templates/notifications/mention.html.j2 +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/templates/notifications/view_action_item_assigned.html.j2 +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/templates/notifications/view_action_item_assigned_email.html.j2 +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/templates/notifications/view_highlight_mention.html.j2 +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/templates/notifications/view_highlight_mention_email.html.j2 +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/templates/plan_dashboard.html.j2 +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/templates/profile.html.j2 +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/templates/profile_jobs.html.j2 +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/templates/profile_notifications.html.j2 +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/templates/profile_schedules.html.j2 +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/templates/release_dashboard.html.j2 +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/templates/release_planner.html.j2 +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/templates/release_schedule.html.j2 +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/templates/releases.html.j2 +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/templates/run_view_by_plugin.html.j2 +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/templates/runs.html.j2 +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/templates/standalone_test_with_runs.html.j2 +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/templates/teams.html.j2 +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/templates/test_run.html.j2 +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/templates/test_runs.html.j2 +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/templates/tests.html.j2 +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/templates/view_dashboard.html.j2 +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/templates/views.html.j2 +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/tsconfig.json +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/uwsgi.ini +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/webpack.config.js +0 -0
- {argus_alm-0.15.2 → argus_alm-0.15.5}/yarn.lock +0 -0
|
@@ -35,7 +35,7 @@ jobs:
|
|
|
35
35
|
publish-to-pypi:
|
|
36
36
|
name: >-
|
|
37
37
|
Publish Python 🐍 distribution 📦 to PyPI
|
|
38
|
-
|
|
38
|
+
if: github.ref_type == 'tag'
|
|
39
39
|
needs:
|
|
40
40
|
- build
|
|
41
41
|
runs-on: ubuntu-latest
|
|
@@ -44,6 +44,7 @@ jobs:
|
|
|
44
44
|
url: https://pypi.org/p/argus-alm # Replace <package-name> with your PyPI project name
|
|
45
45
|
permissions:
|
|
46
46
|
id-token: write # IMPORTANT: mandatory for trusted publishing
|
|
47
|
+
contents: write
|
|
47
48
|
|
|
48
49
|
steps:
|
|
49
50
|
- name: Download all the dists
|
|
@@ -56,6 +57,7 @@ jobs:
|
|
|
56
57
|
uses: pypa/gh-action-pypi-publish@release/v1
|
|
57
58
|
|
|
58
59
|
- name: Create GitHub release
|
|
59
|
-
uses: softprops/action-gh-release@
|
|
60
|
+
uses: softprops/action-gh-release@v2
|
|
60
61
|
with:
|
|
61
62
|
generate_release_notes: true
|
|
63
|
+
files: dist/*
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: argus-alm
|
|
3
|
-
Version: 0.15.
|
|
3
|
+
Version: 0.15.5
|
|
4
4
|
Summary: Argus
|
|
5
5
|
Author-email: Alexey Kartashov <alexey.kartashov@scylladb.com>, Łukasz Sójka <lukasz.sojka@scylladb.com>
|
|
6
6
|
License-Expression: Apache-2.0
|
|
@@ -13,16 +13,16 @@ Requires-Dist: requests>=2.26.0
|
|
|
13
13
|
Requires-Dist: click>=8.1.3
|
|
14
14
|
Provides-Extra: web-backend
|
|
15
15
|
Requires-Dist: PyYAML~=6.0.0; extra == "web-backend"
|
|
16
|
-
Requires-Dist: scylla-driver
|
|
16
|
+
Requires-Dist: scylla-driver>=3.26.8; extra == "web-backend"
|
|
17
17
|
Requires-Dist: Flask~=3.0.0; extra == "web-backend"
|
|
18
18
|
Requires-Dist: Flask-WTF~=1.0.0; extra == "web-backend"
|
|
19
19
|
Requires-Dist: Flask-Login~=0.5.0; extra == "web-backend"
|
|
20
20
|
Requires-Dist: humanize~=3.13.1; extra == "web-backend"
|
|
21
21
|
Requires-Dist: python-magic~=0.4.24; extra == "web-backend"
|
|
22
22
|
Requires-Dist: uwsgi~=2.0.20; extra == "web-backend"
|
|
23
|
-
Requires-Dist: python-jenkins
|
|
23
|
+
Requires-Dist: python-jenkins>=1.7.0; extra == "web-backend"
|
|
24
24
|
Requires-Dist: python-slugify~=6.1.1; extra == "web-backend"
|
|
25
|
-
Requires-Dist: pygithub
|
|
25
|
+
Requires-Dist: pygithub>=2.6.1; extra == "web-backend"
|
|
26
26
|
Requires-Dist: boto3~=1.38.9; extra == "web-backend"
|
|
27
27
|
Provides-Extra: docker-image
|
|
28
28
|
Requires-Dist: supervisor~=4.2.4; extra == "docker-image"
|
|
@@ -96,14 +96,17 @@ class ArgusClient:
|
|
|
96
96
|
}
|
|
97
97
|
|
|
98
98
|
def get(self, endpoint: str, location_params: dict[str, str] = None, params: dict = None) -> requests.Response:
|
|
99
|
+
url = self.get_url_for_endpoint(
|
|
100
|
+
endpoint=endpoint,
|
|
101
|
+
location_params=location_params
|
|
102
|
+
)
|
|
103
|
+
LOGGER.debug("GET Request: %s, params: %s", url, params)
|
|
99
104
|
response = requests.get(
|
|
100
|
-
url=
|
|
101
|
-
endpoint=endpoint,
|
|
102
|
-
location_params=location_params
|
|
103
|
-
),
|
|
105
|
+
url=url,
|
|
104
106
|
params=params,
|
|
105
107
|
headers=self.request_headers
|
|
106
108
|
)
|
|
109
|
+
LOGGER.debug("GET Response: %s %s", response.status_code, response.url)
|
|
107
110
|
|
|
108
111
|
return response
|
|
109
112
|
|
|
@@ -114,15 +117,18 @@ class ArgusClient:
|
|
|
114
117
|
params: dict = None,
|
|
115
118
|
body: dict = None,
|
|
116
119
|
) -> requests.Response:
|
|
120
|
+
url = self.get_url_for_endpoint(
|
|
121
|
+
endpoint=endpoint,
|
|
122
|
+
location_params=location_params
|
|
123
|
+
)
|
|
124
|
+
LOGGER.debug("POST Request: %s, params: %s, body: %s", url, params, body)
|
|
117
125
|
response = requests.post(
|
|
118
|
-
url=
|
|
119
|
-
endpoint=endpoint,
|
|
120
|
-
location_params=location_params
|
|
121
|
-
),
|
|
126
|
+
url=url,
|
|
122
127
|
params=params,
|
|
123
128
|
json=body,
|
|
124
129
|
headers=self.request_headers,
|
|
125
130
|
)
|
|
131
|
+
LOGGER.debug("POST Response: %s %s", response.status_code, response.url)
|
|
126
132
|
|
|
127
133
|
return response
|
|
128
134
|
|
|
@@ -32,13 +32,14 @@ def cli():
|
|
|
32
32
|
@click.option("--build-id", required=True, help="Unique job identifier in the build system, e.g. scylla-master/group/job for jenkins (The full path)")
|
|
33
33
|
@click.option("--build-url", required=True, help="Job URL in the build system")
|
|
34
34
|
@click.option("--started-by", required=True, help="Username of the user who started the job")
|
|
35
|
+
@click.option("--sub-type", required=False, help="Sub-type of the generic test: pytest, dtest")
|
|
35
36
|
@click.option("--scylla-version", required=False, default=None, help="Version of Scylla used for this job")
|
|
36
37
|
@click.option("--extra-headers", default={}, type=click.UNPROCESSED, callback=validate_extra_headers, help="extra headers to pass to argus, should be in json format", envvar='ARGUS_EXTRA_HEADERS')
|
|
37
|
-
def submit_run(api_key: str, base_url: str, id: str, build_id: str, build_url: str, started_by: str, scylla_version: str = None, extra_headers: dict | None = None):
|
|
38
|
+
def submit_run(api_key: str, base_url: str, id: str, build_id: str, build_url: str, started_by: str, sub_type: str = None, scylla_version: str = None, extra_headers: dict | None = None):
|
|
38
39
|
LOGGER.info("Submitting %s (%s) to Argus...", build_id, id)
|
|
39
40
|
client = ArgusGenericClient(auth_token=api_key, base_url=base_url, extra_headers=extra_headers)
|
|
40
41
|
client.submit_generic_run(build_id=build_id, run_id=id, started_by=started_by,
|
|
41
|
-
build_url=build_url, scylla_version=scylla_version)
|
|
42
|
+
build_url=build_url, scylla_version=scylla_version, sub_type=sub_type)
|
|
42
43
|
LOGGER.info("Done.")
|
|
43
44
|
|
|
44
45
|
|
|
@@ -15,12 +15,13 @@ class ArgusGenericClient(ArgusClient):
|
|
|
15
15
|
def __init__(self, auth_token: str, base_url: str, api_version="v1", extra_headers: dict | None = None) -> None:
|
|
16
16
|
super().__init__(auth_token, base_url, api_version, extra_headers=extra_headers)
|
|
17
17
|
|
|
18
|
-
def submit_generic_run(self, build_id: str, run_id: str, started_by: str, build_url: str, scylla_version: str | None = None):
|
|
18
|
+
def submit_generic_run(self, build_id: str, run_id: str, started_by: str, build_url: str, sub_type: str = None, scylla_version: str | None = None):
|
|
19
19
|
request_body = {
|
|
20
20
|
"build_id": build_id,
|
|
21
21
|
"run_id": run_id,
|
|
22
22
|
"started_by": started_by,
|
|
23
23
|
"build_url": build_url,
|
|
24
|
+
"sub_type": sub_type,
|
|
24
25
|
"scylla_version": scylla_version
|
|
25
26
|
}
|
|
26
27
|
|
|
@@ -155,7 +155,7 @@ class StaticGenericResultTable(GenericResultTable):
|
|
|
155
155
|
"""Results class for static results metainformation, defined in Meta class."""
|
|
156
156
|
|
|
157
157
|
def __init__(
|
|
158
|
-
self, name=None, description=None, columns=None, sut_package_name=None, validation_rules=None
|
|
158
|
+
self, name=None, description=None, columns=None, sut_package_name=None, validation_rules=None, results=None, sut_timestamp=0
|
|
159
159
|
):
|
|
160
160
|
meta = getattr(self.__class__, "Meta")
|
|
161
161
|
super().__init__(
|
|
@@ -165,4 +165,9 @@ class StaticGenericResultTable(GenericResultTable):
|
|
|
165
165
|
sut_package_name=sut_package_name or getattr(meta, "sut_package_name", ""),
|
|
166
166
|
validation_rules=validation_rules or getattr(
|
|
167
167
|
meta, "ValidationRules", getattr(meta, "validation_rules", {})),
|
|
168
|
+
results=results or [],
|
|
169
|
+
sut_timestamp=sut_timestamp
|
|
168
170
|
)
|
|
171
|
+
|
|
172
|
+
class Meta:
|
|
173
|
+
pass
|
|
@@ -152,7 +152,7 @@ class ArgusSCTClient(ArgusClient):
|
|
|
152
152
|
)
|
|
153
153
|
self.check_response(response)
|
|
154
154
|
|
|
155
|
-
def create_resource(self, name: str, resource_type: str, public_ip: str, private_ip: str,
|
|
155
|
+
def create_resource(self, name: str, resource_type: str, public_ip: str, private_ip: str, instance_type: str,
|
|
156
156
|
region: str, provider: str, dc_name: str, rack_name: str, shards_amount: int, state=ResourceState.RUNNING) -> None:
|
|
157
157
|
"""
|
|
158
158
|
Creates a cloud resource record in argus.
|
|
@@ -167,6 +167,7 @@ class ArgusSCTClient(ArgusClient):
|
|
|
167
167
|
"state": state,
|
|
168
168
|
"resource_type": resource_type,
|
|
169
169
|
"instance_details": {
|
|
170
|
+
"instance_type": instance_type,
|
|
170
171
|
"provider": provider,
|
|
171
172
|
"region": region,
|
|
172
173
|
"dc_name": dc_name,
|
|
@@ -22,6 +22,22 @@ class TestStatus(str, Enum):
|
|
|
22
22
|
NOT_RUN = "not_run"
|
|
23
23
|
|
|
24
24
|
|
|
25
|
+
class PytestStatus(str, Enum):
|
|
26
|
+
ERROR = "error"
|
|
27
|
+
PASSED = "passed"
|
|
28
|
+
FAILURE = "failure"
|
|
29
|
+
SKIPPED = "skipped"
|
|
30
|
+
XFAILED = "xfailed"
|
|
31
|
+
XPASS = "xpass"
|
|
32
|
+
# Following statuses reflect test & teardown state
|
|
33
|
+
# Example: passed & error means the test passed
|
|
34
|
+
# but the tearDown stage errored
|
|
35
|
+
PASSED_ERROR = "passed & error"
|
|
36
|
+
FAILURE_ERROR = "failure & error"
|
|
37
|
+
SKIPPED_ERROR = "skipped & error"
|
|
38
|
+
ERROR_ERROR = "error & error"
|
|
39
|
+
|
|
40
|
+
|
|
25
41
|
class TestInvestigationStatus(str, Enum):
|
|
26
42
|
NOT_INVESTIGATED = "not_investigated"
|
|
27
43
|
IN_PROGRESS = "in_progress"
|
{argus_alm-0.15.2 → argus_alm-0.15.5}/argusAI/deployment/argusai_event_similarity_processor.service
RENAMED
|
@@ -6,7 +6,7 @@ After=network.target
|
|
|
6
6
|
Type=simple
|
|
7
7
|
User=argus
|
|
8
8
|
Group=argus
|
|
9
|
-
WorkingDirectory=/home/argus/
|
|
9
|
+
WorkingDirectory=/home/argus/argusAI
|
|
10
10
|
Environment="PYTHONPATH=."
|
|
11
11
|
Environment="DAYS_BACK=120"
|
|
12
12
|
ExecStart=/usr/bin/uv --project argusAI/pyproject.toml run argusAI/event_similarity_processor.py
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import os
|
|
2
2
|
from collections import namedtuple
|
|
3
3
|
from pathlib import Path
|
|
4
|
+
|
|
5
|
+
import cassandra
|
|
4
6
|
import chromadb
|
|
5
7
|
from threading import Thread, Event
|
|
6
8
|
import time
|
|
@@ -9,7 +11,7 @@ import datetime
|
|
|
9
11
|
from typing import Dict, Set, List, Tuple, Union
|
|
10
12
|
import uuid
|
|
11
13
|
|
|
12
|
-
from chromadb.api.types import
|
|
14
|
+
from chromadb.api.types import Embeddings
|
|
13
15
|
from chromadb.utils.embedding_functions.onnx_mini_lm_l6_v2 import ONNXMiniLM_L6_V2
|
|
14
16
|
from chromadb.config import Settings
|
|
15
17
|
|
|
@@ -24,6 +26,7 @@ SLEEP_INTERVAL: int = 300 # 5 minutes
|
|
|
24
26
|
SIMILARITY_THRESHOLD: float = 0.90
|
|
25
27
|
MAX_SIMILARS: int = 200
|
|
26
28
|
DAYS_BACK: int = int(os.getenv("DAYS_BACK", "120"))
|
|
29
|
+
RECREATE_EMBEDDINGS: bool = os.getenv("RECREATE_EMBEDDINGS", "false").lower() in ("true", "1", "yes")
|
|
27
30
|
|
|
28
31
|
logging.basicConfig(
|
|
29
32
|
level=logging.INFO,
|
|
@@ -98,13 +101,22 @@ class EventSimilarityProcessor:
|
|
|
98
101
|
|
|
99
102
|
LOGGER.info(f"Finding similarities for run_id: {run_id}, event_index: {event_index}, type: {event_type}")
|
|
100
103
|
|
|
101
|
-
similar
|
|
104
|
+
similar = collection.query(
|
|
102
105
|
query_embeddings=[embedding],
|
|
103
106
|
n_results=max_similars,
|
|
104
107
|
where={"run_id": {"$ne": str(run_id)}},
|
|
105
108
|
include=[
|
|
106
|
-
|
|
107
|
-
|
|
109
|
+
"metadatas",
|
|
110
|
+
"distances",
|
|
111
|
+
],
|
|
112
|
+
)
|
|
113
|
+
duplicate = collection.query(
|
|
114
|
+
query_embeddings=[embedding],
|
|
115
|
+
n_results=100,
|
|
116
|
+
where={"run_id": str(run_id)},
|
|
117
|
+
include=[
|
|
118
|
+
"metadatas",
|
|
119
|
+
"distances",
|
|
108
120
|
],
|
|
109
121
|
)
|
|
110
122
|
|
|
@@ -117,17 +129,24 @@ class EventSimilarityProcessor:
|
|
|
117
129
|
if len(similar_map) >= max_similars:
|
|
118
130
|
break
|
|
119
131
|
|
|
132
|
+
duplicate_list: List[int] = []
|
|
133
|
+
for j, distance in enumerate(duplicate["distances"][0]):
|
|
134
|
+
if 1 - distance >= 0.95 and event_index != duplicate["metadatas"][0][j]["idx"]:
|
|
135
|
+
duplicate_list.append(duplicate["metadatas"][0][j]["idx"])
|
|
136
|
+
|
|
120
137
|
table = ErrorEventEmbeddings if event_type == EventType.ERROR else CriticalEventEmbeddings
|
|
121
138
|
try:
|
|
122
139
|
self._db.execute(
|
|
123
|
-
f"UPDATE {table.__table_name__} SET similars_map = ? WHERE run_id = ? AND event_index = ?",
|
|
124
|
-
(similar_map, run_id, event_index),
|
|
140
|
+
f"UPDATE {table.__table_name__} SET similars_map = ?, duplicates_list = ? WHERE run_id = ? AND event_index = ?",
|
|
141
|
+
(similar_map, duplicate_list, run_id, event_index),
|
|
125
142
|
)
|
|
126
143
|
LOGGER.info(
|
|
127
144
|
f"Found {len(similar_map)} similar {event_type} events for run_id: {run_id}, event_index: {event_index}"
|
|
128
145
|
)
|
|
129
146
|
except Exception as e: # noqa: BLE001
|
|
130
|
-
LOGGER.error(
|
|
147
|
+
LOGGER.error(
|
|
148
|
+
f"Failed to update similars_map/duplicates_list for run_id: {run_id}, event_index: {event_index}: {e}"
|
|
149
|
+
)
|
|
131
150
|
|
|
132
151
|
def load_events(
|
|
133
152
|
self, event_type: str, cutoff_time: datetime.datetime, batch_size: int = 5000
|
|
@@ -148,7 +167,9 @@ class EventSimilarityProcessor:
|
|
|
148
167
|
collection: chromadb.Collection = self._collections[event_type]
|
|
149
168
|
table = ErrorEventEmbeddings if event_type == EventType.ERROR else CriticalEventEmbeddings
|
|
150
169
|
similars_to_update: List[EmbeddingEntry] = []
|
|
151
|
-
|
|
170
|
+
if RECREATE_EMBEDDINGS:
|
|
171
|
+
LOGGER.info(f"Skipping loading of {event_type} events due to RECREATE_EMBEDDINGS setting")
|
|
172
|
+
return processed_runs, similars_to_update
|
|
152
173
|
LOGGER.info(f"Loading processed {event_type} events...")
|
|
153
174
|
query: str = f"SELECT * FROM {table.__table_name__} WHERE start_time > ? ALLOW FILTERING BYPASS CACHE"
|
|
154
175
|
rows = self._db.execute(query, (cutoff_time,))
|
|
@@ -168,7 +189,7 @@ class EventSimilarityProcessor:
|
|
|
168
189
|
ids.append(f"{emb.run_id}_{emb.event_index}")
|
|
169
190
|
embeddings_list.append(emb.embedding)
|
|
170
191
|
metadatas.append({"run_id": str(emb.run_id), "idx": emb.event_index})
|
|
171
|
-
if emb.similars_map is None:
|
|
192
|
+
if emb.similars_map is None or emb.duplicates_list is None:
|
|
172
193
|
similars_to_update.append(
|
|
173
194
|
EmbeddingEntry(emb.run_id, emb.event_index, emb.embedding, emb.start_time)
|
|
174
195
|
)
|
|
@@ -195,13 +216,19 @@ class EventSimilarityProcessor:
|
|
|
195
216
|
new_embeddings: Dict[str, List[EmbeddingEntry]] = similars_to_find
|
|
196
217
|
while not stop_event.is_set():
|
|
197
218
|
LOGGER.info(f"Starting event processing cycle; fetching tests since: {cutoff_time}")
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
219
|
+
try:
|
|
220
|
+
tests_to_process_result = self._db.execute(
|
|
221
|
+
f"SELECT id, status FROM {SCTTestRun.table_name()} WHERE start_time > ? ALLOW FILTERING BYPASS CACHE",
|
|
222
|
+
(cutoff_time,),
|
|
223
|
+
)
|
|
224
|
+
tests_to_process: Set[uuid.UUID] = {
|
|
225
|
+
run.id for run in tests_to_process_result if run.status != TestStatus.PASSED.value
|
|
226
|
+
} - processed_runs
|
|
227
|
+
except cassandra.ReadTimeout:
|
|
228
|
+
LOGGER.error("Read Timeout while trying to get new events to process - skipping until next iteration")
|
|
229
|
+
stop_event.wait(timeout=SLEEP_INTERVAL)
|
|
230
|
+
continue
|
|
231
|
+
|
|
205
232
|
LOGGER.info(f"tests to process (including in progress) count: {len(tests_to_process)}")
|
|
206
233
|
try:
|
|
207
234
|
stats: Dict[str, int] = {
|
|
@@ -49,6 +49,7 @@ class MessageSanitizer:
|
|
|
49
49
|
r"Machine ID|Hostname|Storage|Size on Disk|Message|Disk Size):.*?(?=\n|$)",
|
|
50
50
|
re.MULTILINE,
|
|
51
51
|
)
|
|
52
|
+
self.report_at_pattern: Pattern = re.compile(r"Please report: at .*\n")
|
|
52
53
|
self.lib_address_pattern: Pattern = re.compile(r"\([^()]+ \+ 0x[0-9a-fA-F]+\)")
|
|
53
54
|
self.module_pattern: Pattern = re.compile(r"Module [^\n]+ from rpm [^\n]+")
|
|
54
55
|
self.stack_header_pattern: Pattern = re.compile(r"Stack trace of thread \d+:")
|
|
@@ -62,6 +63,17 @@ class MessageSanitizer:
|
|
|
62
63
|
self.eol_pattern = re.compile(r"\\n")
|
|
63
64
|
self.backslashes_pattern = re.compile(r"\\")
|
|
64
65
|
self.repetitions_pattern = re.compile(r"(\b\w+\b)(?:\s+\1)+")
|
|
66
|
+
self.backtrace_unwanted_lines = {
|
|
67
|
+
"seastar::backtrace",
|
|
68
|
+
"seastar::print_with_backtrace",
|
|
69
|
+
"seastar::install_oneshot_signal_handler",
|
|
70
|
+
"seastar::current_backtrace",
|
|
71
|
+
"seastar::current_tasktrace",
|
|
72
|
+
"seastar::memory::cpu_pages::warn_large_allocation",
|
|
73
|
+
"seastar::memory::allocate_slowpath",
|
|
74
|
+
"at main.cc:",
|
|
75
|
+
" ??:",
|
|
76
|
+
}
|
|
65
77
|
|
|
66
78
|
self.sanitizers: List[Callable[[str], str]] = [
|
|
67
79
|
self.remove_preface,
|
|
@@ -72,8 +84,10 @@ class MessageSanitizer:
|
|
|
72
84
|
self.remove_ip_addresses,
|
|
73
85
|
self.remove_urls,
|
|
74
86
|
self.remove_metadata,
|
|
87
|
+
self.remove_backtrace_unwanted_lines,
|
|
75
88
|
self.remove_modules,
|
|
76
89
|
self.remove_message_prefix,
|
|
90
|
+
self.remove_report_at,
|
|
77
91
|
self.remove_lib_address,
|
|
78
92
|
self.remove_process_ids,
|
|
79
93
|
self.remove_memory_addresses,
|
|
@@ -213,3 +227,22 @@ class MessageSanitizer:
|
|
|
213
227
|
|
|
214
228
|
def remove_repetitions(self, text: str) -> str:
|
|
215
229
|
return self.repetitions_pattern.sub(r"\1", text)
|
|
230
|
+
|
|
231
|
+
def remove_report_at(self, text: str) -> str:
|
|
232
|
+
return self.report_at_pattern.sub("", text)
|
|
233
|
+
|
|
234
|
+
def _remove_inlined_starting(self, text: str) -> str:
|
|
235
|
+
"""Remove inlined starting text that is not useful."""
|
|
236
|
+
if not text.startswith("(inlined by) "):
|
|
237
|
+
return text
|
|
238
|
+
return text.split("(inlined by) ", 1)[-1].strip()
|
|
239
|
+
|
|
240
|
+
def remove_backtrace_unwanted_lines(self, text: str) -> str:
|
|
241
|
+
"""Specific lines in backtrace that are not useful and can be removed."""
|
|
242
|
+
if not "backtrace" in text[:1000]:
|
|
243
|
+
return text
|
|
244
|
+
return "\n".join(
|
|
245
|
+
self._remove_inlined_starting(line)
|
|
246
|
+
for line in text.splitlines()
|
|
247
|
+
if not any(problem in line for problem in self.backtrace_unwanted_lines)
|
|
248
|
+
)
|