hybrid_platforms_conductor 32.17.0 → 33.0.2

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 (283) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +36 -0
  3. data/README.md +6 -3
  4. data/bin/check-node +0 -1
  5. data/bin/deploy +0 -1
  6. data/bin/get_impacted_nodes +0 -1
  7. data/bin/last_deploys +12 -8
  8. data/bin/nodes_to_deploy +6 -6
  9. data/bin/setup +6 -6
  10. data/bin/topograph +1 -1
  11. data/docs/config_dsl.md +45 -1
  12. data/docs/executables.md +6 -7
  13. data/docs/executables/check-node.md +3 -3
  14. data/docs/executables/deploy.md +3 -3
  15. data/docs/executables/dump_nodes_json.md +3 -3
  16. data/docs/executables/test.md +3 -3
  17. data/docs/executables/topograph.md +3 -3
  18. data/docs/gen/mermaid/README.md-0.png +0 -0
  19. data/docs/gen/mermaid/docs/executables/check-node.md-0.png +0 -0
  20. data/docs/gen/mermaid/docs/executables/deploy.md-0.png +0 -0
  21. data/docs/gen/mermaid/docs/executables/free_ips.md-0.png +0 -0
  22. data/docs/gen/mermaid/docs/executables/get_impacted_nodes.md-0.png +0 -0
  23. data/docs/gen/mermaid/docs/executables/last_deploys.md-0.png +0 -0
  24. data/docs/gen/mermaid/docs/executables/nodes_to_deploy.md-0.png +0 -0
  25. data/docs/gen/mermaid/docs/executables/report.md-0.png +0 -0
  26. data/docs/gen/mermaid/docs/executables/run.md-0.png +0 -0
  27. data/docs/gen/mermaid/docs/executables/ssh_config.md-0.png +0 -0
  28. data/docs/gen/mermaid/docs/executables/test.md-0.png +0 -0
  29. data/docs/plugins.md +46 -0
  30. data/docs/plugins/connector/ssh.md +1 -1
  31. data/docs/plugins/log/remote_fs.md +26 -0
  32. data/docs/plugins/secrets_reader/cli.md +31 -0
  33. data/docs/plugins/secrets_reader/thycotic.md +46 -0
  34. data/docs/plugins/test/check_deploy_and_idempotence.md +1 -1
  35. data/docs/plugins/test/connection.md +1 -0
  36. data/docs/plugins/test/deploy_removes_root_access.md +1 -1
  37. data/docs/plugins/test/file_system.md +1 -0
  38. data/docs/plugins/test/hostname.md +1 -0
  39. data/docs/plugins/test/ip.md +1 -0
  40. data/docs/plugins/test/local_users.md +1 -0
  41. data/docs/plugins/test/mounts.md +1 -0
  42. data/docs/plugins/test/orphan_files.md +1 -0
  43. data/docs/plugins/test/ports.md +1 -0
  44. data/docs/plugins/test/spectre.md +1 -0
  45. data/docs/plugins/test/vulnerabilities.md +1 -0
  46. data/lib/hybrid_platforms_conductor/action.rb +4 -4
  47. data/lib/hybrid_platforms_conductor/actions_executor.rb +45 -43
  48. data/lib/hybrid_platforms_conductor/bitbucket.rb +5 -4
  49. data/lib/hybrid_platforms_conductor/cmd_runner.rb +13 -12
  50. data/lib/hybrid_platforms_conductor/cmdb.rb +2 -2
  51. data/lib/hybrid_platforms_conductor/common_config_dsl/bitbucket.rb +2 -1
  52. data/lib/hybrid_platforms_conductor/common_config_dsl/confluence.rb +2 -1
  53. data/lib/hybrid_platforms_conductor/common_config_dsl/file_system_tests.rb +5 -4
  54. data/lib/hybrid_platforms_conductor/common_config_dsl/github.rb +4 -3
  55. data/lib/hybrid_platforms_conductor/common_config_dsl/idempotence_tests.rb +2 -2
  56. data/lib/hybrid_platforms_conductor/config.rb +8 -4
  57. data/lib/hybrid_platforms_conductor/confluence.rb +1 -1
  58. data/lib/hybrid_platforms_conductor/connector.rb +5 -2
  59. data/lib/hybrid_platforms_conductor/core_extensions/cleanroom/fix_kwargs.rb +116 -0
  60. data/lib/hybrid_platforms_conductor/core_extensions/symbol/zero.rb +24 -0
  61. data/lib/hybrid_platforms_conductor/credentials.rb +39 -36
  62. data/lib/hybrid_platforms_conductor/current_dir_monitor.rb +4 -1
  63. data/lib/hybrid_platforms_conductor/deployer.rb +275 -224
  64. data/lib/hybrid_platforms_conductor/executable.rb +20 -15
  65. data/lib/hybrid_platforms_conductor/hpc_plugins/cmdb/config.rb +10 -7
  66. data/lib/hybrid_platforms_conductor/hpc_plugins/cmdb/host_ip.rb +1 -1
  67. data/lib/hybrid_platforms_conductor/hpc_plugins/cmdb/host_keys.rb +2 -2
  68. data/lib/hybrid_platforms_conductor/hpc_plugins/cmdb/platform_handlers.rb +4 -4
  69. data/lib/hybrid_platforms_conductor/hpc_plugins/connector/local.rb +2 -0
  70. data/lib/hybrid_platforms_conductor/hpc_plugins/connector/ssh.rb +45 -49
  71. data/lib/hybrid_platforms_conductor/hpc_plugins/log/my_log_plugin.rb.sample +100 -0
  72. data/lib/hybrid_platforms_conductor/hpc_plugins/log/remote_fs.rb +180 -0
  73. data/lib/hybrid_platforms_conductor/hpc_plugins/platform_handler/serverless_chef.rb +68 -66
  74. data/lib/hybrid_platforms_conductor/hpc_plugins/platform_handler/serverless_chef/dsl_parser.rb +13 -0
  75. data/lib/hybrid_platforms_conductor/hpc_plugins/platform_handler/serverless_chef/recipes_tree_builder.rb +39 -38
  76. data/lib/hybrid_platforms_conductor/hpc_plugins/platform_handler/yaml_inventory.rb +5 -4
  77. data/lib/hybrid_platforms_conductor/hpc_plugins/provisioner/docker.rb +43 -45
  78. data/lib/hybrid_platforms_conductor/hpc_plugins/provisioner/podman.rb +18 -20
  79. data/lib/hybrid_platforms_conductor/hpc_plugins/provisioner/proxmox.rb +118 -117
  80. data/lib/hybrid_platforms_conductor/hpc_plugins/provisioner/proxmox/proxmox_waiter.rb +39 -43
  81. data/lib/hybrid_platforms_conductor/hpc_plugins/provisioner/proxmox/reserve_proxmox_container +9 -13
  82. data/lib/hybrid_platforms_conductor/hpc_plugins/report/confluence.rb +2 -2
  83. data/lib/hybrid_platforms_conductor/hpc_plugins/report/mediawiki.rb +28 -21
  84. data/lib/hybrid_platforms_conductor/hpc_plugins/report/stdout.rb +26 -22
  85. data/lib/hybrid_platforms_conductor/hpc_plugins/secrets_reader/cli.rb +77 -0
  86. data/lib/hybrid_platforms_conductor/hpc_plugins/secrets_reader/my_secrets_reader_plugin.rb.sample +46 -0
  87. data/lib/hybrid_platforms_conductor/hpc_plugins/secrets_reader/thycotic.rb +90 -0
  88. data/lib/hybrid_platforms_conductor/hpc_plugins/test/bitbucket_conf.rb +3 -3
  89. data/lib/hybrid_platforms_conductor/hpc_plugins/test/check_deploy_and_idempotence.rb +4 -2
  90. data/lib/hybrid_platforms_conductor/hpc_plugins/test/connection.rb +3 -1
  91. data/lib/hybrid_platforms_conductor/hpc_plugins/test/deploy_freshness.rb +7 -21
  92. data/lib/hybrid_platforms_conductor/hpc_plugins/test/deploy_removes_root_access.rb +21 -19
  93. data/lib/hybrid_platforms_conductor/hpc_plugins/test/divergence.rb +2 -2
  94. data/lib/hybrid_platforms_conductor/hpc_plugins/test/executables.rb +2 -2
  95. data/lib/hybrid_platforms_conductor/hpc_plugins/test/file_system.rb +21 -22
  96. data/lib/hybrid_platforms_conductor/hpc_plugins/test/file_system_hdfs.rb +19 -21
  97. data/lib/hybrid_platforms_conductor/hpc_plugins/test/github_ci.rb +2 -3
  98. data/lib/hybrid_platforms_conductor/hpc_plugins/test/hostname.rb +3 -1
  99. data/lib/hybrid_platforms_conductor/hpc_plugins/test/idempotence.rb +2 -2
  100. data/lib/hybrid_platforms_conductor/hpc_plugins/test/ip.rb +4 -2
  101. data/lib/hybrid_platforms_conductor/hpc_plugins/test/jenkins_ci_conf.rb +21 -22
  102. data/lib/hybrid_platforms_conductor/hpc_plugins/test/jenkins_ci_masters_ok.rb +10 -12
  103. data/lib/hybrid_platforms_conductor/hpc_plugins/test/linear_strategy.rb +9 -9
  104. data/lib/hybrid_platforms_conductor/hpc_plugins/test/local_users.rb +5 -3
  105. data/lib/hybrid_platforms_conductor/hpc_plugins/test/mounts.rb +5 -3
  106. data/lib/hybrid_platforms_conductor/hpc_plugins/test/orphan_files.rb +13 -10
  107. data/lib/hybrid_platforms_conductor/hpc_plugins/test/ports.rb +5 -3
  108. data/lib/hybrid_platforms_conductor/hpc_plugins/test/private_ips.rb +5 -5
  109. data/lib/hybrid_platforms_conductor/hpc_plugins/test/public_ips.rb +5 -5
  110. data/lib/hybrid_platforms_conductor/hpc_plugins/test/spectre.rb +7 -7
  111. data/lib/hybrid_platforms_conductor/hpc_plugins/test/veids.rb +3 -3
  112. data/lib/hybrid_platforms_conductor/hpc_plugins/test/vulnerabilities.rb +27 -25
  113. data/lib/hybrid_platforms_conductor/hpc_plugins/test_report/confluence.rb +2 -2
  114. data/lib/hybrid_platforms_conductor/hpc_plugins/test_report/stdout.rb +8 -6
  115. data/lib/hybrid_platforms_conductor/io_router.rb +14 -13
  116. data/lib/hybrid_platforms_conductor/json_dumper.rb +2 -2
  117. data/lib/hybrid_platforms_conductor/log.rb +31 -0
  118. data/lib/hybrid_platforms_conductor/logger_helpers.rb +19 -16
  119. data/lib/hybrid_platforms_conductor/nodes_handler.rb +89 -71
  120. data/lib/hybrid_platforms_conductor/parallel_threads.rb +7 -11
  121. data/lib/hybrid_platforms_conductor/platform_handler.rb +7 -7
  122. data/lib/hybrid_platforms_conductor/platforms_handler.rb +5 -3
  123. data/lib/hybrid_platforms_conductor/plugin.rb +2 -2
  124. data/lib/hybrid_platforms_conductor/plugins.rb +14 -8
  125. data/lib/hybrid_platforms_conductor/provisioner.rb +4 -4
  126. data/lib/hybrid_platforms_conductor/report.rb +2 -2
  127. data/lib/hybrid_platforms_conductor/reports_handler.rb +3 -2
  128. data/lib/hybrid_platforms_conductor/secrets_reader.rb +31 -0
  129. data/lib/hybrid_platforms_conductor/services_handler.rb +32 -29
  130. data/lib/hybrid_platforms_conductor/test_only_remote_node.rb +18 -0
  131. data/lib/hybrid_platforms_conductor/test_report.rb +15 -18
  132. data/lib/hybrid_platforms_conductor/tests_runner.rb +116 -118
  133. data/lib/hybrid_platforms_conductor/thycotic.rb +28 -19
  134. data/lib/hybrid_platforms_conductor/topographer.rb +200 -190
  135. data/lib/hybrid_platforms_conductor/topographer/plugins/graphviz.rb +8 -8
  136. data/lib/hybrid_platforms_conductor/topographer/plugins/json.rb +4 -4
  137. data/lib/hybrid_platforms_conductor/version.rb +1 -1
  138. data/spec/hybrid_platforms_conductor_test.rb +33 -12
  139. data/spec/hybrid_platforms_conductor_test/api/actions_executor/actions/bash_spec.rb +18 -11
  140. data/spec/hybrid_platforms_conductor_test/api/actions_executor/actions/interactive_spec.rb +2 -2
  141. data/spec/hybrid_platforms_conductor_test/api/actions_executor/actions/remote_bash_spec.rb +32 -21
  142. data/spec/hybrid_platforms_conductor_test/api/actions_executor/actions/ruby_spec.rb +75 -49
  143. data/spec/hybrid_platforms_conductor_test/api/actions_executor/actions/scp_spec.rb +27 -15
  144. data/spec/hybrid_platforms_conductor_test/api/actions_executor/actions_spec.rb +90 -59
  145. data/spec/hybrid_platforms_conductor_test/api/actions_executor/connection_spec.rb +46 -44
  146. data/spec/hybrid_platforms_conductor_test/api/actions_executor/connectors/local/connectable_nodes_spec.rb +12 -8
  147. data/spec/hybrid_platforms_conductor_test/api/actions_executor/connectors/local/remote_actions_spec.rb +4 -7
  148. data/spec/hybrid_platforms_conductor_test/api/actions_executor/connectors/ssh/cli_options_spec.rb +21 -22
  149. data/spec/hybrid_platforms_conductor_test/api/actions_executor/connectors/ssh/config_dsl_spec.rb +23 -24
  150. data/spec/hybrid_platforms_conductor_test/api/actions_executor/connectors/ssh/connectable_nodes_spec.rb +10 -6
  151. data/spec/hybrid_platforms_conductor_test/api/actions_executor/connectors/ssh/connections_spec.rb +106 -75
  152. data/spec/hybrid_platforms_conductor_test/api/actions_executor/connectors/ssh/global_helpers_spec.rb +145 -126
  153. data/spec/hybrid_platforms_conductor_test/api/actions_executor/connectors/ssh/node_helpers_spec.rb +3 -3
  154. data/spec/hybrid_platforms_conductor_test/api/actions_executor/connectors/ssh/remote_actions_spec.rb +29 -25
  155. data/spec/hybrid_platforms_conductor_test/api/actions_executor/logging_spec.rb +167 -142
  156. data/spec/hybrid_platforms_conductor_test/api/actions_executor/parallel_spec.rb +272 -244
  157. data/spec/hybrid_platforms_conductor_test/api/actions_executor/timeout_spec.rb +16 -16
  158. data/spec/hybrid_platforms_conductor_test/api/cmd_runner_spec.rb +36 -36
  159. data/spec/hybrid_platforms_conductor_test/api/config_spec.rb +24 -22
  160. data/spec/hybrid_platforms_conductor_test/api/deployer/check_spec.rb +4 -2
  161. data/spec/hybrid_platforms_conductor_test/api/deployer/config_dsl_spec.rb +43 -5
  162. data/spec/hybrid_platforms_conductor_test/api/deployer/deploy_spec.rb +199 -216
  163. data/spec/hybrid_platforms_conductor_test/api/deployer/log_plugins/remote_fs_spec.rb +223 -0
  164. data/spec/hybrid_platforms_conductor_test/api/deployer/parse_deploy_output_spec.rb +55 -59
  165. data/spec/hybrid_platforms_conductor_test/api/deployer/provisioner_spec.rb +36 -62
  166. data/spec/hybrid_platforms_conductor_test/api/deployer/provisioners/podman_spec.rb +17 -17
  167. data/spec/hybrid_platforms_conductor_test/api/deployer/provisioners/proxmox/config_dsl_spec.rb +4 -4
  168. data/spec/hybrid_platforms_conductor_test/api/deployer/provisioners/proxmox/create_spec.rb +44 -51
  169. data/spec/hybrid_platforms_conductor_test/api/deployer/provisioners/proxmox/destroy_spec.rb +3 -3
  170. data/spec/hybrid_platforms_conductor_test/api/deployer/provisioners/proxmox/ip_spec.rb +12 -16
  171. data/spec/hybrid_platforms_conductor_test/api/deployer/provisioners/proxmox/reserve_proxmox_container/destroy_vm_spec.rb +31 -19
  172. data/spec/hybrid_platforms_conductor_test/api/deployer/provisioners/proxmox/reserve_proxmox_container/expired_containers_spec.rb +324 -266
  173. data/spec/hybrid_platforms_conductor_test/api/deployer/provisioners/proxmox/reserve_proxmox_container/ips_assignment_spec.rb +89 -61
  174. data/spec/hybrid_platforms_conductor_test/api/deployer/provisioners/proxmox/reserve_proxmox_container/other_lxc_containers_resources_spec.rb +117 -93
  175. data/spec/hybrid_platforms_conductor_test/api/deployer/provisioners/proxmox/reserve_proxmox_container/pve_node_resources_spec.rb +71 -54
  176. data/spec/hybrid_platforms_conductor_test/api/deployer/provisioners/proxmox/reserve_proxmox_container/retries_spec.rb +10 -8
  177. data/spec/hybrid_platforms_conductor_test/api/deployer/provisioners/proxmox/reserve_proxmox_container/vm_ids_assignment_spec.rb +80 -60
  178. data/spec/hybrid_platforms_conductor_test/api/deployer/provisioners/proxmox/start_spec.rb +1 -1
  179. data/spec/hybrid_platforms_conductor_test/api/deployer/provisioners/proxmox/state_spec.rb +1 -1
  180. data/spec/hybrid_platforms_conductor_test/api/deployer/provisioners/proxmox/stop_spec.rb +1 -1
  181. data/spec/hybrid_platforms_conductor_test/api/deployer/secrets_reader_plugins/cli_spec.rb +64 -0
  182. data/spec/hybrid_platforms_conductor_test/api/deployer/secrets_reader_plugins/thycotic_spec.rb +268 -0
  183. data/spec/hybrid_platforms_conductor_test/api/nodes_handler/cmdbs/config_spec.rb +8 -10
  184. data/spec/hybrid_platforms_conductor_test/api/nodes_handler/cmdbs/host_ip_spec.rb +33 -24
  185. data/spec/hybrid_platforms_conductor_test/api/nodes_handler/cmdbs/host_keys_spec.rb +64 -51
  186. data/spec/hybrid_platforms_conductor_test/api/nodes_handler/cmdbs/platform_handlers_spec.rb +3 -3
  187. data/spec/hybrid_platforms_conductor_test/api/nodes_handler/cmdbs_plugins_api_spec.rb +50 -51
  188. data/spec/hybrid_platforms_conductor_test/api/nodes_handler/common_spec.rb +91 -81
  189. data/spec/hybrid_platforms_conductor_test/api/nodes_handler/config_dsl_spec.rb +14 -16
  190. data/spec/hybrid_platforms_conductor_test/api/nodes_handler/git_diff_impacts_spec.rb +51 -75
  191. data/spec/hybrid_platforms_conductor_test/api/nodes_handler/nodes_selectors_spec.rb +35 -26
  192. data/spec/hybrid_platforms_conductor_test/api/nodes_handler/platform_handlers_plugins_api_spec.rb +24 -16
  193. data/spec/hybrid_platforms_conductor_test/api/nodes_handler/several_platforms_spec.rb +29 -19
  194. data/spec/hybrid_platforms_conductor_test/api/platform_handler_spec.rb +4 -4
  195. data/spec/hybrid_platforms_conductor_test/api/platform_handlers/serverless_chef/config_dsl_spec.rb +2 -2
  196. data/spec/hybrid_platforms_conductor_test/api/platform_handlers/serverless_chef/deploy_output_parsing_spec.rb +6 -6
  197. data/spec/hybrid_platforms_conductor_test/api/platform_handlers/serverless_chef/diff_impacts_spec.rb +57 -99
  198. data/spec/hybrid_platforms_conductor_test/api/platform_handlers/serverless_chef/inventory_spec.rb +4 -4
  199. data/spec/hybrid_platforms_conductor_test/api/platform_handlers/serverless_chef/packaging_spec.rb +32 -35
  200. data/spec/hybrid_platforms_conductor_test/api/platform_handlers/serverless_chef/services_deployment_spec.rb +10 -10
  201. data/spec/hybrid_platforms_conductor_test/api/platforms_handler_spec.rb +38 -27
  202. data/spec/hybrid_platforms_conductor_test/api/plugins_spec.rb +46 -52
  203. data/spec/hybrid_platforms_conductor_test/api/reports_handler_spec.rb +2 -2
  204. data/spec/hybrid_platforms_conductor_test/api/services_handler/actions_to_deploy_spec.rb +90 -58
  205. data/spec/hybrid_platforms_conductor_test/api/services_handler/deploy_allowed_spec.rb +38 -34
  206. data/spec/hybrid_platforms_conductor_test/api/services_handler/log_info_spec.rb +11 -9
  207. data/spec/hybrid_platforms_conductor_test/api/services_handler/package_spec.rb +193 -171
  208. data/spec/hybrid_platforms_conductor_test/api/services_handler/parse_deploy_output_spec.rb +66 -54
  209. data/spec/hybrid_platforms_conductor_test/api/services_handler/prepare_for_deploy_spec.rb +147 -133
  210. data/spec/hybrid_platforms_conductor_test/api/tests_runner/common_spec.rb +69 -49
  211. data/spec/hybrid_platforms_conductor_test/api/tests_runner/global_spec.rb +5 -4
  212. data/spec/hybrid_platforms_conductor_test/api/tests_runner/node_check_spec.rb +8 -5
  213. data/spec/hybrid_platforms_conductor_test/api/tests_runner/node_spec.rb +8 -5
  214. data/spec/hybrid_platforms_conductor_test/api/tests_runner/node_ssh_spec.rb +30 -27
  215. data/spec/hybrid_platforms_conductor_test/api/tests_runner/platform_spec.rb +12 -9
  216. data/spec/hybrid_platforms_conductor_test/api/tests_runner/reports_spec.rb +48 -47
  217. data/spec/hybrid_platforms_conductor_test/api/tests_runner/test_plugins/bitbucket_conf_spec.rb +5 -5
  218. data/spec/hybrid_platforms_conductor_test/api/tests_runner/test_plugins/github_ci_spec.rb +5 -5
  219. data/spec/hybrid_platforms_conductor_test/api/tests_runner/test_reports_plugins/confluence_spec.rb +5 -5
  220. data/spec/hybrid_platforms_conductor_test/cmdb_plugins/test_cmdb.rb +9 -9
  221. data/spec/hybrid_platforms_conductor_test/cmdb_plugins/{test_cmdb2.rb → test_cmdb_2.rb} +6 -6
  222. data/spec/hybrid_platforms_conductor_test/cmdb_plugins/test_cmdb_others.rb +3 -3
  223. data/spec/hybrid_platforms_conductor_test/cmdb_plugins/{test_cmdb_others2.rb → test_cmdb_others_2.rb} +2 -2
  224. data/spec/hybrid_platforms_conductor_test/docs_spec.rb +1 -1
  225. data/spec/hybrid_platforms_conductor_test/executables/{check-node_spec.rb → check_node_spec.rb} +4 -6
  226. data/spec/hybrid_platforms_conductor_test/executables/deploy_spec.rb +4 -6
  227. data/spec/hybrid_platforms_conductor_test/executables/get_impacted_nodes_spec.rb +76 -77
  228. data/spec/hybrid_platforms_conductor_test/executables/last_deploys_spec.rb +159 -113
  229. data/spec/hybrid_platforms_conductor_test/executables/nodes_to_deploy_spec.rb +299 -160
  230. data/spec/hybrid_platforms_conductor_test/executables/options/actions_executor_spec.rb +4 -6
  231. data/spec/hybrid_platforms_conductor_test/executables/options/cmd_runner_spec.rb +3 -5
  232. data/spec/hybrid_platforms_conductor_test/executables/options/common_spec.rb +8 -8
  233. data/spec/hybrid_platforms_conductor_test/executables/options/deployer_spec.rb +12 -196
  234. data/spec/hybrid_platforms_conductor_test/executables/options/nodes_handler_spec.rb +9 -10
  235. data/spec/hybrid_platforms_conductor_test/executables/options/nodes_selectors_spec.rb +9 -10
  236. data/spec/hybrid_platforms_conductor_test/executables/options/reports_handler_spec.rb +1 -1
  237. data/spec/hybrid_platforms_conductor_test/executables/options/tests_runner_spec.rb +22 -22
  238. data/spec/hybrid_platforms_conductor_test/executables/report_spec.rb +22 -16
  239. data/spec/hybrid_platforms_conductor_test/executables/run_spec.rb +32 -32
  240. data/spec/hybrid_platforms_conductor_test/executables/ssh_config_spec.rb +7 -9
  241. data/spec/hybrid_platforms_conductor_test/executables/test_spec.rb +3 -5
  242. data/spec/hybrid_platforms_conductor_test/helpers/actions_executor_helpers.rb +2 -2
  243. data/spec/hybrid_platforms_conductor_test/helpers/cmd_runner_helpers.rb +4 -3
  244. data/spec/hybrid_platforms_conductor_test/helpers/cmdb_helpers.rb +2 -2
  245. data/spec/hybrid_platforms_conductor_test/helpers/config_helpers.rb +1 -1
  246. data/spec/hybrid_platforms_conductor_test/helpers/connector_ssh_helpers.rb +12 -13
  247. data/spec/hybrid_platforms_conductor_test/helpers/deployer_helpers.rb +245 -56
  248. data/spec/hybrid_platforms_conductor_test/helpers/executables_helpers.rb +11 -11
  249. data/spec/hybrid_platforms_conductor_test/helpers/nodes_handler_helpers.rb +1 -1
  250. data/spec/hybrid_platforms_conductor_test/helpers/platforms_handler_helpers.rb +39 -28
  251. data/spec/hybrid_platforms_conductor_test/helpers/plugins_helpers.rb +1 -1
  252. data/spec/hybrid_platforms_conductor_test/helpers/provisioner_proxmox_helpers.rb +86 -111
  253. data/spec/hybrid_platforms_conductor_test/helpers/reports_handler_helpers.rb +1 -1
  254. data/spec/hybrid_platforms_conductor_test/helpers/serverless_chef_helpers.rb +3 -3
  255. data/spec/hybrid_platforms_conductor_test/helpers/services_handler_helpers.rb +1 -1
  256. data/spec/hybrid_platforms_conductor_test/helpers/tests_runner_helpers.rb +1 -1
  257. data/spec/hybrid_platforms_conductor_test/mocked_lib/my_test_gem/hpc_plugins/test_plugin_type/{test_plugin_id1.rb → test_plugin_id_1.rb} +0 -0
  258. data/spec/hybrid_platforms_conductor_test/mocked_lib/my_test_gem/hpc_plugins/test_plugin_type/{test_plugin_id2.rb → test_plugin_id_2.rb} +0 -0
  259. data/spec/hybrid_platforms_conductor_test/mocked_lib/my_test_gem2/sub_dir/hpc_plugins/test_plugin_type/{test_plugin_id3.rb → test_plugin_id_3.rb} +0 -0
  260. data/spec/hybrid_platforms_conductor_test/mocked_lib/my_test_gem2/sub_dir/hpc_plugins/{test_plugin_type2/test_plugin_id4.rb → test_plugin_type_2/test_plugin_id_4.rb} +0 -0
  261. data/spec/hybrid_platforms_conductor_test/platform_handler_plugins/test.rb +1 -1
  262. data/spec/hybrid_platforms_conductor_test/platform_handler_plugins/{test2.rb → test_2.rb} +0 -0
  263. data/spec/hybrid_platforms_conductor_test/rubocop_spec.rb +31 -0
  264. data/spec/hybrid_platforms_conductor_test/serverless_chef_repositories/1_node/nodes/node.json +3 -3
  265. data/spec/hybrid_platforms_conductor_test/serverless_chef_repositories/data_bags/nodes/node.json +3 -3
  266. data/spec/hybrid_platforms_conductor_test/serverless_chef_repositories/recipes/cookbooks/test_cookbook_2/libraries/default.rb +1 -0
  267. data/spec/hybrid_platforms_conductor_test/serverless_chef_repositories/several_cookbooks/other_cookbooks/test_cookbook_2/libraries/default.rb +1 -0
  268. data/spec/hybrid_platforms_conductor_test/shared_examples/deployer.rb +952 -0
  269. data/spec/hybrid_platforms_conductor_test/test_connector.rb +3 -3
  270. data/spec/hybrid_platforms_conductor_test/test_log_no_read_plugin.rb +84 -0
  271. data/spec/hybrid_platforms_conductor_test/test_log_plugin.rb +105 -0
  272. data/spec/hybrid_platforms_conductor_test/test_plugins/global.rb +1 -0
  273. data/spec/hybrid_platforms_conductor_test/test_plugins/node.rb +1 -0
  274. data/spec/hybrid_platforms_conductor_test/test_plugins/node_check.rb +1 -0
  275. data/spec/hybrid_platforms_conductor_test/test_plugins/platform.rb +1 -0
  276. data/spec/hybrid_platforms_conductor_test/test_plugins/several_checks.rb +2 -2
  277. data/spec/hybrid_platforms_conductor_test/test_secrets_reader_plugin.rb +45 -0
  278. data/spec/hybrid_platforms_conductor_test/tests_report_plugin.rb +5 -6
  279. data/spec/spec_helper.rb +17 -18
  280. data/tools/check_md +16 -20
  281. data/tools/generate_mermaid +1 -1
  282. metadata +195 -144
  283. data/spec/hybrid_platforms_conductor_test/helpers/deployer_test_helpers.rb +0 -916
@@ -40,7 +40,7 @@ describe HybridPlatformsConductor::HpcPlugins::Provisioner::Podman do
40
40
 
41
41
  it 'creates an instance' do
42
42
  with_test_podman_platform do |instance, repository|
43
- with_cmd_runner_mocked([
43
+ with_cmd_runner_mocked [
44
44
  ['whoami', proc { [0, 'test_user', ''] }],
45
45
  [
46
46
  "cd #{repository}/docker_image && sudo podman build --tag hpc_image_test_image --security-opt seccomp=/usr/share/containers/seccomp.json --cgroup-manager=cgroupfs .",
@@ -54,7 +54,7 @@ describe HybridPlatformsConductor::HpcPlugins::Provisioner::Podman do
54
54
  'sudo podman container create --name hpc_container_node_test hpc_image_test_image',
55
55
  proc { [0, '', ''] }
56
56
  ]
57
- ]) do
57
+ ] do
58
58
  instance.create
59
59
  end
60
60
  end
@@ -62,7 +62,7 @@ describe HybridPlatformsConductor::HpcPlugins::Provisioner::Podman do
62
62
 
63
63
  it 'creates an instance as root' do
64
64
  with_test_podman_platform do |instance, repository|
65
- with_cmd_runner_mocked([
65
+ with_cmd_runner_mocked [
66
66
  ['whoami', proc { [0, 'root', ''] }],
67
67
  [
68
68
  "cd #{repository}/docker_image && podman build --tag hpc_image_test_image --security-opt seccomp=/usr/share/containers/seccomp.json --cgroup-manager=cgroupfs .",
@@ -76,7 +76,7 @@ describe HybridPlatformsConductor::HpcPlugins::Provisioner::Podman do
76
76
  'podman container create --name hpc_container_node_test hpc_image_test_image',
77
77
  proc { [0, '', ''] }
78
78
  ]
79
- ]) do
79
+ ] do
80
80
  instance.create
81
81
  end
82
82
  end
@@ -84,7 +84,7 @@ describe HybridPlatformsConductor::HpcPlugins::Provisioner::Podman do
84
84
 
85
85
  it 'reuses an instance already created' do
86
86
  with_test_podman_platform do |instance, repository|
87
- with_cmd_runner_mocked([
87
+ with_cmd_runner_mocked [
88
88
  ['whoami', proc { [0, 'test_user', ''] }],
89
89
  [
90
90
  "cd #{repository}/docker_image && sudo podman build --tag hpc_image_test_image --security-opt seccomp=/usr/share/containers/seccomp.json --cgroup-manager=cgroupfs .",
@@ -94,7 +94,7 @@ describe HybridPlatformsConductor::HpcPlugins::Provisioner::Podman do
94
94
  /^sudo podman container list --all | grep hpc_container_node_test_\d+_\d+$/,
95
95
  proc { [0, "062ede10d1c0 localhost/hpc_image_debian_9:latest /usr/sbin/sshd -D 7 days ago Exited (0) 6 days ago hpc_container_node_test_\n", ''] }
96
96
  ]
97
- ]) do
97
+ ] do
98
98
  instance.create
99
99
  end
100
100
  end
@@ -102,7 +102,7 @@ describe HybridPlatformsConductor::HpcPlugins::Provisioner::Podman do
102
102
 
103
103
  it 'starts an instance' do
104
104
  with_test_podman_platform do |instance, repository|
105
- with_cmd_runner_mocked([
105
+ with_cmd_runner_mocked [
106
106
  ['whoami', proc { [0, 'test_user', ''] }],
107
107
  [
108
108
  "cd #{repository}/docker_image && sudo podman build --tag hpc_image_test_image --security-opt seccomp=/usr/share/containers/seccomp.json --cgroup-manager=cgroupfs .",
@@ -113,7 +113,7 @@ describe HybridPlatformsConductor::HpcPlugins::Provisioner::Podman do
113
113
  proc { [0, "062ede10d1c0 localhost/hpc_image_debian_9:latest /usr/sbin/sshd -D 7 days ago Exited (0) 6 days ago hpc_container_node_test_\n", ''] }
114
114
  ],
115
115
  ['sudo podman container start --cgroup-manager=cgroupfs hpc_container_node_test', proc { [0, '', ''] }]
116
- ]) do
116
+ ] do
117
117
  instance.create
118
118
  instance.start
119
119
  end
@@ -122,7 +122,7 @@ describe HybridPlatformsConductor::HpcPlugins::Provisioner::Podman do
122
122
 
123
123
  it 'stops an instance' do
124
124
  with_test_podman_platform do |instance, repository|
125
- with_cmd_runner_mocked([
125
+ with_cmd_runner_mocked [
126
126
  ['whoami', proc { [0, 'test_user', ''] }],
127
127
  [
128
128
  "cd #{repository}/docker_image && sudo podman build --tag hpc_image_test_image --security-opt seccomp=/usr/share/containers/seccomp.json --cgroup-manager=cgroupfs .",
@@ -134,7 +134,7 @@ describe HybridPlatformsConductor::HpcPlugins::Provisioner::Podman do
134
134
  ],
135
135
  ['sudo podman container start --cgroup-manager=cgroupfs hpc_container_node_test', proc { [0, '', ''] }],
136
136
  ['sudo podman container stop hpc_container_node_test', proc { [0, '', ''] }]
137
- ]) do
137
+ ] do
138
138
  instance.create
139
139
  instance.start
140
140
  instance.stop
@@ -144,7 +144,7 @@ describe HybridPlatformsConductor::HpcPlugins::Provisioner::Podman do
144
144
 
145
145
  it 'destroys an instance' do
146
146
  with_test_podman_platform do |instance, repository|
147
- with_cmd_runner_mocked([
147
+ with_cmd_runner_mocked [
148
148
  ['whoami', proc { [0, 'test_user', ''] }],
149
149
  [
150
150
  "cd #{repository}/docker_image && sudo podman build --tag hpc_image_test_image --security-opt seccomp=/usr/share/containers/seccomp.json --cgroup-manager=cgroupfs .",
@@ -155,7 +155,7 @@ describe HybridPlatformsConductor::HpcPlugins::Provisioner::Podman do
155
155
  proc { [0, "062ede10d1c0 localhost/hpc_image_debian_9:latest /usr/sbin/sshd -D 7 days ago Exited (0) 6 days ago hpc_container_node_test_\n", ''] }
156
156
  ],
157
157
  ['sudo podman container rm hpc_container_node_test', proc { [0, '', ''] }]
158
- ]) do
158
+ ] do
159
159
  instance.create
160
160
  instance.destroy
161
161
  end
@@ -163,14 +163,14 @@ describe HybridPlatformsConductor::HpcPlugins::Provisioner::Podman do
163
163
  end
164
164
 
165
165
  it 'gets the status of a missing instance' do
166
- with_test_podman_platform do |instance, repository|
166
+ with_test_podman_platform do |instance|
167
167
  expect(instance.state).to eq :missing
168
168
  end
169
169
  end
170
170
 
171
171
  it 'gets the status of a created instance' do
172
172
  with_test_podman_platform do |instance, repository|
173
- with_cmd_runner_mocked([
173
+ with_cmd_runner_mocked [
174
174
  ['whoami', proc { [0, 'test_user', ''] }],
175
175
  [
176
176
  "cd #{repository}/docker_image && sudo podman build --tag hpc_image_test_image --security-opt seccomp=/usr/share/containers/seccomp.json --cgroup-manager=cgroupfs .",
@@ -181,7 +181,7 @@ describe HybridPlatformsConductor::HpcPlugins::Provisioner::Podman do
181
181
  proc { [0, "062ede10d1c0 localhost/hpc_image_debian_9:latest /usr/sbin/sshd -D 7 days ago Exited (0) 6 days ago hpc_container_node_test_\n", ''] }
182
182
  ],
183
183
  ['sudo podman container inspect hpc_container_node_test', proc { [0, '[{"State":{"Status": "created"}}]', ''] }]
184
- ]) do
184
+ ] do
185
185
  instance.create
186
186
  expect(instance.state).to eq :created
187
187
  end
@@ -190,7 +190,7 @@ describe HybridPlatformsConductor::HpcPlugins::Provisioner::Podman do
190
190
 
191
191
  it 'gets the IP of a created instance' do
192
192
  with_test_podman_platform do |instance, repository|
193
- with_cmd_runner_mocked([
193
+ with_cmd_runner_mocked [
194
194
  ['whoami', proc { [0, 'test_user', ''] }],
195
195
  [
196
196
  "cd #{repository}/docker_image && sudo podman build --tag hpc_image_test_image --security-opt seccomp=/usr/share/containers/seccomp.json --cgroup-manager=cgroupfs .",
@@ -201,7 +201,7 @@ describe HybridPlatformsConductor::HpcPlugins::Provisioner::Podman do
201
201
  proc { [0, "062ede10d1c0 localhost/hpc_image_debian_9:latest /usr/sbin/sshd -D 7 days ago Exited (0) 6 days ago hpc_container_node_test_\n", ''] }
202
202
  ],
203
203
  ['sudo podman container inspect hpc_container_node_test | grep IPAddress', proc { [0, ' "IPAddress": "192.168.42.42",', ''] }]
204
- ]) do
204
+ ] do
205
205
  instance.create
206
206
  expect(instance.ip).to eq '192.168.42.42'
207
207
  end
@@ -2,11 +2,11 @@ require 'hybrid_platforms_conductor/hpc_plugins/provisioner/proxmox'
2
2
 
3
3
  describe HybridPlatformsConductor::HpcPlugins::Provisioner::Proxmox do
4
4
 
5
- context 'checking Config DSL extensions' do
5
+ context 'when checking Config DSL extensions' do
6
6
 
7
7
  it 'declares proxmox configuratin in Config DSL' do
8
- with_repository do |repository|
9
- platforms = <<~EOS
8
+ with_repository do
9
+ platforms = <<~EO_CONFIG
10
10
  proxmox(
11
11
  api_url: 'https://my-proxmox.my-domain.com:8006',
12
12
  sync_node: 'test_node',
@@ -60,7 +60,7 @@ describe HybridPlatformsConductor::HpcPlugins::Provisioner::Proxmox do
60
60
  },
61
61
  default_timeout: 666
62
62
  )
63
- EOS
63
+ EO_CONFIG
64
64
  with_platforms platforms do
65
65
  expect(test_config.proxmox_servers).to eq [
66
66
  {
@@ -2,7 +2,7 @@ require 'hybrid_platforms_conductor/hpc_plugins/provisioner/proxmox'
2
2
 
3
3
  describe HybridPlatformsConductor::HpcPlugins::Provisioner::Proxmox do
4
4
 
5
- context 'checking containers creation' do
5
+ context 'when checking containers creation' do
6
6
 
7
7
  it 'creates an instance' do
8
8
  with_test_proxmox_platform do |instance|
@@ -11,7 +11,7 @@ describe HybridPlatformsConductor::HpcPlugins::Provisioner::Proxmox do
11
11
  mock_proxmox_to_get_nodes_info
12
12
  ]
13
13
  instance.create
14
- expect(@proxmox_create_options).to eq({
14
+ expect(proxmox_create_options).to eq(
15
15
  'cores' => 2,
16
16
  'cpulimit' => 2,
17
17
  'description' => "===== HPC info =====\nnode: node\nenvironment: test\ndebug: false\n",
@@ -23,7 +23,7 @@ describe HybridPlatformsConductor::HpcPlugins::Provisioner::Proxmox do
23
23
  'password' => 'root_pwd',
24
24
  'rootfs' => 'local-lvm:10',
25
25
  'searchdomain' => 'my-domain.com'
26
- })
26
+ )
27
27
  end
28
28
  end
29
29
 
@@ -39,7 +39,7 @@ describe HybridPlatformsConductor::HpcPlugins::Provisioner::Proxmox do
39
39
  expected_file_id: 'node_really_big_environment_name_that_will_exceed_for_sure_the_limit_of_hostnames_really_big_environment_name_that_will_exceed_for_sure_the_limit_of_hostnames_really_big_environment_name_that_will_exceed_for_sure_the_limit_of_hostnam-258ca1fc'
40
40
  )
41
41
  instance.create
42
- expect(@proxmox_create_options['hostname']).to eq expected_hostname
42
+ expect(proxmox_create_options['hostname']).to eq expected_hostname
43
43
  end
44
44
  end
45
45
 
@@ -54,7 +54,7 @@ describe HybridPlatformsConductor::HpcPlugins::Provisioner::Proxmox do
54
54
  expected_sudo: false
55
55
  )
56
56
  instance.create
57
- expect(@proxmox_create_options).to eq({
57
+ expect(proxmox_create_options).to eq(
58
58
  'cores' => 2,
59
59
  'cpulimit' => 2,
60
60
  'description' => "===== HPC info =====\nnode: node\nenvironment: test\ndebug: false\n",
@@ -66,7 +66,7 @@ describe HybridPlatformsConductor::HpcPlugins::Provisioner::Proxmox do
66
66
  'password' => 'root_pwd',
67
67
  'rootfs' => 'local-lvm:10',
68
68
  'searchdomain' => 'my-domain.com'
69
- })
69
+ )
70
70
  end
71
71
  end
72
72
 
@@ -110,7 +110,8 @@ describe HybridPlatformsConductor::HpcPlugins::Provisioner::Proxmox do
110
110
 
111
111
  it 'fails to create an instance when the reserve_proxmox_container sync node ends in error' do
112
112
  with_test_proxmox_platform do |instance|
113
- mock_proxmox_calls_with([
113
+ mock_proxmox_calls_with(
114
+ [
114
115
  # 1 - The info on existing containers
115
116
  mock_proxmox_to_get_nodes_info
116
117
  ],
@@ -121,13 +122,15 @@ describe HybridPlatformsConductor::HpcPlugins::Provisioner::Proxmox do
121
122
  end
122
123
 
123
124
  it 'creates an instance using resources defined for a given node' do
124
- with_test_proxmox_platform(node_metadata: {
125
- deploy_resources_min: {
126
- cpus: 24,
127
- ram_mb: 4096,
128
- disk_gb: 20
125
+ with_test_proxmox_platform(
126
+ node_metadata: {
127
+ deploy_resources_min: {
128
+ cpus: 24,
129
+ ram_mb: 4096,
130
+ disk_gb: 20
131
+ }
129
132
  }
130
- }) do |instance|
133
+ ) do |instance|
131
134
  mock_proxmox_calls_with(
132
135
  [
133
136
  # 1 - The info on existing containers
@@ -135,7 +138,7 @@ describe HybridPlatformsConductor::HpcPlugins::Provisioner::Proxmox do
135
138
  ]
136
139
  )
137
140
  instance.create
138
- expect(@proxmox_create_options).to eq({
141
+ expect(proxmox_create_options).to eq(
139
142
  'cores' => 24,
140
143
  'cpulimit' => 24,
141
144
  'description' => "===== HPC info =====\nnode: node\nenvironment: test\ndebug: false\n",
@@ -147,7 +150,7 @@ describe HybridPlatformsConductor::HpcPlugins::Provisioner::Proxmox do
147
150
  'password' => 'root_pwd',
148
151
  'rootfs' => 'local-lvm:20',
149
152
  'searchdomain' => 'my-domain.com'
150
- })
153
+ )
151
154
  end
152
155
  end
153
156
 
@@ -164,23 +167,19 @@ describe HybridPlatformsConductor::HpcPlugins::Provisioner::Proxmox do
164
167
  }
165
168
  ],
166
169
  extra_expects: proc do |proxmox|
167
- expect(proxmox).to receive(:get).with('nodes/pve_node_name/lxc') do
168
- [
169
- {
170
- 'vmid' => '1042'
171
- }
172
- ]
173
- end
174
- expect(proxmox).to receive(:get).with('nodes/pve_node_name/lxc/1042/config') do
170
+ expect(proxmox).to receive(:get).with('nodes/pve_node_name/lxc').and_return [
175
171
  {
176
- 'net0' => 'ip=192.168.0.101/32',
177
- 'description' => <<~EOS
178
- ===== HPC info =====
179
- node: node
180
- environment: test
181
- EOS
172
+ 'vmid' => '1042'
182
173
  }
183
- end
174
+ ]
175
+ expect(proxmox).to receive(:get).with('nodes/pve_node_name/lxc/1042/config').and_return(
176
+ 'net0' => 'ip=192.168.0.101/32',
177
+ 'description' => <<~EO_DESCRIPTION
178
+ ===== HPC info =====
179
+ node: node
180
+ environment: test
181
+ EO_DESCRIPTION
182
+ )
184
183
  end
185
184
  )
186
185
  ],
@@ -236,22 +235,18 @@ describe HybridPlatformsConductor::HpcPlugins::Provisioner::Proxmox do
236
235
  }
237
236
  ],
238
237
  extra_expects: proc do |proxmox|
239
- expect(proxmox).to receive(:get).with('nodes/pve_node_name/lxc') do
240
- [
241
- {
242
- 'vmid' => '1042'
243
- }
244
- ]
245
- end
246
- expect(proxmox).to receive(:get).with('nodes/pve_node_name/lxc/1042/config') do
238
+ expect(proxmox).to receive(:get).with('nodes/pve_node_name/lxc').and_return [
247
239
  {
248
- 'description' => <<~EOS
249
- ===== HPC info =====
250
- node: node
251
- environment: other_environment
252
- EOS
240
+ 'vmid' => '1042'
253
241
  }
254
- end
242
+ ]
243
+ expect(proxmox).to receive(:get).with('nodes/pve_node_name/lxc/1042/config').and_return(
244
+ 'description' => <<~EO_DESCRIPTION
245
+ ===== HPC info =====
246
+ node: node
247
+ environment: other_environment
248
+ EO_DESCRIPTION
249
+ )
255
250
  end
256
251
  )
257
252
  ]
@@ -271,13 +266,11 @@ describe HybridPlatformsConductor::HpcPlugins::Provisioner::Proxmox do
271
266
  }
272
267
  ],
273
268
  extra_expects: proc do |proxmox|
274
- expect(proxmox).to receive(:get).with('nodes/pve_node_name/lxc') do
275
- [
276
- {
277
- 'vmid' => '100'
278
- }
279
- ]
280
- end
269
+ expect(proxmox).to receive(:get).with('nodes/pve_node_name/lxc').and_return [
270
+ {
271
+ 'vmid' => '100'
272
+ }
273
+ ]
281
274
  end
282
275
  )
283
276
  ]
@@ -2,7 +2,7 @@ require 'hybrid_platforms_conductor/hpc_plugins/provisioner/proxmox'
2
2
 
3
3
  describe HybridPlatformsConductor::HpcPlugins::Provisioner::Proxmox do
4
4
 
5
- context 'checking containers destroy' do
5
+ context 'when checking containers destroy' do
6
6
 
7
7
  it 'destroys an instance' do
8
8
  with_test_proxmox_platform do |instance|
@@ -15,11 +15,11 @@ describe HybridPlatformsConductor::HpcPlugins::Provisioner::Proxmox do
15
15
  )
16
16
  instance.create
17
17
  instance.destroy
18
- expect(@proxmox_destroy_options).to eq({
18
+ expect(proxmox_destroy_options).to eq(
19
19
  'vm_id' => 1024,
20
20
  'environment' => 'test',
21
21
  'node' => 'node'
22
- })
22
+ )
23
23
  end
24
24
  end
25
25
 
@@ -2,7 +2,7 @@ require 'hybrid_platforms_conductor/hpc_plugins/provisioner/proxmox'
2
2
 
3
3
  describe HybridPlatformsConductor::HpcPlugins::Provisioner::Proxmox do
4
4
 
5
- context 'checking containers IP retrieval' do
5
+ context 'when checking containers IP retrieval' do
6
6
 
7
7
  it 'returns the IP of a newly created instance' do
8
8
  with_test_proxmox_platform do |instance|
@@ -28,23 +28,19 @@ describe HybridPlatformsConductor::HpcPlugins::Provisioner::Proxmox do
28
28
  }
29
29
  ],
30
30
  extra_expects: proc do |proxmox|
31
- expect(proxmox).to receive(:get).with('nodes/pve_node_name/lxc') do
32
- [
33
- {
34
- 'vmid' => '1042'
35
- }
36
- ]
37
- end
38
- expect(proxmox).to receive(:get).with('nodes/pve_node_name/lxc/1042/config') do
31
+ expect(proxmox).to receive(:get).with('nodes/pve_node_name/lxc').and_return [
39
32
  {
40
- 'net0' => 'ip=192.168.42.101/32',
41
- 'description' => <<~EOS
42
- ===== HPC info =====
43
- node: node
44
- environment: test
45
- EOS
33
+ 'vmid' => '1042'
46
34
  }
47
- end
35
+ ]
36
+ expect(proxmox).to receive(:get).with('nodes/pve_node_name/lxc/1042/config').and_return(
37
+ 'net0' => 'ip=192.168.42.101/32',
38
+ 'description' => <<~EO_DESCRIPTION
39
+ ===== HPC info =====
40
+ node: node
41
+ environment: test
42
+ EO_DESCRIPTION
43
+ )
48
44
  end
49
45
  )
50
46
  ],
@@ -2,15 +2,17 @@ require 'hybrid_platforms_conductor/hpc_plugins/provisioner/proxmox'
2
2
 
3
3
  describe HybridPlatformsConductor::HpcPlugins::Provisioner::Proxmox do
4
4
 
5
- context 'checking the reserve_proxmox_container sync tool' do
5
+ context 'when checking the reserve_proxmox_container sync tool' do
6
6
 
7
- context 'checking how VMs are being destroyed' do
7
+ context 'when checking how VMs are being destroyed' do
8
8
 
9
9
  it 'releases a previously reserved VM that has been reserved and is running' do
10
10
  with_sync_node do
11
- mock_proxmox(mocked_pve_nodes: {
12
- 'pve_node_name' => { lxc_containers: { 1042 => { status: 'running', creation_date: (Time.now - 60).utc, node: 'node', environment: 'test_env' } } }
13
- })
11
+ mock_proxmox(
12
+ mocked_pve_nodes: {
13
+ 'pve_node_name' => { lxc_containers: { 1042 => { status: 'running', creation_date: (Time.now - 60).utc, node: 'node', environment: 'test_env' } } }
14
+ }
15
+ )
14
16
  expect(call_release_proxmox_container(1042, 'node', 'test_env')).to eq({ pve_node: 'pve_node_name' })
15
17
  expect_proxmox_actions_to_be [
16
18
  [:post, 'nodes/pve_node_name/lxc/1042/status/stop'],
@@ -21,9 +23,11 @@ describe HybridPlatformsConductor::HpcPlugins::Provisioner::Proxmox do
21
23
 
22
24
  it 'releases a previously reserved VM that has been reserved and is stopped' do
23
25
  with_sync_node do
24
- mock_proxmox(mocked_pve_nodes: {
25
- 'pve_node_name' => { lxc_containers: { 1042 => { status: 'stopped', creation_date: (Time.now - 60).utc, node: 'node', environment: 'test_env' } } }
26
- })
26
+ mock_proxmox(
27
+ mocked_pve_nodes: {
28
+ 'pve_node_name' => { lxc_containers: { 1042 => { status: 'stopped', creation_date: (Time.now - 60).utc, node: 'node', environment: 'test_env' } } }
29
+ }
30
+ )
27
31
  expect(call_release_proxmox_container(1042, 'node', 'test_env')).to eq({ pve_node: 'pve_node_name' })
28
32
  expect_proxmox_actions_to_be [
29
33
  [:delete, 'nodes/pve_node_name/lxc/1042']
@@ -41,12 +45,16 @@ describe HybridPlatformsConductor::HpcPlugins::Provisioner::Proxmox do
41
45
 
42
46
  it 'releases a previously reserved VM without impacting other VMs' do
43
47
  with_sync_node do
44
- mock_proxmox(mocked_pve_nodes: {
45
- 'pve_node_name' => { lxc_containers: {
46
- 1042 => { status: 'running', creation_date: (Time.now - 60).utc, node: 'node', environment: 'test_env' },
47
- 1043 => { status: 'running', creation_date: (Time.now - 60).utc, node: 'node', environment: 'test_env' }
48
+ mock_proxmox(
49
+ mocked_pve_nodes: {
50
+ 'pve_node_name' => {
51
+ lxc_containers: {
52
+ 1042 => { status: 'running', creation_date: (Time.now - 60).utc, node: 'node', environment: 'test_env' },
53
+ 1043 => { status: 'running', creation_date: (Time.now - 60).utc, node: 'node', environment: 'test_env' }
54
+ }
55
+ }
48
56
  }
49
- } })
57
+ )
50
58
  expect(call_release_proxmox_container(1042, 'node', 'test_env')).to eq({ pve_node: 'pve_node_name' })
51
59
  expect_proxmox_actions_to_be [
52
60
  [:post, 'nodes/pve_node_name/lxc/1042/status/stop'],
@@ -57,9 +65,11 @@ describe HybridPlatformsConductor::HpcPlugins::Provisioner::Proxmox do
57
65
 
58
66
  it 'does not release a previously reserved VM that has now a different node' do
59
67
  with_sync_node do
60
- mock_proxmox(mocked_pve_nodes: {
61
- 'pve_node_name' => { lxc_containers: { 1042 => { status: 'stopped', creation_date: (Time.now - 60).utc, node: 'node', environment: 'test_env' } } }
62
- })
68
+ mock_proxmox(
69
+ mocked_pve_nodes: {
70
+ 'pve_node_name' => { lxc_containers: { 1042 => { status: 'stopped', creation_date: (Time.now - 60).utc, node: 'node', environment: 'test_env' } } }
71
+ }
72
+ )
63
73
  expect(call_release_proxmox_container(1042, 'other_node', 'test_env')).to eq({})
64
74
  expect_proxmox_actions_to_be []
65
75
  end
@@ -67,9 +77,11 @@ describe HybridPlatformsConductor::HpcPlugins::Provisioner::Proxmox do
67
77
 
68
78
  it 'does not release a previously reserved VM that has now a different environment' do
69
79
  with_sync_node do
70
- mock_proxmox(mocked_pve_nodes: {
71
- 'pve_node_name' => { lxc_containers: { 1042 => { status: 'stopped', creation_date: (Time.now - 60).utc, node: 'node', environment: 'test_env' } } }
72
- })
80
+ mock_proxmox(
81
+ mocked_pve_nodes: {
82
+ 'pve_node_name' => { lxc_containers: { 1042 => { status: 'stopped', creation_date: (Time.now - 60).utc, node: 'node', environment: 'test_env' } } }
83
+ }
84
+ )
73
85
  expect(call_release_proxmox_container(1042, 'node', 'other_test_env')).to eq({})
74
86
  expect_proxmox_actions_to_be []
75
87
  end