squidient 3.0.3__tar.gz → 3.0.4__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.
- {squidient-3.0.3 → squidient-3.0.4}/PKG-INFO +1 -1
- {squidient-3.0.3 → squidient-3.0.4}/pyproject.toml +1 -1
- {squidient-3.0.3 → squidient-3.0.4}/src/squidient/definitions.py +1 -0
- {squidient-3.0.3 → squidient-3.0.4}/src/squidient/monitoring/monitoring.py +19 -2
- {squidient-3.0.3 → squidient-3.0.4}/src/squidient/testing/benchmarks/failure_notifier.py +10 -5
- {squidient-3.0.3 → squidient-3.0.4}/.gitignore +0 -0
- {squidient-3.0.3 → squidient-3.0.4}/LICENSE.txt +0 -0
- {squidient-3.0.3 → squidient-3.0.4}/README.md +0 -0
- {squidient-3.0.3 → squidient-3.0.4}/src/squidient/__init__.py +0 -0
- {squidient-3.0.3 → squidient-3.0.4}/src/squidient/builds/benchmark_build_execution.py +0 -0
- {squidient-3.0.3 → squidient-3.0.4}/src/squidient/builds/benchmark_build_orchestrator.py +0 -0
- {squidient-3.0.3 → squidient-3.0.4}/src/squidient/builds/build_definition.py +0 -0
- {squidient-3.0.3 → squidient-3.0.4}/src/squidient/builds/build_execution.py +0 -0
- {squidient-3.0.3 → squidient-3.0.4}/src/squidient/builds/build_orchestrator.py +0 -0
- {squidient-3.0.3 → squidient-3.0.4}/src/squidient/builds/build_presets.py +0 -0
- {squidient-3.0.3 → squidient-3.0.4}/src/squidient/cli/__init__.py +0 -0
- {squidient-3.0.3 → squidient-3.0.4}/src/squidient/cli/__main__.py +0 -0
- {squidient-3.0.3 → squidient-3.0.4}/src/squidient/cli/main.py +0 -0
- {squidient-3.0.3 → squidient-3.0.4}/src/squidient/cli/monitoring.py +0 -0
- {squidient-3.0.3 → squidient-3.0.4}/src/squidient/cli/staging.py +0 -0
- {squidient-3.0.3 → squidient-3.0.4}/src/squidient/code_coverage/code_coverage.py +0 -0
- {squidient-3.0.3 → squidient-3.0.4}/src/squidient/code_coverage/gcovr_code_coverage.py +0 -0
- {squidient-3.0.3 → squidient-3.0.4}/src/squidient/code_coverage/intel_code_coverage.py +0 -0
- {squidient-3.0.3 → squidient-3.0.4}/src/squidient/compare/compare.py +0 -0
- {squidient-3.0.3 → squidient-3.0.4}/src/squidient/compare/compare_with_diff_table.py +0 -0
- {squidient-3.0.3 → squidient-3.0.4}/src/squidient/compare/methods/absolute.py +0 -0
- {squidient-3.0.3 → squidient-3.0.4}/src/squidient/compare/methods/close.py +0 -0
- {squidient-3.0.3 → squidient-3.0.4}/src/squidient/compare/methods/diff.py +0 -0
- {squidient-3.0.3 → squidient-3.0.4}/src/squidient/compare/methods/l1_norm.py +0 -0
- {squidient-3.0.3 → squidient-3.0.4}/src/squidient/compare/methods/l1_relative.py +0 -0
- {squidient-3.0.3 → squidient-3.0.4}/src/squidient/compare/methods/l2_norm.py +0 -0
- {squidient-3.0.3 → squidient-3.0.4}/src/squidient/compare/methods/l2_relative.py +0 -0
- {squidient-3.0.3 → squidient-3.0.4}/src/squidient/compare/methods/linf_norm.py +0 -0
- {squidient-3.0.3 → squidient-3.0.4}/src/squidient/compare/methods/linf_relative.py +0 -0
- {squidient-3.0.3 → squidient-3.0.4}/src/squidient/compare/methods/power.py +0 -0
- {squidient-3.0.3 → squidient-3.0.4}/src/squidient/compare/methods/relative.py +0 -0
- {squidient-3.0.3 → squidient-3.0.4}/src/squidient/compare/methods/scalar_tolerance.py +0 -0
- {squidient-3.0.3 → squidient-3.0.4}/src/squidient/compare/methods/tolerance.py +0 -0
- {squidient-3.0.3 → squidient-3.0.4}/src/squidient/compare/methods/vector_tolerance.py +0 -0
- {squidient-3.0.3 → squidient-3.0.4}/src/squidient/compilation/cmake_options.py +0 -0
- {squidient-3.0.3 → squidient-3.0.4}/src/squidient/configuration/__init__.py +0 -0
- {squidient-3.0.3 → squidient-3.0.4}/src/squidient/configuration/generator.py +0 -0
- {squidient-3.0.3 → squidient-3.0.4}/src/squidient/configuration/prompts.py +0 -0
- {squidient-3.0.3 → squidient-3.0.4}/src/squidient/configure.py +0 -0
- {squidient-3.0.3 → squidient-3.0.4}/src/squidient/connection/job.py +0 -0
- {squidient-3.0.3 → squidient-3.0.4}/src/squidient/connection/ssh.py +0 -0
- {squidient-3.0.3 → squidient-3.0.4}/src/squidient/connection/ssh_config_checker.py +0 -0
- {squidient-3.0.3 → squidient-3.0.4}/src/squidient/data/.squidient-initialized +0 -0
- {squidient-3.0.3 → squidient-3.0.4}/src/squidient/data/alya-config/cmake-alamak.json +0 -0
- {squidient-3.0.3 → squidient-3.0.4}/src/squidient/data/alya-config/cmake-chemint.json +0 -0
- {squidient-3.0.3 → squidient-3.0.4}/src/squidient/data/alya-config/cmake-clang.json +0 -0
- {squidient-3.0.3 → squidient-3.0.4}/src/squidient/data/alya-config/cmake-commdom.json +0 -0
- {squidient-3.0.3 → squidient-3.0.4}/src/squidient/data/alya-config/cmake-gnu.json +0 -0
- {squidient-3.0.3 → squidient-3.0.4}/src/squidient/data/alya-config/cmake-intel.json +0 -0
- {squidient-3.0.3 → squidient-3.0.4}/src/squidient/data/alya-config/cmake-mumps.json +0 -0
- {squidient-3.0.3 → squidient-3.0.4}/src/squidient/data/alya-config/cmake-nvhpc.json +0 -0
- {squidient-3.0.3 → squidient-3.0.4}/src/squidient/data/alya-config/cmake-talp.json +0 -0
- {squidient-3.0.3 → squidient-3.0.4}/src/squidient/data/benchmarks/benchmarks.json +0 -0
- {squidient-3.0.3 → squidient-3.0.4}/src/squidient/data/builds/builds.json +0 -0
- {squidient-3.0.3 → squidient-3.0.4}/src/squidient/data/builds/cc.json +0 -0
- {squidient-3.0.3 → squidient-3.0.4}/src/squidient/data/builds/defaults.json +0 -0
- {squidient-3.0.3 → squidient-3.0.4}/src/squidient/data/builds/predefined-old.json +0 -0
- {squidient-3.0.3 → squidient-3.0.4}/src/squidient/data/builds/predefined.json +0 -0
- {squidient-3.0.3 → squidient-3.0.4}/src/squidient/data/configurations/projects.json +0 -0
- {squidient-3.0.3 → squidient-3.0.4}/src/squidient/data/configurations/systems.json +0 -0
- {squidient-3.0.3 → squidient-3.0.4}/src/squidient/data/configurations/tests.json +0 -0
- {squidient-3.0.3 → squidient-3.0.4}/src/squidient/data/email/report.html +0 -0
- {squidient-3.0.3 → squidient-3.0.4}/src/squidient/data/icons/big.png +0 -0
- {squidient-3.0.3 → squidient-3.0.4}/src/squidient/data/icons/small.png +0 -0
- {squidient-3.0.3 → squidient-3.0.4}/src/squidient/data/index.html +0 -0
- {squidient-3.0.3 → squidient-3.0.4}/src/squidient/data/terraform/.gitignore +0 -0
- {squidient-3.0.3 → squidient-3.0.4}/src/squidient/data/terraform/aws-ec2-t3.small/.gitignore +0 -0
- {squidient-3.0.3 → squidient-3.0.4}/src/squidient/data/terraform/aws-ec2-t3.small/t3.small/cloud-init-slurm-fedora.sh +0 -0
- {squidient-3.0.3 → squidient-3.0.4}/src/squidient/data/terraform/aws-ec2-t3.small/t3.small/t3.small.tf +0 -0
- {squidient-3.0.3 → squidient-3.0.4}/src/squidient/data/terraform/aws-ec2-t3.small/t3.small/terraform.tfvars +0 -0
- {squidient-3.0.3 → squidient-3.0.4}/src/squidient/data/terraform/aws-ec2-t3.small-x2/t3.small/.gitignore +0 -0
- {squidient-3.0.3 → squidient-3.0.4}/src/squidient/data/terraform/aws-ec2-t3.small-x2/t3.small/cloud-init-slurm-fedora.sh +0 -0
- {squidient-3.0.3 → squidient-3.0.4}/src/squidient/data/terraform/aws-ec2-t3.small-x2/t3.small/replace-var.sh +0 -0
- {squidient-3.0.3 → squidient-3.0.4}/src/squidient/data/terraform/aws-ec2-t3.small-x2/t3.small/t3.small.tf +0 -0
- {squidient-3.0.3 → squidient-3.0.4}/src/squidient/data/terraform/aws-ec2-t3.small-x2/t3.small/terraform.tfvars +0 -0
- {squidient-3.0.3 → squidient-3.0.4}/src/squidient/data/terraform/aws-ec2-t3.small-x3/t3.small/.gitignore +0 -0
- {squidient-3.0.3 → squidient-3.0.4}/src/squidient/data/terraform/aws-ec2-t3.small-x3/t3.small/cloud-init-slurm-fedora.sh +0 -0
- {squidient-3.0.3 → squidient-3.0.4}/src/squidient/data/terraform/aws-ec2-t3.small-x3/t3.small/t3.small.tf +0 -0
- {squidient-3.0.3 → squidient-3.0.4}/src/squidient/data/terraform/aws-ec2-t3.small-x3/t3.small/terraform.tfvars +0 -0
- {squidient-3.0.3 → squidient-3.0.4}/src/squidient/data/version/version.json +0 -0
- {squidient-3.0.3 → squidient-3.0.4}/src/squidient/data/web/btest.html +0 -0
- {squidient-3.0.3 → squidient-3.0.4}/src/squidient/data/web/cc-gcovr.html +0 -0
- {squidient-3.0.3 → squidient-3.0.4}/src/squidient/data/web/cc-intel.html +0 -0
- {squidient-3.0.3 → squidient-3.0.4}/src/squidient/data/web/files.html +0 -0
- {squidient-3.0.3 → squidient-3.0.4}/src/squidient/data/web/img/png/canceled.png +0 -0
- {squidient-3.0.3 → squidient-3.0.4}/src/squidient/data/web/img/png/created.png +0 -0
- {squidient-3.0.3 → squidient-3.0.4}/src/squidient/data/web/img/png/failed.png +0 -0
- {squidient-3.0.3 → squidient-3.0.4}/src/squidient/data/web/img/png/failed_black.png +0 -0
- {squidient-3.0.3 → squidient-3.0.4}/src/squidient/data/web/img/png/failed_green.png +0 -0
- {squidient-3.0.3 → squidient-3.0.4}/src/squidient/data/web/img/png/file_cloud.png +0 -0
- {squidient-3.0.3 → squidient-3.0.4}/src/squidient/data/web/img/png/file_config.png +0 -0
- {squidient-3.0.3 → squidient-3.0.4}/src/squidient/data/web/img/png/file_ko.png +0 -0
- {squidient-3.0.3 → squidient-3.0.4}/src/squidient/data/web/img/png/file_ok.png +0 -0
- {squidient-3.0.3 → squidient-3.0.4}/src/squidient/data/web/img/png/skipped.png +0 -0
- {squidient-3.0.3 → squidient-3.0.4}/src/squidient/data/web/img/png/squidient_logo.png +0 -0
- {squidient-3.0.3 → squidient-3.0.4}/src/squidient/data/web/img/png/success.png +0 -0
- {squidient-3.0.3 → squidient-3.0.4}/src/squidient/data/web/img/png/success_black.png +0 -0
- {squidient-3.0.3 → squidient-3.0.4}/src/squidient/data/web/img/png/timeout.png +0 -0
- {squidient-3.0.3 → squidient-3.0.4}/src/squidient/data/web/img/png/tolerance.png +0 -0
- {squidient-3.0.3 → squidient-3.0.4}/src/squidient/data/web/img/png/warning.png +0 -0
- {squidient-3.0.3 → squidient-3.0.4}/src/squidient/data/web/img/png/warning_black.png +0 -0
- {squidient-3.0.3 → squidient-3.0.4}/src/squidient/data/web/img/png/warning_green.png +0 -0
- {squidient-3.0.3 → squidient-3.0.4}/src/squidient/data/web/img/svg/canceled.svg +0 -0
- {squidient-3.0.3 → squidient-3.0.4}/src/squidient/data/web/img/svg/created.svg +0 -0
- {squidient-3.0.3 → squidient-3.0.4}/src/squidient/data/web/img/svg/failed.svg +0 -0
- {squidient-3.0.3 → squidient-3.0.4}/src/squidient/data/web/img/svg/failed_black.svg +0 -0
- {squidient-3.0.3 → squidient-3.0.4}/src/squidient/data/web/img/svg/failed_green.svg +0 -0
- {squidient-3.0.3 → squidient-3.0.4}/src/squidient/data/web/img/svg/manual.svg +0 -0
- {squidient-3.0.3 → squidient-3.0.4}/src/squidient/data/web/img/svg/running.svg +0 -0
- {squidient-3.0.3 → squidient-3.0.4}/src/squidient/data/web/img/svg/skipped.svg +0 -0
- {squidient-3.0.3 → squidient-3.0.4}/src/squidient/data/web/img/svg/success.svg +0 -0
- {squidient-3.0.3 → squidient-3.0.4}/src/squidient/data/web/img/svg/success_black.svg +0 -0
- {squidient-3.0.3 → squidient-3.0.4}/src/squidient/data/web/img/svg/warning.svg +0 -0
- {squidient-3.0.3 → squidient-3.0.4}/src/squidient/data/web/img/svg/warning_black.svg +0 -0
- {squidient-3.0.3 → squidient-3.0.4}/src/squidient/data/web/img/svg/warning_green.svg +0 -0
- {squidient-3.0.3 → squidient-3.0.4}/src/squidient/data/web/index.html +0 -0
- {squidient-3.0.3 → squidient-3.0.4}/src/squidient/data/web/jquery.dynatable.css +0 -0
- {squidient-3.0.3 → squidient-3.0.4}/src/squidient/data/web/jquery.dynatable.js +0 -0
- {squidient-3.0.3 → squidient-3.0.4}/src/squidient/data/web/monitoring.html +0 -0
- {squidient-3.0.3 → squidient-3.0.4}/src/squidient/data/web/monitoring_build.html +0 -0
- {squidient-3.0.3 → squidient-3.0.4}/src/squidient/data/web/monitoring_test.html +0 -0
- {squidient-3.0.3 → squidient-3.0.4}/src/squidient/data/web/perf.html +0 -0
- {squidient-3.0.3 → squidient-3.0.4}/src/squidient/data/web/staging_build.html +0 -0
- {squidient-3.0.3 → squidient-3.0.4}/src/squidient/data/web/staging_test.html +0 -0
- {squidient-3.0.3 → squidient-3.0.4}/src/squidient/data/web/test.html +0 -0
- {squidient-3.0.3 → squidient-3.0.4}/src/squidient/data/web/testsuite.css +0 -0
- {squidient-3.0.3 → squidient-3.0.4}/src/squidient/data/web/testsuite.js +0 -0
- {squidient-3.0.3 → squidient-3.0.4}/src/squidient/deployment/initialization.py +0 -0
- {squidient-3.0.3 → squidient-3.0.4}/src/squidient/deployment/module_generator.py +0 -0
- {squidient-3.0.3 → squidient-3.0.4}/src/squidient/monitoring/monitoring_db.py +0 -0
- {squidient-3.0.3 → squidient-3.0.4}/src/squidient/reports/__init__.py +0 -0
- {squidient-3.0.3 → squidient-3.0.4}/src/squidient/reports/cases/__init__.py +0 -0
- {squidient-3.0.3 → squidient-3.0.4}/src/squidient/reports/cases/base.py +0 -0
- {squidient-3.0.3 → squidient-3.0.4}/src/squidient/reports/cases/case.py +0 -0
- {squidient-3.0.3 → squidient-3.0.4}/src/squidient/reports/cases/detailed.py +0 -0
- {squidient-3.0.3 → squidient-3.0.4}/src/squidient/reports/cases/full.py +0 -0
- {squidient-3.0.3 → squidient-3.0.4}/src/squidient/reports/monitoring/__init__.py +0 -0
- {squidient-3.0.3 → squidient-3.0.4}/src/squidient/reports/monitoring/report.py +0 -0
- {squidient-3.0.3 → squidient-3.0.4}/src/squidient/reports/report.py +0 -0
- {squidient-3.0.3 → squidient-3.0.4}/src/squidient/staging/staging.py +0 -0
- {squidient-3.0.3 → squidient-3.0.4}/src/squidient/systems/partition.py +0 -0
- {squidient-3.0.3 → squidient-3.0.4}/src/squidient/systems/platform.py +0 -0
- {squidient-3.0.3 → squidient-3.0.4}/src/squidient/systems/qos.py +0 -0
- {squidient-3.0.3 → squidient-3.0.4}/src/squidient/systems/queue_tester.py +0 -0
- {squidient-3.0.3 → squidient-3.0.4}/src/squidient/systems/reservation.py +0 -0
- {squidient-3.0.3 → squidient-3.0.4}/src/squidient/systems/system.py +0 -0
- {squidient-3.0.3 → squidient-3.0.4}/src/squidient/systems/system_manager.py +0 -0
- {squidient-3.0.3 → squidient-3.0.4}/src/squidient/terraform/terraform.py +0 -0
- {squidient-3.0.3 → squidient-3.0.4}/src/squidient/testing/benchmarks/__init__.py +0 -0
- {squidient-3.0.3 → squidient-3.0.4}/src/squidient/testing/benchmarks/instance.py +0 -0
- {squidient-3.0.3 → squidient-3.0.4}/src/squidient/testing/benchmarks/test_case.py +0 -0
- {squidient-3.0.3 → squidient-3.0.4}/src/squidient/testing/benchmarks/test_orchestrator.py +0 -0
- {squidient-3.0.3 → squidient-3.0.4}/src/squidient/testing/cases/__init__.py +0 -0
- {squidient-3.0.3 → squidient-3.0.4}/src/squidient/testing/cases/instance.py +0 -0
- {squidient-3.0.3 → squidient-3.0.4}/src/squidient/testing/cases/instance_merger.py +0 -0
- {squidient-3.0.3 → squidient-3.0.4}/src/squidient/testing/cases/test_case.py +0 -0
- {squidient-3.0.3 → squidient-3.0.4}/src/squidient/testing/test_orchestrator.py +0 -0
- {squidient-3.0.3 → squidient-3.0.4}/src/squidient/timers/__init__.py +0 -0
- {squidient-3.0.3 → squidient-3.0.4}/src/squidient/timers/timer.py +0 -0
- {squidient-3.0.3 → squidient-3.0.4}/src/squidient/utils/arguments.py +0 -0
- {squidient-3.0.3 → squidient-3.0.4}/src/squidient/utils/gitlab.py +0 -0
- {squidient-3.0.3 → squidient-3.0.4}/src/squidient/utils/lock.py +0 -0
- {squidient-3.0.3 → squidient-3.0.4}/src/squidient/utils/log.py +0 -0
- {squidient-3.0.3 → squidient-3.0.4}/src/squidient/utils/message.py +0 -0
- {squidient-3.0.3 → squidient-3.0.4}/src/squidient/utils/package.py +0 -0
- {squidient-3.0.3 → squidient-3.0.4}/src/squidient/utils/utils.py +0 -0
- {squidient-3.0.3 → squidient-3.0.4}/src/squidient/utils/watchdog.py +0 -0
- {squidient-3.0.3 → squidient-3.0.4}/src/squidient/version_control/__init__.py +0 -0
- {squidient-3.0.3 → squidient-3.0.4}/src/squidient/version_control/git_repository.py +0 -0
|
@@ -66,6 +66,7 @@ max_advised_builds = 2
|
|
|
66
66
|
database_name = {"test": "rooster_test", "production": "rooster"}
|
|
67
67
|
benchmark_failure_sender = "damien.dosimont@bsc.es"
|
|
68
68
|
benchmark_failure_copy = ["damien.dosimont@bsc.es"]
|
|
69
|
+
benchmark_notification_failure_log = "log/benchmark_notification_failures.log"
|
|
69
70
|
benchmark_failure_log_files = [
|
|
70
71
|
"sbatch.out",
|
|
71
72
|
"sbatch.err",
|
|
@@ -19,10 +19,11 @@
|
|
|
19
19
|
|
|
20
20
|
|
|
21
21
|
import logging
|
|
22
|
+
import os
|
|
22
23
|
|
|
23
24
|
from ..builds.benchmark_build_execution import BenchmarkBuildExecution
|
|
24
25
|
from ..builds.benchmark_build_orchestrator import BenchmarkBuildOrchestrator
|
|
25
|
-
from ..definitions import benchmark_build_report_dir
|
|
26
|
+
from ..definitions import benchmark_build_report_dir, benchmark_notification_failure_log
|
|
26
27
|
from ..reports.monitoring import MonitoringReport
|
|
27
28
|
from ..staging.staging import Staging, WorkflowFailure
|
|
28
29
|
from ..testing.benchmarks.test_orchestrator import BenchmarkTestOrchestrator
|
|
@@ -122,6 +123,7 @@ class Monitoring(Staging):
|
|
|
122
123
|
return
|
|
123
124
|
failures = self._test_orchestrator.get_notification_failures()
|
|
124
125
|
if len(failures) > 0:
|
|
126
|
+
self.write_notification_failure_log(failures)
|
|
125
127
|
self._report.write_notification_failures(failures)
|
|
126
128
|
|
|
127
129
|
def validate(self):
|
|
@@ -130,12 +132,27 @@ class Monitoring(Staging):
|
|
|
130
132
|
failures = self._report.get_notification_failures()
|
|
131
133
|
if len(failures) > 0:
|
|
132
134
|
console.section("Notification failures")
|
|
135
|
+
self.write_notification_failure_log(failures)
|
|
133
136
|
for failure in failures:
|
|
134
|
-
|
|
137
|
+
message = failure.get("message", str(failure))
|
|
138
|
+
log_path = failure.get("log", benchmark_notification_failure_log)
|
|
139
|
+
console.error(message + "\nDetails written to " + log_path, level=1)
|
|
135
140
|
if len(failures) > 0:
|
|
136
141
|
raise WorkflowFailure("Benchmark notification email could not be sent")
|
|
137
142
|
super().validate()
|
|
138
143
|
|
|
144
|
+
def write_notification_failure_log(self, failures):
|
|
145
|
+
log_dir = os.path.dirname(benchmark_notification_failure_log)
|
|
146
|
+
if log_dir != "":
|
|
147
|
+
os.makedirs(log_dir, exist_ok=True)
|
|
148
|
+
with open(benchmark_notification_failure_log, "w", encoding="utf-8") as log:
|
|
149
|
+
for index, failure in enumerate(failures, start=1):
|
|
150
|
+
failure["log"] = benchmark_notification_failure_log
|
|
151
|
+
log.write("Notification failure " + str(index) + "\n")
|
|
152
|
+
log.write("=" * 80 + "\n")
|
|
153
|
+
log.write(failure.get("details", failure.get("message", str(failure))))
|
|
154
|
+
log.write("\n\n")
|
|
155
|
+
|
|
139
156
|
def build(self, terraform):
|
|
140
157
|
with self.timer("monitoring.build"):
|
|
141
158
|
self._monitoring_db = MonitoringDB(self._config, enable=False)
|
|
@@ -39,12 +39,12 @@ class BenchmarkFailureNotificationError(Exception):
|
|
|
39
39
|
"Benchmark failure email could not be sent.\n"
|
|
40
40
|
"Recipients: " + ", ".join(self.recipients) + "\n"
|
|
41
41
|
"Subject: " + self.subject + "\n"
|
|
42
|
-
"Transport error: " + self.error
|
|
43
|
-
"\n"
|
|
44
|
-
"Mail body:\n"
|
|
45
|
-
+ self.body
|
|
42
|
+
"Transport error: " + self.error
|
|
46
43
|
)
|
|
47
44
|
|
|
45
|
+
def details(self):
|
|
46
|
+
return self.message() + "\n\nMail body:\n" + self.body
|
|
47
|
+
|
|
48
48
|
def as_dict(self):
|
|
49
49
|
return {
|
|
50
50
|
"recipients": self.recipients,
|
|
@@ -52,6 +52,7 @@ class BenchmarkFailureNotificationError(Exception):
|
|
|
52
52
|
"body": self.body,
|
|
53
53
|
"error": self.error,
|
|
54
54
|
"message": self.message(),
|
|
55
|
+
"details": self.details(),
|
|
55
56
|
}
|
|
56
57
|
|
|
57
58
|
|
|
@@ -140,7 +141,11 @@ class BenchmarkFailureNotifier:
|
|
|
140
141
|
message.set_content(body)
|
|
141
142
|
sendmail = shutil.which("sendmail")
|
|
142
143
|
if sendmail is not None:
|
|
143
|
-
|
|
144
|
+
command = [sendmail]
|
|
145
|
+
if self._from_address is not None:
|
|
146
|
+
command.extend(["-f", self._from_address])
|
|
147
|
+
command.append("-t")
|
|
148
|
+
subprocess.run(command, input=message.as_string(), text=True, check=True)
|
|
144
149
|
return
|
|
145
150
|
with smtplib.SMTP("localhost") as smtp:
|
|
146
151
|
smtp.send_message(message)
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{squidient-3.0.3 → squidient-3.0.4}/src/squidient/data/terraform/aws-ec2-t3.small/.gitignore
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|