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
@@ -1,10 +1,10 @@
1
1
  describe HybridPlatformsConductor::ActionsExecutor do
2
2
 
3
- context 'checking actions\' plugin scp' do
3
+ context 'when checking actions\' plugin scp' do
4
4
 
5
5
  it 'executes remote SCP' do
6
6
  with_test_platform_for_action_plugins do
7
- test_actions_executor.execute_actions('node' => { scp: { 'from' => 'to' } })
7
+ test_actions_executor.execute_actions({ 'node' => { scp: { 'from' => 'to' } } })
8
8
  expect(test_actions_executor.connector(:test_connector).calls).to eq [
9
9
  [:connectable_nodes_from, ['node']],
10
10
  [:with_connection_to, ['node'], { no_exception: true }],
@@ -32,10 +32,14 @@ describe HybridPlatformsConductor::ActionsExecutor do
32
32
 
33
33
  it 'executes remote SCP on several files' do
34
34
  with_test_platform_for_action_plugins do
35
- test_actions_executor.execute_actions('node' => { scp: {
36
- 'from1' => 'to1',
37
- 'from2' => 'to2'
38
- } })
35
+ test_actions_executor.execute_actions(
36
+ {
37
+ 'node' => { scp: {
38
+ 'from1' => 'to1',
39
+ 'from2' => 'to2'
40
+ } }
41
+ }
42
+ )
39
43
  expect(test_actions_executor.connector(:test_connector).calls).to eq [
40
44
  [:connectable_nodes_from, ['node']],
41
45
  [:with_connection_to, ['node'], { no_exception: true }],
@@ -47,10 +51,14 @@ describe HybridPlatformsConductor::ActionsExecutor do
47
51
 
48
52
  it 'executes remote SCP with sudo' do
49
53
  with_test_platform_for_action_plugins do
50
- test_actions_executor.execute_actions('node' => { scp: {
51
- 'from' => 'to',
52
- sudo: true
53
- } })
54
+ test_actions_executor.execute_actions(
55
+ {
56
+ 'node' => { scp: {
57
+ 'from' => 'to',
58
+ sudo: true
59
+ } }
60
+ }
61
+ )
54
62
  expect(test_actions_executor.connector(:test_connector).calls).to eq [
55
63
  [:connectable_nodes_from, ['node']],
56
64
  [:with_connection_to, ['node'], { no_exception: true }],
@@ -61,11 +69,15 @@ describe HybridPlatformsConductor::ActionsExecutor do
61
69
 
62
70
  it 'executes remote SCP with different owner and group' do
63
71
  with_test_platform_for_action_plugins do
64
- test_actions_executor.execute_actions('node' => { scp: {
65
- 'from' => 'to',
66
- owner: 'new_owner',
67
- group: 'new_group'
68
- } })
72
+ test_actions_executor.execute_actions(
73
+ {
74
+ 'node' => { scp: {
75
+ 'from' => 'to',
76
+ owner: 'new_owner',
77
+ group: 'new_group'
78
+ } }
79
+ }
80
+ )
69
81
  expect(test_actions_executor.connector(:test_connector).calls).to eq [
70
82
  [:connectable_nodes_from, ['node']],
71
83
  [:with_connection_to, ['node'], { no_exception: true }],
@@ -1,35 +1,33 @@
1
1
  describe HybridPlatformsConductor::ActionsExecutor do
2
2
 
3
- context 'checking actions handling' do
3
+ context 'when checking actions handling' do
4
4
 
5
5
  # Instantiate a test platform, with the test action registered in Actions Executor.
6
6
  #
7
7
  # Parameters::
8
- # * Proc: Code called with the environment ready
8
+ # * *block* (Proc): Code called with the environment ready
9
9
  # * Parameters::
10
10
  # * *repository* (String): Path to the repository
11
- def with_test_platform_for_actions
12
- with_test_platform_for_executor(nodes: { 'node1' => {}, 'node2' => {}, 'node3' => {} }) do |repository|
13
- yield repository
14
- end
11
+ def with_test_platform_for_actions(&block)
12
+ with_test_platform_for_executor(nodes: { 'node1' => {}, 'node2' => {}, 'node3' => {} }, &block)
15
13
  end
16
14
 
17
15
  it 'executes a simple action on 1 node' do
18
16
  with_test_platform_for_actions do
19
- test_actions_executor.execute_actions('node1' => { test_action: 'Action executed' })
17
+ test_actions_executor.execute_actions({ 'node1' => { test_action: 'Action executed' } })
20
18
  expect(action_executions).to eq [{ node: 'node1', message: 'Action executed' }]
21
19
  end
22
20
  end
23
21
 
24
22
  it 'fails to execute an unknown action' do
25
23
  with_test_platform_for_actions do
26
- expect { test_actions_executor.execute_actions('node1' => { unknown_action: 'Action executed' }) }.to raise_error(/Unknown action type unknown_action/)
24
+ expect { test_actions_executor.execute_actions({ 'node1' => { unknown_action: 'Action executed' } }) }.to raise_error(/Unknown action type unknown_action/)
27
25
  end
28
26
  end
29
27
 
30
28
  it 'executes a simple action on several nodes' do
31
29
  with_test_platform_for_actions do
32
- test_actions_executor.execute_actions(%w[node1 node2 node3] => { test_action: 'Action executed' })
30
+ test_actions_executor.execute_actions({ %w[node1 node2 node3] => { test_action: 'Action executed' } })
33
31
  expect(action_executions).to eq [
34
32
  { node: 'node1', message: 'Action executed' },
35
33
  { node: 'node2', message: 'Action executed' },
@@ -40,11 +38,15 @@ describe HybridPlatformsConductor::ActionsExecutor do
40
38
 
41
39
  it 'executes several actions on 1 node' do
42
40
  with_test_platform_for_actions do
43
- test_actions_executor.execute_actions('node1' => [
44
- { test_action: 'Action 1 executed' },
45
- { test_action: 'Action 2 executed' },
46
- { test_action: 'Action 3 executed' }
47
- ])
41
+ test_actions_executor.execute_actions(
42
+ {
43
+ 'node1' => [
44
+ { test_action: 'Action 1 executed' },
45
+ { test_action: 'Action 2 executed' },
46
+ { test_action: 'Action 3 executed' }
47
+ ]
48
+ }
49
+ )
48
50
  expect(action_executions).to eq [
49
51
  { node: 'node1', message: 'Action 1 executed' },
50
52
  { node: 'node1', message: 'Action 2 executed' },
@@ -56,9 +58,11 @@ describe HybridPlatformsConductor::ActionsExecutor do
56
58
  it 'executes different actions on several nodes' do
57
59
  with_test_platform_for_actions do
58
60
  test_actions_executor.execute_actions(
59
- 'node1' => { test_action: 'Action 1 executed' },
60
- 'node2' => { test_action: 'Action 2 executed' },
61
- 'node3' => { test_action: 'Action 3 executed' }
61
+ {
62
+ 'node1' => { test_action: 'Action 1 executed' },
63
+ 'node2' => { test_action: 'Action 2 executed' },
64
+ 'node3' => { test_action: 'Action 3 executed' }
65
+ }
62
66
  )
63
67
  expect(action_executions).to eq [
64
68
  { node: 'node1', message: 'Action 1 executed' },
@@ -71,29 +75,36 @@ describe HybridPlatformsConductor::ActionsExecutor do
71
75
  it 'executes several actions of different types' do
72
76
  with_test_platform_for_actions do
73
77
  actions_executed = []
74
- expect(test_actions_executor.execute_actions('node1' => [
75
- { ruby: proc do |stdout, stderr|
76
- stdout << 'action1_stdout '
77
- stderr << 'action1_stderr '
78
- actions_executed << 'action1'
79
- end },
80
- { bash: 'echo action2_stdout' },
81
- { ruby: proc do |stdout, stderr|
82
- stdout << 'action3_stdout'
83
- stderr << 'action3_stderr'
84
- actions_executed << 'action3'
85
- end }
86
- ])).to eq('node1' => [0, "action1_stdout action2_stdout\naction3_stdout", 'action1_stderr action3_stderr'])
78
+ expect(
79
+ test_actions_executor.execute_actions(
80
+ {
81
+ 'node1' => [
82
+ { ruby: proc do |stdout, stderr|
83
+ stdout << 'action1_stdout '
84
+ stderr << 'action1_stderr '
85
+ actions_executed << 'action1'
86
+ end },
87
+ { bash: 'echo action2_stdout' },
88
+ { ruby: proc do |stdout, stderr|
89
+ stdout << 'action3_stdout'
90
+ stderr << 'action3_stderr'
91
+ actions_executed << 'action3'
92
+ end }
93
+ ]
94
+ }
95
+ )
96
+ ).to eq('node1' => [0, "action1_stdout action2_stdout\naction3_stdout", 'action1_stderr action3_stderr'])
87
97
  expect(actions_executed).to eq %w[action1 action3]
88
98
  end
89
99
  end
90
100
 
91
101
  it 'executes several actions on 1 node specified using different selectors' do
92
102
  with_test_platform_for_actions do
93
- actions_executed = []
94
103
  test_actions_executor.execute_actions(
95
- 'node1' => { test_action: 'Action 1 executed' },
96
- '/node1/' => { test_action: 'Action 2 executed' }
104
+ {
105
+ 'node1' => { test_action: 'Action 1 executed' },
106
+ '/node1/' => { test_action: 'Action 2 executed' }
107
+ }
97
108
  )
98
109
  expect(action_executions).to eq [
99
110
  { node: 'node1', message: 'Action 1 executed' },
@@ -104,7 +115,7 @@ describe HybridPlatformsConductor::ActionsExecutor do
104
115
 
105
116
  it 'fails to execute an action on an unknown node' do
106
117
  with_test_platform_for_actions do
107
- expect { test_actions_executor.execute_actions('unknown_node' => { test_action: 'Action executed' }) }.to raise_error(RuntimeError, 'Unknown nodes: unknown_node')
118
+ expect { test_actions_executor.execute_actions({ 'unknown_node' => { test_action: 'Action executed' } }) }.to raise_error(RuntimeError, 'Unknown nodes: unknown_node')
108
119
  expect(action_executions).to eq []
109
120
  end
110
121
  end
@@ -125,11 +136,15 @@ describe HybridPlatformsConductor::ActionsExecutor do
125
136
 
126
137
  it 'returns errors without failing for actions having command issues' do
127
138
  with_test_platform_for_actions do
128
- expect(test_actions_executor.execute_actions(
129
- 'node1' => { test_action: { code: proc { |stdout| stdout << 'Action 1' } } },
130
- 'node2' => { test_action: { code: proc { raise HybridPlatformsConductor::CmdRunner::UnexpectedExitCodeError, 'Command returned 1' } } },
131
- 'node3' => { test_action: { code: proc { |stdout| stdout << 'Action 3' } } }
132
- )).to eq(
139
+ expect(
140
+ test_actions_executor.execute_actions(
141
+ {
142
+ 'node1' => { test_action: { code: proc { |stdout| stdout << 'Action 1' } } },
143
+ 'node2' => { test_action: { code: proc { raise HybridPlatformsConductor::CmdRunner::UnexpectedExitCodeError, 'Command returned 1' } } },
144
+ 'node3' => { test_action: { code: proc { |stdout| stdout << 'Action 3' } } }
145
+ }
146
+ )
147
+ ).to eq(
133
148
  'node1' => [0, 'Action 1', ''],
134
149
  'node2' => [:failed_command, '', "Command returned 1\n"],
135
150
  'node3' => [0, 'Action 3', '']
@@ -139,11 +154,15 @@ describe HybridPlatformsConductor::ActionsExecutor do
139
154
 
140
155
  it 'returns errors without failing for actions having timeout issues' do
141
156
  with_test_platform_for_actions do
142
- expect(test_actions_executor.execute_actions(
143
- 'node1' => { test_action: { code: proc { |stdout| stdout << 'Action 1' } } },
144
- 'node2' => { test_action: { code: proc { raise HybridPlatformsConductor::CmdRunner::TimeoutError } } },
145
- 'node3' => { test_action: { code: proc { |stdout| stdout << 'Action 3' } } }
146
- )).to eq(
157
+ expect(
158
+ test_actions_executor.execute_actions(
159
+ {
160
+ 'node1' => { test_action: { code: proc { |stdout| stdout << 'Action 1' } } },
161
+ 'node2' => { test_action: { code: proc { raise HybridPlatformsConductor::CmdRunner::TimeoutError } } },
162
+ 'node3' => { test_action: { code: proc { |stdout| stdout << 'Action 3' } } }
163
+ }
164
+ )
165
+ ).to eq(
147
166
  'node1' => [0, 'Action 1', ''],
148
167
  'node2' => [:timeout, '', ''],
149
168
  'node3' => [0, 'Action 3', '']
@@ -153,11 +172,15 @@ describe HybridPlatformsConductor::ActionsExecutor do
153
172
 
154
173
  it 'returns errors without failing for actions having connection issues' do
155
174
  with_test_platform_for_actions do
156
- expect(test_actions_executor.execute_actions(
157
- 'node1' => { test_action: { code: proc { |stdout| stdout << 'Action 1' } } },
158
- 'node2' => { test_action: { code: proc { raise HybridPlatformsConductor::ActionsExecutor::ConnectionError, 'Can\'t connect' } } },
159
- 'node3' => { test_action: { code: proc { |stdout| stdout << 'Action 3' } } }
160
- )).to eq(
175
+ expect(
176
+ test_actions_executor.execute_actions(
177
+ {
178
+ 'node1' => { test_action: { code: proc { |stdout| stdout << 'Action 1' } } },
179
+ 'node2' => { test_action: { code: proc { raise HybridPlatformsConductor::ActionsExecutor::ConnectionError, 'Can\'t connect' } } },
180
+ 'node3' => { test_action: { code: proc { |stdout| stdout << 'Action 3' } } }
181
+ }
182
+ )
183
+ ).to eq(
161
184
  'node1' => [0, 'Action 1', ''],
162
185
  'node2' => [:connection_error, '', "Can't connect\n"],
163
186
  'node3' => [0, 'Action 3', '']
@@ -167,11 +190,15 @@ describe HybridPlatformsConductor::ActionsExecutor do
167
190
 
168
191
  it 'returns errors without failing for actions having unhandled exceptions' do
169
192
  with_test_platform_for_actions do
170
- expect(test_actions_executor.execute_actions(
171
- 'node1' => { test_action: { code: proc { |stdout| stdout << 'Action 1' } } },
172
- 'node2' => { test_action: { code: proc { raise 'Strange error' } } },
173
- 'node3' => { test_action: { code: proc { |stdout| stdout << 'Action 3' } } }
174
- )).to eq(
193
+ expect(
194
+ test_actions_executor.execute_actions(
195
+ {
196
+ 'node1' => { test_action: { code: proc { |stdout| stdout << 'Action 1' } } },
197
+ 'node2' => { test_action: { code: proc { raise 'Strange error' } } },
198
+ 'node3' => { test_action: { code: proc { |stdout| stdout << 'Action 3' } } }
199
+ }
200
+ )
201
+ ).to eq(
175
202
  'node1' => [0, 'Action 1', ''],
176
203
  'node2' => [:failed_action, '', "Strange error\n"],
177
204
  'node3' => [0, 'Action 3', '']
@@ -182,11 +209,15 @@ describe HybridPlatformsConductor::ActionsExecutor do
182
209
  it 'returns errors without failing for actions on nodes having no connectors' do
183
210
  with_test_platform_for_actions do
184
211
  test_actions_executor.connector(:test_connector).accept_nodes = %w[node1 node3]
185
- expect(test_actions_executor.execute_actions(
186
- 'node1' => { test_action: { need_connector: true, code: proc { |stdout| stdout << 'Action 1' } } },
187
- 'node2' => { test_action: { need_connector: true, code: proc { |stdout| stdout << 'Action 2' } } },
188
- 'node3' => { test_action: { need_connector: true, code: proc { |stdout| stdout << 'Action 3' } } }
189
- )).to eq(
212
+ expect(
213
+ test_actions_executor.execute_actions(
214
+ {
215
+ 'node1' => { test_action: { need_connector: true, code: proc { |stdout| stdout << 'Action 1' } } },
216
+ 'node2' => { test_action: { need_connector: true, code: proc { |stdout| stdout << 'Action 2' } } },
217
+ 'node3' => { test_action: { need_connector: true, code: proc { |stdout| stdout << 'Action 3' } } }
218
+ }
219
+ )
220
+ ).to eq(
190
221
  'node1' => [0, 'Action 1', ''],
191
222
  'node2' => [:no_connector, '', 'Unable to get a connector to node2'],
192
223
  'node3' => [0, 'Action 3', '']
@@ -1,39 +1,39 @@
1
1
  describe HybridPlatformsConductor::ActionsExecutor do
2
2
 
3
- context 'checking connections handling' do
3
+ context 'when checking connections handling' do
4
4
 
5
5
  # Get a test platform to test connection, using the test_connector
6
6
  #
7
7
  # Parameters::
8
- # * Proc: Code called with platform setup
8
+ # * *block* (Proc): Code called with platform setup
9
9
  # * Parameters::
10
10
  # * *repository* (String): Repository where the platform has been setup
11
- def with_test_platform_for_connections
12
- with_test_platform_for_executor(nodes: {
13
- 'node1' => {},
14
- 'node2' => {},
15
- 'node3' => {},
16
- 'node4' => {}
17
- }) do |repository|
18
- yield repository
19
- end
11
+ def with_test_platform_for_connections(&block)
12
+ with_test_platform_for_executor(
13
+ nodes: {
14
+ 'node1' => {},
15
+ 'node2' => {},
16
+ 'node3' => {},
17
+ 'node4' => {}
18
+ }, &block
19
+ )
20
20
  end
21
21
 
22
22
  it 'connects on a node before executing actions needing connection' do
23
23
  with_test_platform_for_connections do
24
24
  test_actions_executor.connector(:test_connector).accept_nodes = ['node1']
25
- test_actions_executor.execute_actions('node1' => { test_action: { need_connector: true } })
25
+ test_actions_executor.execute_actions({ 'node1' => { test_action: { need_connector: true } } })
26
26
  expect(action_executions).to eq [{ node: 'node1', message: 'Action executed' }]
27
27
  expect(test_actions_executor.connector(:test_connector).calls).to eq [
28
- [:connectable_nodes_from, ['node1']],
29
- [:with_connection_to, ['node1'], { no_exception: true }]
28
+ [:connectable_nodes_from, ['node1']],
29
+ [:with_connection_to, ['node1'], { no_exception: true }]
30
30
  ]
31
31
  end
32
32
  end
33
33
 
34
34
  it 'returns an error when no connector can connect to the needed node' do
35
35
  with_test_platform_for_connections do
36
- expect(test_actions_executor.execute_actions('node1' => { test_action: { need_connector: true } })).to eq(
36
+ expect(test_actions_executor.execute_actions({ 'node1' => { test_action: { need_connector: true } } })).to eq(
37
37
  'node1' => [:no_connector, '', 'Unable to get a connector to node1']
38
38
  )
39
39
  end
@@ -42,7 +42,7 @@ describe HybridPlatformsConductor::ActionsExecutor do
42
42
  it 'connects on several nodes before executing actions needing connection' do
43
43
  with_test_platform_for_connections do
44
44
  test_actions_executor.connector(:test_connector).accept_nodes = %w[node1 node2 node3 node4]
45
- test_actions_executor.execute_actions(%w[node1 node2 node3 node4] => { test_action: { need_connector: true } })
45
+ test_actions_executor.execute_actions({ %w[node1 node2 node3 node4] => { test_action: { need_connector: true } } })
46
46
  expect(action_executions).to eq [
47
47
  { node: 'node1', message: 'Action executed' },
48
48
  { node: 'node2', message: 'Action executed' },
@@ -50,8 +50,8 @@ describe HybridPlatformsConductor::ActionsExecutor do
50
50
  { node: 'node4', message: 'Action executed' }
51
51
  ]
52
52
  expect(test_actions_executor.connector(:test_connector).calls).to eq [
53
- [:connectable_nodes_from, %w[node1 node2 node3 node4]],
54
- [:with_connection_to, %w[node1 node2 node3 node4], { no_exception: true }]
53
+ [:connectable_nodes_from, %w[node1 node2 node3 node4]],
54
+ [:with_connection_to, %w[node1 node2 node3 node4], { no_exception: true }]
55
55
  ]
56
56
  end
57
57
  end
@@ -60,15 +60,15 @@ describe HybridPlatformsConductor::ActionsExecutor do
60
60
  with_test_platform_for_connections do
61
61
  test_actions_executor.connector(:test_connector).accept_nodes = %w[node1 node2 node3 node4]
62
62
  test_actions_executor.connector(:test_connector).connected_nodes = %w[node1 node2 node4]
63
- test_actions_executor.execute_actions(%w[node1 node2 node3 node4] => { test_action: { need_connector: true } })
63
+ test_actions_executor.execute_actions({ %w[node1 node2 node3 node4] => { test_action: { need_connector: true } } })
64
64
  expect(action_executions).to eq [
65
65
  { node: 'node1', message: 'Action executed' },
66
66
  { node: 'node2', message: 'Action executed' },
67
67
  { node: 'node4', message: 'Action executed' }
68
68
  ]
69
69
  expect(test_actions_executor.connector(:test_connector).calls).to eq [
70
- [:connectable_nodes_from, %w[node1 node2 node3 node4]],
71
- [:with_connection_to, %w[node1 node2 node3 node4], { no_exception: true }]
70
+ [:connectable_nodes_from, %w[node1 node2 node3 node4]],
71
+ [:with_connection_to, %w[node1 node2 node3 node4], { no_exception: true }]
72
72
  ]
73
73
  end
74
74
  end
@@ -77,8 +77,10 @@ describe HybridPlatformsConductor::ActionsExecutor do
77
77
  with_test_platform_for_connections do
78
78
  test_actions_executor.connector(:test_connector).accept_nodes = %w[node1 node2 node3 node4]
79
79
  test_actions_executor.execute_actions(
80
- %w[node1 node3] => { test_action: { need_connector: true } },
81
- %w[node2 node4] => { test_action: { need_connector: false } }
80
+ {
81
+ %w[node1 node3] => { test_action: { need_connector: true } },
82
+ %w[node2 node4] => { test_action: { need_connector: false } }
83
+ }
82
84
  )
83
85
  expect(action_executions).to eq [
84
86
  { node: 'node1', message: 'Action executed' },
@@ -87,8 +89,8 @@ describe HybridPlatformsConductor::ActionsExecutor do
87
89
  { node: 'node4', message: 'Action executed' }
88
90
  ]
89
91
  expect(test_actions_executor.connector(:test_connector).calls).to eq [
90
- [:connectable_nodes_from, %w[node1 node3]],
91
- [:with_connection_to, %w[node1 node3], { no_exception: true }]
92
+ [:connectable_nodes_from, %w[node1 node3]],
93
+ [:with_connection_to, %w[node1 node3], { no_exception: true }]
92
94
  ]
93
95
  end
94
96
  end
@@ -96,7 +98,7 @@ describe HybridPlatformsConductor::ActionsExecutor do
96
98
  it 'does not ask for any connection if actions don\'t need remote' do
97
99
  with_test_platform_for_connections do
98
100
  test_actions_executor.connector(:test_connector).accept_nodes = %w[node1 node2 node3 node4]
99
- test_actions_executor.execute_actions(%w[node1 node2 node3 node4] => { test_action: { need_connector: false } })
101
+ test_actions_executor.execute_actions({ %w[node1 node2 node3 node4] => { test_action: { need_connector: false } } })
100
102
  expect(action_executions).to eq [
101
103
  { node: 'node1', message: 'Action executed' },
102
104
  { node: 'node2', message: 'Action executed' },
@@ -111,7 +113,7 @@ describe HybridPlatformsConductor::ActionsExecutor do
111
113
  with_test_platform_for_connections do
112
114
  test_actions_executor.connector(:test_connector).accept_nodes = %w[node1 node3]
113
115
  test_actions_executor.connector(:test_connector_2).accept_nodes = %w[node2 node4]
114
- test_actions_executor.execute_actions(%w[node1 node2 node3 node4] => { test_action: { need_connector: true } })
116
+ test_actions_executor.execute_actions({ %w[node1 node2 node3 node4] => { test_action: { need_connector: true } } })
115
117
  expect(action_executions).to eq [
116
118
  { node: 'node1', message: 'Action executed' },
117
119
  { node: 'node2', message: 'Action executed' },
@@ -119,12 +121,12 @@ describe HybridPlatformsConductor::ActionsExecutor do
119
121
  { node: 'node4', message: 'Action executed' }
120
122
  ]
121
123
  expect(test_actions_executor.connector(:test_connector).calls).to eq [
122
- [:connectable_nodes_from, %w[node1 node2 node3 node4]],
123
- [:with_connection_to, %w[node1 node3], { no_exception: true }]
124
+ [:connectable_nodes_from, %w[node1 node2 node3 node4]],
125
+ [:with_connection_to, %w[node1 node3], { no_exception: true }]
124
126
  ]
125
127
  expect(test_actions_executor.connector(:test_connector_2).calls).to eq [
126
- [:connectable_nodes_from, %w[node2 node4]],
127
- [:with_connection_to, %w[node2 node4], { no_exception: true }]
128
+ [:connectable_nodes_from, %w[node2 node4]],
129
+ [:with_connection_to, %w[node2 node4], { no_exception: true }]
128
130
  ]
129
131
  end
130
132
  end
@@ -133,7 +135,7 @@ describe HybridPlatformsConductor::ActionsExecutor do
133
135
  with_test_platform_for_connections do
134
136
  test_actions_executor.connector(:test_connector).accept_nodes = %w[node1 node2 node3]
135
137
  test_actions_executor.connector(:test_connector_2).accept_nodes = %w[node2 node4]
136
- test_actions_executor.execute_actions(%w[node1 node2 node3 node4] => { test_action: { need_connector: true } })
138
+ test_actions_executor.execute_actions({ %w[node1 node2 node3 node4] => { test_action: { need_connector: true } } })
137
139
  expect(action_executions).to eq [
138
140
  { node: 'node1', message: 'Action executed' },
139
141
  { node: 'node2', message: 'Action executed' },
@@ -141,12 +143,12 @@ describe HybridPlatformsConductor::ActionsExecutor do
141
143
  { node: 'node4', message: 'Action executed' }
142
144
  ]
143
145
  expect(test_actions_executor.connector(:test_connector).calls).to eq [
144
- [:connectable_nodes_from, %w[node1 node2 node3 node4]],
145
- [:with_connection_to, %w[node1 node2 node3], { no_exception: true }]
146
+ [:connectable_nodes_from, %w[node1 node2 node3 node4]],
147
+ [:with_connection_to, %w[node1 node2 node3], { no_exception: true }]
146
148
  ]
147
149
  expect(test_actions_executor.connector(:test_connector_2).calls).to eq [
148
- [:connectable_nodes_from, %w[node4]],
149
- [:with_connection_to, %w[node4], { no_exception: true }]
150
+ [:connectable_nodes_from, %w[node4]],
151
+ [:with_connection_to, %w[node4], { no_exception: true }]
150
152
  ]
151
153
  end
152
154
  end
@@ -157,12 +159,12 @@ describe HybridPlatformsConductor::ActionsExecutor do
157
159
  test_actions_executor.connector(:test_connector_2).accept_nodes = %w[node2 node4]
158
160
  test_actions_executor.with_connections_prepared_to(%w[node1 node2 node3 node4]) do |connected_nodes|
159
161
  expect(test_actions_executor.connector(:test_connector).calls).to eq [
160
- [:connectable_nodes_from, %w[node1 node2 node3 node4]],
161
- [:with_connection_to, %w[node1 node3], { no_exception: false }]
162
+ [:connectable_nodes_from, %w[node1 node2 node3 node4]],
163
+ [:with_connection_to, %w[node1 node3], { no_exception: false }]
162
164
  ]
163
165
  expect(test_actions_executor.connector(:test_connector_2).calls).to eq [
164
- [:connectable_nodes_from, %w[node2 node4]],
165
- [:with_connection_to, %w[node2 node4], { no_exception: false }]
166
+ [:connectable_nodes_from, %w[node2 node4]],
167
+ [:with_connection_to, %w[node2 node4], { no_exception: false }]
166
168
  ]
167
169
  expect(connected_nodes).to eq(
168
170
  'node1' => test_actions_executor.connector(:test_connector),
@@ -190,12 +192,12 @@ describe HybridPlatformsConductor::ActionsExecutor do
190
192
  test_actions_executor.connector(:test_connector_2).accept_nodes = %w[node2]
191
193
  test_actions_executor.with_connections_prepared_to(%w[node1 node2 node3 node4], no_exception: true) do |connected_nodes|
192
194
  expect(test_actions_executor.connector(:test_connector).calls).to eq [
193
- [:connectable_nodes_from, %w[node1 node2 node3 node4]],
194
- [:with_connection_to, %w[node1 node3], { no_exception: true }]
195
+ [:connectable_nodes_from, %w[node1 node2 node3 node4]],
196
+ [:with_connection_to, %w[node1 node3], { no_exception: true }]
195
197
  ]
196
198
  expect(test_actions_executor.connector(:test_connector_2).calls).to eq [
197
- [:connectable_nodes_from, %w[node2 node4]],
198
- [:with_connection_to, %w[node2], { no_exception: true }]
199
+ [:connectable_nodes_from, %w[node2 node4]],
200
+ [:with_connection_to, %w[node2], { no_exception: true }]
199
201
  ]
200
202
  expect(connected_nodes).to eq(
201
203
  'node1' => test_actions_executor.connector(:test_connector),