squidient 4.0.0__tar.gz → 4.0.2__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (198) hide show
  1. squidient-4.0.2/PKG-INFO +107 -0
  2. squidient-4.0.2/README.md +89 -0
  3. {squidient-4.0.0 → squidient-4.0.2}/pyproject.toml +1 -1
  4. {squidient-4.0.0 → squidient-4.0.2}/src/squidient/data/terraform/aws-ec2-t3.small-x2/t3.small/t3.small.tf +2 -2
  5. {squidient-4.0.0 → squidient-4.0.2}/src/squidient/data/terraform/aws-ec2-t3.small-x6/t3.small/t3.small.tf +2 -2
  6. {squidient-4.0.0/src/squidient/data/terraform/aws-ec2-t3.small-x6/t3.small → squidient-4.0.2/src/squidient/data/terraform/common}/cloud-init-slurm-fedora.sh +59 -5
  7. squidient-4.0.0/PKG-INFO +0 -49
  8. squidient-4.0.0/README.md +0 -31
  9. squidient-4.0.0/src/squidient/data/terraform/aws-ec2-t3.small-x2/t3.small/cloud-init-slurm-fedora.sh +0 -315
  10. squidient-4.0.0/src/squidient/data/terraform/aws-ec2-t3.small-x2/t3.small/replace-var.sh +0 -4
  11. squidient-4.0.0/src/squidient/data/terraform/aws-ec2-t3.small-x3/t3.small/cloud-init-slurm-fedora.sh +0 -1
  12. {squidient-4.0.0 → squidient-4.0.2}/.gitignore +0 -0
  13. {squidient-4.0.0 → squidient-4.0.2}/LICENSE.txt +0 -0
  14. {squidient-4.0.0 → squidient-4.0.2}/src/squidient/__init__.py +0 -0
  15. {squidient-4.0.0 → squidient-4.0.2}/src/squidient/builds/benchmark_build_execution.py +0 -0
  16. {squidient-4.0.0 → squidient-4.0.2}/src/squidient/builds/benchmark_build_orchestrator.py +0 -0
  17. {squidient-4.0.0 → squidient-4.0.2}/src/squidient/builds/build_definition.py +0 -0
  18. {squidient-4.0.0 → squidient-4.0.2}/src/squidient/builds/build_execution.py +0 -0
  19. {squidient-4.0.0 → squidient-4.0.2}/src/squidient/builds/build_orchestrator.py +0 -0
  20. {squidient-4.0.0 → squidient-4.0.2}/src/squidient/builds/build_presets.py +0 -0
  21. {squidient-4.0.0 → squidient-4.0.2}/src/squidient/cli/__init__.py +0 -0
  22. {squidient-4.0.0 → squidient-4.0.2}/src/squidient/cli/__main__.py +0 -0
  23. {squidient-4.0.0 → squidient-4.0.2}/src/squidient/cli/main.py +0 -0
  24. {squidient-4.0.0 → squidient-4.0.2}/src/squidient/cli/monitoring.py +0 -0
  25. {squidient-4.0.0 → squidient-4.0.2}/src/squidient/cli/staging.py +0 -0
  26. {squidient-4.0.0 → squidient-4.0.2}/src/squidient/cli/update.py +0 -0
  27. {squidient-4.0.0 → squidient-4.0.2}/src/squidient/code_coverage/code_coverage.py +0 -0
  28. {squidient-4.0.0 → squidient-4.0.2}/src/squidient/code_coverage/gcovr_code_coverage.py +0 -0
  29. {squidient-4.0.0 → squidient-4.0.2}/src/squidient/code_coverage/intel_code_coverage.py +0 -0
  30. {squidient-4.0.0 → squidient-4.0.2}/src/squidient/compare/compare.py +0 -0
  31. {squidient-4.0.0 → squidient-4.0.2}/src/squidient/compare/compare_with_diff_table.py +0 -0
  32. {squidient-4.0.0 → squidient-4.0.2}/src/squidient/compare/methods/absolute.py +0 -0
  33. {squidient-4.0.0 → squidient-4.0.2}/src/squidient/compare/methods/close.py +0 -0
  34. {squidient-4.0.0 → squidient-4.0.2}/src/squidient/compare/methods/diff.py +0 -0
  35. {squidient-4.0.0 → squidient-4.0.2}/src/squidient/compare/methods/l1_norm.py +0 -0
  36. {squidient-4.0.0 → squidient-4.0.2}/src/squidient/compare/methods/l1_relative.py +0 -0
  37. {squidient-4.0.0 → squidient-4.0.2}/src/squidient/compare/methods/l2_norm.py +0 -0
  38. {squidient-4.0.0 → squidient-4.0.2}/src/squidient/compare/methods/l2_relative.py +0 -0
  39. {squidient-4.0.0 → squidient-4.0.2}/src/squidient/compare/methods/linf_norm.py +0 -0
  40. {squidient-4.0.0 → squidient-4.0.2}/src/squidient/compare/methods/linf_relative.py +0 -0
  41. {squidient-4.0.0 → squidient-4.0.2}/src/squidient/compare/methods/power.py +0 -0
  42. {squidient-4.0.0 → squidient-4.0.2}/src/squidient/compare/methods/relative.py +0 -0
  43. {squidient-4.0.0 → squidient-4.0.2}/src/squidient/compare/methods/scalar_tolerance.py +0 -0
  44. {squidient-4.0.0 → squidient-4.0.2}/src/squidient/compare/methods/tolerance.py +0 -0
  45. {squidient-4.0.0 → squidient-4.0.2}/src/squidient/compare/methods/vector_tolerance.py +0 -0
  46. {squidient-4.0.0 → squidient-4.0.2}/src/squidient/compilation/cmake_options.py +0 -0
  47. {squidient-4.0.0 → squidient-4.0.2}/src/squidient/configuration/__init__.py +0 -0
  48. {squidient-4.0.0 → squidient-4.0.2}/src/squidient/configuration/code_coverage.py +0 -0
  49. {squidient-4.0.0 → squidient-4.0.2}/src/squidient/configuration/data_revision.py +0 -0
  50. {squidient-4.0.0 → squidient-4.0.2}/src/squidient/configuration/generator.py +0 -0
  51. {squidient-4.0.0 → squidient-4.0.2}/src/squidient/configuration/prompts.py +0 -0
  52. {squidient-4.0.0 → squidient-4.0.2}/src/squidient/configure.py +0 -0
  53. {squidient-4.0.0 → squidient-4.0.2}/src/squidient/connection/job.py +0 -0
  54. {squidient-4.0.0 → squidient-4.0.2}/src/squidient/connection/ssh.py +0 -0
  55. {squidient-4.0.0 → squidient-4.0.2}/src/squidient/connection/ssh_config_checker.py +0 -0
  56. {squidient-4.0.0 → squidient-4.0.2}/src/squidient/data/.squidient-initialized +0 -0
  57. {squidient-4.0.0 → squidient-4.0.2}/src/squidient/data/alya-config/cmake-alamak.json +0 -0
  58. {squidient-4.0.0 → squidient-4.0.2}/src/squidient/data/alya-config/cmake-chemint.json +0 -0
  59. {squidient-4.0.0 → squidient-4.0.2}/src/squidient/data/alya-config/cmake-clang.json +0 -0
  60. {squidient-4.0.0 → squidient-4.0.2}/src/squidient/data/alya-config/cmake-commdom.json +0 -0
  61. {squidient-4.0.0 → squidient-4.0.2}/src/squidient/data/alya-config/cmake-gnu.json +0 -0
  62. {squidient-4.0.0 → squidient-4.0.2}/src/squidient/data/alya-config/cmake-intel.json +0 -0
  63. {squidient-4.0.0 → squidient-4.0.2}/src/squidient/data/alya-config/cmake-mumps.json +0 -0
  64. {squidient-4.0.0 → squidient-4.0.2}/src/squidient/data/alya-config/cmake-nvhpc.json +0 -0
  65. {squidient-4.0.0 → squidient-4.0.2}/src/squidient/data/alya-config/cmake-talp.json +0 -0
  66. {squidient-4.0.0 → squidient-4.0.2}/src/squidient/data/benchmarks/benchmarks.json +0 -0
  67. {squidient-4.0.0 → squidient-4.0.2}/src/squidient/data/builds/builds.json +0 -0
  68. {squidient-4.0.0 → squidient-4.0.2}/src/squidient/data/builds/cc.json +0 -0
  69. {squidient-4.0.0 → squidient-4.0.2}/src/squidient/data/builds/defaults.json +0 -0
  70. {squidient-4.0.0 → squidient-4.0.2}/src/squidient/data/builds/predefined-old.json +0 -0
  71. {squidient-4.0.0 → squidient-4.0.2}/src/squidient/data/builds/predefined.json +0 -0
  72. {squidient-4.0.0 → squidient-4.0.2}/src/squidient/data/configurations/projects.json +0 -0
  73. {squidient-4.0.0 → squidient-4.0.2}/src/squidient/data/configurations/systems.json +0 -0
  74. {squidient-4.0.0 → squidient-4.0.2}/src/squidient/data/configurations/tests.json +0 -0
  75. {squidient-4.0.0 → squidient-4.0.2}/src/squidient/data/email/report.html +0 -0
  76. {squidient-4.0.0 → squidient-4.0.2}/src/squidient/data/icons/big.png +0 -0
  77. {squidient-4.0.0 → squidient-4.0.2}/src/squidient/data/icons/small.png +0 -0
  78. {squidient-4.0.0 → squidient-4.0.2}/src/squidient/data/index.html +0 -0
  79. {squidient-4.0.0 → squidient-4.0.2}/src/squidient/data/terraform/.gitignore +0 -0
  80. {squidient-4.0.0 → squidient-4.0.2}/src/squidient/data/terraform/aws-ec2-t3.small/.gitignore +0 -0
  81. {squidient-4.0.0 → squidient-4.0.2}/src/squidient/data/terraform/aws-ec2-t3.small/t3.small/cloud-init-slurm-fedora.sh +0 -0
  82. {squidient-4.0.0 → squidient-4.0.2}/src/squidient/data/terraform/aws-ec2-t3.small/t3.small/t3.small.tf +0 -0
  83. {squidient-4.0.0 → squidient-4.0.2}/src/squidient/data/terraform/aws-ec2-t3.small/t3.small/terraform.tfvars +0 -0
  84. {squidient-4.0.0 → squidient-4.0.2}/src/squidient/data/terraform/aws-ec2-t3.small-x2/t3.small/.gitignore +0 -0
  85. {squidient-4.0.0 → squidient-4.0.2}/src/squidient/data/terraform/aws-ec2-t3.small-x2/t3.small/terraform.tfvars +0 -0
  86. {squidient-4.0.0 → squidient-4.0.2}/src/squidient/data/terraform/aws-ec2-t3.small-x3/t3.small/.gitignore +0 -0
  87. {squidient-4.0.0 → squidient-4.0.2}/src/squidient/data/terraform/aws-ec2-t3.small-x3/t3.small/t3.small.tf +0 -0
  88. {squidient-4.0.0 → squidient-4.0.2}/src/squidient/data/terraform/aws-ec2-t3.small-x3/t3.small/terraform.tfvars +0 -0
  89. {squidient-4.0.0 → squidient-4.0.2}/src/squidient/data/terraform/aws-ec2-t3.small-x6/t3.small/.gitignore +0 -0
  90. {squidient-4.0.0 → squidient-4.0.2}/src/squidient/data/terraform/aws-ec2-t3.small-x6/t3.small/terraform.tfvars +0 -0
  91. {squidient-4.0.0 → squidient-4.0.2}/src/squidient/data/web/btest.html +0 -0
  92. {squidient-4.0.0 → squidient-4.0.2}/src/squidient/data/web/cc-gcovr.html +0 -0
  93. {squidient-4.0.0 → squidient-4.0.2}/src/squidient/data/web/cc-intel.html +0 -0
  94. {squidient-4.0.0 → squidient-4.0.2}/src/squidient/data/web/files.html +0 -0
  95. {squidient-4.0.0 → squidient-4.0.2}/src/squidient/data/web/img/png/canceled.png +0 -0
  96. {squidient-4.0.0 → squidient-4.0.2}/src/squidient/data/web/img/png/created.png +0 -0
  97. {squidient-4.0.0 → squidient-4.0.2}/src/squidient/data/web/img/png/failed.png +0 -0
  98. {squidient-4.0.0 → squidient-4.0.2}/src/squidient/data/web/img/png/failed_black.png +0 -0
  99. {squidient-4.0.0 → squidient-4.0.2}/src/squidient/data/web/img/png/failed_green.png +0 -0
  100. {squidient-4.0.0 → squidient-4.0.2}/src/squidient/data/web/img/png/file_cloud.png +0 -0
  101. {squidient-4.0.0 → squidient-4.0.2}/src/squidient/data/web/img/png/file_config.png +0 -0
  102. {squidient-4.0.0 → squidient-4.0.2}/src/squidient/data/web/img/png/file_ko.png +0 -0
  103. {squidient-4.0.0 → squidient-4.0.2}/src/squidient/data/web/img/png/file_ok.png +0 -0
  104. {squidient-4.0.0 → squidient-4.0.2}/src/squidient/data/web/img/png/skipped.png +0 -0
  105. {squidient-4.0.0 → squidient-4.0.2}/src/squidient/data/web/img/png/squidient_logo.png +0 -0
  106. {squidient-4.0.0 → squidient-4.0.2}/src/squidient/data/web/img/png/success.png +0 -0
  107. {squidient-4.0.0 → squidient-4.0.2}/src/squidient/data/web/img/png/success_black.png +0 -0
  108. {squidient-4.0.0 → squidient-4.0.2}/src/squidient/data/web/img/png/timeout.png +0 -0
  109. {squidient-4.0.0 → squidient-4.0.2}/src/squidient/data/web/img/png/tolerance.png +0 -0
  110. {squidient-4.0.0 → squidient-4.0.2}/src/squidient/data/web/img/png/warning.png +0 -0
  111. {squidient-4.0.0 → squidient-4.0.2}/src/squidient/data/web/img/png/warning_black.png +0 -0
  112. {squidient-4.0.0 → squidient-4.0.2}/src/squidient/data/web/img/png/warning_green.png +0 -0
  113. {squidient-4.0.0 → squidient-4.0.2}/src/squidient/data/web/img/svg/canceled.svg +0 -0
  114. {squidient-4.0.0 → squidient-4.0.2}/src/squidient/data/web/img/svg/created.svg +0 -0
  115. {squidient-4.0.0 → squidient-4.0.2}/src/squidient/data/web/img/svg/failed.svg +0 -0
  116. {squidient-4.0.0 → squidient-4.0.2}/src/squidient/data/web/img/svg/failed_black.svg +0 -0
  117. {squidient-4.0.0 → squidient-4.0.2}/src/squidient/data/web/img/svg/failed_green.svg +0 -0
  118. {squidient-4.0.0 → squidient-4.0.2}/src/squidient/data/web/img/svg/manual.svg +0 -0
  119. {squidient-4.0.0 → squidient-4.0.2}/src/squidient/data/web/img/svg/running.svg +0 -0
  120. {squidient-4.0.0 → squidient-4.0.2}/src/squidient/data/web/img/svg/skipped.svg +0 -0
  121. {squidient-4.0.0 → squidient-4.0.2}/src/squidient/data/web/img/svg/success.svg +0 -0
  122. {squidient-4.0.0 → squidient-4.0.2}/src/squidient/data/web/img/svg/success_black.svg +0 -0
  123. {squidient-4.0.0 → squidient-4.0.2}/src/squidient/data/web/img/svg/warning.svg +0 -0
  124. {squidient-4.0.0 → squidient-4.0.2}/src/squidient/data/web/img/svg/warning_black.svg +0 -0
  125. {squidient-4.0.0 → squidient-4.0.2}/src/squidient/data/web/img/svg/warning_green.svg +0 -0
  126. {squidient-4.0.0 → squidient-4.0.2}/src/squidient/data/web/index.html +0 -0
  127. {squidient-4.0.0 → squidient-4.0.2}/src/squidient/data/web/jquery.dynatable.css +0 -0
  128. {squidient-4.0.0 → squidient-4.0.2}/src/squidient/data/web/jquery.dynatable.js +0 -0
  129. {squidient-4.0.0 → squidient-4.0.2}/src/squidient/data/web/monitoring.html +0 -0
  130. {squidient-4.0.0 → squidient-4.0.2}/src/squidient/data/web/monitoring_build.html +0 -0
  131. {squidient-4.0.0 → squidient-4.0.2}/src/squidient/data/web/monitoring_test.html +0 -0
  132. {squidient-4.0.0 → squidient-4.0.2}/src/squidient/data/web/perf.html +0 -0
  133. {squidient-4.0.0 → squidient-4.0.2}/src/squidient/data/web/staging_build.html +0 -0
  134. {squidient-4.0.0 → squidient-4.0.2}/src/squidient/data/web/staging_test.html +0 -0
  135. {squidient-4.0.0 → squidient-4.0.2}/src/squidient/data/web/test.html +0 -0
  136. {squidient-4.0.0 → squidient-4.0.2}/src/squidient/data/web/testsuite.css +0 -0
  137. {squidient-4.0.0 → squidient-4.0.2}/src/squidient/data/web/testsuite.js +0 -0
  138. {squidient-4.0.0 → squidient-4.0.2}/src/squidient/definitions.py +0 -0
  139. {squidient-4.0.0 → squidient-4.0.2}/src/squidient/deployment/initialization.py +0 -0
  140. {squidient-4.0.0 → squidient-4.0.2}/src/squidient/deployment/module_generator.py +0 -0
  141. {squidient-4.0.0 → squidient-4.0.2}/src/squidient/exceptions.py +0 -0
  142. {squidient-4.0.0 → squidient-4.0.2}/src/squidient/monitoring/build_phase.py +0 -0
  143. {squidient-4.0.0 → squidient-4.0.2}/src/squidient/monitoring/full_workflow.py +0 -0
  144. {squidient-4.0.0 → squidient-4.0.2}/src/squidient/monitoring/monitoring.py +0 -0
  145. {squidient-4.0.0 → squidient-4.0.2}/src/squidient/monitoring/monitoring_db.py +0 -0
  146. {squidient-4.0.0 → squidient-4.0.2}/src/squidient/monitoring/notification_failures.py +0 -0
  147. {squidient-4.0.0 → squidient-4.0.2}/src/squidient/monitoring/test_phase.py +0 -0
  148. {squidient-4.0.0 → squidient-4.0.2}/src/squidient/reports/__init__.py +0 -0
  149. {squidient-4.0.0 → squidient-4.0.2}/src/squidient/reports/cases/__init__.py +0 -0
  150. {squidient-4.0.0 → squidient-4.0.2}/src/squidient/reports/cases/base.py +0 -0
  151. {squidient-4.0.0 → squidient-4.0.2}/src/squidient/reports/cases/case.py +0 -0
  152. {squidient-4.0.0 → squidient-4.0.2}/src/squidient/reports/cases/detailed.py +0 -0
  153. {squidient-4.0.0 → squidient-4.0.2}/src/squidient/reports/cases/full.py +0 -0
  154. {squidient-4.0.0 → squidient-4.0.2}/src/squidient/reports/monitoring/__init__.py +0 -0
  155. {squidient-4.0.0 → squidient-4.0.2}/src/squidient/reports/monitoring/report.py +0 -0
  156. {squidient-4.0.0 → squidient-4.0.2}/src/squidient/reports/report.py +0 -0
  157. {squidient-4.0.0 → squidient-4.0.2}/src/squidient/staging/build_phase.py +0 -0
  158. {squidient-4.0.0 → squidient-4.0.2}/src/squidient/staging/execution_warning.py +0 -0
  159. {squidient-4.0.0 → squidient-4.0.2}/src/squidient/staging/full_workflow.py +0 -0
  160. {squidient-4.0.0 → squidient-4.0.2}/src/squidient/staging/report_cleaner.py +0 -0
  161. {squidient-4.0.0 → squidient-4.0.2}/src/squidient/staging/report_transfer.py +0 -0
  162. {squidient-4.0.0 → squidient-4.0.2}/src/squidient/staging/staging.py +0 -0
  163. {squidient-4.0.0 → squidient-4.0.2}/src/squidient/staging/test_phase.py +0 -0
  164. {squidient-4.0.0 → squidient-4.0.2}/src/squidient/staging/test_relauncher.py +0 -0
  165. {squidient-4.0.0 → squidient-4.0.2}/src/squidient/systems/partition.py +0 -0
  166. {squidient-4.0.0 → squidient-4.0.2}/src/squidient/systems/platform.py +0 -0
  167. {squidient-4.0.0 → squidient-4.0.2}/src/squidient/systems/qos.py +0 -0
  168. {squidient-4.0.0 → squidient-4.0.2}/src/squidient/systems/queue_tester.py +0 -0
  169. {squidient-4.0.0 → squidient-4.0.2}/src/squidient/systems/reservation.py +0 -0
  170. {squidient-4.0.0 → squidient-4.0.2}/src/squidient/systems/system.py +0 -0
  171. {squidient-4.0.0 → squidient-4.0.2}/src/squidient/systems/system_manager.py +0 -0
  172. {squidient-4.0.0 → squidient-4.0.2}/src/squidient/terraform/terraform.py +0 -0
  173. {squidient-4.0.0 → squidient-4.0.2}/src/squidient/testing/benchmarks/__init__.py +0 -0
  174. {squidient-4.0.0 → squidient-4.0.2}/src/squidient/testing/benchmarks/failure_notifier.py +0 -0
  175. {squidient-4.0.0 → squidient-4.0.2}/src/squidient/testing/benchmarks/instance.py +0 -0
  176. {squidient-4.0.0 → squidient-4.0.2}/src/squidient/testing/benchmarks/test_case.py +0 -0
  177. {squidient-4.0.0 → squidient-4.0.2}/src/squidient/testing/benchmarks/test_orchestrator.py +0 -0
  178. {squidient-4.0.0 → squidient-4.0.2}/src/squidient/testing/cases/__init__.py +0 -0
  179. {squidient-4.0.0 → squidient-4.0.2}/src/squidient/testing/cases/instance.py +0 -0
  180. {squidient-4.0.0 → squidient-4.0.2}/src/squidient/testing/cases/instance_merger.py +0 -0
  181. {squidient-4.0.0 → squidient-4.0.2}/src/squidient/testing/cases/test_case.py +0 -0
  182. {squidient-4.0.0 → squidient-4.0.2}/src/squidient/testing/test_orchestrator.py +0 -0
  183. {squidient-4.0.0 → squidient-4.0.2}/src/squidient/timers/__init__.py +0 -0
  184. {squidient-4.0.0 → squidient-4.0.2}/src/squidient/timers/timer.py +0 -0
  185. {squidient-4.0.0 → squidient-4.0.2}/src/squidient/utils/arguments.py +0 -0
  186. {squidient-4.0.0 → squidient-4.0.2}/src/squidient/utils/gitlab.py +0 -0
  187. {squidient-4.0.0 → squidient-4.0.2}/src/squidient/utils/lock.py +0 -0
  188. {squidient-4.0.0 → squidient-4.0.2}/src/squidient/utils/log.py +0 -0
  189. {squidient-4.0.0 → squidient-4.0.2}/src/squidient/utils/message.py +0 -0
  190. {squidient-4.0.0 → squidient-4.0.2}/src/squidient/utils/package.py +0 -0
  191. {squidient-4.0.0 → squidient-4.0.2}/src/squidient/utils/utils.py +0 -0
  192. {squidient-4.0.0 → squidient-4.0.2}/src/squidient/utils/watchdog.py +0 -0
  193. {squidient-4.0.0 → squidient-4.0.2}/src/squidient/version_control/__init__.py +0 -0
  194. {squidient-4.0.0 → squidient-4.0.2}/src/squidient/version_control/git_repository.py +0 -0
  195. {squidient-4.0.0 → squidient-4.0.2}/src/squidient/workflows/__init__.py +0 -0
  196. {squidient-4.0.0 → squidient-4.0.2}/src/squidient/workflows/base.py +0 -0
  197. {squidient-4.0.0 → squidient-4.0.2}/src/squidient/workflows/code_coverage.py +0 -0
  198. {squidient-4.0.0 → squidient-4.0.2}/src/squidient/workflows/locks.py +0 -0
@@ -0,0 +1,107 @@
1
+ Metadata-Version: 2.4
2
+ Name: squidient
3
+ Version: 4.0.2
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
+
50
+ ## MR Concurrency Checks
51
+
52
+ Each MR staging/monitoring `run` job checks the GitLab API before installing
53
+ Squidient or starting a campaign. `version:final` repeats the check before its
54
+ release-version validation. A running or canceling MR run/version job in another
55
+ pipeline makes the current job fail immediately, with the conflicting pipeline
56
+ and job identifiers. There is no waiting, automatic cancellation or write API
57
+ operation. Jobs in the same parent pipeline, including its staging and monitoring
58
+ children, are excluded so those two workflows can still run together.
59
+
60
+ The check uses `CI_API_V4_URL` and the existing `SQUIDIENT_READ_API_TOKEN`.
61
+ Pagination, response sizes and request/check durations are bounded. API failures,
62
+ invalid metadata or missing credentials prevent campaign execution. Master and
63
+ trigger workflows are unchanged. Retried child runs are detected independently
64
+ of their parent pipeline's completion status.
65
+
66
+ This is a best-effort API snapshot, not an atomic lock: simultaneous starts can
67
+ race. That risk is accepted instead of queueing campaigns or using a remote lock.
68
+ Retry a rejected job after the other campaign finishes. TestPyPI publication is
69
+ automatic after successful validations for eligible version-changing MRs.
70
+
71
+ ## CI Report Comments
72
+
73
+ The three `post` jobs delegate MR comments to Taskmaster's declared `task=comment`
74
+ input. The helper sends a JSON `inputs` object, never arbitrary pipeline variables.
75
+ Define `TASKMASTER_PROJECT_ID` and `TASKMASTER_TOKEN` in Squidient's CI/CD settings.
76
+ The latter is a Taskmaster pipeline trigger token, not a GitLab write API token.
77
+ Mask it in job logs and make it available to the MR pipelines that need to post;
78
+ the protected write API tokens remain exclusively in Taskmaster for this operation.
79
+ `TASKMASTER_REF` optionally selects the trusted execution reference and defaults
80
+ to `master`. GitLab provides `CI_API_V4_URL` automatically.
81
+
82
+ Taskmaster selects its own write credential using the target project: Squidient
83
+ for MR staging/monitoring reports, or Alya for triggered staging reports. Titles
84
+ and report links are unchanged. No write API credential is used by the `post`
85
+ scripts. Execution jobs use `SQUIDIENT_READ_API_TOKEN` for the watchdog
86
+ and MR lock checks; triggered Alya staging jobs also use `ALYA_READ_API_TOKEN` to
87
+ watch the source Alya pipeline. Neither `ALYA_WRITE_API_TOKEN` nor
88
+ `SQUIDIENT_WRITE_API_TOKEN` is required by Squidient's CI anymore. Their use for
89
+ publishing comments is confined to Taskmaster.
90
+
91
+ The caller only submits the request; successful submission does not mean that
92
+ Taskmaster has already posted the comment. Check the indicated Taskmaster pipeline
93
+ for the publication result. Posting remains non-blocking for the Squidient
94
+ pipeline. Automatic retries are disabled to reduce duplicate comments; manually
95
+ rerunning a post job can still create duplicates. Credentials, comment bodies
96
+ and API response bodies are not printed by the submission helper.
97
+
98
+ The Gazix, Taskmaster, Alya and Squidient migrations may be merged together.
99
+ Gazix 2.0.0 must finish publishing before Taskmaster jobs can install it. Configure
100
+ Taskmaster's protected write credentials and a protected execution ref, then run
101
+ its `tools/activate_inputs.py` preflight and explicit activation after both known
102
+ master callers have migrated. This disables arbitrary pipeline-variable overrides
103
+ in Taskmaster; there is no legacy-variable fallback. Only Alya and
104
+ Squidient on the same GitLab instance are currently authorized by Taskmaster;
105
+ an explicitly configured source API URL on another instance is rejected rather
106
+ than silently posting to the wrong project.
107
+
@@ -0,0 +1,89 @@
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
+
32
+ ## MR Concurrency Checks
33
+
34
+ Each MR staging/monitoring `run` job checks the GitLab API before installing
35
+ Squidient or starting a campaign. `version:final` repeats the check before its
36
+ release-version validation. A running or canceling MR run/version job in another
37
+ pipeline makes the current job fail immediately, with the conflicting pipeline
38
+ and job identifiers. There is no waiting, automatic cancellation or write API
39
+ operation. Jobs in the same parent pipeline, including its staging and monitoring
40
+ children, are excluded so those two workflows can still run together.
41
+
42
+ The check uses `CI_API_V4_URL` and the existing `SQUIDIENT_READ_API_TOKEN`.
43
+ Pagination, response sizes and request/check durations are bounded. API failures,
44
+ invalid metadata or missing credentials prevent campaign execution. Master and
45
+ trigger workflows are unchanged. Retried child runs are detected independently
46
+ of their parent pipeline's completion status.
47
+
48
+ This is a best-effort API snapshot, not an atomic lock: simultaneous starts can
49
+ race. That risk is accepted instead of queueing campaigns or using a remote lock.
50
+ Retry a rejected job after the other campaign finishes. TestPyPI publication is
51
+ automatic after successful validations for eligible version-changing MRs.
52
+
53
+ ## CI Report Comments
54
+
55
+ The three `post` jobs delegate MR comments to Taskmaster's declared `task=comment`
56
+ input. The helper sends a JSON `inputs` object, never arbitrary pipeline variables.
57
+ Define `TASKMASTER_PROJECT_ID` and `TASKMASTER_TOKEN` in Squidient's CI/CD settings.
58
+ The latter is a Taskmaster pipeline trigger token, not a GitLab write API token.
59
+ Mask it in job logs and make it available to the MR pipelines that need to post;
60
+ the protected write API tokens remain exclusively in Taskmaster for this operation.
61
+ `TASKMASTER_REF` optionally selects the trusted execution reference and defaults
62
+ to `master`. GitLab provides `CI_API_V4_URL` automatically.
63
+
64
+ Taskmaster selects its own write credential using the target project: Squidient
65
+ for MR staging/monitoring reports, or Alya for triggered staging reports. Titles
66
+ and report links are unchanged. No write API credential is used by the `post`
67
+ scripts. Execution jobs use `SQUIDIENT_READ_API_TOKEN` for the watchdog
68
+ and MR lock checks; triggered Alya staging jobs also use `ALYA_READ_API_TOKEN` to
69
+ watch the source Alya pipeline. Neither `ALYA_WRITE_API_TOKEN` nor
70
+ `SQUIDIENT_WRITE_API_TOKEN` is required by Squidient's CI anymore. Their use for
71
+ publishing comments is confined to Taskmaster.
72
+
73
+ The caller only submits the request; successful submission does not mean that
74
+ Taskmaster has already posted the comment. Check the indicated Taskmaster pipeline
75
+ for the publication result. Posting remains non-blocking for the Squidient
76
+ pipeline. Automatic retries are disabled to reduce duplicate comments; manually
77
+ rerunning a post job can still create duplicates. Credentials, comment bodies
78
+ and API response bodies are not printed by the submission helper.
79
+
80
+ The Gazix, Taskmaster, Alya and Squidient migrations may be merged together.
81
+ Gazix 2.0.0 must finish publishing before Taskmaster jobs can install it. Configure
82
+ Taskmaster's protected write credentials and a protected execution ref, then run
83
+ its `tools/activate_inputs.py` preflight and explicit activation after both known
84
+ master callers have migrated. This disables arbitrary pipeline-variable overrides
85
+ in Taskmaster; there is no legacy-variable fallback. Only Alya and
86
+ Squidient on the same GitLab instance are currently authorized by Taskmaster;
87
+ an explicitly configured source API URL on another instance is rejected rather
88
+ than silently posting to the wrong project.
89
+
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "squidient"
7
- version = "4.0.0"
7
+ version = "4.0.2"
8
8
  authors = [
9
9
  { name="Damien Dosimont", email="damien.dosimont@gmail.com" },
10
10
  ]
@@ -95,7 +95,7 @@ resource "aws_instance" "slurm_head" {
95
95
 
96
96
  # Head gets a single "primary" compute hostname for its slurm.conf
97
97
  user_data = templatefile(
98
- "${path.module}/cloud-init-slurm-fedora.sh",
98
+ "${path.module}/../../common/cloud-init-slurm-fedora.sh",
99
99
  {
100
100
  ROLE = "head"
101
101
  HEAD_HOSTNAME = "slurm-head"
@@ -131,7 +131,7 @@ resource "aws_instance" "slurm_compute" {
131
131
  depends_on = [aws_instance.slurm_head]
132
132
 
133
133
  user_data = templatefile(
134
- "${path.module}/cloud-init-slurm-fedora.sh",
134
+ "${path.module}/../../common/cloud-init-slurm-fedora.sh",
135
135
  {
136
136
  ROLE = "compute"
137
137
  HEAD_HOSTNAME = "slurm-head"
@@ -95,7 +95,7 @@ resource "aws_instance" "slurm_head" {
95
95
 
96
96
  # Head gets a single "primary" compute hostname for its slurm.conf
97
97
  user_data = templatefile(
98
- "${path.module}/cloud-init-slurm-fedora.sh",
98
+ "${path.module}/../../common/cloud-init-slurm-fedora.sh",
99
99
  {
100
100
  ROLE = "head"
101
101
  HEAD_HOSTNAME = "slurm-head"
@@ -131,7 +131,7 @@ resource "aws_instance" "slurm_compute" {
131
131
  depends_on = [aws_instance.slurm_head]
132
132
 
133
133
  user_data = templatefile(
134
- "${path.module}/cloud-init-slurm-fedora.sh",
134
+ "${path.module}/../../common/cloud-init-slurm-fedora.sh",
135
135
  {
136
136
  ROLE = "compute"
137
137
  HEAD_HOSTNAME = "slurm-head"
@@ -2,7 +2,7 @@
2
2
  set -eux
3
3
 
4
4
  # ------------------------------------------------------------
5
- # Role and topology (filled by Terraform via templatefile)
5
+ # Role and topology (provided by each Terraform configuration)
6
6
  # ------------------------------------------------------------
7
7
  ROLE="${ROLE}"
8
8
  HEAD_HOSTNAME="${HEAD_HOSTNAME}"
@@ -154,13 +154,67 @@ else
154
154
  sleep 3
155
155
  done
156
156
 
157
- if mountpoint -q /shared; then
158
- COMPUTE_IP="$(hostname -I | awk '{print $1}')"
159
- echo "$COMPUTE_IP" > "/shared/${COMPUTE_HOSTNAME}.ip" || true
160
- fi
161
157
  fi
162
158
  fi
163
159
 
160
+ # ------------------------------------------------------------
161
+ # Share the complete cluster host map with every MPI launch node
162
+ # ------------------------------------------------------------
163
+ if [ "${ROLE}" != "head" ] && ! mountpoint -q /shared; then
164
+ echo "Shared storage is not mounted; cannot resolve cluster nodes" >&2
165
+ exit 1
166
+ fi
167
+
168
+ LOCAL_IP="$(hostname -I | awk '{print $1}')"
169
+ printf '%s\n' "$LOCAL_IP" > "/shared/$HOSTNAME.ip"
170
+
171
+ all_ready=false
172
+ for i in $(seq 1 300); do
173
+ all_ready=true
174
+ for node in "${HEAD_HOSTNAME}" ${COMPUTE_NODE_LIST}; do
175
+ if [ ! -s "/shared/$node.ip" ]; then
176
+ all_ready=false
177
+ fi
178
+ done
179
+ if $all_ready; then break; fi
180
+ sleep 2
181
+ done
182
+
183
+ if ! $all_ready; then
184
+ echo "Timed out waiting for all cluster node addresses in /shared" >&2
185
+ exit 1
186
+ fi
187
+
188
+ python3 - /shared /etc/hosts "${HEAD_HOSTNAME}" "${COMPUTE_NODE_LIST}" <<'CLUSTER_HOSTS_PY'
189
+ import ipaddress
190
+ from pathlib import Path
191
+ import sys
192
+
193
+ shared = Path(sys.argv[1])
194
+ hosts = Path(sys.argv[2])
195
+ names = [sys.argv[3]] + sys.argv[4].split()
196
+ addresses = {
197
+ name: str(ipaddress.IPv4Address((shared / (name + ".ip")).read_text().strip()))
198
+ for name in names
199
+ }
200
+
201
+ # Replace cluster aliases while preserving unrelated host entries and comments.
202
+ lines = []
203
+ for line in hosts.read_text().splitlines():
204
+ body, separator, comment = line.partition("#")
205
+ fields = body.split()
206
+ if len(fields) > 1 and any(alias in addresses for alias in fields[1:]):
207
+ aliases = [alias for alias in fields[1:] if alias not in addresses]
208
+ if not aliases and not separator:
209
+ continue
210
+ line = " ".join([fields[0]] + aliases) if aliases else ""
211
+ if separator:
212
+ line += (" " if line else "") + "#" + comment
213
+ lines.append(line)
214
+ lines.extend(addresses[name] + " " + name for name in names)
215
+ hosts.write_text("\n".join(lines) + "\n")
216
+ CLUSTER_HOSTS_PY
217
+
164
218
  # ------------------------------------------------------------
165
219
  # Munge setup
166
220
  # ------------------------------------------------------------
squidient-4.0.0/PKG-INFO DELETED
@@ -1,49 +0,0 @@
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
-
squidient-4.0.0/README.md DELETED
@@ -1,31 +0,0 @@
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
-