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,16 +1,18 @@
1
1
  describe HybridPlatformsConductor::ServicesHandler do
2
2
 
3
- context 'checking parsing deployment outputs' do
3
+ context 'when checking parsing deployment outputs' do
4
4
 
5
5
  it 'parses a deployment log for a node' do
6
6
  with_test_platform(
7
- nodes: { 'node' => { services: %w[service1] } },
8
- deployable_services: %w[service1],
9
- parse_deploy_output: proc do |stdout, stderr|
10
- expect(stdout.strip).to eq 'Task1: ok'
11
- expect(stderr.strip).to eq 'Service1 stderr'
12
- [{ name: 'Task1', status: :identical }]
13
- end
7
+ {
8
+ nodes: { 'node' => { services: %w[service1] } },
9
+ deployable_services: %w[service1],
10
+ parse_deploy_output: proc do |stdout, stderr|
11
+ expect(stdout.strip).to eq 'Task1: ok'
12
+ expect(stderr.strip).to eq 'Service1 stderr'
13
+ [{ name: 'Task1', status: :identical }]
14
+ end
15
+ }
14
16
  ) do
15
17
  stdout = <<~EOS_STDOUT
16
18
  First log lines
@@ -37,13 +39,15 @@ describe HybridPlatformsConductor::ServicesHandler do
37
39
 
38
40
  it 'parses a deployment log for a node in check mode' do
39
41
  with_test_platform(
40
- nodes: { 'node' => { services: %w[service1] } },
41
- deployable_services: %w[service1],
42
- parse_deploy_output: proc do |stdout, stderr|
43
- expect(stdout.strip).to eq 'Task1: ok'
44
- expect(stderr.strip).to eq 'Service1 stderr'
45
- [{ name: 'Task1', status: :identical }]
46
- end
42
+ {
43
+ nodes: { 'node' => { services: %w[service1] } },
44
+ deployable_services: %w[service1],
45
+ parse_deploy_output: proc do |stdout, stderr|
46
+ expect(stdout.strip).to eq 'Task1: ok'
47
+ expect(stderr.strip).to eq 'Service1 stderr'
48
+ [{ name: 'Task1', status: :identical }]
49
+ end
50
+ }
47
51
  ) do
48
52
  stdout = <<~EOS_STDOUT
49
53
  First log lines
@@ -70,13 +74,15 @@ describe HybridPlatformsConductor::ServicesHandler do
70
74
 
71
75
  it 'parses a deployment log for a node even if stderr is empty' do
72
76
  with_test_platform(
73
- nodes: { 'node' => { services: %w[service1] } },
74
- deployable_services: %w[service1],
75
- parse_deploy_output: proc do |stdout, stderr|
76
- expect(stdout.strip).to eq 'Task1: ok'
77
- expect(stderr.strip).to eq ''
78
- [{ name: 'Task1', status: :identical }]
79
- end
77
+ {
78
+ nodes: { 'node' => { services: %w[service1] } },
79
+ deployable_services: %w[service1],
80
+ parse_deploy_output: proc do |stdout, stderr|
81
+ expect(stdout.strip).to eq 'Task1: ok'
82
+ expect(stderr.strip).to eq ''
83
+ [{ name: 'Task1', status: :identical }]
84
+ end
85
+ }
80
86
  ) do
81
87
  stdout = <<~EOS_STDOUT
82
88
  First log lines
@@ -98,13 +104,15 @@ describe HybridPlatformsConductor::ServicesHandler do
98
104
 
99
105
  it 'parses a deployment log for a node deploying several services' do
100
106
  with_test_platform(
101
- nodes: { 'node' => { services: %w[service1 service2] } },
102
- deployable_services: %w[service1 service2],
103
- parse_deploy_output: proc do |stdout, stderr|
104
- task_name, status_str = stdout.match(/^(.+?): (.+)$/)[1..2]
105
- expect(stderr.strip).to eq "#{task_name} stderr"
106
- [{ name: task_name, status: status_str.to_sym }]
107
- end
107
+ {
108
+ nodes: { 'node' => { services: %w[service1 service2] } },
109
+ deployable_services: %w[service1 service2],
110
+ parse_deploy_output: proc do |stdout, stderr|
111
+ task_name, status_str = stdout.match(/^(.+?): (.+)$/)[1..2]
112
+ expect(stderr.strip).to eq "#{task_name} stderr"
113
+ [{ name: task_name, status: status_str.to_sym }]
114
+ end
115
+ }
108
116
  ) do
109
117
  stdout = <<~EOS_STDOUT
110
118
  First log lines
@@ -144,13 +152,15 @@ describe HybridPlatformsConductor::ServicesHandler do
144
152
 
145
153
  it 'parses a deployment log for several nodes deploying several services' do
146
154
  with_test_platform(
147
- nodes: { 'node1' => { services: %w[service1 service2] }, 'node2' => { services: %w[service1 service2] } },
148
- deployable_services: %w[service1 service2],
149
- parse_deploy_output: proc do |stdout, stderr|
150
- task_name, status_str = stdout.match(/^(.+?): (.+)$/)[1..2]
151
- expect(stderr.strip).to eq "#{task_name} stderr"
152
- [{ name: task_name, status: status_str.to_sym }]
153
- end
155
+ {
156
+ nodes: { 'node1' => { services: %w[service1 service2] }, 'node2' => { services: %w[service1 service2] } },
157
+ deployable_services: %w[service1 service2],
158
+ parse_deploy_output: proc do |stdout, stderr|
159
+ task_name, status_str = stdout.match(/^(.+?): (.+)$/)[1..2]
160
+ expect(stderr.strip).to eq "#{task_name} stderr"
161
+ [{ name: task_name, status: status_str.to_sym }]
162
+ end
163
+ }
154
164
  ) do
155
165
  stdout = <<~EOS_STDOUT
156
166
  First log lines
@@ -202,24 +212,26 @@ describe HybridPlatformsConductor::ServicesHandler do
202
212
 
203
213
  it 'parses a deployment log for several nodes deploying several services using different platforms' do
204
214
  with_test_platforms(
205
- 'platform1' => {
206
- nodes: { 'node1' => { services: %w[service1 service2] }, 'node2' => { services: %w[service1 service2] } },
207
- deployable_services: %w[service1],
208
- parse_deploy_output: proc do |stdout, stderr|
209
- task_name, status_str = stdout.match(/^(.+?1): (.+)$/)[1..2]
210
- expect(stderr.strip).to eq "#{task_name} stderr"
211
- [{ name: task_name, status: status_str.to_sym }]
212
- end
213
- },
214
- 'platform2' => {
215
- nodes: {},
216
- deployable_services: %w[service2],
217
- parse_deploy_output: proc do |stdout, stderr|
218
- task_name, status_str = stdout.match(/^(.+?2): (.+)$/)[1..2]
219
- expect(stderr.strip).to eq "#{task_name} stderr"
220
- [{ name: task_name, status: status_str.to_sym }]
221
- end
222
- },
215
+ {
216
+ 'platform1' => {
217
+ nodes: { 'node1' => { services: %w[service1 service2] }, 'node2' => { services: %w[service1 service2] } },
218
+ deployable_services: %w[service1],
219
+ parse_deploy_output: proc do |stdout, stderr|
220
+ task_name, status_str = stdout.match(/^(.+?1): (.+)$/)[1..2]
221
+ expect(stderr.strip).to eq "#{task_name} stderr"
222
+ [{ name: task_name, status: status_str.to_sym }]
223
+ end
224
+ },
225
+ 'platform2' => {
226
+ nodes: {},
227
+ deployable_services: %w[service2],
228
+ parse_deploy_output: proc do |stdout, stderr|
229
+ task_name, status_str = stdout.match(/^(.+?2): (.+)$/)[1..2]
230
+ expect(stderr.strip).to eq "#{task_name} stderr"
231
+ [{ name: task_name, status: status_str.to_sym }]
232
+ end
233
+ }
234
+ }
223
235
  ) do
224
236
  stdout = <<~EOS_STDOUT
225
237
  First log lines
@@ -1,19 +1,21 @@
1
1
  describe HybridPlatformsConductor::ServicesHandler do
2
2
 
3
- context 'checking preparation for deployment' do
3
+ context 'when checking preparation for deployment' do
4
4
 
5
5
  it 'prepares 1 platform' do
6
6
  called = false
7
7
  with_test_platform(
8
- nodes: { 'node1' => { services: %w[service1] }, 'node2' => {}, 'node3' => {} },
9
- deployable_services: %w[service1],
10
- prepare_for_deploy: proc do |services:, secrets:, local_environment:, why_run:|
11
- expect(services).to eq('node1' => %w[service1])
12
- expect(secrets).to eq({})
13
- expect(local_environment).to eq false
14
- expect(why_run).to eq false
15
- called = true
16
- end
8
+ {
9
+ nodes: { 'node1' => { services: %w[service1] }, 'node2' => {}, 'node3' => {} },
10
+ deployable_services: %w[service1],
11
+ prepare_for_deploy: proc do |services:, secrets:, local_environment:, why_run:|
12
+ expect(services).to eq('node1' => %w[service1])
13
+ expect(secrets).to eq({})
14
+ expect(local_environment).to eq false
15
+ expect(why_run).to eq false
16
+ called = true
17
+ end
18
+ }
17
19
  ) do
18
20
  test_services_handler.prepare_for_deploy(
19
21
  services: { 'node1' => %w[service1] },
@@ -28,15 +30,17 @@ describe HybridPlatformsConductor::ServicesHandler do
28
30
  it 'prepares 1 platform with secrets' do
29
31
  called = false
30
32
  with_test_platform(
31
- nodes: { 'node1' => { services: %w[service1] }, 'node2' => {}, 'node3' => {} },
32
- deployable_services: %w[service1],
33
- prepare_for_deploy: proc do |services:, secrets:, local_environment:, why_run:|
34
- expect(services).to eq('node1' => %w[service1])
35
- expect(secrets).to eq('my_secret' => 'value')
36
- expect(local_environment).to eq false
37
- expect(why_run).to eq false
38
- called = true
39
- end
33
+ {
34
+ nodes: { 'node1' => { services: %w[service1] }, 'node2' => {}, 'node3' => {} },
35
+ deployable_services: %w[service1],
36
+ prepare_for_deploy: proc do |services:, secrets:, local_environment:, why_run:|
37
+ expect(services).to eq('node1' => %w[service1])
38
+ expect(secrets).to eq('my_secret' => 'value')
39
+ expect(local_environment).to eq false
40
+ expect(why_run).to eq false
41
+ called = true
42
+ end
43
+ }
40
44
  ) do
41
45
  test_services_handler.prepare_for_deploy(
42
46
  services: { 'node1' => %w[service1] },
@@ -51,15 +55,17 @@ describe HybridPlatformsConductor::ServicesHandler do
51
55
  it 'prepares 1 platform with local environment' do
52
56
  called = false
53
57
  with_test_platform(
54
- nodes: { 'node1' => { services: %w[service1] }, 'node2' => {}, 'node3' => {} },
55
- deployable_services: %w[service1],
56
- prepare_for_deploy: proc do |services:, secrets:, local_environment:, why_run:|
57
- expect(services).to eq('node1' => %w[service1])
58
- expect(secrets).to eq({})
59
- expect(local_environment).to eq true
60
- expect(why_run).to eq false
61
- called = true
62
- end
58
+ {
59
+ nodes: { 'node1' => { services: %w[service1] }, 'node2' => {}, 'node3' => {} },
60
+ deployable_services: %w[service1],
61
+ prepare_for_deploy: proc do |services:, secrets:, local_environment:, why_run:|
62
+ expect(services).to eq('node1' => %w[service1])
63
+ expect(secrets).to eq({})
64
+ expect(local_environment).to eq true
65
+ expect(why_run).to eq false
66
+ called = true
67
+ end
68
+ }
63
69
  ) do
64
70
  test_services_handler.prepare_for_deploy(
65
71
  services: { 'node1' => %w[service1] },
@@ -74,15 +80,17 @@ describe HybridPlatformsConductor::ServicesHandler do
74
80
  it 'prepares 1 platform in why-run mode' do
75
81
  called = false
76
82
  with_test_platform(
77
- nodes: { 'node1' => { services: %w[service1] }, 'node2' => {}, 'node3' => {} },
78
- deployable_services: %w[service1],
79
- prepare_for_deploy: proc do |services:, secrets:, local_environment:, why_run:|
80
- expect(services).to eq('node1' => %w[service1])
81
- expect(secrets).to eq({})
82
- expect(local_environment).to eq false
83
- expect(why_run).to eq true
84
- called = true
85
- end
83
+ {
84
+ nodes: { 'node1' => { services: %w[service1] }, 'node2' => {}, 'node3' => {} },
85
+ deployable_services: %w[service1],
86
+ prepare_for_deploy: proc do |services:, secrets:, local_environment:, why_run:|
87
+ expect(services).to eq('node1' => %w[service1])
88
+ expect(secrets).to eq({})
89
+ expect(local_environment).to eq false
90
+ expect(why_run).to eq true
91
+ called = true
92
+ end
93
+ }
86
94
  ) do
87
95
  test_services_handler.prepare_for_deploy(
88
96
  services: { 'node1' => %w[service1] },
@@ -101,38 +109,40 @@ describe HybridPlatformsConductor::ServicesHandler do
101
109
  'platform3' => false
102
110
  }
103
111
  with_test_platforms(
104
- 'platform1' => {
105
- nodes: { 'node1' => { services: %w[service1] } },
106
- deployable_services: %w[service1],
107
- prepare_for_deploy: proc do |services:, secrets:, local_environment:, why_run:|
108
- expect(services).to eq('node1' => %w[service1])
109
- expect(secrets).to eq({})
110
- expect(local_environment).to eq false
111
- expect(why_run).to eq false
112
- called['platform1'] = true
113
- end
114
- },
115
- 'platform2' => {
116
- nodes: { 'node2' => { services: %w[service2] } },
117
- deployable_services: %w[service2],
118
- prepare_for_deploy: proc do |services:, secrets:, local_environment:, why_run:|
119
- expect(services).to eq('node2' => %w[service2])
120
- expect(secrets).to eq({})
121
- expect(local_environment).to eq false
122
- expect(why_run).to eq false
123
- called['platform2'] = true
124
- end
125
- },
126
- 'platform3' => {
127
- nodes: { 'node3' => { services: %w[service3] } },
128
- deployable_services: %w[service3],
129
- prepare_for_deploy: proc do |services:, secrets:, local_environment:, why_run:|
130
- expect(services).to eq('node3' => %w[service3])
131
- expect(secrets).to eq({})
132
- expect(local_environment).to eq false
133
- expect(why_run).to eq false
134
- called['platform3'] = true
135
- end
112
+ {
113
+ 'platform1' => {
114
+ nodes: { 'node1' => { services: %w[service1] } },
115
+ deployable_services: %w[service1],
116
+ prepare_for_deploy: proc do |services:, secrets:, local_environment:, why_run:|
117
+ expect(services).to eq('node1' => %w[service1])
118
+ expect(secrets).to eq({})
119
+ expect(local_environment).to eq false
120
+ expect(why_run).to eq false
121
+ called['platform1'] = true
122
+ end
123
+ },
124
+ 'platform2' => {
125
+ nodes: { 'node2' => { services: %w[service2] } },
126
+ deployable_services: %w[service2],
127
+ prepare_for_deploy: proc do |services:, secrets:, local_environment:, why_run:|
128
+ expect(services).to eq('node2' => %w[service2])
129
+ expect(secrets).to eq({})
130
+ expect(local_environment).to eq false
131
+ expect(why_run).to eq false
132
+ called['platform2'] = true
133
+ end
134
+ },
135
+ 'platform3' => {
136
+ nodes: { 'node3' => { services: %w[service3] } },
137
+ deployable_services: %w[service3],
138
+ prepare_for_deploy: proc do |services:, secrets:, local_environment:, why_run:|
139
+ expect(services).to eq('node3' => %w[service3])
140
+ expect(secrets).to eq({})
141
+ expect(local_environment).to eq false
142
+ expect(why_run).to eq false
143
+ called['platform3'] = true
144
+ end
145
+ }
136
146
  }
137
147
  ) do
138
148
  test_services_handler.prepare_for_deploy(
@@ -156,38 +166,40 @@ describe HybridPlatformsConductor::ServicesHandler do
156
166
  'platform3' => false
157
167
  }
158
168
  with_test_platforms(
159
- 'platform1' => {
160
- nodes: { 'node1' => { services: %w[service1] } },
161
- deployable_services: %w[service1],
162
- prepare_for_deploy: proc do |services:, secrets:, local_environment:, why_run:|
163
- expect(services).to eq('node1' => %w[service1])
164
- expect(secrets).to eq({})
165
- expect(local_environment).to eq false
166
- expect(why_run).to eq false
167
- called['platform1'] = true
168
- end
169
- },
170
- 'platform2' => {
171
- nodes: { 'node2' => { services: %w[service2] } },
172
- deployable_services: %w[service2],
173
- prepare_for_deploy: proc do |services:, secrets:, local_environment:, why_run:|
174
- expect(services).to eq('node2' => %w[service2])
175
- expect(secrets).to eq({})
176
- expect(local_environment).to eq false
177
- expect(why_run).to eq false
178
- called['platform2'] = true
179
- end
180
- },
181
- 'platform3' => {
182
- nodes: { 'node3' => { services: %w[service3] } },
183
- deployable_services: %w[service3],
184
- prepare_for_deploy: proc do |services:, secrets:, local_environment:, why_run:|
185
- expect(services).to eq('node1' => %w[service3])
186
- expect(secrets).to eq({})
187
- expect(local_environment).to eq false
188
- expect(why_run).to eq false
189
- called['platform3'] = true
190
- end
169
+ {
170
+ 'platform1' => {
171
+ nodes: { 'node1' => { services: %w[service1] } },
172
+ deployable_services: %w[service1],
173
+ prepare_for_deploy: proc do |services:, secrets:, local_environment:, why_run:|
174
+ expect(services).to eq('node1' => %w[service1])
175
+ expect(secrets).to eq({})
176
+ expect(local_environment).to eq false
177
+ expect(why_run).to eq false
178
+ called['platform1'] = true
179
+ end
180
+ },
181
+ 'platform2' => {
182
+ nodes: { 'node2' => { services: %w[service2] } },
183
+ deployable_services: %w[service2],
184
+ prepare_for_deploy: proc do |services:, secrets:, local_environment:, why_run:|
185
+ expect(services).to eq('node2' => %w[service2])
186
+ expect(secrets).to eq({})
187
+ expect(local_environment).to eq false
188
+ expect(why_run).to eq false
189
+ called['platform2'] = true
190
+ end
191
+ },
192
+ 'platform3' => {
193
+ nodes: { 'node3' => { services: %w[service3] } },
194
+ deployable_services: %w[service3],
195
+ prepare_for_deploy: proc do |services:, secrets:, local_environment:, why_run:|
196
+ expect(services).to eq('node1' => %w[service3])
197
+ expect(secrets).to eq({})
198
+ expect(local_environment).to eq false
199
+ expect(why_run).to eq false
200
+ called['platform3'] = true
201
+ end
202
+ }
191
203
  }
192
204
  ) do
193
205
  test_services_handler.prepare_for_deploy(
@@ -211,38 +223,40 @@ describe HybridPlatformsConductor::ServicesHandler do
211
223
  'platform3' => false
212
224
  }
213
225
  with_test_platforms(
214
- 'platform1' => {
215
- nodes: { 'node' => { services: %w[service1 service2 service3 service4 service5 service6] } },
216
- deployable_services: %w[service1 service2],
217
- prepare_for_deploy: proc do |services:, secrets:, local_environment:, why_run:|
218
- expect(services).to eq('node' => %w[service1 service2])
219
- expect(secrets).to eq({})
220
- expect(local_environment).to eq false
221
- expect(why_run).to eq false
222
- called['platform1'] = true
223
- end
224
- },
225
- 'platform2' => {
226
- nodes: {},
227
- deployable_services: %w[service3 service4],
228
- prepare_for_deploy: proc do |services:, secrets:, local_environment:, why_run:|
229
- expect(services).to eq('node' => %w[service3])
230
- expect(secrets).to eq({})
231
- expect(local_environment).to eq false
232
- expect(why_run).to eq false
233
- called['platform2'] = true
234
- end
235
- },
236
- 'platform3' => {
237
- nodes: {},
238
- deployable_services: %w[service5 service6],
239
- prepare_for_deploy: proc do |services:, secrets:, local_environment:, why_run:|
240
- expect(services).to eq('node' => %w[service5 service6])
241
- expect(secrets).to eq({})
242
- expect(local_environment).to eq false
243
- expect(why_run).to eq false
244
- called['platform3'] = true
245
- end
226
+ {
227
+ 'platform1' => {
228
+ nodes: { 'node' => { services: %w[service1 service2 service3 service4 service5 service6] } },
229
+ deployable_services: %w[service1 service2],
230
+ prepare_for_deploy: proc do |services:, secrets:, local_environment:, why_run:|
231
+ expect(services).to eq('node' => %w[service1 service2])
232
+ expect(secrets).to eq({})
233
+ expect(local_environment).to eq false
234
+ expect(why_run).to eq false
235
+ called['platform1'] = true
236
+ end
237
+ },
238
+ 'platform2' => {
239
+ nodes: {},
240
+ deployable_services: %w[service3 service4],
241
+ prepare_for_deploy: proc do |services:, secrets:, local_environment:, why_run:|
242
+ expect(services).to eq('node' => %w[service3])
243
+ expect(secrets).to eq({})
244
+ expect(local_environment).to eq false
245
+ expect(why_run).to eq false
246
+ called['platform2'] = true
247
+ end
248
+ },
249
+ 'platform3' => {
250
+ nodes: {},
251
+ deployable_services: %w[service5 service6],
252
+ prepare_for_deploy: proc do |services:, secrets:, local_environment:, why_run:|
253
+ expect(services).to eq('node' => %w[service5 service6])
254
+ expect(secrets).to eq({})
255
+ expect(local_environment).to eq false
256
+ expect(why_run).to eq false
257
+ called['platform3'] = true
258
+ end
259
+ }
246
260
  }
247
261
  ) do
248
262
  test_services_handler.prepare_for_deploy(