hybrid_platforms_conductor 32.3.6

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 (244) hide show
  1. checksums.yaml +7 -0
  2. data/bin/check-node +24 -0
  3. data/bin/deploy +12 -0
  4. data/bin/dump_nodes_json +12 -0
  5. data/bin/free_ips +23 -0
  6. data/bin/free_veids +17 -0
  7. data/bin/get_impacted_nodes +43 -0
  8. data/bin/last_deploys +56 -0
  9. data/bin/nodes_to_deploy +104 -0
  10. data/bin/report +10 -0
  11. data/bin/run +39 -0
  12. data/bin/setup +11 -0
  13. data/bin/ssh_config +14 -0
  14. data/bin/test +13 -0
  15. data/bin/topograph +54 -0
  16. data/lib/hybrid_platforms_conductor/action.rb +82 -0
  17. data/lib/hybrid_platforms_conductor/actions_executor.rb +307 -0
  18. data/lib/hybrid_platforms_conductor/bitbucket.rb +123 -0
  19. data/lib/hybrid_platforms_conductor/cmd_runner.rb +188 -0
  20. data/lib/hybrid_platforms_conductor/cmdb.rb +34 -0
  21. data/lib/hybrid_platforms_conductor/common_config_dsl/bitbucket.rb +78 -0
  22. data/lib/hybrid_platforms_conductor/common_config_dsl/confluence.rb +43 -0
  23. data/lib/hybrid_platforms_conductor/common_config_dsl/file_system_tests.rb +110 -0
  24. data/lib/hybrid_platforms_conductor/common_config_dsl/idempotence_tests.rb +38 -0
  25. data/lib/hybrid_platforms_conductor/config.rb +263 -0
  26. data/lib/hybrid_platforms_conductor/confluence.rb +119 -0
  27. data/lib/hybrid_platforms_conductor/connector.rb +84 -0
  28. data/lib/hybrid_platforms_conductor/credentials.rb +127 -0
  29. data/lib/hybrid_platforms_conductor/current_dir_monitor.rb +42 -0
  30. data/lib/hybrid_platforms_conductor/deployer.rb +598 -0
  31. data/lib/hybrid_platforms_conductor/executable.rb +145 -0
  32. data/lib/hybrid_platforms_conductor/hpc_plugins/action/bash.rb +44 -0
  33. data/lib/hybrid_platforms_conductor/hpc_plugins/action/interactive.rb +44 -0
  34. data/lib/hybrid_platforms_conductor/hpc_plugins/action/my_action.rb.sample +79 -0
  35. data/lib/hybrid_platforms_conductor/hpc_plugins/action/remote_bash.rb +63 -0
  36. data/lib/hybrid_platforms_conductor/hpc_plugins/action/ruby.rb +69 -0
  37. data/lib/hybrid_platforms_conductor/hpc_plugins/action/scp.rb +61 -0
  38. data/lib/hybrid_platforms_conductor/hpc_plugins/cmdb/config.rb +78 -0
  39. data/lib/hybrid_platforms_conductor/hpc_plugins/cmdb/host_ip.rb +104 -0
  40. data/lib/hybrid_platforms_conductor/hpc_plugins/cmdb/host_keys.rb +114 -0
  41. data/lib/hybrid_platforms_conductor/hpc_plugins/cmdb/my_cmdb.rb.sample +129 -0
  42. data/lib/hybrid_platforms_conductor/hpc_plugins/cmdb/platform_handlers.rb +66 -0
  43. data/lib/hybrid_platforms_conductor/hpc_plugins/connector/my_connector.rb.sample +156 -0
  44. data/lib/hybrid_platforms_conductor/hpc_plugins/connector/ssh.rb +702 -0
  45. data/lib/hybrid_platforms_conductor/hpc_plugins/platform_handler/platform_handler_plugin.rb.sample +292 -0
  46. data/lib/hybrid_platforms_conductor/hpc_plugins/provisioner/docker.rb +148 -0
  47. data/lib/hybrid_platforms_conductor/hpc_plugins/provisioner/my_provisioner.rb.sample +103 -0
  48. data/lib/hybrid_platforms_conductor/hpc_plugins/provisioner/podman.rb +125 -0
  49. data/lib/hybrid_platforms_conductor/hpc_plugins/provisioner/proxmox.rb +522 -0
  50. data/lib/hybrid_platforms_conductor/hpc_plugins/provisioner/proxmox/proxmox_waiter.rb +707 -0
  51. data/lib/hybrid_platforms_conductor/hpc_plugins/provisioner/proxmox/reserve_proxmox_container +122 -0
  52. data/lib/hybrid_platforms_conductor/hpc_plugins/report/confluence.rb +69 -0
  53. data/lib/hybrid_platforms_conductor/hpc_plugins/report/mediawiki.rb +164 -0
  54. data/lib/hybrid_platforms_conductor/hpc_plugins/report/my_report_plugin.rb.sample +88 -0
  55. data/lib/hybrid_platforms_conductor/hpc_plugins/report/stdout.rb +61 -0
  56. data/lib/hybrid_platforms_conductor/hpc_plugins/report/templates/confluence_inventory.html.erb +33 -0
  57. data/lib/hybrid_platforms_conductor/hpc_plugins/test/bitbucket_conf.rb +137 -0
  58. data/lib/hybrid_platforms_conductor/hpc_plugins/test/can_be_checked.rb +21 -0
  59. data/lib/hybrid_platforms_conductor/hpc_plugins/test/check_deploy_and_idempotence.rb +112 -0
  60. data/lib/hybrid_platforms_conductor/hpc_plugins/test/check_from_scratch.rb +35 -0
  61. data/lib/hybrid_platforms_conductor/hpc_plugins/test/connection.rb +28 -0
  62. data/lib/hybrid_platforms_conductor/hpc_plugins/test/deploy_freshness.rb +44 -0
  63. data/lib/hybrid_platforms_conductor/hpc_plugins/test/deploy_from_scratch.rb +36 -0
  64. data/lib/hybrid_platforms_conductor/hpc_plugins/test/deploy_removes_root_access.rb +49 -0
  65. data/lib/hybrid_platforms_conductor/hpc_plugins/test/divergence.rb +25 -0
  66. data/lib/hybrid_platforms_conductor/hpc_plugins/test/executables.rb +46 -0
  67. data/lib/hybrid_platforms_conductor/hpc_plugins/test/file_system.rb +45 -0
  68. data/lib/hybrid_platforms_conductor/hpc_plugins/test/file_system_hdfs.rb +45 -0
  69. data/lib/hybrid_platforms_conductor/hpc_plugins/test/hostname.rb +25 -0
  70. data/lib/hybrid_platforms_conductor/hpc_plugins/test/idempotence.rb +77 -0
  71. data/lib/hybrid_platforms_conductor/hpc_plugins/test/ip.rb +38 -0
  72. data/lib/hybrid_platforms_conductor/hpc_plugins/test/jenkins_ci_conf.rb +56 -0
  73. data/lib/hybrid_platforms_conductor/hpc_plugins/test/jenkins_ci_masters_ok.rb +54 -0
  74. data/lib/hybrid_platforms_conductor/hpc_plugins/test/linear_strategy.rb +47 -0
  75. data/lib/hybrid_platforms_conductor/hpc_plugins/test/local_users.rb +82 -0
  76. data/lib/hybrid_platforms_conductor/hpc_plugins/test/mounts.rb +120 -0
  77. data/lib/hybrid_platforms_conductor/hpc_plugins/test/my_test_plugin.rb.sample +143 -0
  78. data/lib/hybrid_platforms_conductor/hpc_plugins/test/orphan_files.rb +74 -0
  79. data/lib/hybrid_platforms_conductor/hpc_plugins/test/ports.rb +85 -0
  80. data/lib/hybrid_platforms_conductor/hpc_plugins/test/private_ips.rb +38 -0
  81. data/lib/hybrid_platforms_conductor/hpc_plugins/test/public_ips.rb +38 -0
  82. data/lib/hybrid_platforms_conductor/hpc_plugins/test/spectre-meltdown-checker.sh +1930 -0
  83. data/lib/hybrid_platforms_conductor/hpc_plugins/test/spectre.rb +56 -0
  84. data/lib/hybrid_platforms_conductor/hpc_plugins/test/veids.rb +31 -0
  85. data/lib/hybrid_platforms_conductor/hpc_plugins/test/vulnerabilities.rb +159 -0
  86. data/lib/hybrid_platforms_conductor/hpc_plugins/test_report/confluence.rb +122 -0
  87. data/lib/hybrid_platforms_conductor/hpc_plugins/test_report/my_test_report.rb.sample +48 -0
  88. data/lib/hybrid_platforms_conductor/hpc_plugins/test_report/stdout.rb +120 -0
  89. data/lib/hybrid_platforms_conductor/hpc_plugins/test_report/templates/_confluence_errors_status.html.erb +46 -0
  90. data/lib/hybrid_platforms_conductor/hpc_plugins/test_report/templates/_confluence_gauge.html.erb +49 -0
  91. data/lib/hybrid_platforms_conductor/hpc_plugins/test_report/templates/confluence.html.erb +242 -0
  92. data/lib/hybrid_platforms_conductor/io_router.rb +70 -0
  93. data/lib/hybrid_platforms_conductor/json_dumper.rb +88 -0
  94. data/lib/hybrid_platforms_conductor/logger_helpers.rb +319 -0
  95. data/lib/hybrid_platforms_conductor/mutex_dir +76 -0
  96. data/lib/hybrid_platforms_conductor/nodes_handler.rb +597 -0
  97. data/lib/hybrid_platforms_conductor/parallel_threads.rb +97 -0
  98. data/lib/hybrid_platforms_conductor/platform_handler.rb +188 -0
  99. data/lib/hybrid_platforms_conductor/platforms_handler.rb +118 -0
  100. data/lib/hybrid_platforms_conductor/plugin.rb +53 -0
  101. data/lib/hybrid_platforms_conductor/plugins.rb +101 -0
  102. data/lib/hybrid_platforms_conductor/provisioner.rb +181 -0
  103. data/lib/hybrid_platforms_conductor/report.rb +31 -0
  104. data/lib/hybrid_platforms_conductor/reports_handler.rb +84 -0
  105. data/lib/hybrid_platforms_conductor/services_handler.rb +274 -0
  106. data/lib/hybrid_platforms_conductor/test.rb +141 -0
  107. data/lib/hybrid_platforms_conductor/test_by_service.rb +22 -0
  108. data/lib/hybrid_platforms_conductor/test_report.rb +282 -0
  109. data/lib/hybrid_platforms_conductor/tests_runner.rb +590 -0
  110. data/lib/hybrid_platforms_conductor/thycotic.rb +92 -0
  111. data/lib/hybrid_platforms_conductor/topographer.rb +859 -0
  112. data/lib/hybrid_platforms_conductor/topographer/plugin.rb +20 -0
  113. data/lib/hybrid_platforms_conductor/topographer/plugins/graphviz.rb +127 -0
  114. data/lib/hybrid_platforms_conductor/topographer/plugins/json.rb +72 -0
  115. data/lib/hybrid_platforms_conductor/topographer/plugins/my_topographer_output_plugin.rb.sample +37 -0
  116. data/lib/hybrid_platforms_conductor/topographer/plugins/svg.rb +30 -0
  117. data/lib/hybrid_platforms_conductor/version.rb +5 -0
  118. data/spec/hybrid_platforms_conductor_test.rb +159 -0
  119. data/spec/hybrid_platforms_conductor_test/api/actions_executor/actions/bash_spec.rb +43 -0
  120. data/spec/hybrid_platforms_conductor_test/api/actions_executor/actions/interactive_spec.rb +18 -0
  121. data/spec/hybrid_platforms_conductor_test/api/actions_executor/actions/remote_bash_spec.rb +102 -0
  122. data/spec/hybrid_platforms_conductor_test/api/actions_executor/actions/ruby_spec.rb +108 -0
  123. data/spec/hybrid_platforms_conductor_test/api/actions_executor/actions/scp_spec.rb +79 -0
  124. data/spec/hybrid_platforms_conductor_test/api/actions_executor/actions_spec.rb +199 -0
  125. data/spec/hybrid_platforms_conductor_test/api/actions_executor/connection_spec.rb +212 -0
  126. data/spec/hybrid_platforms_conductor_test/api/actions_executor/connectors/ssh/cli_options_spec.rb +125 -0
  127. data/spec/hybrid_platforms_conductor_test/api/actions_executor/connectors/ssh/config_dsl_spec.rb +50 -0
  128. data/spec/hybrid_platforms_conductor_test/api/actions_executor/connectors/ssh/connectable_nodes_spec.rb +28 -0
  129. data/spec/hybrid_platforms_conductor_test/api/actions_executor/connectors/ssh/connections_spec.rb +448 -0
  130. data/spec/hybrid_platforms_conductor_test/api/actions_executor/connectors/ssh/global_helpers_spec.rb +313 -0
  131. data/spec/hybrid_platforms_conductor_test/api/actions_executor/connectors/ssh/node_helpers_spec.rb +32 -0
  132. data/spec/hybrid_platforms_conductor_test/api/actions_executor/connectors/ssh/remote_actions_spec.rb +134 -0
  133. data/spec/hybrid_platforms_conductor_test/api/actions_executor/logging_spec.rb +256 -0
  134. data/spec/hybrid_platforms_conductor_test/api/actions_executor/parallel_spec.rb +338 -0
  135. data/spec/hybrid_platforms_conductor_test/api/actions_executor/timeout_spec.rb +101 -0
  136. data/spec/hybrid_platforms_conductor_test/api/cmd_runner_spec.rb +165 -0
  137. data/spec/hybrid_platforms_conductor_test/api/config_spec.rb +238 -0
  138. data/spec/hybrid_platforms_conductor_test/api/deployer/check_spec.rb +9 -0
  139. data/spec/hybrid_platforms_conductor_test/api/deployer/deploy_spec.rb +243 -0
  140. data/spec/hybrid_platforms_conductor_test/api/deployer/parse_deploy_output_spec.rb +104 -0
  141. data/spec/hybrid_platforms_conductor_test/api/deployer/provisioner_spec.rb +131 -0
  142. data/spec/hybrid_platforms_conductor_test/api/deployer/provisioners/docker/Dockerfile +10 -0
  143. data/spec/hybrid_platforms_conductor_test/api/deployer/provisioners/docker_spec.rb +123 -0
  144. data/spec/hybrid_platforms_conductor_test/api/deployer/provisioners/podman_spec.rb +211 -0
  145. data/spec/hybrid_platforms_conductor_test/api/deployer/provisioners/proxmox/config_dsl_spec.rb +126 -0
  146. data/spec/hybrid_platforms_conductor_test/api/deployer/provisioners/proxmox/create_spec.rb +290 -0
  147. data/spec/hybrid_platforms_conductor_test/api/deployer/provisioners/proxmox/destroy_spec.rb +43 -0
  148. data/spec/hybrid_platforms_conductor_test/api/deployer/provisioners/proxmox/ip_spec.rb +60 -0
  149. data/spec/hybrid_platforms_conductor_test/api/deployer/provisioners/proxmox/proxmox.json +3 -0
  150. data/spec/hybrid_platforms_conductor_test/api/deployer/provisioners/proxmox/reserve_proxmox_container/destroy_vm_spec.rb +82 -0
  151. data/spec/hybrid_platforms_conductor_test/api/deployer/provisioners/proxmox/reserve_proxmox_container/expired_containers_spec.rb +786 -0
  152. data/spec/hybrid_platforms_conductor_test/api/deployer/provisioners/proxmox/reserve_proxmox_container/ips_assignment_spec.rb +112 -0
  153. data/spec/hybrid_platforms_conductor_test/api/deployer/provisioners/proxmox/reserve_proxmox_container/other_lxc_containers_resources_spec.rb +190 -0
  154. data/spec/hybrid_platforms_conductor_test/api/deployer/provisioners/proxmox/reserve_proxmox_container/pve_node_resources_spec.rb +200 -0
  155. data/spec/hybrid_platforms_conductor_test/api/deployer/provisioners/proxmox/reserve_proxmox_container/retries_spec.rb +35 -0
  156. data/spec/hybrid_platforms_conductor_test/api/deployer/provisioners/proxmox/reserve_proxmox_container/vm_ids_assignment_spec.rb +67 -0
  157. data/spec/hybrid_platforms_conductor_test/api/deployer/provisioners/proxmox/start_spec.rb +79 -0
  158. data/spec/hybrid_platforms_conductor_test/api/deployer/provisioners/proxmox/state_spec.rb +28 -0
  159. data/spec/hybrid_platforms_conductor_test/api/deployer/provisioners/proxmox/stop_spec.rb +41 -0
  160. data/spec/hybrid_platforms_conductor_test/api/nodes_handler/cmdbs/config_spec.rb +33 -0
  161. data/spec/hybrid_platforms_conductor_test/api/nodes_handler/cmdbs/host_ip_spec.rb +64 -0
  162. data/spec/hybrid_platforms_conductor_test/api/nodes_handler/cmdbs/host_keys_spec.rb +133 -0
  163. data/spec/hybrid_platforms_conductor_test/api/nodes_handler/cmdbs/platform_handlers_spec.rb +19 -0
  164. data/spec/hybrid_platforms_conductor_test/api/nodes_handler/cmdbs_plugins_api_spec.rb +446 -0
  165. data/spec/hybrid_platforms_conductor_test/api/nodes_handler/common_spec.rb +127 -0
  166. data/spec/hybrid_platforms_conductor_test/api/nodes_handler/git_diff_impacts_spec.rb +318 -0
  167. data/spec/hybrid_platforms_conductor_test/api/nodes_handler/nodes_selectors_spec.rb +132 -0
  168. data/spec/hybrid_platforms_conductor_test/api/nodes_handler/platform_handlers_plugins_api_spec.rb +60 -0
  169. data/spec/hybrid_platforms_conductor_test/api/nodes_handler/several_platforms_spec.rb +58 -0
  170. data/spec/hybrid_platforms_conductor_test/api/platform_handler_spec.rb +97 -0
  171. data/spec/hybrid_platforms_conductor_test/api/platforms_handler_spec.rb +104 -0
  172. data/spec/hybrid_platforms_conductor_test/api/plugins_spec.rb +243 -0
  173. data/spec/hybrid_platforms_conductor_test/api/reports_handler_spec.rb +44 -0
  174. data/spec/hybrid_platforms_conductor_test/api/services_handler/actions_to_deploy_spec.rb +121 -0
  175. data/spec/hybrid_platforms_conductor_test/api/services_handler/deploy_allowed_spec.rb +142 -0
  176. data/spec/hybrid_platforms_conductor_test/api/services_handler/log_info_spec.rb +101 -0
  177. data/spec/hybrid_platforms_conductor_test/api/services_handler/package_spec.rb +388 -0
  178. data/spec/hybrid_platforms_conductor_test/api/services_handler/parse_deploy_output_spec.rb +274 -0
  179. data/spec/hybrid_platforms_conductor_test/api/services_handler/prepare_for_deploy_spec.rb +264 -0
  180. data/spec/hybrid_platforms_conductor_test/api/tests_runner/common_spec.rb +194 -0
  181. data/spec/hybrid_platforms_conductor_test/api/tests_runner/global_spec.rb +37 -0
  182. data/spec/hybrid_platforms_conductor_test/api/tests_runner/node_check_spec.rb +194 -0
  183. data/spec/hybrid_platforms_conductor_test/api/tests_runner/node_spec.rb +137 -0
  184. data/spec/hybrid_platforms_conductor_test/api/tests_runner/node_ssh_spec.rb +257 -0
  185. data/spec/hybrid_platforms_conductor_test/api/tests_runner/platform_spec.rb +110 -0
  186. data/spec/hybrid_platforms_conductor_test/api/tests_runner/reports_spec.rb +367 -0
  187. data/spec/hybrid_platforms_conductor_test/api/tests_runner/test_plugins/bitbucket_conf_spec.rb +111 -0
  188. data/spec/hybrid_platforms_conductor_test/api/tests_runner/test_reports_plugins/confluence_spec.rb +29 -0
  189. data/spec/hybrid_platforms_conductor_test/cmdb_plugins/test_cmdb.rb +166 -0
  190. data/spec/hybrid_platforms_conductor_test/cmdb_plugins/test_cmdb2.rb +93 -0
  191. data/spec/hybrid_platforms_conductor_test/cmdb_plugins/test_cmdb_others.rb +60 -0
  192. data/spec/hybrid_platforms_conductor_test/cmdb_plugins/test_cmdb_others2.rb +58 -0
  193. data/spec/hybrid_platforms_conductor_test/executables/check-node_spec.rb +35 -0
  194. data/spec/hybrid_platforms_conductor_test/executables/deploy_spec.rb +35 -0
  195. data/spec/hybrid_platforms_conductor_test/executables/get_impacted_nodes_spec.rb +158 -0
  196. data/spec/hybrid_platforms_conductor_test/executables/last_deploys_spec.rb +173 -0
  197. data/spec/hybrid_platforms_conductor_test/executables/nodes_to_deploy_spec.rb +283 -0
  198. data/spec/hybrid_platforms_conductor_test/executables/options/actions_executor_spec.rb +28 -0
  199. data/spec/hybrid_platforms_conductor_test/executables/options/cmd_runner_spec.rb +28 -0
  200. data/spec/hybrid_platforms_conductor_test/executables/options/common_spec.rb +67 -0
  201. data/spec/hybrid_platforms_conductor_test/executables/options/deployer_spec.rb +251 -0
  202. data/spec/hybrid_platforms_conductor_test/executables/options/nodes_handler_spec.rb +111 -0
  203. data/spec/hybrid_platforms_conductor_test/executables/options/nodes_selectors_spec.rb +71 -0
  204. data/spec/hybrid_platforms_conductor_test/executables/options/reports_handler_spec.rb +54 -0
  205. data/spec/hybrid_platforms_conductor_test/executables/options/tests_runner_spec.rb +139 -0
  206. data/spec/hybrid_platforms_conductor_test/executables/report_spec.rb +60 -0
  207. data/spec/hybrid_platforms_conductor_test/executables/run_spec.rb +173 -0
  208. data/spec/hybrid_platforms_conductor_test/executables/ssh_config_spec.rb +35 -0
  209. data/spec/hybrid_platforms_conductor_test/executables/test_spec.rb +41 -0
  210. data/spec/hybrid_platforms_conductor_test/helpers/actions_executor_helpers.rb +98 -0
  211. data/spec/hybrid_platforms_conductor_test/helpers/cmd_runner_helpers.rb +92 -0
  212. data/spec/hybrid_platforms_conductor_test/helpers/cmdb_helpers.rb +37 -0
  213. data/spec/hybrid_platforms_conductor_test/helpers/config_helpers.rb +20 -0
  214. data/spec/hybrid_platforms_conductor_test/helpers/connector_ssh_helpers.rb +130 -0
  215. data/spec/hybrid_platforms_conductor_test/helpers/deployer_helpers.rb +149 -0
  216. data/spec/hybrid_platforms_conductor_test/helpers/deployer_test_helpers.rb +812 -0
  217. data/spec/hybrid_platforms_conductor_test/helpers/executables_helpers.rb +96 -0
  218. data/spec/hybrid_platforms_conductor_test/helpers/nodes_handler_helpers.rb +20 -0
  219. data/spec/hybrid_platforms_conductor_test/helpers/platform_handler_helpers.rb +35 -0
  220. data/spec/hybrid_platforms_conductor_test/helpers/platforms_handler_helpers.rb +127 -0
  221. data/spec/hybrid_platforms_conductor_test/helpers/plugins_helpers.rb +48 -0
  222. data/spec/hybrid_platforms_conductor_test/helpers/provisioner_proxmox_helpers.rb +789 -0
  223. data/spec/hybrid_platforms_conductor_test/helpers/reports_handler_helpers.rb +29 -0
  224. data/spec/hybrid_platforms_conductor_test/helpers/services_handler_helpers.rb +20 -0
  225. data/spec/hybrid_platforms_conductor_test/helpers/tests_runner_helpers.rb +38 -0
  226. data/spec/hybrid_platforms_conductor_test/mocked_lib/my_test_gem/hpc_plugins/test_plugin_type/test_plugin_id1.rb +22 -0
  227. data/spec/hybrid_platforms_conductor_test/mocked_lib/my_test_gem/hpc_plugins/test_plugin_type/test_plugin_id2.rb +22 -0
  228. data/spec/hybrid_platforms_conductor_test/mocked_lib/my_test_gem2/sub_dir/hpc_plugins/test_plugin_type/test_plugin_id3.rb +26 -0
  229. data/spec/hybrid_platforms_conductor_test/mocked_lib/my_test_gem2/sub_dir/hpc_plugins/test_plugin_type2/test_plugin_id4.rb +26 -0
  230. data/spec/hybrid_platforms_conductor_test/platform_handler_plugins/test.rb +225 -0
  231. data/spec/hybrid_platforms_conductor_test/platform_handler_plugins/test2.rb +11 -0
  232. data/spec/hybrid_platforms_conductor_test/report_plugin.rb +35 -0
  233. data/spec/hybrid_platforms_conductor_test/test_action.rb +66 -0
  234. data/spec/hybrid_platforms_conductor_test/test_connector.rb +151 -0
  235. data/spec/hybrid_platforms_conductor_test/test_plugins/global.rb +30 -0
  236. data/spec/hybrid_platforms_conductor_test/test_plugins/node.rb +53 -0
  237. data/spec/hybrid_platforms_conductor_test/test_plugins/node_check.rb +47 -0
  238. data/spec/hybrid_platforms_conductor_test/test_plugins/node_ssh.rb +42 -0
  239. data/spec/hybrid_platforms_conductor_test/test_plugins/platform.rb +50 -0
  240. data/spec/hybrid_platforms_conductor_test/test_plugins/several_checks.rb +50 -0
  241. data/spec/hybrid_platforms_conductor_test/test_provisioner.rb +95 -0
  242. data/spec/hybrid_platforms_conductor_test/tests_report_plugin.rb +49 -0
  243. data/spec/spec_helper.rb +111 -0
  244. metadata +566 -0
@@ -0,0 +1,111 @@
1
+ describe HybridPlatformsConductor::TestsRunner do
2
+
3
+ context 'checking test plugins' do
4
+
5
+ context 'checking bitbucket_conf' do
6
+
7
+ it 'iterates over defined Bitbucket repos' do
8
+ with_repository do |repository|
9
+ platforms = <<~EOS
10
+ bitbucket_repos(
11
+ url: 'https://my_bb1.my_domain.com',
12
+ project: 'PR1',
13
+ repos: [
14
+ 'repo1',
15
+ 'repo2'
16
+ ]
17
+ )
18
+ bitbucket_repos(
19
+ url: 'https://my_bb2.my_domain.com',
20
+ project: 'PR2',
21
+ repos: [
22
+ 'repo3',
23
+ 'repo4'
24
+ ],
25
+ jenkins_ci_url: 'https://my_jenkins.com',
26
+ checks: {
27
+ branch_permissions: [
28
+ {
29
+ type: 'fast-forward-only',
30
+ branch: 'master',
31
+ exempted_users: ['toto']
32
+ }
33
+ ]
34
+ }
35
+ )
36
+ EOS
37
+ with_platforms platforms do
38
+ repos = []
39
+ test_config.for_each_bitbucket_repo do |bitbucket, repo_info|
40
+ repos << {
41
+ bitbucket_url: bitbucket.bitbucket_url,
42
+ repo_info: repo_info
43
+ }
44
+ end
45
+ expect(repos).to eq [
46
+ {
47
+ bitbucket_url: 'https://my_bb1.my_domain.com',
48
+ repo_info: {
49
+ name: 'repo1',
50
+ project: 'PR1',
51
+ url: 'https://my_bb1.my_domain.com/scm/pr1/repo1.git',
52
+ jenkins_ci_url: nil,
53
+ checks: {}
54
+ }
55
+ },
56
+ {
57
+ bitbucket_url: 'https://my_bb1.my_domain.com',
58
+ repo_info: {
59
+ name: 'repo2',
60
+ project: 'PR1',
61
+ url: 'https://my_bb1.my_domain.com/scm/pr1/repo2.git',
62
+ jenkins_ci_url: nil,
63
+ checks: {}
64
+ }
65
+ },
66
+ {
67
+ bitbucket_url: 'https://my_bb2.my_domain.com',
68
+ repo_info: {
69
+ name: 'repo3',
70
+ project: 'PR2',
71
+ url: 'https://my_bb2.my_domain.com/scm/pr2/repo3.git',
72
+ jenkins_ci_url: 'https://my_jenkins.com/job/repo3',
73
+ checks: {
74
+ branch_permissions: [
75
+ {
76
+ type: 'fast-forward-only',
77
+ branch: 'master',
78
+ exempted_users: ['toto']
79
+ }
80
+ ]
81
+ }
82
+ }
83
+ },
84
+ {
85
+ bitbucket_url: 'https://my_bb2.my_domain.com',
86
+ repo_info: {
87
+ name: 'repo4',
88
+ project: 'PR2',
89
+ url: 'https://my_bb2.my_domain.com/scm/pr2/repo4.git',
90
+ jenkins_ci_url: 'https://my_jenkins.com/job/repo4',
91
+ checks: {
92
+ branch_permissions: [
93
+ {
94
+ type: 'fast-forward-only',
95
+ branch: 'master',
96
+ exempted_users: ['toto']
97
+ }
98
+ ]
99
+ }
100
+ }
101
+ }
102
+ ]
103
+ end
104
+ end
105
+ end
106
+
107
+ end
108
+
109
+ end
110
+
111
+ end
@@ -0,0 +1,29 @@
1
+ describe HybridPlatformsConductor::TestsRunner do
2
+
3
+ context 'checking test reports plugins' do
4
+
5
+ context 'checking confluence' do
6
+
7
+ it 'returns Confluence info' do
8
+ with_repository do |repository|
9
+ platforms = <<~EOS
10
+ confluence(
11
+ url: 'https://my_confluence.my_domain.com',
12
+ inventory_report_page_id: '123456'
13
+ )
14
+ EOS
15
+ with_platforms platforms do
16
+ expect(test_config.confluence_info).to eq(
17
+ url: 'https://my_confluence.my_domain.com',
18
+ inventory_report_page_id: '123456',
19
+ tests_report_page_id: nil
20
+ )
21
+ end
22
+ end
23
+ end
24
+
25
+ end
26
+
27
+ end
28
+
29
+ end
@@ -0,0 +1,166 @@
1
+ module HybridPlatformsConductorTest
2
+
3
+ module CmdbPlugins
4
+
5
+ # CMDB plugin that can be piloted by test cases to test how NodesHandler is using such plugins
6
+ class TestCmdb < HybridPlatformsConductor::Cmdb
7
+
8
+ # Return the calls made to this plugin
9
+ # Array< [String, Object, Object...] >
10
+ # Array< [method_name, arg1, arg2... ] >
11
+ attr_accessor :calls
12
+
13
+ # Return possible dependencies between properties.
14
+ # A property can need another property to be set before.
15
+ # For example an IP would need first to have the hostname to be known in order to be looked up.
16
+ # [API] - This method is optional
17
+ #
18
+ # Result::
19
+ # * Hash<Symbol, Symbol or Array<Symbol> >: The list of necessary properties (or single one) that should be set, per property name (:others can also be used here)
20
+ def property_dependencies
21
+ {
22
+ reversed_double: :double,
23
+ reversed_downcase: :downcase
24
+ }
25
+ end
26
+
27
+ # get_* methods are automatically detected as possible metadata properties this plugin can fill.
28
+ # The property name filled by such method is given by the method's name: get_my_property will fill the :my_property metadata.
29
+ # The method get_others is used specifically to return properties whose name is unknown before fetching them.
30
+
31
+ # Get a specific property for a given set of nodes.
32
+ # [API] - @nodes_handler can be used.
33
+ # [API] - @cmd_runner can be used.
34
+ #
35
+ # Parameters::
36
+ # * *nodes* (Array<String>): The nodes to lookup the property for.
37
+ # * *metadata* (Hash<String, Hash<Symbol,Object> >): Existing metadata for each node. Dependent properties should be present here.
38
+ # Result::
39
+ # * Hash<String, Object>: The corresponding property, per required node.
40
+ # Nodes for which the property can't be fetched can be ommitted.
41
+ def get_upcase(nodes, metadata)
42
+ record_call(:get_upcase, nodes, metadata)
43
+ Hash[nodes.map { |node| [node, node.upcase] }]
44
+ end
45
+
46
+ # Get a specific property for a given set of nodes.
47
+ # [API] - @nodes_handler can be used.
48
+ # [API] - @cmd_runner can be used.
49
+ #
50
+ # Parameters::
51
+ # * *nodes* (Array<String>): The nodes to lookup the property for.
52
+ # * *metadata* (Hash<String, Hash<Symbol,Object> >): Existing metadata for each node. Dependent properties should be present here.
53
+ # Result::
54
+ # * Hash<String, Object>: The corresponding property, per required node.
55
+ # Nodes for which the property can't be fetched can be ommitted.
56
+ def get_double(nodes, metadata)
57
+ record_call(:get_double, nodes, metadata)
58
+ Hash[nodes.map { |node| [node, node * 2] }]
59
+ end
60
+
61
+ # Get a specific property for a given set of nodes.
62
+ # [API] - @nodes_handler can be used.
63
+ # [API] - @cmd_runner can be used.
64
+ #
65
+ # Parameters::
66
+ # * *nodes* (Array<String>): The nodes to lookup the property for.
67
+ # * *metadata* (Hash<String, Hash<Symbol,Object> >): Existing metadata for each node. Dependent properties should be present here.
68
+ # Result::
69
+ # * Hash<String, Object>: The corresponding property, per required node.
70
+ # Nodes for which the property can't be fetched can be ommitted.
71
+ def get_reversed_double(nodes, metadata)
72
+ record_call(:get_reversed_double, nodes, metadata)
73
+ Hash[nodes.map { |node| [node, metadata[node][:double].reverse] }]
74
+ end
75
+
76
+ # Get a specific property for a given set of nodes.
77
+ # [API] - @nodes_handler can be used.
78
+ # [API] - @cmd_runner can be used.
79
+ #
80
+ # Parameters::
81
+ # * *nodes* (Array<String>): The nodes to lookup the property for.
82
+ # * *metadata* (Hash<String, Hash<Symbol,Object> >): Existing metadata for each node. Dependent properties should be present here.
83
+ # Result::
84
+ # * Hash<String, Object>: The corresponding property, per required node.
85
+ # Nodes for which the property can't be fetched can be ommitted.
86
+ def get_reversed_downcase(nodes, metadata)
87
+ record_call(:get_reversed_downcase, nodes, metadata)
88
+ Hash[nodes.map { |node| [node, metadata[node][:downcase] ? metadata[node][:downcase].reverse : 'UNKNOWN'] }]
89
+ end
90
+
91
+ # Get a specific property for a given set of nodes.
92
+ # [API] - @nodes_handler can be used.
93
+ # [API] - @cmd_runner can be used.
94
+ #
95
+ # Parameters::
96
+ # * *nodes* (Array<String>): The nodes to lookup the property for.
97
+ # * *metadata* (Hash<String, Hash<Symbol,Object> >): Existing metadata for each node. Dependent properties should be present here.
98
+ # Result::
99
+ # * Hash<String, Object>: The corresponding property, per required node.
100
+ # Nodes for which the property can't be fetched can be ommitted.
101
+ def get_nothing(nodes, metadata)
102
+ record_call(:get_nothing, nodes, metadata)
103
+ {}
104
+ end
105
+
106
+ # Get a specific property for a given set of nodes.
107
+ # [API] - @nodes_handler can be used.
108
+ # [API] - @cmd_runner can be used.
109
+ #
110
+ # Parameters::
111
+ # * *nodes* (Array<String>): The nodes to lookup the property for.
112
+ # * *metadata* (Hash<String, Hash<Symbol,Object> >): Existing metadata for each node. Dependent properties should be present here.
113
+ # Result::
114
+ # * Hash<String, Object>: The corresponding property, per required node.
115
+ # Nodes for which the property can't be fetched can be ommitted.
116
+ def get_same_comment(nodes, metadata)
117
+ record_call(:get_same_comment, nodes, metadata)
118
+ Hash[nodes.map { |node| [node, "Comment for #{node}"] }]
119
+ end
120
+
121
+ # Get a specific property for a given set of nodes.
122
+ # [API] - @nodes_handler can be used.
123
+ # [API] - @cmd_runner can be used.
124
+ #
125
+ # Parameters::
126
+ # * *nodes* (Array<String>): The nodes to lookup the property for.
127
+ # * *metadata* (Hash<String, Hash<Symbol,Object> >): Existing metadata for each node. Dependent properties should be present here.
128
+ # Result::
129
+ # * Hash<String, Object>: The corresponding property, per required node.
130
+ # Nodes for which the property can't be fetched can be ommitted.
131
+ def get_different_comment(nodes, metadata)
132
+ record_call(:get_different_comment, nodes, metadata)
133
+ Hash[nodes.map { |node| [node, 'Comment from test_cmdb'] }]
134
+ end
135
+
136
+ # Get a specific property for a given set of nodes.
137
+ # [API] - @nodes_handler can be used.
138
+ # [API] - @cmd_runner can be used.
139
+ #
140
+ # Parameters::
141
+ # * *nodes* (Array<String>): The nodes to lookup the property for.
142
+ # * *metadata* (Hash<String, Hash<Symbol,Object> >): Existing metadata for each node. Dependent properties should be present here.
143
+ # Result::
144
+ # * Hash<String, Object>: The corresponding property, per required node.
145
+ # Nodes for which the property can't be fetched can be ommitted.
146
+ def get_different_comment2(nodes, metadata)
147
+ record_call(:get_different_comment2, nodes, metadata)
148
+ Hash[nodes.map { |node| [node, 'Comment2 from test_cmdb'] }]
149
+ end
150
+
151
+ # Register a call to be checked by the tests later
152
+ #
153
+ # Parameters::
154
+ # * *method* (Symbol): Method being called
155
+ # * *args* (Array<Object>): Arguments given to the call
156
+ def record_call(method, *args)
157
+ @calls = [] unless defined?(@calls)
158
+ # Create a shallow copy of the args, just to make sure they won't get changed by later code
159
+ @calls << [method] + Marshal.load(Marshal.dump(args))
160
+ end
161
+
162
+ end
163
+
164
+ end
165
+
166
+ end
@@ -0,0 +1,93 @@
1
+ module HybridPlatformsConductorTest
2
+
3
+ module CmdbPlugins
4
+
5
+ # CMDB plugin that can be piloted by test cases to test how NodesHandler is using such plugins
6
+ class TestCmdb2 < HybridPlatformsConductor::Cmdb
7
+
8
+ # Return the calls made to this plugin
9
+ # Array< [String, Object, Object...] >
10
+ # Array< [method_name, arg1, arg2... ] >
11
+ attr_accessor :calls
12
+
13
+ # get_* methods are automatically detected as possible metadata properties this plugin can fill.
14
+ # The property name filled by such method is given by the method's name: get_my_property will fill the :my_property metadata.
15
+ # The method get_others is used specifically to return properties whose name is unknown before fetching them.
16
+
17
+ # Get a specific property for a given set of nodes.
18
+ # [API] - @nodes_handler can be used.
19
+ # [API] - @cmd_runner can be used.
20
+ #
21
+ # Parameters::
22
+ # * *nodes* (Array<String>): The nodes to lookup the property for.
23
+ # * *metadata* (Hash<String, Hash<Symbol,Object> >): Existing metadata for each node. Dependent properties should be present here.
24
+ # Result::
25
+ # * Hash<String, Object>: The corresponding property, per required node.
26
+ # Nodes for which the property can't be fetched can be ommitted.
27
+ def get_nothing(nodes, metadata)
28
+ record_call(:get_nothing, nodes, metadata)
29
+ # Here we return something to test that if the first one fails we have the second CMDB
30
+ Hash[nodes.map { |node| [node, "#{node} has nothing"] }]
31
+ end
32
+
33
+ # Get a specific property for a given set of nodes.
34
+ # [API] - @nodes_handler can be used.
35
+ # [API] - @cmd_runner can be used.
36
+ #
37
+ # Parameters::
38
+ # * *nodes* (Array<String>): The nodes to lookup the property for.
39
+ # * *metadata* (Hash<String, Hash<Symbol,Object> >): Existing metadata for each node. Dependent properties should be present here.
40
+ # Result::
41
+ # * Hash<String, Object>: The corresponding property, per required node.
42
+ # Nodes for which the property can't be fetched can be ommitted.
43
+ def get_same_comment(nodes, metadata)
44
+ record_call(:get_same_comment, nodes, metadata)
45
+ Hash[nodes.map { |node| [node, "Comment for #{node}"] }]
46
+ end
47
+
48
+ # Get a specific property for a given set of nodes.
49
+ # [API] - @nodes_handler can be used.
50
+ # [API] - @cmd_runner can be used.
51
+ #
52
+ # Parameters::
53
+ # * *nodes* (Array<String>): The nodes to lookup the property for.
54
+ # * *metadata* (Hash<String, Hash<Symbol,Object> >): Existing metadata for each node. Dependent properties should be present here.
55
+ # Result::
56
+ # * Hash<String, Object>: The corresponding property, per required node.
57
+ # Nodes for which the property can't be fetched can be ommitted.
58
+ def get_different_comment(nodes, metadata)
59
+ record_call(:get_different_comment, nodes, metadata)
60
+ Hash[nodes.map { |node| [node, 'Comment from test_cmdb2'] }]
61
+ end
62
+
63
+ # Get a specific property for a given set of nodes.
64
+ # [API] - @nodes_handler can be used.
65
+ # [API] - @cmd_runner can be used.
66
+ #
67
+ # Parameters::
68
+ # * *nodes* (Array<String>): The nodes to lookup the property for.
69
+ # * *metadata* (Hash<String, Hash<Symbol,Object> >): Existing metadata for each node. Dependent properties should be present here.
70
+ # Result::
71
+ # * Hash<String, Object>: The corresponding property, per required node.
72
+ # Nodes for which the property can't be fetched can be ommitted.
73
+ def get_different_comment2(nodes, metadata)
74
+ record_call(:get_different_comment2, nodes, metadata)
75
+ Hash[nodes.map { |node| [node, 'Comment2 from test_cmdb2'] }]
76
+ end
77
+
78
+ # Register a call to be checked by the tests later
79
+ #
80
+ # Parameters::
81
+ # * *method* (Symbol): Method being called
82
+ # * *args* (Array<Object>): Arguments given to the call
83
+ def record_call(method, *args)
84
+ @calls = [] unless defined?(@calls)
85
+ # Create a shallow copy of the args, just to make sure they won't get changed by later code
86
+ @calls << [method] + Marshal.load(Marshal.dump(args))
87
+ end
88
+
89
+ end
90
+
91
+ end
92
+
93
+ end
@@ -0,0 +1,60 @@
1
+ module HybridPlatformsConductorTest
2
+
3
+ module CmdbPlugins
4
+
5
+ # CMDB plugin that can be piloted by test cases to test how NodesHandler is using such plugins
6
+ class TestCmdbOthers < HybridPlatformsConductor::Cmdb
7
+
8
+ # Return the calls made to this plugin
9
+ # Array< [String, Object, Object...] >
10
+ # Array< [method_name, arg1, arg2... ] >
11
+ attr_accessor :calls
12
+
13
+ # get_* methods are automatically detected as possible metadata properties this plugin can fill.
14
+ # The property name filled by such method is given by the method's name: get_my_property will fill the :my_property metadata.
15
+ # The method get_others is used specifically to return properties whose name is unknown before fetching them.
16
+
17
+ # Get other properties for a given set of nodes.
18
+ # It's better to not use this method and prefer using methods naming the property being returned.
19
+ # As the nodes_handler can't know in advance which properties will be returned, it will call it every time there is a missing property.
20
+ # If this method always returns the same values, it would be clever to cache it here.
21
+ # [API] - This method is optional.
22
+ # [API] - @nodes_handler can be used.
23
+ # [API] - @cmd_runner can be used.
24
+ #
25
+ # Parameters::
26
+ # * *nodes* (Array<String>): The nodes to lookup the property for.
27
+ # * *metadata* (Hash<String, Hash<Symbol,Object> >): Existing metadata for each node. Dependent properties should be present here.
28
+ # Result::
29
+ # * Hash<String, Hash<Symbol,Object> >: The corresponding properties, per required node.
30
+ # Nodes for which the property can't be fetched can be ommitted.
31
+ def get_others(nodes, metadata)
32
+ record_call(:get_others, nodes, metadata)
33
+ Hash[nodes.map do |node|
34
+ [
35
+ node,
36
+ {
37
+ downcase: "_#{node}_",
38
+ last_3: node[-3..-1],
39
+ nothing: "#{node} has another nothing"
40
+ }
41
+ ]
42
+ end]
43
+ end
44
+
45
+ # Register a call to be checked by the tests later
46
+ #
47
+ # Parameters::
48
+ # * *method* (Symbol): Method being called
49
+ # * *args* (Array<Object>): Arguments given to the call
50
+ def record_call(method, *args)
51
+ @calls = [] unless defined?(@calls)
52
+ # Create a shallow copy of the args, just to make sure they won't get changed by later code
53
+ @calls << [method] + Marshal.load(Marshal.dump(args))
54
+ end
55
+
56
+ end
57
+
58
+ end
59
+
60
+ end