squidient 3.4.8__tar.gz → 4.0.0__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-4.0.0/PKG-INFO +49 -0
- squidient-4.0.0/README.md +31 -0
- {squidient-3.4.8 → squidient-4.0.0}/pyproject.toml +1 -1
- {squidient-3.4.8 → squidient-4.0.0}/src/squidient/cli/monitoring.py +13 -0
- {squidient-3.4.8 → squidient-4.0.0}/src/squidient/cli/staging.py +16 -0
- squidient-4.0.0/src/squidient/configuration/data_revision.py +92 -0
- {squidient-3.4.8 → squidient-4.0.0}/src/squidient/configuration/generator.py +3 -1
- {squidient-3.4.8 → squidient-4.0.0}/src/squidient/configure.py +9 -9
- {squidient-3.4.8 → squidient-4.0.0}/src/squidient/definitions.py +1 -0
- {squidient-3.4.8 → squidient-4.0.0}/src/squidient/deployment/initialization.py +3 -0
- {squidient-3.4.8 → squidient-4.0.0}/src/squidient/exceptions.py +4 -0
- {squidient-3.4.8 → squidient-4.0.0}/src/squidient/testing/cases/instance.py +3 -1
- {squidient-3.4.8 → squidient-4.0.0}/src/squidient/utils/utils.py +0 -5
- {squidient-3.4.8 → squidient-4.0.0}/src/squidient/workflows/base.py +3 -5
- squidient-3.4.8/PKG-INFO +0 -22
- squidient-3.4.8/README.md +0 -4
- squidient-3.4.8/src/squidient/data/version/version.json +0 -4
- {squidient-3.4.8 → squidient-4.0.0}/.gitignore +0 -0
- {squidient-3.4.8 → squidient-4.0.0}/LICENSE.txt +0 -0
- {squidient-3.4.8 → squidient-4.0.0}/src/squidient/__init__.py +0 -0
- {squidient-3.4.8 → squidient-4.0.0}/src/squidient/builds/benchmark_build_execution.py +0 -0
- {squidient-3.4.8 → squidient-4.0.0}/src/squidient/builds/benchmark_build_orchestrator.py +0 -0
- {squidient-3.4.8 → squidient-4.0.0}/src/squidient/builds/build_definition.py +0 -0
- {squidient-3.4.8 → squidient-4.0.0}/src/squidient/builds/build_execution.py +0 -0
- {squidient-3.4.8 → squidient-4.0.0}/src/squidient/builds/build_orchestrator.py +0 -0
- {squidient-3.4.8 → squidient-4.0.0}/src/squidient/builds/build_presets.py +0 -0
- {squidient-3.4.8 → squidient-4.0.0}/src/squidient/cli/__init__.py +0 -0
- {squidient-3.4.8 → squidient-4.0.0}/src/squidient/cli/__main__.py +0 -0
- {squidient-3.4.8 → squidient-4.0.0}/src/squidient/cli/main.py +0 -0
- {squidient-3.4.8 → squidient-4.0.0}/src/squidient/cli/update.py +0 -0
- {squidient-3.4.8 → squidient-4.0.0}/src/squidient/code_coverage/code_coverage.py +0 -0
- {squidient-3.4.8 → squidient-4.0.0}/src/squidient/code_coverage/gcovr_code_coverage.py +0 -0
- {squidient-3.4.8 → squidient-4.0.0}/src/squidient/code_coverage/intel_code_coverage.py +0 -0
- {squidient-3.4.8 → squidient-4.0.0}/src/squidient/compare/compare.py +0 -0
- {squidient-3.4.8 → squidient-4.0.0}/src/squidient/compare/compare_with_diff_table.py +0 -0
- {squidient-3.4.8 → squidient-4.0.0}/src/squidient/compare/methods/absolute.py +0 -0
- {squidient-3.4.8 → squidient-4.0.0}/src/squidient/compare/methods/close.py +0 -0
- {squidient-3.4.8 → squidient-4.0.0}/src/squidient/compare/methods/diff.py +0 -0
- {squidient-3.4.8 → squidient-4.0.0}/src/squidient/compare/methods/l1_norm.py +0 -0
- {squidient-3.4.8 → squidient-4.0.0}/src/squidient/compare/methods/l1_relative.py +0 -0
- {squidient-3.4.8 → squidient-4.0.0}/src/squidient/compare/methods/l2_norm.py +0 -0
- {squidient-3.4.8 → squidient-4.0.0}/src/squidient/compare/methods/l2_relative.py +0 -0
- {squidient-3.4.8 → squidient-4.0.0}/src/squidient/compare/methods/linf_norm.py +0 -0
- {squidient-3.4.8 → squidient-4.0.0}/src/squidient/compare/methods/linf_relative.py +0 -0
- {squidient-3.4.8 → squidient-4.0.0}/src/squidient/compare/methods/power.py +0 -0
- {squidient-3.4.8 → squidient-4.0.0}/src/squidient/compare/methods/relative.py +0 -0
- {squidient-3.4.8 → squidient-4.0.0}/src/squidient/compare/methods/scalar_tolerance.py +0 -0
- {squidient-3.4.8 → squidient-4.0.0}/src/squidient/compare/methods/tolerance.py +0 -0
- {squidient-3.4.8 → squidient-4.0.0}/src/squidient/compare/methods/vector_tolerance.py +0 -0
- {squidient-3.4.8 → squidient-4.0.0}/src/squidient/compilation/cmake_options.py +0 -0
- {squidient-3.4.8 → squidient-4.0.0}/src/squidient/configuration/__init__.py +0 -0
- {squidient-3.4.8 → squidient-4.0.0}/src/squidient/configuration/code_coverage.py +0 -0
- {squidient-3.4.8 → squidient-4.0.0}/src/squidient/configuration/prompts.py +0 -0
- {squidient-3.4.8 → squidient-4.0.0}/src/squidient/connection/job.py +0 -0
- {squidient-3.4.8 → squidient-4.0.0}/src/squidient/connection/ssh.py +0 -0
- {squidient-3.4.8 → squidient-4.0.0}/src/squidient/connection/ssh_config_checker.py +0 -0
- {squidient-3.4.8 → squidient-4.0.0}/src/squidient/data/.squidient-initialized +0 -0
- {squidient-3.4.8 → squidient-4.0.0}/src/squidient/data/alya-config/cmake-alamak.json +0 -0
- {squidient-3.4.8 → squidient-4.0.0}/src/squidient/data/alya-config/cmake-chemint.json +0 -0
- {squidient-3.4.8 → squidient-4.0.0}/src/squidient/data/alya-config/cmake-clang.json +0 -0
- {squidient-3.4.8 → squidient-4.0.0}/src/squidient/data/alya-config/cmake-commdom.json +0 -0
- {squidient-3.4.8 → squidient-4.0.0}/src/squidient/data/alya-config/cmake-gnu.json +0 -0
- {squidient-3.4.8 → squidient-4.0.0}/src/squidient/data/alya-config/cmake-intel.json +0 -0
- {squidient-3.4.8 → squidient-4.0.0}/src/squidient/data/alya-config/cmake-mumps.json +0 -0
- {squidient-3.4.8 → squidient-4.0.0}/src/squidient/data/alya-config/cmake-nvhpc.json +0 -0
- {squidient-3.4.8 → squidient-4.0.0}/src/squidient/data/alya-config/cmake-talp.json +0 -0
- {squidient-3.4.8 → squidient-4.0.0}/src/squidient/data/benchmarks/benchmarks.json +0 -0
- {squidient-3.4.8 → squidient-4.0.0}/src/squidient/data/builds/builds.json +0 -0
- {squidient-3.4.8 → squidient-4.0.0}/src/squidient/data/builds/cc.json +0 -0
- {squidient-3.4.8 → squidient-4.0.0}/src/squidient/data/builds/defaults.json +0 -0
- {squidient-3.4.8 → squidient-4.0.0}/src/squidient/data/builds/predefined-old.json +0 -0
- {squidient-3.4.8 → squidient-4.0.0}/src/squidient/data/builds/predefined.json +0 -0
- {squidient-3.4.8 → squidient-4.0.0}/src/squidient/data/configurations/projects.json +0 -0
- {squidient-3.4.8 → squidient-4.0.0}/src/squidient/data/configurations/systems.json +0 -0
- {squidient-3.4.8 → squidient-4.0.0}/src/squidient/data/configurations/tests.json +0 -0
- {squidient-3.4.8 → squidient-4.0.0}/src/squidient/data/email/report.html +0 -0
- {squidient-3.4.8 → squidient-4.0.0}/src/squidient/data/icons/big.png +0 -0
- {squidient-3.4.8 → squidient-4.0.0}/src/squidient/data/icons/small.png +0 -0
- {squidient-3.4.8 → squidient-4.0.0}/src/squidient/data/index.html +0 -0
- {squidient-3.4.8 → squidient-4.0.0}/src/squidient/data/terraform/.gitignore +0 -0
- {squidient-3.4.8 → squidient-4.0.0}/src/squidient/data/terraform/aws-ec2-t3.small/.gitignore +0 -0
- {squidient-3.4.8 → squidient-4.0.0}/src/squidient/data/terraform/aws-ec2-t3.small/t3.small/cloud-init-slurm-fedora.sh +0 -0
- {squidient-3.4.8 → squidient-4.0.0}/src/squidient/data/terraform/aws-ec2-t3.small/t3.small/t3.small.tf +0 -0
- {squidient-3.4.8 → squidient-4.0.0}/src/squidient/data/terraform/aws-ec2-t3.small/t3.small/terraform.tfvars +0 -0
- {squidient-3.4.8 → squidient-4.0.0}/src/squidient/data/terraform/aws-ec2-t3.small-x2/t3.small/.gitignore +0 -0
- {squidient-3.4.8 → squidient-4.0.0}/src/squidient/data/terraform/aws-ec2-t3.small-x2/t3.small/cloud-init-slurm-fedora.sh +0 -0
- {squidient-3.4.8 → squidient-4.0.0}/src/squidient/data/terraform/aws-ec2-t3.small-x2/t3.small/replace-var.sh +0 -0
- {squidient-3.4.8 → squidient-4.0.0}/src/squidient/data/terraform/aws-ec2-t3.small-x2/t3.small/t3.small.tf +0 -0
- {squidient-3.4.8 → squidient-4.0.0}/src/squidient/data/terraform/aws-ec2-t3.small-x2/t3.small/terraform.tfvars +0 -0
- {squidient-3.4.8 → squidient-4.0.0}/src/squidient/data/terraform/aws-ec2-t3.small-x3/t3.small/.gitignore +0 -0
- {squidient-3.4.8 → squidient-4.0.0}/src/squidient/data/terraform/aws-ec2-t3.small-x3/t3.small/cloud-init-slurm-fedora.sh +0 -0
- {squidient-3.4.8 → squidient-4.0.0}/src/squidient/data/terraform/aws-ec2-t3.small-x3/t3.small/t3.small.tf +0 -0
- {squidient-3.4.8 → squidient-4.0.0}/src/squidient/data/terraform/aws-ec2-t3.small-x3/t3.small/terraform.tfvars +0 -0
- {squidient-3.4.8 → squidient-4.0.0}/src/squidient/data/terraform/aws-ec2-t3.small-x6/t3.small/.gitignore +0 -0
- {squidient-3.4.8 → squidient-4.0.0}/src/squidient/data/terraform/aws-ec2-t3.small-x6/t3.small/cloud-init-slurm-fedora.sh +0 -0
- {squidient-3.4.8 → squidient-4.0.0}/src/squidient/data/terraform/aws-ec2-t3.small-x6/t3.small/t3.small.tf +0 -0
- {squidient-3.4.8 → squidient-4.0.0}/src/squidient/data/terraform/aws-ec2-t3.small-x6/t3.small/terraform.tfvars +0 -0
- {squidient-3.4.8 → squidient-4.0.0}/src/squidient/data/web/btest.html +0 -0
- {squidient-3.4.8 → squidient-4.0.0}/src/squidient/data/web/cc-gcovr.html +0 -0
- {squidient-3.4.8 → squidient-4.0.0}/src/squidient/data/web/cc-intel.html +0 -0
- {squidient-3.4.8 → squidient-4.0.0}/src/squidient/data/web/files.html +0 -0
- {squidient-3.4.8 → squidient-4.0.0}/src/squidient/data/web/img/png/canceled.png +0 -0
- {squidient-3.4.8 → squidient-4.0.0}/src/squidient/data/web/img/png/created.png +0 -0
- {squidient-3.4.8 → squidient-4.0.0}/src/squidient/data/web/img/png/failed.png +0 -0
- {squidient-3.4.8 → squidient-4.0.0}/src/squidient/data/web/img/png/failed_black.png +0 -0
- {squidient-3.4.8 → squidient-4.0.0}/src/squidient/data/web/img/png/failed_green.png +0 -0
- {squidient-3.4.8 → squidient-4.0.0}/src/squidient/data/web/img/png/file_cloud.png +0 -0
- {squidient-3.4.8 → squidient-4.0.0}/src/squidient/data/web/img/png/file_config.png +0 -0
- {squidient-3.4.8 → squidient-4.0.0}/src/squidient/data/web/img/png/file_ko.png +0 -0
- {squidient-3.4.8 → squidient-4.0.0}/src/squidient/data/web/img/png/file_ok.png +0 -0
- {squidient-3.4.8 → squidient-4.0.0}/src/squidient/data/web/img/png/skipped.png +0 -0
- {squidient-3.4.8 → squidient-4.0.0}/src/squidient/data/web/img/png/squidient_logo.png +0 -0
- {squidient-3.4.8 → squidient-4.0.0}/src/squidient/data/web/img/png/success.png +0 -0
- {squidient-3.4.8 → squidient-4.0.0}/src/squidient/data/web/img/png/success_black.png +0 -0
- {squidient-3.4.8 → squidient-4.0.0}/src/squidient/data/web/img/png/timeout.png +0 -0
- {squidient-3.4.8 → squidient-4.0.0}/src/squidient/data/web/img/png/tolerance.png +0 -0
- {squidient-3.4.8 → squidient-4.0.0}/src/squidient/data/web/img/png/warning.png +0 -0
- {squidient-3.4.8 → squidient-4.0.0}/src/squidient/data/web/img/png/warning_black.png +0 -0
- {squidient-3.4.8 → squidient-4.0.0}/src/squidient/data/web/img/png/warning_green.png +0 -0
- {squidient-3.4.8 → squidient-4.0.0}/src/squidient/data/web/img/svg/canceled.svg +0 -0
- {squidient-3.4.8 → squidient-4.0.0}/src/squidient/data/web/img/svg/created.svg +0 -0
- {squidient-3.4.8 → squidient-4.0.0}/src/squidient/data/web/img/svg/failed.svg +0 -0
- {squidient-3.4.8 → squidient-4.0.0}/src/squidient/data/web/img/svg/failed_black.svg +0 -0
- {squidient-3.4.8 → squidient-4.0.0}/src/squidient/data/web/img/svg/failed_green.svg +0 -0
- {squidient-3.4.8 → squidient-4.0.0}/src/squidient/data/web/img/svg/manual.svg +0 -0
- {squidient-3.4.8 → squidient-4.0.0}/src/squidient/data/web/img/svg/running.svg +0 -0
- {squidient-3.4.8 → squidient-4.0.0}/src/squidient/data/web/img/svg/skipped.svg +0 -0
- {squidient-3.4.8 → squidient-4.0.0}/src/squidient/data/web/img/svg/success.svg +0 -0
- {squidient-3.4.8 → squidient-4.0.0}/src/squidient/data/web/img/svg/success_black.svg +0 -0
- {squidient-3.4.8 → squidient-4.0.0}/src/squidient/data/web/img/svg/warning.svg +0 -0
- {squidient-3.4.8 → squidient-4.0.0}/src/squidient/data/web/img/svg/warning_black.svg +0 -0
- {squidient-3.4.8 → squidient-4.0.0}/src/squidient/data/web/img/svg/warning_green.svg +0 -0
- {squidient-3.4.8 → squidient-4.0.0}/src/squidient/data/web/index.html +0 -0
- {squidient-3.4.8 → squidient-4.0.0}/src/squidient/data/web/jquery.dynatable.css +0 -0
- {squidient-3.4.8 → squidient-4.0.0}/src/squidient/data/web/jquery.dynatable.js +0 -0
- {squidient-3.4.8 → squidient-4.0.0}/src/squidient/data/web/monitoring.html +0 -0
- {squidient-3.4.8 → squidient-4.0.0}/src/squidient/data/web/monitoring_build.html +0 -0
- {squidient-3.4.8 → squidient-4.0.0}/src/squidient/data/web/monitoring_test.html +0 -0
- {squidient-3.4.8 → squidient-4.0.0}/src/squidient/data/web/perf.html +0 -0
- {squidient-3.4.8 → squidient-4.0.0}/src/squidient/data/web/staging_build.html +0 -0
- {squidient-3.4.8 → squidient-4.0.0}/src/squidient/data/web/staging_test.html +0 -0
- {squidient-3.4.8 → squidient-4.0.0}/src/squidient/data/web/test.html +0 -0
- {squidient-3.4.8 → squidient-4.0.0}/src/squidient/data/web/testsuite.css +0 -0
- {squidient-3.4.8 → squidient-4.0.0}/src/squidient/data/web/testsuite.js +0 -0
- {squidient-3.4.8 → squidient-4.0.0}/src/squidient/deployment/module_generator.py +0 -0
- {squidient-3.4.8 → squidient-4.0.0}/src/squidient/monitoring/build_phase.py +0 -0
- {squidient-3.4.8 → squidient-4.0.0}/src/squidient/monitoring/full_workflow.py +0 -0
- {squidient-3.4.8 → squidient-4.0.0}/src/squidient/monitoring/monitoring.py +0 -0
- {squidient-3.4.8 → squidient-4.0.0}/src/squidient/monitoring/monitoring_db.py +0 -0
- {squidient-3.4.8 → squidient-4.0.0}/src/squidient/monitoring/notification_failures.py +0 -0
- {squidient-3.4.8 → squidient-4.0.0}/src/squidient/monitoring/test_phase.py +0 -0
- {squidient-3.4.8 → squidient-4.0.0}/src/squidient/reports/__init__.py +0 -0
- {squidient-3.4.8 → squidient-4.0.0}/src/squidient/reports/cases/__init__.py +0 -0
- {squidient-3.4.8 → squidient-4.0.0}/src/squidient/reports/cases/base.py +0 -0
- {squidient-3.4.8 → squidient-4.0.0}/src/squidient/reports/cases/case.py +0 -0
- {squidient-3.4.8 → squidient-4.0.0}/src/squidient/reports/cases/detailed.py +0 -0
- {squidient-3.4.8 → squidient-4.0.0}/src/squidient/reports/cases/full.py +0 -0
- {squidient-3.4.8 → squidient-4.0.0}/src/squidient/reports/monitoring/__init__.py +0 -0
- {squidient-3.4.8 → squidient-4.0.0}/src/squidient/reports/monitoring/report.py +0 -0
- {squidient-3.4.8 → squidient-4.0.0}/src/squidient/reports/report.py +0 -0
- {squidient-3.4.8 → squidient-4.0.0}/src/squidient/staging/build_phase.py +0 -0
- {squidient-3.4.8 → squidient-4.0.0}/src/squidient/staging/execution_warning.py +0 -0
- {squidient-3.4.8 → squidient-4.0.0}/src/squidient/staging/full_workflow.py +0 -0
- {squidient-3.4.8 → squidient-4.0.0}/src/squidient/staging/report_cleaner.py +0 -0
- {squidient-3.4.8 → squidient-4.0.0}/src/squidient/staging/report_transfer.py +0 -0
- {squidient-3.4.8 → squidient-4.0.0}/src/squidient/staging/staging.py +0 -0
- {squidient-3.4.8 → squidient-4.0.0}/src/squidient/staging/test_phase.py +0 -0
- {squidient-3.4.8 → squidient-4.0.0}/src/squidient/staging/test_relauncher.py +0 -0
- {squidient-3.4.8 → squidient-4.0.0}/src/squidient/systems/partition.py +0 -0
- {squidient-3.4.8 → squidient-4.0.0}/src/squidient/systems/platform.py +0 -0
- {squidient-3.4.8 → squidient-4.0.0}/src/squidient/systems/qos.py +0 -0
- {squidient-3.4.8 → squidient-4.0.0}/src/squidient/systems/queue_tester.py +0 -0
- {squidient-3.4.8 → squidient-4.0.0}/src/squidient/systems/reservation.py +0 -0
- {squidient-3.4.8 → squidient-4.0.0}/src/squidient/systems/system.py +0 -0
- {squidient-3.4.8 → squidient-4.0.0}/src/squidient/systems/system_manager.py +0 -0
- {squidient-3.4.8 → squidient-4.0.0}/src/squidient/terraform/terraform.py +0 -0
- {squidient-3.4.8 → squidient-4.0.0}/src/squidient/testing/benchmarks/__init__.py +0 -0
- {squidient-3.4.8 → squidient-4.0.0}/src/squidient/testing/benchmarks/failure_notifier.py +0 -0
- {squidient-3.4.8 → squidient-4.0.0}/src/squidient/testing/benchmarks/instance.py +0 -0
- {squidient-3.4.8 → squidient-4.0.0}/src/squidient/testing/benchmarks/test_case.py +0 -0
- {squidient-3.4.8 → squidient-4.0.0}/src/squidient/testing/benchmarks/test_orchestrator.py +0 -0
- {squidient-3.4.8 → squidient-4.0.0}/src/squidient/testing/cases/__init__.py +0 -0
- {squidient-3.4.8 → squidient-4.0.0}/src/squidient/testing/cases/instance_merger.py +0 -0
- {squidient-3.4.8 → squidient-4.0.0}/src/squidient/testing/cases/test_case.py +0 -0
- {squidient-3.4.8 → squidient-4.0.0}/src/squidient/testing/test_orchestrator.py +0 -0
- {squidient-3.4.8 → squidient-4.0.0}/src/squidient/timers/__init__.py +0 -0
- {squidient-3.4.8 → squidient-4.0.0}/src/squidient/timers/timer.py +0 -0
- {squidient-3.4.8 → squidient-4.0.0}/src/squidient/utils/arguments.py +0 -0
- {squidient-3.4.8 → squidient-4.0.0}/src/squidient/utils/gitlab.py +0 -0
- {squidient-3.4.8 → squidient-4.0.0}/src/squidient/utils/lock.py +0 -0
- {squidient-3.4.8 → squidient-4.0.0}/src/squidient/utils/log.py +0 -0
- {squidient-3.4.8 → squidient-4.0.0}/src/squidient/utils/message.py +0 -0
- {squidient-3.4.8 → squidient-4.0.0}/src/squidient/utils/package.py +0 -0
- {squidient-3.4.8 → squidient-4.0.0}/src/squidient/utils/watchdog.py +0 -0
- {squidient-3.4.8 → squidient-4.0.0}/src/squidient/version_control/__init__.py +0 -0
- {squidient-3.4.8 → squidient-4.0.0}/src/squidient/version_control/git_repository.py +0 -0
- {squidient-3.4.8 → squidient-4.0.0}/src/squidient/workflows/__init__.py +0 -0
- {squidient-3.4.8 → squidient-4.0.0}/src/squidient/workflows/code_coverage.py +0 -0
- {squidient-3.4.8 → squidient-4.0.0}/src/squidient/workflows/locks.py +0 -0
squidient-4.0.0/PKG-INFO
ADDED
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: squidient
|
|
3
|
+
Version: 4.0.0
|
|
4
|
+
Summary: CI/CD framework for alya
|
|
5
|
+
Project-URL: Homepage, https://alya.gitlab.bsc.es/alya/ci-cd/squidient
|
|
6
|
+
Project-URL: Bug Tracker, https://alya.gitlab.bsc.es/alya/ci-cd/squidient/issues
|
|
7
|
+
Author-email: Damien Dosimont <damien.dosimont@gmail.com>
|
|
8
|
+
License-File: LICENSE.txt
|
|
9
|
+
Classifier: License :: OSI Approved :: GNU General Public License v3 or later (GPLv3+)
|
|
10
|
+
Classifier: Operating System :: POSIX :: Linux
|
|
11
|
+
Classifier: Programming Language :: Python :: 3
|
|
12
|
+
Requires-Python: >=3.7
|
|
13
|
+
Requires-Dist: importlib-resources; python_version < '3.9'
|
|
14
|
+
Requires-Dist: lxml
|
|
15
|
+
Requires-Dist: mariasql>=5
|
|
16
|
+
Requires-Dist: packaging>=21.3
|
|
17
|
+
Description-Content-Type: text/markdown
|
|
18
|
+
|
|
19
|
+
# Squidient
|
|
20
|
+
|
|
21
|
+
Squidient is a scheduler for testing, benchmarking and deploying HPC programs on SLURM machines.
|
|
22
|
+
|
|
23
|
+
## Refreshing Workspace Data
|
|
24
|
+
|
|
25
|
+
Squidient records a fingerprint of its packaged `data/` in `version/data.json`
|
|
26
|
+
when `squidient init .` completes. A completed full configuration records
|
|
27
|
+
that fingerprint in `configuration.json.dataRevision`. Staging and monitoring stop
|
|
28
|
+
with exit code 1 if either differs from the installed package, including for older
|
|
29
|
+
workspaces without this metadata. No confirmation prompt is displayed. The check
|
|
30
|
+
runs before Terraform provisioning, remote connections, or job submission.
|
|
31
|
+
A package release that leaves `data/` unchanged does not require a refresh.
|
|
32
|
+
|
|
33
|
+
Refreshing is explicit: back up any customized workspace files and configuration
|
|
34
|
+
first, then run:
|
|
35
|
+
|
|
36
|
+
```sh
|
|
37
|
+
squidient init .
|
|
38
|
+
squidient configure --all
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
`init` overwrites packaged workspace files but does not regenerate
|
|
42
|
+
`configuration.json`. `configure --all` regenerates the configuration; reapply
|
|
43
|
+
your local settings as necessary. Partial reconfiguration does not mark an old
|
|
44
|
+
configuration as current. The check never overwrites customizations automatically.
|
|
45
|
+
Help and cleanup commands, including `terraform stop`, remain available.
|
|
46
|
+
The former `fileFormat` counter and `version/version.json` are no longer used;
|
|
47
|
+
legacy configurations must be refreshed before workflow execution when their
|
|
48
|
+
data revision cannot be established.
|
|
49
|
+
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# Squidient
|
|
2
|
+
|
|
3
|
+
Squidient is a scheduler for testing, benchmarking and deploying HPC programs on SLURM machines.
|
|
4
|
+
|
|
5
|
+
## Refreshing Workspace Data
|
|
6
|
+
|
|
7
|
+
Squidient records a fingerprint of its packaged `data/` in `version/data.json`
|
|
8
|
+
when `squidient init .` completes. A completed full configuration records
|
|
9
|
+
that fingerprint in `configuration.json.dataRevision`. Staging and monitoring stop
|
|
10
|
+
with exit code 1 if either differs from the installed package, including for older
|
|
11
|
+
workspaces without this metadata. No confirmation prompt is displayed. The check
|
|
12
|
+
runs before Terraform provisioning, remote connections, or job submission.
|
|
13
|
+
A package release that leaves `data/` unchanged does not require a refresh.
|
|
14
|
+
|
|
15
|
+
Refreshing is explicit: back up any customized workspace files and configuration
|
|
16
|
+
first, then run:
|
|
17
|
+
|
|
18
|
+
```sh
|
|
19
|
+
squidient init .
|
|
20
|
+
squidient configure --all
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
`init` overwrites packaged workspace files but does not regenerate
|
|
24
|
+
`configuration.json`. `configure --all` regenerates the configuration; reapply
|
|
25
|
+
your local settings as necessary. Partial reconfiguration does not mark an old
|
|
26
|
+
configuration as current. The check never overwrites customizations automatically.
|
|
27
|
+
Help and cleanup commands, including `terraform stop`, remain available.
|
|
28
|
+
The former `fileFormat` counter and `version/version.json` are no longer used;
|
|
29
|
+
legacy configurations must be refreshed before workflow execution when their
|
|
30
|
+
data revision cannot be established.
|
|
31
|
+
|
|
@@ -28,6 +28,8 @@ from ..monitoring.monitoring import Monitoring
|
|
|
28
28
|
from ..terraform.terraform import Terraform
|
|
29
29
|
from .staging import IgnoredKeyboardInterrupt, darwin_bad_ssh, additional_options, install_interrupt_handlers
|
|
30
30
|
from ..connection.ssh_config_checker import test_darwin_ssh_config, darwin_ssh_config_file
|
|
31
|
+
from ..configuration.data_revision import require_current_data
|
|
32
|
+
from ..exceptions import ConfigurationDataError
|
|
31
33
|
from ..utils.message import console, error
|
|
32
34
|
from ..utils.utils import write_text_file
|
|
33
35
|
|
|
@@ -62,6 +64,9 @@ def _run_cli(argv: Sequence[str]) -> int:
|
|
|
62
64
|
|
|
63
65
|
arguments.parse(args)
|
|
64
66
|
|
|
67
|
+
if not (len(argv) >= 2 and argv[0] == "terraform" and argv[1] == "stop"):
|
|
68
|
+
require_current_data()
|
|
69
|
+
|
|
65
70
|
terraform = Terraform()
|
|
66
71
|
destroy_terraform = False
|
|
67
72
|
|
|
@@ -108,6 +113,14 @@ def _run_cli(argv: Sequence[str]) -> int:
|
|
|
108
113
|
|
|
109
114
|
return 0
|
|
110
115
|
|
|
116
|
+
except ConfigurationDataError as failure:
|
|
117
|
+
console.section("Configuration error")
|
|
118
|
+
message, *instructions = str(failure).splitlines()
|
|
119
|
+
console.error(message, level=1)
|
|
120
|
+
for instruction in instructions:
|
|
121
|
+
console.detail(instruction, level=2)
|
|
122
|
+
return 1
|
|
123
|
+
|
|
111
124
|
except KeyboardInterrupt:
|
|
112
125
|
with IgnoredKeyboardInterrupt():
|
|
113
126
|
try:
|
|
@@ -28,6 +28,8 @@ from typing import Optional, Sequence
|
|
|
28
28
|
from ..utils.arguments import Arguments
|
|
29
29
|
from ..staging.staging import Staging
|
|
30
30
|
from ..connection.ssh_config_checker import test_darwin_ssh_config, darwin_ssh_config_file
|
|
31
|
+
from ..configuration.data_revision import require_current_data
|
|
32
|
+
from ..exceptions import ConfigurationDataError
|
|
31
33
|
from ..terraform.terraform import Terraform
|
|
32
34
|
from ..timers import Timer
|
|
33
35
|
from ..utils.message import console, error
|
|
@@ -112,6 +114,12 @@ def _run_cli(argv: Sequence[str]) -> int:
|
|
|
112
114
|
|
|
113
115
|
arguments.parse(args)
|
|
114
116
|
|
|
117
|
+
is_cleanup = argv[0] == "clean" or (
|
|
118
|
+
len(argv) >= 2 and argv[0] == "terraform" and argv[1] == "stop"
|
|
119
|
+
)
|
|
120
|
+
if not is_cleanup:
|
|
121
|
+
require_current_data()
|
|
122
|
+
|
|
115
123
|
terraform = Terraform()
|
|
116
124
|
destroy_terraform = False
|
|
117
125
|
|
|
@@ -183,6 +191,14 @@ def _run_cli(argv: Sequence[str]) -> int:
|
|
|
183
191
|
|
|
184
192
|
return 0
|
|
185
193
|
|
|
194
|
+
except ConfigurationDataError as failure:
|
|
195
|
+
console.section("Configuration error")
|
|
196
|
+
message, *instructions = str(failure).splitlines()
|
|
197
|
+
console.error(message, level=1)
|
|
198
|
+
for instruction in instructions:
|
|
199
|
+
console.detail(instruction, level=2)
|
|
200
|
+
return 1
|
|
201
|
+
|
|
186
202
|
except KeyboardInterrupt:
|
|
187
203
|
# Try to mimic the original cleanup, but keep it safe if cicd/terraform is None.
|
|
188
204
|
with IgnoredKeyboardInterrupt():
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
"""Track the packaged data used to initialize and configure a workspace."""
|
|
2
|
+
|
|
3
|
+
import hashlib
|
|
4
|
+
import json
|
|
5
|
+
import logging
|
|
6
|
+
from pathlib import Path
|
|
7
|
+
|
|
8
|
+
import squidient
|
|
9
|
+
|
|
10
|
+
from ..definitions import config_file, data_revision_file
|
|
11
|
+
from ..exceptions import ConfigurationDataError
|
|
12
|
+
|
|
13
|
+
try:
|
|
14
|
+
from importlib.resources import files as ir_files
|
|
15
|
+
except ImportError:
|
|
16
|
+
from importlib_resources import files as ir_files
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
DATA_REVISION_CONFIG_KEY = "dataRevision"
|
|
20
|
+
logger = logging.getLogger("squidient")
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
def packaged_data_revision():
|
|
24
|
+
root = ir_files(squidient).joinpath("data")
|
|
25
|
+
pending = [(root, "")]
|
|
26
|
+
resources = []
|
|
27
|
+
while pending:
|
|
28
|
+
node, relative = pending.pop()
|
|
29
|
+
if node.is_dir():
|
|
30
|
+
pending.extend(
|
|
31
|
+
(child, relative + "/" + child.name)
|
|
32
|
+
for child in node.iterdir()
|
|
33
|
+
if child.name != "__pycache__" and not child.name.endswith((".pyc", ".pyo"))
|
|
34
|
+
)
|
|
35
|
+
else:
|
|
36
|
+
resources.append((relative, node))
|
|
37
|
+
digest = hashlib.sha256()
|
|
38
|
+
for relative, resource in sorted(resources, key=lambda item: item[0]):
|
|
39
|
+
file_digest = hashlib.sha256()
|
|
40
|
+
with resource.open("rb") as stream:
|
|
41
|
+
for block in iter(lambda: stream.read(1024 * 1024), b""):
|
|
42
|
+
file_digest.update(block)
|
|
43
|
+
digest.update(relative.encode("utf-8") + b"\0" + file_digest.digest())
|
|
44
|
+
return "sha256:" + digest.hexdigest()
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
def workspace_data_revision(directory="."):
|
|
48
|
+
try:
|
|
49
|
+
with (Path(directory) / data_revision_file).open(encoding="utf-8") as stream:
|
|
50
|
+
metadata = json.load(stream)
|
|
51
|
+
except (OSError, ValueError):
|
|
52
|
+
return None
|
|
53
|
+
if not isinstance(metadata, dict):
|
|
54
|
+
return None
|
|
55
|
+
revision = metadata.get(DATA_REVISION_CONFIG_KEY)
|
|
56
|
+
if not isinstance(revision, str) or not revision.startswith("sha256:"):
|
|
57
|
+
return None
|
|
58
|
+
if len(revision) != 71 or any(character not in "0123456789abcdef" for character in revision[7:]):
|
|
59
|
+
return None
|
|
60
|
+
return revision
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
def record_workspace_data_revision(directory, revision):
|
|
64
|
+
path = Path(directory) / data_revision_file
|
|
65
|
+
path.parent.mkdir(parents=True, exist_ok=True)
|
|
66
|
+
temporary = path.with_suffix(".json.tmp")
|
|
67
|
+
temporary.write_text(json.dumps({DATA_REVISION_CONFIG_KEY: revision}, indent=4) + "\n", encoding="utf-8")
|
|
68
|
+
temporary.replace(path)
|
|
69
|
+
|
|
70
|
+
|
|
71
|
+
def require_current_data(config=None, directory="."):
|
|
72
|
+
if config is None:
|
|
73
|
+
from ..utils.utils import open_critical_json
|
|
74
|
+
config = open_critical_json(Path(directory) / config_file)
|
|
75
|
+
installed_revision = packaged_data_revision()
|
|
76
|
+
initialized_revision = workspace_data_revision(directory)
|
|
77
|
+
configured_revision = config.get(DATA_REVISION_CONFIG_KEY)
|
|
78
|
+
logger.debug("Configuration data revisions: installed=%s, initialized=%s, configured=%s",
|
|
79
|
+
installed_revision, initialized_revision, configured_revision)
|
|
80
|
+
if initialized_revision != installed_revision:
|
|
81
|
+
raise ConfigurationDataError(
|
|
82
|
+
"Workspace data are outdated or unversioned for the installed squidient. Execution stopped.\n"
|
|
83
|
+
"Back up customized workspace files and configuration.json before refreshing:\n"
|
|
84
|
+
"squidient init .\n"
|
|
85
|
+
"squidient configure --all"
|
|
86
|
+
)
|
|
87
|
+
if configured_revision != installed_revision:
|
|
88
|
+
raise ConfigurationDataError(
|
|
89
|
+
"configuration.json was generated from outdated or unversioned data. Execution stopped.\n"
|
|
90
|
+
"Back up configuration.json, then regenerate it with:\n"
|
|
91
|
+
"squidient configure --all"
|
|
92
|
+
)
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
from .code_coverage import CODE_COVERAGE_CONFIG_KEY
|
|
2
|
+
from .data_revision import DATA_REVISION_CONFIG_KEY
|
|
2
3
|
|
|
3
4
|
|
|
4
5
|
def build_default_configuration(
|
|
@@ -38,7 +39,8 @@ def build_default_configuration(
|
|
|
38
39
|
config["staging"] = {}
|
|
39
40
|
config["staging"]["builds"] = build_presets["fast"]["gpp"]
|
|
40
41
|
# various
|
|
41
|
-
|
|
42
|
+
# Record the data revision only after full configuration succeeds.
|
|
43
|
+
config[DATA_REVISION_CONFIG_KEY] = None
|
|
42
44
|
config["tag"] = "master"
|
|
43
45
|
config["installation"] = False
|
|
44
46
|
config["flex"] = False
|
|
@@ -27,6 +27,7 @@ from typing import Optional, Sequence, Dict, Any
|
|
|
27
27
|
from .builds.build_definition import BuildDefinition
|
|
28
28
|
from .builds.build_presets import BuildPresets
|
|
29
29
|
from .configuration.code_coverage import get_code_coverage_config, set_code_coverage_config
|
|
30
|
+
from .configuration.data_revision import DATA_REVISION_CONFIG_KEY, workspace_data_revision
|
|
30
31
|
from .configuration.generator import generate_default_configuration
|
|
31
32
|
from .configuration.prompts import (
|
|
32
33
|
ask,
|
|
@@ -48,7 +49,7 @@ from .definitions import (
|
|
|
48
49
|
system_file,
|
|
49
50
|
)
|
|
50
51
|
from .utils.message import console
|
|
51
|
-
from .utils.utils import
|
|
52
|
+
from .utils.utils import exist_json, is_option, open_json, save_json
|
|
52
53
|
|
|
53
54
|
from pathlib import Path
|
|
54
55
|
|
|
@@ -332,9 +333,9 @@ def set_benchmarks(provided_value=""):
|
|
|
332
333
|
save_json(config, config_file)
|
|
333
334
|
|
|
334
335
|
|
|
335
|
-
def
|
|
336
|
+
def complete_configuration():
|
|
336
337
|
config = open_json(config_file)
|
|
337
|
-
config[
|
|
338
|
+
config[DATA_REVISION_CONFIG_KEY] = workspace_data_revision() or "unknown"
|
|
338
339
|
save_json(config, config_file)
|
|
339
340
|
|
|
340
341
|
|
|
@@ -476,8 +477,8 @@ def gitlab_config(pipeline, directory, alya_ref, alya_branch, flex=False, system
|
|
|
476
477
|
console.section("Setting reservation")
|
|
477
478
|
set_reservation(reservation)
|
|
478
479
|
|
|
479
|
-
console.section("
|
|
480
|
-
|
|
480
|
+
console.section("Recording configuration data revision")
|
|
481
|
+
complete_configuration()
|
|
481
482
|
|
|
482
483
|
|
|
483
484
|
def _project_benchmark_queues_are_enabled(project_name, build_selection_type):
|
|
@@ -612,7 +613,7 @@ def _run_cli(argv: Sequence[str]) -> int:
|
|
|
612
613
|
base_config = open_json(config_file)
|
|
613
614
|
argument = ""
|
|
614
615
|
|
|
615
|
-
if base_config[
|
|
616
|
+
if DATA_REVISION_CONFIG_KEY in base_config and base_config[DATA_REVISION_CONFIG_KEY] is None:
|
|
616
617
|
console.section("First use configuration")
|
|
617
618
|
console.warning("This is your first use of squidient; it requires a full configuration", level=1)
|
|
618
619
|
if len(argv) < 1:
|
|
@@ -770,7 +771,7 @@ def _run_cli(argv: Sequence[str]) -> int:
|
|
|
770
771
|
set_builds()
|
|
771
772
|
set_code_coverage()
|
|
772
773
|
set_benchmarks()
|
|
773
|
-
|
|
774
|
+
complete_configuration()
|
|
774
775
|
|
|
775
776
|
elif is_option(option, "-r", "--re"):
|
|
776
777
|
set_alya_git_branch()
|
|
@@ -778,7 +779,6 @@ def _run_cli(argv: Sequence[str]) -> int:
|
|
|
778
779
|
set_builds()
|
|
779
780
|
set_code_coverage()
|
|
780
781
|
set_benchmarks()
|
|
781
|
-
set_version()
|
|
782
782
|
|
|
783
783
|
elif is_option(option, "-A", "--ALL"):
|
|
784
784
|
generate_json()
|
|
@@ -794,7 +794,7 @@ def _run_cli(argv: Sequence[str]) -> int:
|
|
|
794
794
|
set_builds()
|
|
795
795
|
set_code_coverage()
|
|
796
796
|
set_benchmarks()
|
|
797
|
-
|
|
797
|
+
complete_configuration()
|
|
798
798
|
|
|
799
799
|
elif is_option(option, "--alamak", "--alamak"):
|
|
800
800
|
set_alamak(True)
|
|
@@ -41,6 +41,7 @@ max_jobs_staging = 100
|
|
|
41
41
|
max_jobs_monitoring = 50
|
|
42
42
|
check_jobs_every_normal = 30
|
|
43
43
|
config_file = "configuration.json"
|
|
44
|
+
data_revision_file = "version/data.json"
|
|
44
45
|
build_file = "builds/builds.json"
|
|
45
46
|
default_file = "builds/defaults.json"
|
|
46
47
|
cc_file = "builds/cc.json"
|
|
@@ -6,6 +6,7 @@ from typing import Union
|
|
|
6
6
|
|
|
7
7
|
import squidient
|
|
8
8
|
|
|
9
|
+
from ..configuration.data_revision import packaged_data_revision, record_workspace_data_revision
|
|
9
10
|
from ..utils.message import console
|
|
10
11
|
|
|
11
12
|
try:
|
|
@@ -75,11 +76,13 @@ def _copy_traversable_tree(src, dst: Path, overwrite: bool = False) -> None:
|
|
|
75
76
|
shutil.copyfileobj(src_f, dst_f)
|
|
76
77
|
|
|
77
78
|
def init_squidient(dist_dir: str = ".") -> None:
|
|
79
|
+
revision = packaged_data_revision()
|
|
78
80
|
Path(dist_dir + "/squidient").mkdir(parents=True, exist_ok=True)
|
|
79
81
|
copy_packaged_tree(squidient, "data", dist_dir + "/.", overwrite=True)
|
|
80
82
|
copy_packaged_tree(squidient, "reports", dist_dir + "/squidient/reports", overwrite=True)
|
|
81
83
|
copy_packaged_tree(squidient, "compare", dist_dir + "/squidient/compare", overwrite=True)
|
|
82
84
|
copy_packaged_tree(squidient, "utils", dist_dir + "/squidient/utils", overwrite=True)
|
|
85
|
+
record_workspace_data_revision(dist_dir, revision)
|
|
83
86
|
|
|
84
87
|
|
|
85
88
|
if __name__ == "__main__":
|
|
@@ -101,7 +101,9 @@ class Instance:
|
|
|
101
101
|
|
|
102
102
|
try:
|
|
103
103
|
if self.eval_timeout(self._timeout):
|
|
104
|
-
|
|
104
|
+
logger.debug("Clamping test %s timeout from %s to %s",
|
|
105
|
+
self._id, self._timeout, test_max_timeout)
|
|
106
|
+
self._timeout = test_max_timeout
|
|
105
107
|
except (RuntimeError, ValueError):
|
|
106
108
|
self._timeout = test_default_timeout
|
|
107
109
|
|
|
@@ -298,11 +298,6 @@ def copy_json(source, destination):
|
|
|
298
298
|
copyfile(source, destination)
|
|
299
299
|
|
|
300
300
|
|
|
301
|
-
def config_file_format():
|
|
302
|
-
data = open_json("version/version.json")
|
|
303
|
-
return data["fileFormat"]
|
|
304
|
-
|
|
305
|
-
|
|
306
301
|
def json2js(variable, json):
|
|
307
302
|
js = json.replace(".json", ".js")
|
|
308
303
|
with open(json) as source, open(js, "w") as destination:
|
|
@@ -26,6 +26,7 @@ import os
|
|
|
26
26
|
from ..connection.job import Job
|
|
27
27
|
from ..connection.ssh import SSH
|
|
28
28
|
from ..configuration.code_coverage import normalize_code_coverage_config
|
|
29
|
+
from ..configuration.data_revision import require_current_data
|
|
29
30
|
from ..definitions import benchmark_file, config_file
|
|
30
31
|
from ..reports.report import Report
|
|
31
32
|
from ..systems.system_manager import SystemManager
|
|
@@ -33,7 +34,7 @@ from ..timers import Timer
|
|
|
33
34
|
from ..utils.lock import Lock
|
|
34
35
|
from ..utils.log import logging_context
|
|
35
36
|
from ..utils.message import console, print_line, stagingbanner
|
|
36
|
-
from ..utils.utils import
|
|
37
|
+
from ..utils.utils import open_critical_json
|
|
37
38
|
from ..utils.watchdog import Watchdog
|
|
38
39
|
|
|
39
40
|
|
|
@@ -108,10 +109,7 @@ class Workflow:
|
|
|
108
109
|
|
|
109
110
|
def check_configuration_status(self):
|
|
110
111
|
console.section("Checking configuration file")
|
|
111
|
-
|
|
112
|
-
console.error("Your " + config_file + " version is obsolete; please configure squidient again", level=1)
|
|
113
|
-
from ..exceptions import WorkflowFailure
|
|
114
|
-
raise WorkflowFailure("Configuration file version is obsolete")
|
|
112
|
+
require_current_data(self._config)
|
|
115
113
|
console.success(config_file + " is compatible", level=1)
|
|
116
114
|
|
|
117
115
|
def clean_locks(self):
|
squidient-3.4.8/PKG-INFO
DELETED
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
Metadata-Version: 2.4
|
|
2
|
-
Name: squidient
|
|
3
|
-
Version: 3.4.8
|
|
4
|
-
Summary: CI/CD framework for alya
|
|
5
|
-
Project-URL: Homepage, https://alya.gitlab.bsc.es/alya/ci-cd/squidient
|
|
6
|
-
Project-URL: Bug Tracker, https://alya.gitlab.bsc.es/alya/ci-cd/squidient/issues
|
|
7
|
-
Author-email: Damien Dosimont <damien.dosimont@gmail.com>
|
|
8
|
-
License-File: LICENSE.txt
|
|
9
|
-
Classifier: License :: OSI Approved :: GNU General Public License v3 or later (GPLv3+)
|
|
10
|
-
Classifier: Operating System :: POSIX :: Linux
|
|
11
|
-
Classifier: Programming Language :: Python :: 3
|
|
12
|
-
Requires-Python: >=3.7
|
|
13
|
-
Requires-Dist: importlib-resources; python_version < '3.9'
|
|
14
|
-
Requires-Dist: lxml
|
|
15
|
-
Requires-Dist: mariasql>=5
|
|
16
|
-
Requires-Dist: packaging>=21.3
|
|
17
|
-
Description-Content-Type: text/markdown
|
|
18
|
-
|
|
19
|
-
# Squidient
|
|
20
|
-
|
|
21
|
-
Squidient is a scheduler for testing, benchmarking and deploying HPC programs on SLURM machines.
|
|
22
|
-
|
squidient-3.4.8/README.md
DELETED
|
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.4.8 → squidient-4.0.0}/src/squidient/data/terraform/aws-ec2-t3.small/.gitignore
RENAMED
|
File without changes
|