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,11 +1,13 @@
1
1
  describe HybridPlatformsConductor::NodesHandler do
2
2
 
3
- context 'checking aggregations across several platforms' do
3
+ context 'when checking aggregations across several platforms' do
4
4
 
5
5
  it 'returns nodes' do
6
6
  with_test_platforms(
7
- 'platform1' => { nodes: { 'node1' => {}, 'node2' => {} } },
8
- 'platform2' => { nodes: { 'node3' => {}, 'node4' => {} } }
7
+ {
8
+ 'platform1' => { nodes: { 'node1' => {}, 'node2' => {} } },
9
+ 'platform2' => { nodes: { 'node3' => {}, 'node4' => {} } }
10
+ }
9
11
  ) do
10
12
  expect(test_nodes_handler.known_nodes.sort).to eq %w[node1 node2 node3 node4].sort
11
13
  end
@@ -13,17 +15,21 @@ describe HybridPlatformsConductor::NodesHandler do
13
15
 
14
16
  it 'fails when several platforms define the same nodes' do
15
17
  with_test_platforms(
16
- 'platform1' => { nodes: { 'node1' => {}, 'node2' => {} } },
17
- 'platform2' => { nodes: { 'node1' => {}, 'node4' => {} } }
18
+ {
19
+ 'platform1' => { nodes: { 'node1' => {}, 'node2' => {} } },
20
+ 'platform2' => { nodes: { 'node1' => {}, 'node4' => {} } }
21
+ }
18
22
  ) do
19
- expect { test_nodes_handler.known_nodes }.to raise_error(RuntimeError, /Can\'t register node1/)
23
+ expect { test_nodes_handler.known_nodes }.to raise_error(RuntimeError, /Can't register node1/)
20
24
  end
21
25
  end
22
26
 
23
27
  it 'returns nodes lists' do
24
28
  with_test_platforms(
25
- 'platform1' => { nodes_lists: { 'nodeslist1' => [] } },
26
- 'platform2' => { nodes_lists: { 'nodeslist2' => [] } }
29
+ {
30
+ 'platform1' => { nodes_lists: { 'nodeslist1' => [] } },
31
+ 'platform2' => { nodes_lists: { 'nodeslist2' => [] } }
32
+ }
27
33
  ) do
28
34
  expect(test_nodes_handler.known_nodes_lists.sort).to eq %w[nodeslist1 nodeslist2].sort
29
35
  end
@@ -31,23 +37,27 @@ describe HybridPlatformsConductor::NodesHandler do
31
37
 
32
38
  it 'fails when several platforms define the same nodes lists' do
33
39
  with_test_platforms(
34
- 'platform1' => { nodes_lists: { 'nodeslist1' => [] } },
35
- 'platform2' => { nodes_lists: { 'nodeslist1' => [] } }
40
+ {
41
+ 'platform1' => { nodes_lists: { 'nodeslist1' => [] } },
42
+ 'platform2' => { nodes_lists: { 'nodeslist1' => [] } }
43
+ }
36
44
  ) do
37
- expect { test_nodes_handler.known_nodes_lists }.to raise_error(RuntimeError, /Can\'t register nodes list nodeslist1/)
45
+ expect { test_nodes_handler.known_nodes_lists }.to raise_error(RuntimeError, /Can't register nodes list nodeslist1/)
38
46
  end
39
47
  end
40
48
 
41
49
  it 'returns services' do
42
50
  with_test_platforms(
43
- 'platform1' => { nodes: {
44
- 'node1' => { services: ['service1'] },
45
- 'node2' => { services: ['service2'] }
46
- } },
47
- 'platform2' => { nodes: {
48
- 'node3' => { services: ['service1', 'service4'] },
49
- 'node4' => { services: ['service3'] }
50
- } }
51
+ {
52
+ 'platform1' => { nodes: {
53
+ 'node1' => { services: ['service1'] },
54
+ 'node2' => { services: ['service2'] }
55
+ } },
56
+ 'platform2' => { nodes: {
57
+ 'node3' => { services: %w[service1 service4] },
58
+ 'node4' => { services: ['service3'] }
59
+ } }
60
+ }
51
61
  ) do
52
62
  expect(test_nodes_handler.known_services.sort).to eq %w[service1 service2 service3 service4].sort
53
63
  end
@@ -1,19 +1,19 @@
1
1
  describe HybridPlatformsConductor::PlatformHandler do
2
2
 
3
3
  it 'returns the correct platform type' do
4
- with_test_platform do
4
+ with_test_platform({}) do
5
5
  expect(test_platforms_handler.platform('platform').platform_type).to eq :test
6
6
  end
7
7
  end
8
8
 
9
9
  it 'returns the correct path' do
10
- with_test_platform do
10
+ with_test_platform({}) do
11
11
  expect(test_platforms_handler.platform('platform').repository_path).to eq "#{Dir.tmpdir}/hpc_test/platform"
12
12
  end
13
13
  end
14
14
 
15
15
  it 'returns the correct info' do
16
- with_test_platform do
16
+ with_test_platform({}) do
17
17
  expect(test_platforms_handler.platform('platform').info).to eq(repo_name: 'platform')
18
18
  end
19
19
  end
@@ -76,7 +76,7 @@ describe HybridPlatformsConductor::PlatformHandler do
76
76
  git = Git.open(repository)
77
77
  FileUtils.touch("#{repository}/test_file_1")
78
78
  FileUtils.touch("#{repository}/test_file_2")
79
- git.add(['test_file_1', 'test_file_2'])
79
+ git.add(%w[test_file_1 test_file_2])
80
80
  git.commit('Test commit')
81
81
  # Make some diffs
82
82
  FileUtils.touch("#{repository}/new_file")
@@ -1,9 +1,9 @@
1
1
  describe HybridPlatformsConductor::HpcPlugins::PlatformHandler::ServerlessChef do
2
2
 
3
- context 'checking config DSL' do
3
+ context 'when checking config DSL' do
4
4
 
5
5
  it 'defines helpers that include recipes' do
6
- with_repository do |repository|
6
+ with_repository do
7
7
  with_platforms('helpers_including_recipes(my_helper: [\'cookbook1::recipe1\', \'cookbook2\'])') do
8
8
  expect(test_config.known_helpers_including_recipes).to eq(
9
9
  my_helper: %w[cookbook1::recipe1 cookbook2]
@@ -1,10 +1,10 @@
1
1
  describe HybridPlatformsConductor::HpcPlugins::PlatformHandler::ServerlessChef do
2
2
 
3
- context 'checking how deployment output is parsed' do
3
+ context 'when checking how deployment output is parsed' do
4
4
 
5
5
  it 'parses a deployment output properly' do
6
6
  with_serverless_chef_platforms('empty') do |platform|
7
- stdout = <<~EOS
7
+ stdout = <<~EO_STDOUT
8
8
  Starting Chef Client, version 14.14.29
9
9
  resolving cookbooks for run list: ["policy_xae_websql::xae"]
10
10
  Synchronizing Cookbooks:
@@ -36,8 +36,8 @@ describe HybridPlatformsConductor::HpcPlugins::PlatformHandler::ServerlessChef d
36
36
  Running handlers:
37
37
  Running handlers complete
38
38
  Chef Client finished, 16/300 resources updated in 27 seconds
39
- EOS
40
- expect(platform.parse_deploy_output(stdout, '')). to eq [
39
+ EO_STDOUT
40
+ expect(platform.parse_deploy_output(stdout, '')).to eq [
41
41
  {
42
42
  action: 'update',
43
43
  diffs: "force update new lists of packages\n",
@@ -67,10 +67,10 @@ describe HybridPlatformsConductor::HpcPlugins::PlatformHandler::ServerlessChef d
67
67
  },
68
68
  {
69
69
  action: 'create',
70
- diffs: <<~EOS,
70
+ diffs: <<~EO_STDOUT,
71
71
  create new file /opt/chef_cache/xaecalcite_0.2.4-1_amd64.deb
72
72
  update content in file /opt/chef_cache/xaecalcite_0.2.4-1_amd64.deb from none to 39b0ca
73
- EOS
73
+ EO_STDOUT
74
74
  name: 'remote_file[/opt/chef_cache/xaecalcite_0.2.4-1_amd64.deb]',
75
75
  status: :changed
76
76
  },
@@ -1,9 +1,9 @@
1
1
  describe HybridPlatformsConductor::HpcPlugins::PlatformHandler::ServerlessChef do
2
2
 
3
- context 'checking files diff impacts' do
3
+ context 'when checking files diff impacts' do
4
4
 
5
5
  it 'returns no impact for no diffs' do
6
- with_serverless_chef_platforms('recipes') do |platform, repository|
6
+ with_serverless_chef_platforms('recipes') do |platform|
7
7
  expect(platform.impacts_from({})).to eq [
8
8
  [],
9
9
  [],
@@ -13,10 +13,8 @@ describe HybridPlatformsConductor::HpcPlugins::PlatformHandler::ServerlessChef d
13
13
  end
14
14
 
15
15
  it 'ignores files with no impact' do
16
- with_serverless_chef_platforms('recipes') do |platform, repository|
17
- expect(platform.impacts_from(
18
- 'cookbooks/test_cookbook_1/README.md' => {}
19
- )).to eq [
16
+ with_serverless_chef_platforms('recipes') do |platform|
17
+ expect(platform.impacts_from('cookbooks/test_cookbook_1/README.md' => {})).to eq [
20
18
  [],
21
19
  [],
22
20
  false
@@ -25,10 +23,8 @@ describe HybridPlatformsConductor::HpcPlugins::PlatformHandler::ServerlessChef d
25
23
  end
26
24
 
27
25
  it 'returns all nodes impact for global files' do
28
- with_serverless_chef_platforms('recipes') do |platform, repository|
29
- expect(platform.impacts_from(
30
- 'global.rb' => {}
31
- )).to eq [
26
+ with_serverless_chef_platforms('recipes') do |platform|
27
+ expect(platform.impacts_from('global.rb' => {})).to eq [
32
28
  [],
33
29
  [],
34
30
  true
@@ -37,10 +33,8 @@ describe HybridPlatformsConductor::HpcPlugins::PlatformHandler::ServerlessChef d
37
33
  end
38
34
 
39
35
  it 'returns direct impacted nodes' do
40
- with_serverless_chef_platforms('recipes') do |platform, repository|
41
- expect(platform.impacts_from(
42
- 'nodes/node1.json' => {}
43
- )).to eq [
36
+ with_serverless_chef_platforms('recipes') do |platform|
37
+ expect(platform.impacts_from('nodes/node1.json' => {})).to eq [
44
38
  %w[node1],
45
39
  [],
46
40
  false
@@ -49,10 +43,8 @@ describe HybridPlatformsConductor::HpcPlugins::PlatformHandler::ServerlessChef d
49
43
  end
50
44
 
51
45
  it 'returns direct impacted nodes with strange characters' do
52
- with_serverless_chef_platforms('recipes') do |platform, repository|
53
- expect(platform.impacts_from(
54
- 'nodes/node-v45.env_@user.json' => {}
55
- )).to eq [
46
+ with_serverless_chef_platforms('recipes') do |platform|
47
+ expect(platform.impacts_from('nodes/node-v45.env_@user.json' => {})).to eq [
56
48
  ['node-v45.env_@user'],
57
49
  [],
58
50
  false
@@ -61,10 +53,8 @@ describe HybridPlatformsConductor::HpcPlugins::PlatformHandler::ServerlessChef d
61
53
  end
62
54
 
63
55
  it 'returns impacted service due to a change in its recipes' do
64
- with_serverless_chef_platforms('recipes') do |platform, repository|
65
- expect(platform.impacts_from(
66
- 'cookbooks/test_cookbook_1/recipes/default.rb' => {}
67
- )).to eq [
56
+ with_serverless_chef_platforms('recipes') do |platform|
57
+ expect(platform.impacts_from('cookbooks/test_cookbook_1/recipes/default.rb' => {})).to eq [
68
58
  [],
69
59
  %w[test_policy_1],
70
60
  false
@@ -73,10 +63,8 @@ describe HybridPlatformsConductor::HpcPlugins::PlatformHandler::ServerlessChef d
73
63
  end
74
64
 
75
65
  it 'returns impacted service due to a change in its attributes' do
76
- with_serverless_chef_platforms('recipes') do |platform, repository|
77
- expect(platform.impacts_from(
78
- 'cookbooks/test_cookbook_1/attributes/default.rb' => {}
79
- )).to eq [
66
+ with_serverless_chef_platforms('recipes') do |platform|
67
+ expect(platform.impacts_from('cookbooks/test_cookbook_1/attributes/default.rb' => {})).to eq [
80
68
  [],
81
69
  %w[test_policy_1],
82
70
  false
@@ -86,14 +74,12 @@ describe HybridPlatformsConductor::HpcPlugins::PlatformHandler::ServerlessChef d
86
74
 
87
75
  it 'returns impacted service due to a change in an included template' do
88
76
  with_serverless_chef_platforms('recipes') do |platform, repository|
89
- File.write("#{repository}/cookbooks/test_cookbook_1/recipes/default.rb", <<~EOS)
77
+ File.write("#{repository}/cookbooks/test_cookbook_1/recipes/default.rb", <<~EO_RECIPE)
90
78
  template '/home/file' do
91
79
  source 'test_template.erb'
92
80
  end
93
- EOS
94
- expect(platform.impacts_from(
95
- 'cookbooks/test_cookbook_1/templates/default/test_template.erb' => {}
96
- )).to eq [
81
+ EO_RECIPE
82
+ expect(platform.impacts_from('cookbooks/test_cookbook_1/templates/default/test_template.erb' => {})).to eq [
97
83
  [],
98
84
  %w[test_policy_1],
99
85
  false
@@ -102,10 +88,8 @@ describe HybridPlatformsConductor::HpcPlugins::PlatformHandler::ServerlessChef d
102
88
  end
103
89
 
104
90
  it 'does not return impacted service due to a change in a non included template' do
105
- with_serverless_chef_platforms('recipes') do |platform, repository|
106
- expect(platform.impacts_from(
107
- 'cookbooks/test_cookbook_1/templates/default/test_template.erb' => {}
108
- )).to eq [
91
+ with_serverless_chef_platforms('recipes') do |platform|
92
+ expect(platform.impacts_from('cookbooks/test_cookbook_1/templates/default/test_template.erb' => {})).to eq [
109
93
  [],
110
94
  [],
111
95
  false
@@ -115,14 +99,12 @@ describe HybridPlatformsConductor::HpcPlugins::PlatformHandler::ServerlessChef d
115
99
 
116
100
  it 'returns impacted service due to a change in an included file' do
117
101
  with_serverless_chef_platforms('recipes') do |platform, repository|
118
- File.write("#{repository}/cookbooks/test_cookbook_1/recipes/default.rb", <<~EOS)
102
+ File.write("#{repository}/cookbooks/test_cookbook_1/recipes/default.rb", <<~EO_RECIPE)
119
103
  file '/home/file' do
120
104
  source 'test_file'
121
105
  end
122
- EOS
123
- expect(platform.impacts_from(
124
- 'cookbooks/test_cookbook_1/files/default/test_file' => {}
125
- )).to eq [
106
+ EO_RECIPE
107
+ expect(platform.impacts_from('cookbooks/test_cookbook_1/files/default/test_file' => {})).to eq [
126
108
  [],
127
109
  %w[test_policy_1],
128
110
  false
@@ -131,10 +113,8 @@ describe HybridPlatformsConductor::HpcPlugins::PlatformHandler::ServerlessChef d
131
113
  end
132
114
 
133
115
  it 'does not return impacted service due to a change in a non included file' do
134
- with_serverless_chef_platforms('recipes') do |platform, repository|
135
- expect(platform.impacts_from(
136
- 'cookbooks/test_cookbook_1/files/default/test_file' => {}
137
- )).to eq [
116
+ with_serverless_chef_platforms('recipes') do |platform|
117
+ expect(platform.impacts_from('cookbooks/test_cookbook_1/files/default/test_file' => {})).to eq [
138
118
  [],
139
119
  [],
140
120
  false
@@ -144,12 +124,10 @@ describe HybridPlatformsConductor::HpcPlugins::PlatformHandler::ServerlessChef d
144
124
 
145
125
  it 'returns impacted service due to a resource usage in a recipe' do
146
126
  with_serverless_chef_platforms('recipes') do |platform, repository|
147
- File.write("#{repository}/cookbooks/test_cookbook_1/recipes/default.rb", <<~EOS)
127
+ File.write("#{repository}/cookbooks/test_cookbook_1/recipes/default.rb", <<~EO_RECIPE)
148
128
  test_cookbook_2_my_resource
149
- EOS
150
- expect(platform.impacts_from(
151
- 'cookbooks/test_cookbook_2/resources/my_resource.rb' => {}
152
- )).to eq [
129
+ EO_RECIPE
130
+ expect(platform.impacts_from('cookbooks/test_cookbook_2/resources/my_resource.rb' => {})).to eq [
153
131
  [],
154
132
  %w[test_policy_1],
155
133
  false
@@ -158,10 +136,8 @@ describe HybridPlatformsConductor::HpcPlugins::PlatformHandler::ServerlessChef d
158
136
  end
159
137
 
160
138
  it 'does not return impacted service due to a resource not being used in a recipe' do
161
- with_serverless_chef_platforms('recipes') do |platform, repository|
162
- expect(platform.impacts_from(
163
- 'cookbooks/test_cookbook_2/resources/my_resource.rb' => {}
164
- )).to eq [
139
+ with_serverless_chef_platforms('recipes') do |platform|
140
+ expect(platform.impacts_from('cookbooks/test_cookbook_2/resources/my_resource.rb' => {})).to eq [
165
141
  [],
166
142
  [],
167
143
  false
@@ -171,12 +147,10 @@ describe HybridPlatformsConductor::HpcPlugins::PlatformHandler::ServerlessChef d
171
147
 
172
148
  it 'returns impacted service due to a library helper usage in a recipe' do
173
149
  with_serverless_chef_platforms('recipes') do |platform, repository|
174
- File.write("#{repository}/cookbooks/test_cookbook_1/recipes/default.rb", <<~EOS)
150
+ File.write("#{repository}/cookbooks/test_cookbook_1/recipes/default.rb", <<~EO_RECIPE)
175
151
  a = my_library_helper(42)
176
- EOS
177
- expect(platform.impacts_from(
178
- 'cookbooks/test_cookbook_2/libraries/default.rb' => {}
179
- )).to eq [
152
+ EO_RECIPE
153
+ expect(platform.impacts_from('cookbooks/test_cookbook_2/libraries/default.rb' => {})).to eq [
180
154
  [],
181
155
  %w[test_policy_1],
182
156
  false
@@ -186,12 +160,10 @@ describe HybridPlatformsConductor::HpcPlugins::PlatformHandler::ServerlessChef d
186
160
 
187
161
  it 'ignored impacted service from an unknown helper' do
188
162
  with_serverless_chef_platforms('recipes') do |platform, repository|
189
- File.write("#{repository}/cookbooks/test_cookbook_1/recipes/default.rb", <<~EOS)
163
+ File.write("#{repository}/cookbooks/test_cookbook_1/recipes/default.rb", <<~EO_RECIPE)
190
164
  a = unknown_helper(42)
191
- EOS
192
- expect(platform.impacts_from(
193
- 'cookbooks/test_cookbook_2/recipes/default.rb' => {}
194
- )).to eq [
165
+ EO_RECIPE
166
+ expect(platform.impacts_from('cookbooks/test_cookbook_2/recipes/default.rb' => {})).to eq [
195
167
  [],
196
168
  %w[test_policy_2],
197
169
  false
@@ -202,16 +174,14 @@ describe HybridPlatformsConductor::HpcPlugins::PlatformHandler::ServerlessChef d
202
174
  it 'returns impacted service due to an unknown library helper usage that has been configured' do
203
175
  with_serverless_chef_platforms(
204
176
  'recipes',
205
- additional_config: <<~EOS
177
+ additional_config: <<~EO_CONFIG
206
178
  helpers_including_recipes(unknown_helper: ['test_cookbook_2'])
207
- EOS
179
+ EO_CONFIG
208
180
  ) do |platform, repository|
209
- File.write("#{repository}/cookbooks/test_cookbook_1/recipes/default.rb", <<~EOS)
181
+ File.write("#{repository}/cookbooks/test_cookbook_1/recipes/default.rb", <<~EO_RECIPE)
210
182
  a = unknown_helper(42)
211
- EOS
212
- expect(platform.impacts_from(
213
- 'cookbooks/test_cookbook_2/recipes/default.rb' => {}
214
- )).to eq [
183
+ EO_RECIPE
184
+ expect(platform.impacts_from('cookbooks/test_cookbook_2/recipes/default.rb' => {})).to eq [
215
185
  [],
216
186
  %w[test_policy_1 test_policy_2],
217
187
  false
@@ -220,10 +190,8 @@ describe HybridPlatformsConductor::HpcPlugins::PlatformHandler::ServerlessChef d
220
190
  end
221
191
 
222
192
  it 'does not return impacted service due to a library helper not being used in a recipe' do
223
- with_serverless_chef_platforms('recipes') do |platform, repository|
224
- expect(platform.impacts_from(
225
- 'cookbooks/test_cookbook_2/libraries/default.rb' => {}
226
- )).to eq [
193
+ with_serverless_chef_platforms('recipes') do |platform|
194
+ expect(platform.impacts_from('cookbooks/test_cookbook_2/libraries/default.rb' => {})).to eq [
227
195
  [],
228
196
  [],
229
197
  false
@@ -233,12 +201,10 @@ describe HybridPlatformsConductor::HpcPlugins::PlatformHandler::ServerlessChef d
233
201
 
234
202
  it 'returns impacted service due to a usage of another cookbook\'s default recipe' do
235
203
  with_serverless_chef_platforms('recipes') do |platform, repository|
236
- File.write("#{repository}/cookbooks/test_cookbook_1/recipes/default.rb", <<~EOS)
204
+ File.write("#{repository}/cookbooks/test_cookbook_1/recipes/default.rb", <<~EO_RECIPE)
237
205
  include_recipe 'test_cookbook_2'
238
- EOS
239
- expect(platform.impacts_from(
240
- 'cookbooks/test_cookbook_2/recipes/default.rb' => {}
241
- )).to eq [
206
+ EO_RECIPE
207
+ expect(platform.impacts_from('cookbooks/test_cookbook_2/recipes/default.rb' => {})).to eq [
242
208
  [],
243
209
  %w[test_policy_1 test_policy_2],
244
210
  false
@@ -248,12 +214,10 @@ describe HybridPlatformsConductor::HpcPlugins::PlatformHandler::ServerlessChef d
248
214
 
249
215
  it 'returns impacted service due to a usage of another cookbook\'s recipe' do
250
216
  with_serverless_chef_platforms('recipes') do |platform, repository|
251
- File.write("#{repository}/cookbooks/test_cookbook_1/recipes/default.rb", <<~EOS)
217
+ File.write("#{repository}/cookbooks/test_cookbook_1/recipes/default.rb", <<~EO_RECIPE)
252
218
  include_recipe 'test_cookbook_2::other_recipe'
253
- EOS
254
- expect(platform.impacts_from(
255
- 'cookbooks/test_cookbook_2/recipes/other_recipe.rb' => {}
256
- )).to eq [
219
+ EO_RECIPE
220
+ expect(platform.impacts_from('cookbooks/test_cookbook_2/recipes/other_recipe.rb' => {})).to eq [
257
221
  [],
258
222
  %w[test_policy_1],
259
223
  false
@@ -263,12 +227,10 @@ describe HybridPlatformsConductor::HpcPlugins::PlatformHandler::ServerlessChef d
263
227
 
264
228
  it 'ignores cookbooks from cookbook paths that are not configured' do
265
229
  with_serverless_chef_platforms('several_cookbooks') do |platform, repository|
266
- File.write("#{repository}/cookbooks/test_cookbook_1/recipes/default.rb", <<~EOS)
230
+ File.write("#{repository}/cookbooks/test_cookbook_1/recipes/default.rb", <<~EO_RECIPE)
267
231
  include_recipe 'test_cookbook_2'
268
- EOS
269
- expect(platform.impacts_from(
270
- 'other_cookbooks/test_cookbook_2/recipes/default.rb' => {}
271
- )).to eq [
232
+ EO_RECIPE
233
+ expect(platform.impacts_from('other_cookbooks/test_cookbook_2/recipes/default.rb' => {})).to eq [
272
234
  [],
273
235
  %w[],
274
236
  true
@@ -278,13 +240,11 @@ describe HybridPlatformsConductor::HpcPlugins::PlatformHandler::ServerlessChef d
278
240
 
279
241
  it 'considers cookbooks from non-standard cookbook paths that are configured' do
280
242
  with_serverless_chef_platforms('several_cookbooks') do |platform, repository|
281
- File.write("#{repository}/cookbooks/test_cookbook_1/recipes/default.rb", <<~EOS)
243
+ File.write("#{repository}/cookbooks/test_cookbook_1/recipes/default.rb", <<~EO_RECIPE)
282
244
  include_recipe 'test_cookbook_2'
283
- EOS
245
+ EO_RECIPE
284
246
  ENV['hpc_test_cookbooks_path'] = 'other_cookbooks'
285
- expect(platform.impacts_from(
286
- 'other_cookbooks/test_cookbook_2/recipes/default.rb' => {}
287
- )).to eq [
247
+ expect(platform.impacts_from('other_cookbooks/test_cookbook_2/recipes/default.rb' => {})).to eq [
288
248
  [],
289
249
  %w[test_policy_1 test_policy_2],
290
250
  false
@@ -297,13 +257,11 @@ describe HybridPlatformsConductor::HpcPlugins::PlatformHandler::ServerlessChef d
297
257
  FileUtils.mkdir_p("#{other_repo}/cookbooks/test_cookbook_2/recipes")
298
258
  File.write("#{other_repo}/cookbooks/test_cookbook_2/recipes/default.rb", '')
299
259
  with_serverless_chef_platforms('several_cookbooks') do |platform, repository|
300
- File.write("#{repository}/cookbooks/test_cookbook_1/recipes/default.rb", <<~EOS)
260
+ File.write("#{repository}/cookbooks/test_cookbook_1/recipes/default.rb", <<~EO_RECIPE)
301
261
  include_recipe 'test_cookbook_2'
302
- EOS
262
+ EO_RECIPE
303
263
  ENV['hpc_test_cookbooks_path'] = "#{other_repo}:other_cookbooks"
304
- expect(platform.impacts_from(
305
- 'unknown_cookbooks/test_cookbook_2/recipes/default.rb' => {}
306
- )).to eq [
264
+ expect(platform.impacts_from('unknown_cookbooks/test_cookbook_2/recipes/default.rb' => {})).to eq [
307
265
  [],
308
266
  %w[],
309
267
  true