squidient 4.0.1__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 (196) hide show
  1. {squidient-4.0.1 → squidient-4.0.2}/PKG-INFO +1 -1
  2. {squidient-4.0.1 → squidient-4.0.2}/pyproject.toml +1 -1
  3. {squidient-4.0.1 → squidient-4.0.2}/src/squidient/data/terraform/aws-ec2-t3.small-x2/t3.small/t3.small.tf +2 -2
  4. {squidient-4.0.1 → squidient-4.0.2}/src/squidient/data/terraform/aws-ec2-t3.small-x6/t3.small/t3.small.tf +2 -2
  5. {squidient-4.0.1/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
  6. squidient-4.0.1/src/squidient/data/terraform/aws-ec2-t3.small-x2/t3.small/cloud-init-slurm-fedora.sh +0 -315
  7. squidient-4.0.1/src/squidient/data/terraform/aws-ec2-t3.small-x2/t3.small/replace-var.sh +0 -4
  8. squidient-4.0.1/src/squidient/data/terraform/aws-ec2-t3.small-x3/t3.small/cloud-init-slurm-fedora.sh +0 -1
  9. {squidient-4.0.1 → squidient-4.0.2}/.gitignore +0 -0
  10. {squidient-4.0.1 → squidient-4.0.2}/LICENSE.txt +0 -0
  11. {squidient-4.0.1 → squidient-4.0.2}/README.md +0 -0
  12. {squidient-4.0.1 → squidient-4.0.2}/src/squidient/__init__.py +0 -0
  13. {squidient-4.0.1 → squidient-4.0.2}/src/squidient/builds/benchmark_build_execution.py +0 -0
  14. {squidient-4.0.1 → squidient-4.0.2}/src/squidient/builds/benchmark_build_orchestrator.py +0 -0
  15. {squidient-4.0.1 → squidient-4.0.2}/src/squidient/builds/build_definition.py +0 -0
  16. {squidient-4.0.1 → squidient-4.0.2}/src/squidient/builds/build_execution.py +0 -0
  17. {squidient-4.0.1 → squidient-4.0.2}/src/squidient/builds/build_orchestrator.py +0 -0
  18. {squidient-4.0.1 → squidient-4.0.2}/src/squidient/builds/build_presets.py +0 -0
  19. {squidient-4.0.1 → squidient-4.0.2}/src/squidient/cli/__init__.py +0 -0
  20. {squidient-4.0.1 → squidient-4.0.2}/src/squidient/cli/__main__.py +0 -0
  21. {squidient-4.0.1 → squidient-4.0.2}/src/squidient/cli/main.py +0 -0
  22. {squidient-4.0.1 → squidient-4.0.2}/src/squidient/cli/monitoring.py +0 -0
  23. {squidient-4.0.1 → squidient-4.0.2}/src/squidient/cli/staging.py +0 -0
  24. {squidient-4.0.1 → squidient-4.0.2}/src/squidient/cli/update.py +0 -0
  25. {squidient-4.0.1 → squidient-4.0.2}/src/squidient/code_coverage/code_coverage.py +0 -0
  26. {squidient-4.0.1 → squidient-4.0.2}/src/squidient/code_coverage/gcovr_code_coverage.py +0 -0
  27. {squidient-4.0.1 → squidient-4.0.2}/src/squidient/code_coverage/intel_code_coverage.py +0 -0
  28. {squidient-4.0.1 → squidient-4.0.2}/src/squidient/compare/compare.py +0 -0
  29. {squidient-4.0.1 → squidient-4.0.2}/src/squidient/compare/compare_with_diff_table.py +0 -0
  30. {squidient-4.0.1 → squidient-4.0.2}/src/squidient/compare/methods/absolute.py +0 -0
  31. {squidient-4.0.1 → squidient-4.0.2}/src/squidient/compare/methods/close.py +0 -0
  32. {squidient-4.0.1 → squidient-4.0.2}/src/squidient/compare/methods/diff.py +0 -0
  33. {squidient-4.0.1 → squidient-4.0.2}/src/squidient/compare/methods/l1_norm.py +0 -0
  34. {squidient-4.0.1 → squidient-4.0.2}/src/squidient/compare/methods/l1_relative.py +0 -0
  35. {squidient-4.0.1 → squidient-4.0.2}/src/squidient/compare/methods/l2_norm.py +0 -0
  36. {squidient-4.0.1 → squidient-4.0.2}/src/squidient/compare/methods/l2_relative.py +0 -0
  37. {squidient-4.0.1 → squidient-4.0.2}/src/squidient/compare/methods/linf_norm.py +0 -0
  38. {squidient-4.0.1 → squidient-4.0.2}/src/squidient/compare/methods/linf_relative.py +0 -0
  39. {squidient-4.0.1 → squidient-4.0.2}/src/squidient/compare/methods/power.py +0 -0
  40. {squidient-4.0.1 → squidient-4.0.2}/src/squidient/compare/methods/relative.py +0 -0
  41. {squidient-4.0.1 → squidient-4.0.2}/src/squidient/compare/methods/scalar_tolerance.py +0 -0
  42. {squidient-4.0.1 → squidient-4.0.2}/src/squidient/compare/methods/tolerance.py +0 -0
  43. {squidient-4.0.1 → squidient-4.0.2}/src/squidient/compare/methods/vector_tolerance.py +0 -0
  44. {squidient-4.0.1 → squidient-4.0.2}/src/squidient/compilation/cmake_options.py +0 -0
  45. {squidient-4.0.1 → squidient-4.0.2}/src/squidient/configuration/__init__.py +0 -0
  46. {squidient-4.0.1 → squidient-4.0.2}/src/squidient/configuration/code_coverage.py +0 -0
  47. {squidient-4.0.1 → squidient-4.0.2}/src/squidient/configuration/data_revision.py +0 -0
  48. {squidient-4.0.1 → squidient-4.0.2}/src/squidient/configuration/generator.py +0 -0
  49. {squidient-4.0.1 → squidient-4.0.2}/src/squidient/configuration/prompts.py +0 -0
  50. {squidient-4.0.1 → squidient-4.0.2}/src/squidient/configure.py +0 -0
  51. {squidient-4.0.1 → squidient-4.0.2}/src/squidient/connection/job.py +0 -0
  52. {squidient-4.0.1 → squidient-4.0.2}/src/squidient/connection/ssh.py +0 -0
  53. {squidient-4.0.1 → squidient-4.0.2}/src/squidient/connection/ssh_config_checker.py +0 -0
  54. {squidient-4.0.1 → squidient-4.0.2}/src/squidient/data/.squidient-initialized +0 -0
  55. {squidient-4.0.1 → squidient-4.0.2}/src/squidient/data/alya-config/cmake-alamak.json +0 -0
  56. {squidient-4.0.1 → squidient-4.0.2}/src/squidient/data/alya-config/cmake-chemint.json +0 -0
  57. {squidient-4.0.1 → squidient-4.0.2}/src/squidient/data/alya-config/cmake-clang.json +0 -0
  58. {squidient-4.0.1 → squidient-4.0.2}/src/squidient/data/alya-config/cmake-commdom.json +0 -0
  59. {squidient-4.0.1 → squidient-4.0.2}/src/squidient/data/alya-config/cmake-gnu.json +0 -0
  60. {squidient-4.0.1 → squidient-4.0.2}/src/squidient/data/alya-config/cmake-intel.json +0 -0
  61. {squidient-4.0.1 → squidient-4.0.2}/src/squidient/data/alya-config/cmake-mumps.json +0 -0
  62. {squidient-4.0.1 → squidient-4.0.2}/src/squidient/data/alya-config/cmake-nvhpc.json +0 -0
  63. {squidient-4.0.1 → squidient-4.0.2}/src/squidient/data/alya-config/cmake-talp.json +0 -0
  64. {squidient-4.0.1 → squidient-4.0.2}/src/squidient/data/benchmarks/benchmarks.json +0 -0
  65. {squidient-4.0.1 → squidient-4.0.2}/src/squidient/data/builds/builds.json +0 -0
  66. {squidient-4.0.1 → squidient-4.0.2}/src/squidient/data/builds/cc.json +0 -0
  67. {squidient-4.0.1 → squidient-4.0.2}/src/squidient/data/builds/defaults.json +0 -0
  68. {squidient-4.0.1 → squidient-4.0.2}/src/squidient/data/builds/predefined-old.json +0 -0
  69. {squidient-4.0.1 → squidient-4.0.2}/src/squidient/data/builds/predefined.json +0 -0
  70. {squidient-4.0.1 → squidient-4.0.2}/src/squidient/data/configurations/projects.json +0 -0
  71. {squidient-4.0.1 → squidient-4.0.2}/src/squidient/data/configurations/systems.json +0 -0
  72. {squidient-4.0.1 → squidient-4.0.2}/src/squidient/data/configurations/tests.json +0 -0
  73. {squidient-4.0.1 → squidient-4.0.2}/src/squidient/data/email/report.html +0 -0
  74. {squidient-4.0.1 → squidient-4.0.2}/src/squidient/data/icons/big.png +0 -0
  75. {squidient-4.0.1 → squidient-4.0.2}/src/squidient/data/icons/small.png +0 -0
  76. {squidient-4.0.1 → squidient-4.0.2}/src/squidient/data/index.html +0 -0
  77. {squidient-4.0.1 → squidient-4.0.2}/src/squidient/data/terraform/.gitignore +0 -0
  78. {squidient-4.0.1 → squidient-4.0.2}/src/squidient/data/terraform/aws-ec2-t3.small/.gitignore +0 -0
  79. {squidient-4.0.1 → squidient-4.0.2}/src/squidient/data/terraform/aws-ec2-t3.small/t3.small/cloud-init-slurm-fedora.sh +0 -0
  80. {squidient-4.0.1 → squidient-4.0.2}/src/squidient/data/terraform/aws-ec2-t3.small/t3.small/t3.small.tf +0 -0
  81. {squidient-4.0.1 → squidient-4.0.2}/src/squidient/data/terraform/aws-ec2-t3.small/t3.small/terraform.tfvars +0 -0
  82. {squidient-4.0.1 → squidient-4.0.2}/src/squidient/data/terraform/aws-ec2-t3.small-x2/t3.small/.gitignore +0 -0
  83. {squidient-4.0.1 → squidient-4.0.2}/src/squidient/data/terraform/aws-ec2-t3.small-x2/t3.small/terraform.tfvars +0 -0
  84. {squidient-4.0.1 → squidient-4.0.2}/src/squidient/data/terraform/aws-ec2-t3.small-x3/t3.small/.gitignore +0 -0
  85. {squidient-4.0.1 → squidient-4.0.2}/src/squidient/data/terraform/aws-ec2-t3.small-x3/t3.small/t3.small.tf +0 -0
  86. {squidient-4.0.1 → squidient-4.0.2}/src/squidient/data/terraform/aws-ec2-t3.small-x3/t3.small/terraform.tfvars +0 -0
  87. {squidient-4.0.1 → squidient-4.0.2}/src/squidient/data/terraform/aws-ec2-t3.small-x6/t3.small/.gitignore +0 -0
  88. {squidient-4.0.1 → squidient-4.0.2}/src/squidient/data/terraform/aws-ec2-t3.small-x6/t3.small/terraform.tfvars +0 -0
  89. {squidient-4.0.1 → squidient-4.0.2}/src/squidient/data/web/btest.html +0 -0
  90. {squidient-4.0.1 → squidient-4.0.2}/src/squidient/data/web/cc-gcovr.html +0 -0
  91. {squidient-4.0.1 → squidient-4.0.2}/src/squidient/data/web/cc-intel.html +0 -0
  92. {squidient-4.0.1 → squidient-4.0.2}/src/squidient/data/web/files.html +0 -0
  93. {squidient-4.0.1 → squidient-4.0.2}/src/squidient/data/web/img/png/canceled.png +0 -0
  94. {squidient-4.0.1 → squidient-4.0.2}/src/squidient/data/web/img/png/created.png +0 -0
  95. {squidient-4.0.1 → squidient-4.0.2}/src/squidient/data/web/img/png/failed.png +0 -0
  96. {squidient-4.0.1 → squidient-4.0.2}/src/squidient/data/web/img/png/failed_black.png +0 -0
  97. {squidient-4.0.1 → squidient-4.0.2}/src/squidient/data/web/img/png/failed_green.png +0 -0
  98. {squidient-4.0.1 → squidient-4.0.2}/src/squidient/data/web/img/png/file_cloud.png +0 -0
  99. {squidient-4.0.1 → squidient-4.0.2}/src/squidient/data/web/img/png/file_config.png +0 -0
  100. {squidient-4.0.1 → squidient-4.0.2}/src/squidient/data/web/img/png/file_ko.png +0 -0
  101. {squidient-4.0.1 → squidient-4.0.2}/src/squidient/data/web/img/png/file_ok.png +0 -0
  102. {squidient-4.0.1 → squidient-4.0.2}/src/squidient/data/web/img/png/skipped.png +0 -0
  103. {squidient-4.0.1 → squidient-4.0.2}/src/squidient/data/web/img/png/squidient_logo.png +0 -0
  104. {squidient-4.0.1 → squidient-4.0.2}/src/squidient/data/web/img/png/success.png +0 -0
  105. {squidient-4.0.1 → squidient-4.0.2}/src/squidient/data/web/img/png/success_black.png +0 -0
  106. {squidient-4.0.1 → squidient-4.0.2}/src/squidient/data/web/img/png/timeout.png +0 -0
  107. {squidient-4.0.1 → squidient-4.0.2}/src/squidient/data/web/img/png/tolerance.png +0 -0
  108. {squidient-4.0.1 → squidient-4.0.2}/src/squidient/data/web/img/png/warning.png +0 -0
  109. {squidient-4.0.1 → squidient-4.0.2}/src/squidient/data/web/img/png/warning_black.png +0 -0
  110. {squidient-4.0.1 → squidient-4.0.2}/src/squidient/data/web/img/png/warning_green.png +0 -0
  111. {squidient-4.0.1 → squidient-4.0.2}/src/squidient/data/web/img/svg/canceled.svg +0 -0
  112. {squidient-4.0.1 → squidient-4.0.2}/src/squidient/data/web/img/svg/created.svg +0 -0
  113. {squidient-4.0.1 → squidient-4.0.2}/src/squidient/data/web/img/svg/failed.svg +0 -0
  114. {squidient-4.0.1 → squidient-4.0.2}/src/squidient/data/web/img/svg/failed_black.svg +0 -0
  115. {squidient-4.0.1 → squidient-4.0.2}/src/squidient/data/web/img/svg/failed_green.svg +0 -0
  116. {squidient-4.0.1 → squidient-4.0.2}/src/squidient/data/web/img/svg/manual.svg +0 -0
  117. {squidient-4.0.1 → squidient-4.0.2}/src/squidient/data/web/img/svg/running.svg +0 -0
  118. {squidient-4.0.1 → squidient-4.0.2}/src/squidient/data/web/img/svg/skipped.svg +0 -0
  119. {squidient-4.0.1 → squidient-4.0.2}/src/squidient/data/web/img/svg/success.svg +0 -0
  120. {squidient-4.0.1 → squidient-4.0.2}/src/squidient/data/web/img/svg/success_black.svg +0 -0
  121. {squidient-4.0.1 → squidient-4.0.2}/src/squidient/data/web/img/svg/warning.svg +0 -0
  122. {squidient-4.0.1 → squidient-4.0.2}/src/squidient/data/web/img/svg/warning_black.svg +0 -0
  123. {squidient-4.0.1 → squidient-4.0.2}/src/squidient/data/web/img/svg/warning_green.svg +0 -0
  124. {squidient-4.0.1 → squidient-4.0.2}/src/squidient/data/web/index.html +0 -0
  125. {squidient-4.0.1 → squidient-4.0.2}/src/squidient/data/web/jquery.dynatable.css +0 -0
  126. {squidient-4.0.1 → squidient-4.0.2}/src/squidient/data/web/jquery.dynatable.js +0 -0
  127. {squidient-4.0.1 → squidient-4.0.2}/src/squidient/data/web/monitoring.html +0 -0
  128. {squidient-4.0.1 → squidient-4.0.2}/src/squidient/data/web/monitoring_build.html +0 -0
  129. {squidient-4.0.1 → squidient-4.0.2}/src/squidient/data/web/monitoring_test.html +0 -0
  130. {squidient-4.0.1 → squidient-4.0.2}/src/squidient/data/web/perf.html +0 -0
  131. {squidient-4.0.1 → squidient-4.0.2}/src/squidient/data/web/staging_build.html +0 -0
  132. {squidient-4.0.1 → squidient-4.0.2}/src/squidient/data/web/staging_test.html +0 -0
  133. {squidient-4.0.1 → squidient-4.0.2}/src/squidient/data/web/test.html +0 -0
  134. {squidient-4.0.1 → squidient-4.0.2}/src/squidient/data/web/testsuite.css +0 -0
  135. {squidient-4.0.1 → squidient-4.0.2}/src/squidient/data/web/testsuite.js +0 -0
  136. {squidient-4.0.1 → squidient-4.0.2}/src/squidient/definitions.py +0 -0
  137. {squidient-4.0.1 → squidient-4.0.2}/src/squidient/deployment/initialization.py +0 -0
  138. {squidient-4.0.1 → squidient-4.0.2}/src/squidient/deployment/module_generator.py +0 -0
  139. {squidient-4.0.1 → squidient-4.0.2}/src/squidient/exceptions.py +0 -0
  140. {squidient-4.0.1 → squidient-4.0.2}/src/squidient/monitoring/build_phase.py +0 -0
  141. {squidient-4.0.1 → squidient-4.0.2}/src/squidient/monitoring/full_workflow.py +0 -0
  142. {squidient-4.0.1 → squidient-4.0.2}/src/squidient/monitoring/monitoring.py +0 -0
  143. {squidient-4.0.1 → squidient-4.0.2}/src/squidient/monitoring/monitoring_db.py +0 -0
  144. {squidient-4.0.1 → squidient-4.0.2}/src/squidient/monitoring/notification_failures.py +0 -0
  145. {squidient-4.0.1 → squidient-4.0.2}/src/squidient/monitoring/test_phase.py +0 -0
  146. {squidient-4.0.1 → squidient-4.0.2}/src/squidient/reports/__init__.py +0 -0
  147. {squidient-4.0.1 → squidient-4.0.2}/src/squidient/reports/cases/__init__.py +0 -0
  148. {squidient-4.0.1 → squidient-4.0.2}/src/squidient/reports/cases/base.py +0 -0
  149. {squidient-4.0.1 → squidient-4.0.2}/src/squidient/reports/cases/case.py +0 -0
  150. {squidient-4.0.1 → squidient-4.0.2}/src/squidient/reports/cases/detailed.py +0 -0
  151. {squidient-4.0.1 → squidient-4.0.2}/src/squidient/reports/cases/full.py +0 -0
  152. {squidient-4.0.1 → squidient-4.0.2}/src/squidient/reports/monitoring/__init__.py +0 -0
  153. {squidient-4.0.1 → squidient-4.0.2}/src/squidient/reports/monitoring/report.py +0 -0
  154. {squidient-4.0.1 → squidient-4.0.2}/src/squidient/reports/report.py +0 -0
  155. {squidient-4.0.1 → squidient-4.0.2}/src/squidient/staging/build_phase.py +0 -0
  156. {squidient-4.0.1 → squidient-4.0.2}/src/squidient/staging/execution_warning.py +0 -0
  157. {squidient-4.0.1 → squidient-4.0.2}/src/squidient/staging/full_workflow.py +0 -0
  158. {squidient-4.0.1 → squidient-4.0.2}/src/squidient/staging/report_cleaner.py +0 -0
  159. {squidient-4.0.1 → squidient-4.0.2}/src/squidient/staging/report_transfer.py +0 -0
  160. {squidient-4.0.1 → squidient-4.0.2}/src/squidient/staging/staging.py +0 -0
  161. {squidient-4.0.1 → squidient-4.0.2}/src/squidient/staging/test_phase.py +0 -0
  162. {squidient-4.0.1 → squidient-4.0.2}/src/squidient/staging/test_relauncher.py +0 -0
  163. {squidient-4.0.1 → squidient-4.0.2}/src/squidient/systems/partition.py +0 -0
  164. {squidient-4.0.1 → squidient-4.0.2}/src/squidient/systems/platform.py +0 -0
  165. {squidient-4.0.1 → squidient-4.0.2}/src/squidient/systems/qos.py +0 -0
  166. {squidient-4.0.1 → squidient-4.0.2}/src/squidient/systems/queue_tester.py +0 -0
  167. {squidient-4.0.1 → squidient-4.0.2}/src/squidient/systems/reservation.py +0 -0
  168. {squidient-4.0.1 → squidient-4.0.2}/src/squidient/systems/system.py +0 -0
  169. {squidient-4.0.1 → squidient-4.0.2}/src/squidient/systems/system_manager.py +0 -0
  170. {squidient-4.0.1 → squidient-4.0.2}/src/squidient/terraform/terraform.py +0 -0
  171. {squidient-4.0.1 → squidient-4.0.2}/src/squidient/testing/benchmarks/__init__.py +0 -0
  172. {squidient-4.0.1 → squidient-4.0.2}/src/squidient/testing/benchmarks/failure_notifier.py +0 -0
  173. {squidient-4.0.1 → squidient-4.0.2}/src/squidient/testing/benchmarks/instance.py +0 -0
  174. {squidient-4.0.1 → squidient-4.0.2}/src/squidient/testing/benchmarks/test_case.py +0 -0
  175. {squidient-4.0.1 → squidient-4.0.2}/src/squidient/testing/benchmarks/test_orchestrator.py +0 -0
  176. {squidient-4.0.1 → squidient-4.0.2}/src/squidient/testing/cases/__init__.py +0 -0
  177. {squidient-4.0.1 → squidient-4.0.2}/src/squidient/testing/cases/instance.py +0 -0
  178. {squidient-4.0.1 → squidient-4.0.2}/src/squidient/testing/cases/instance_merger.py +0 -0
  179. {squidient-4.0.1 → squidient-4.0.2}/src/squidient/testing/cases/test_case.py +0 -0
  180. {squidient-4.0.1 → squidient-4.0.2}/src/squidient/testing/test_orchestrator.py +0 -0
  181. {squidient-4.0.1 → squidient-4.0.2}/src/squidient/timers/__init__.py +0 -0
  182. {squidient-4.0.1 → squidient-4.0.2}/src/squidient/timers/timer.py +0 -0
  183. {squidient-4.0.1 → squidient-4.0.2}/src/squidient/utils/arguments.py +0 -0
  184. {squidient-4.0.1 → squidient-4.0.2}/src/squidient/utils/gitlab.py +0 -0
  185. {squidient-4.0.1 → squidient-4.0.2}/src/squidient/utils/lock.py +0 -0
  186. {squidient-4.0.1 → squidient-4.0.2}/src/squidient/utils/log.py +0 -0
  187. {squidient-4.0.1 → squidient-4.0.2}/src/squidient/utils/message.py +0 -0
  188. {squidient-4.0.1 → squidient-4.0.2}/src/squidient/utils/package.py +0 -0
  189. {squidient-4.0.1 → squidient-4.0.2}/src/squidient/utils/utils.py +0 -0
  190. {squidient-4.0.1 → squidient-4.0.2}/src/squidient/utils/watchdog.py +0 -0
  191. {squidient-4.0.1 → squidient-4.0.2}/src/squidient/version_control/__init__.py +0 -0
  192. {squidient-4.0.1 → squidient-4.0.2}/src/squidient/version_control/git_repository.py +0 -0
  193. {squidient-4.0.1 → squidient-4.0.2}/src/squidient/workflows/__init__.py +0 -0
  194. {squidient-4.0.1 → squidient-4.0.2}/src/squidient/workflows/base.py +0 -0
  195. {squidient-4.0.1 → squidient-4.0.2}/src/squidient/workflows/code_coverage.py +0 -0
  196. {squidient-4.0.1 → squidient-4.0.2}/src/squidient/workflows/locks.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: squidient
3
- Version: 4.0.1
3
+ Version: 4.0.2
4
4
  Summary: CI/CD framework for alya
5
5
  Project-URL: Homepage, https://alya.gitlab.bsc.es/alya/ci-cd/squidient
6
6
  Project-URL: Bug Tracker, https://alya.gitlab.bsc.es/alya/ci-cd/squidient/issues
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "squidient"
7
- version = "4.0.1"
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
  # ------------------------------------------------------------
@@ -1,315 +0,0 @@
1
- #!/bin/bash
2
- set -eux
3
-
4
- # ------------------------------------------------------------
5
- # Role and topology (filled by Terraform via templatefile)
6
- # ------------------------------------------------------------
7
- ROLE="${ROLE}"
8
- HEAD_HOSTNAME="${HEAD_HOSTNAME}"
9
- COMPUTE_HOSTNAME="${COMPUTE_HOSTNAME}"
10
- HEAD_PRIVATE_IP="${HEAD_PRIVATE_IP}"
11
- COMPUTE_NODE_LIST="${COMPUTE_NODE_LIST}"
12
-
13
- # ------------------------------------------------------------
14
- # Hostname setup
15
- # ------------------------------------------------------------
16
- if [ "${ROLE}" = "head" ]; then
17
- hostnamectl set-hostname "${HEAD_HOSTNAME}"
18
- else
19
- hostnamectl set-hostname "${COMPUTE_HOSTNAME}"
20
- fi
21
-
22
- HOSTNAME="$(hostname)"
23
-
24
- # ------------------------------------------------------------
25
- # Basic networking
26
- # ------------------------------------------------------------
27
- if [ "${ROLE}" = "head" ]; then
28
- HEAD_IP="$(hostname -I | awk '{print $1}')"
29
- if ! grep -q " ${HEAD_HOSTNAME}\b" /etc/hosts; then
30
- echo "$HEAD_IP ${HEAD_HOSTNAME}" >> /etc/hosts
31
- fi
32
- else
33
- if [ -n "${HEAD_PRIVATE_IP}" ] && ! grep -q " ${HEAD_HOSTNAME}\b" /etc/hosts; then
34
- echo "${HEAD_PRIVATE_IP} ${HEAD_HOSTNAME}" >> /etc/hosts
35
- fi
36
- COMPUTE_IP="$(hostname -I | awk '{print $1}')"
37
- if [ -n "$COMPUTE_IP" ] && ! grep -q " ${COMPUTE_HOSTNAME}\b" /etc/hosts; then
38
- echo "$COMPUTE_IP ${COMPUTE_HOSTNAME}" >> /etc/hosts
39
- fi
40
- fi
41
-
42
- # ------------------------------------------------------------
43
- # Install base packages
44
- # ------------------------------------------------------------
45
- dnf -y update
46
-
47
- dnf -y install \
48
- slurm slurm-slurmctld slurm-slurmd \
49
- munge munge-libs munge-devel \
50
- cmake gcc gcc-c++ gcc-gfortran \
51
- git make perl wget \
52
- python3 python3-pip \
53
- diffutils which \
54
- tar gzip bzip2 \
55
- zlib-devel openssl-devel \
56
- boost-devel \
57
- libibverbs rdma-core \
58
- numactl numactl-devel \
59
- environment-modules \
60
- nfs-utils
61
-
62
- chmod 755 /
63
- chmod 755 /var
64
- chmod 755 /var/lib
65
-
66
- # ------------------------------------------------------------
67
- # NFS server + client handling (durci)
68
- # ------------------------------------------------------------
69
- mkdir -p /shared
70
-
71
- if [ "${ROLE}" = "head" ]; then
72
-
73
- chmod 777 /shared
74
-
75
- cat >/etc/exports <<EOF
76
- /shared *(rw,sync,no_subtree_check,no_root_squash,fsid=0)
77
- EOF
78
-
79
- systemctl enable nfs-idmapd || true
80
- systemctl start nfs-idmapd || true
81
-
82
- exportfs -ra
83
-
84
- systemctl enable --now nfs-server
85
-
86
- # Script background : rafraîchissement NodeAddr
87
- cat >/usr/local/sbin/refresh-slurm-nodeaddrs.sh << 'EOS'
88
- #!/bin/bash
89
- set -eux
90
-
91
- HEAD_HOSTNAME="slurm-head"
92
- HEAD_IP="$(hostname -I | awk '{print $1}')"
93
-
94
- # Wait for slurmctld
95
- for i in $(seq 1 60); do
96
- if systemctl is-active --quiet slurmctld; then break; fi
97
- sleep 2
98
- done
99
-
100
- # Ensure head is in /etc/hosts
101
- if ! grep -q " $HEAD_HOSTNAME\b" /etc/hosts; then
102
- echo "$HEAD_IP $HEAD_HOSTNAME" >> /etc/hosts
103
- fi
104
-
105
- # Detect compute *.ip files
106
- for i in $(seq 1 60); do
107
- found_any=false
108
-
109
- for ipfile in /shared/*.ip; do
110
- [ -e "$ipfile" ] || continue
111
- found_any=true
112
-
113
- node="$(basename "$ipfile" .ip)"
114
- ip="$(awk '{print $1}' "$ipfile")"
115
-
116
- [ -n "$ip" ] || continue
117
-
118
- if ! grep -q " $node\b" /etc/hosts; then
119
- echo "$ip $node" >> /etc/hosts
120
- fi
121
-
122
- scontrol update NodeName="$node" NodeAddr="$ip" || true
123
- done
124
-
125
- if $found_any; then exit 0; fi
126
- sleep 3
127
- done
128
-
129
- exit 0
130
- EOS
131
-
132
- chmod +x /usr/local/sbin/refresh-slurm-nodeaddrs.sh
133
- nohup /usr/local/sbin/refresh-slurm-nodeaddrs.sh >/var/log/refresh-slurm-nodeaddrs.log 2>&1 &
134
-
135
- else
136
- # Client NFS durci
137
- if [ -n "${HEAD_PRIVATE_IP}" ]; then
138
-
139
- if ! grep -q "/shared " /etc/fstab; then
140
- echo "${HEAD_PRIVATE_IP}:/shared /shared nfs vers=3,noac,actimeo=0,timeo=600,retrans=5,_netdev 0 0" >> /etc/fstab
141
- fi
142
-
143
- for i in $(seq 1 40); do
144
- if mountpoint -q /shared; then break; fi
145
-
146
- mount -t nfs -o vers=3,noac,actimeo=0,timeo=600,retrans=5 "${HEAD_PRIVATE_IP}:/shared" /shared && break || true
147
- mount -t nfs -o vers=4 "${HEAD_PRIVATE_IP}:/shared" /shared && break || true
148
-
149
- sleep 3
150
- done
151
-
152
- if mountpoint -q /shared; then
153
- COMPUTE_IP="$(hostname -I | awk '{print $1}')"
154
- echo "$COMPUTE_IP" > "/shared/${COMPUTE_HOSTNAME}.ip" || true
155
- fi
156
- fi
157
- fi
158
-
159
- # ------------------------------------------------------------
160
- # Munge setup
161
- # ------------------------------------------------------------
162
- mkdir -p /etc/munge /var/lib/munge /var/log/munge
163
-
164
- if [ "${ROLE}" = "head" ]; then
165
- if [ ! -f /etc/munge/munge.key ]; then
166
- if command -v create-munge-key >/dev/null 2>&1; then
167
- create-munge-key
168
- else
169
- dd if=/dev/urandom bs=1 count=1024 of=/etc/munge/munge.key
170
- fi
171
- fi
172
- cp /etc/munge/munge.key /shared/munge.key || true
173
- else
174
- for i in $(seq 1 30); do
175
- if [ -f /shared/munge.key ]; then
176
- cp /shared/munge.key /etc/munge/munge.key
177
- break
178
- fi
179
- sleep 2
180
- done
181
-
182
- if [ ! -f /etc/munge/munge.key ]; then
183
- if command -v create-munge-key >/dev/null 2>&1; then
184
- create-munge-key
185
- else
186
- dd if=/dev/urandom bs=1 count=1024 of=/etc/munge/munge.key
187
- fi
188
- fi
189
- fi
190
-
191
- chown munge:munge /etc/munge/munge.key
192
- chmod 600 /etc/munge/munge.key
193
- chown -R munge:munge /etc/munge /var/lib/munge /var/log/munge
194
- chmod 700 /var/lib/munge /var/log/munge
195
-
196
- systemctl enable munge
197
- systemctl start munge
198
-
199
- # ------------------------------------------------------------
200
- # Slurm dynamic config
201
- # ------------------------------------------------------------
202
- if ! getent group slurm >/dev/null; then
203
- groupadd -r slurm
204
- fi
205
- if ! id -u slurm >/dev/null 2>&1; then
206
- useradd -r -g slurm -d /var/lib/slurm -s /sbin/nologin slurm
207
- fi
208
-
209
- mkdir -p /var/spool/slurm /var/spool/slurmd /var/log/slurm /var/lib/slurm /etc/slurm
210
- chown -R slurm:slurm /var/spool/slurm /var/spool/slurmd /var/log/slurm /var/lib/slurm
211
-
212
- LOCAL_CPUS="$(nproc)"
213
- SLURM_CONF="/etc/slurm/slurm.conf"
214
-
215
- # Header de slurm.conf
216
- cat >"$SLURM_CONF" <<EOF
217
- ClusterName=squidient-aws
218
- ControlMachine=${HEAD_HOSTNAME}
219
-
220
- SlurmUser=slurm
221
- SlurmctldPort=6817
222
- SlurmdPort=6818
223
- StateSaveLocation=/var/spool/slurm
224
- SlurmdSpoolDir=/var/spool/slurmd
225
- SlurmctldTimeout=300
226
- SlurmdTimeout=300
227
- SchedulerType=sched/backfill
228
- SelectType=select/cons_tres
229
-
230
- EOF
231
-
232
- # Lignes NodeName
233
- echo "NodeName=${HEAD_HOSTNAME} CPUs=$LOCAL_CPUS State=UNKNOWN" >>"$SLURM_CONF"
234
- if [ -n "${COMPUTE_NODE_LIST}" ]; then
235
- for node in ${COMPUTE_NODE_LIST}; do
236
- echo "NodeName=$node CPUs=$LOCAL_CPUS State=UNKNOWN" >>"$SLURM_CONF"
237
- done
238
- fi
239
-
240
- echo "" >>"$SLURM_CONF"
241
-
242
- # Partition debug
243
- PARTITION_NODES="${HEAD_HOSTNAME}"
244
- if [ -n "${COMPUTE_NODE_LIST}" ]; then
245
- for node in ${COMPUTE_NODE_LIST}; do
246
- PARTITION_NODES="$PARTITION_NODES,$node"
247
- done
248
- fi
249
-
250
- echo "PartitionName=debug Nodes=$PARTITION_NODES Default=YES MaxTime=INFINITE State=UP" >>"$SLURM_CONF"
251
-
252
- chown slurm:slurm "$SLURM_CONF"
253
-
254
- # ------------------------------------------------------------
255
- # OpenMPI + alya-mpio-tools (HEAD ONLY)
256
- # ------------------------------------------------------------
257
- if [ "${ROLE}" = "head" ]; then
258
- OMPI_VERSION="4.1.6"
259
- OMPI_PREFIX="/shared/openmpi"
260
-
261
- cd /tmp
262
- wget "https://download.open-mpi.org/release/open-mpi/v4.1/openmpi-$OMPI_VERSION.tar.gz"
263
- tar -xvf "openmpi-$OMPI_VERSION.tar.gz"
264
- cd "openmpi-$OMPI_VERSION"
265
-
266
- ./configure --prefix="$OMPI_PREFIX" --enable-mpirun-prefix-by-default
267
- make -j"$(nproc)"
268
- make install
269
-
270
- # utiliser cette OpenMPI
271
- export PATH="$OMPI_PREFIX/bin:$PATH"
272
-
273
- ALYA_MPIO_SRC="/shared/alya-mpio-tools-src"
274
- ALYA_MPIO_INSTALL="/shared/alya-mpio-tools"
275
-
276
- git clone --depth 1 https://alya.gitlab.bsc.es/alya/alya-mpio-tools.git "$ALYA_MPIO_SRC" || true
277
-
278
- cd "$ALYA_MPIO_SRC"
279
- mkdir -p build
280
- cd build
281
-
282
- cmake .. \
283
- -DCMAKE_C_COMPILER=mpicc \
284
- -DCMAKE_CXX_COMPILER=mpicxx \
285
- -DMPIEXEC_PREFLAGS="--allow-run-as-root;--oversubscribe" \
286
- -DUSE_VTK=OFF \
287
- -DUSE_SFC=OFF \
288
- -DCMAKE_INSTALL_PREFIX="$ALYA_MPIO_INSTALL"
289
-
290
- make -j"$(nproc)"
291
- make install
292
- fi
293
-
294
- # ------------------------------------------------------------
295
- # Shared environment for MPI + alya-mpio-tools (ALL NODES)
296
- # ------------------------------------------------------------
297
- cat >/etc/profile.d/shared-hpc-env.sh <<'EOF'
298
- export PATH=/shared/openmpi/bin:/shared/alya-mpio-tools/bin:$PATH
299
- export LD_LIBRARY_PATH=/shared/openmpi/lib:$LD_LIBRARY_PATH
300
- EOF
301
-
302
- chmod +x /etc/profile.d/shared-hpc-env.sh
303
-
304
- # ------------------------------------------------------------
305
- # Start Slurm daemons
306
- # ------------------------------------------------------------
307
- if [ "${ROLE}" = "head" ]; then
308
- systemctl enable slurmctld
309
- systemctl start slurmctld
310
- else
311
- systemctl disable slurmctld || true
312
- fi
313
-
314
- systemctl enable slurmd
315
- systemctl start slurmd
@@ -1,4 +0,0 @@
1
- sed -i 's/{LOCAL_CPUS}/LOCAL_CPUS/g' cloud-init-slurm-fedora.sh
2
- sed -i 's/{node}/node/g' cloud-init-slurm-fedora.sh
3
- sed -i 's/{PARTITION_NODES}/PARTITION_NODES/g' cloud-init-slurm-fedora.sh
4
- sed -i 's/{OMPI_VERSION}/OMPI_VERSION/g' cloud-init-slurm-fedora.sh
@@ -1 +0,0 @@
1
- ../../aws-ec2-t3.small-x2/t3.small/cloud-init-slurm-fedora.sh
File without changes
File without changes
File without changes