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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +36 -0
- data/README.md +6 -3
- data/bin/check-node +0 -1
- data/bin/deploy +0 -1
- data/bin/get_impacted_nodes +0 -1
- data/bin/last_deploys +12 -8
- data/bin/nodes_to_deploy +6 -6
- data/bin/setup +6 -6
- data/bin/topograph +1 -1
- data/docs/config_dsl.md +45 -1
- data/docs/executables.md +6 -7
- data/docs/executables/check-node.md +3 -3
- data/docs/executables/deploy.md +3 -3
- data/docs/executables/dump_nodes_json.md +3 -3
- data/docs/executables/test.md +3 -3
- data/docs/executables/topograph.md +3 -3
- data/docs/gen/mermaid/README.md-0.png +0 -0
- data/docs/gen/mermaid/docs/executables/check-node.md-0.png +0 -0
- data/docs/gen/mermaid/docs/executables/deploy.md-0.png +0 -0
- data/docs/gen/mermaid/docs/executables/free_ips.md-0.png +0 -0
- data/docs/gen/mermaid/docs/executables/get_impacted_nodes.md-0.png +0 -0
- data/docs/gen/mermaid/docs/executables/last_deploys.md-0.png +0 -0
- data/docs/gen/mermaid/docs/executables/nodes_to_deploy.md-0.png +0 -0
- data/docs/gen/mermaid/docs/executables/report.md-0.png +0 -0
- data/docs/gen/mermaid/docs/executables/run.md-0.png +0 -0
- data/docs/gen/mermaid/docs/executables/ssh_config.md-0.png +0 -0
- data/docs/gen/mermaid/docs/executables/test.md-0.png +0 -0
- data/docs/plugins.md +46 -0
- data/docs/plugins/connector/ssh.md +1 -1
- data/docs/plugins/log/remote_fs.md +26 -0
- data/docs/plugins/secrets_reader/cli.md +31 -0
- data/docs/plugins/secrets_reader/thycotic.md +46 -0
- data/docs/plugins/test/check_deploy_and_idempotence.md +1 -1
- data/docs/plugins/test/connection.md +1 -0
- data/docs/plugins/test/deploy_removes_root_access.md +1 -1
- data/docs/plugins/test/file_system.md +1 -0
- data/docs/plugins/test/hostname.md +1 -0
- data/docs/plugins/test/ip.md +1 -0
- data/docs/plugins/test/local_users.md +1 -0
- data/docs/plugins/test/mounts.md +1 -0
- data/docs/plugins/test/orphan_files.md +1 -0
- data/docs/plugins/test/ports.md +1 -0
- data/docs/plugins/test/spectre.md +1 -0
- data/docs/plugins/test/vulnerabilities.md +1 -0
- data/lib/hybrid_platforms_conductor/action.rb +4 -4
- data/lib/hybrid_platforms_conductor/actions_executor.rb +45 -43
- data/lib/hybrid_platforms_conductor/bitbucket.rb +5 -4
- data/lib/hybrid_platforms_conductor/cmd_runner.rb +13 -12
- data/lib/hybrid_platforms_conductor/cmdb.rb +2 -2
- data/lib/hybrid_platforms_conductor/common_config_dsl/bitbucket.rb +2 -1
- data/lib/hybrid_platforms_conductor/common_config_dsl/confluence.rb +2 -1
- data/lib/hybrid_platforms_conductor/common_config_dsl/file_system_tests.rb +5 -4
- data/lib/hybrid_platforms_conductor/common_config_dsl/github.rb +4 -3
- data/lib/hybrid_platforms_conductor/common_config_dsl/idempotence_tests.rb +2 -2
- data/lib/hybrid_platforms_conductor/config.rb +8 -4
- data/lib/hybrid_platforms_conductor/confluence.rb +1 -1
- data/lib/hybrid_platforms_conductor/connector.rb +5 -2
- data/lib/hybrid_platforms_conductor/core_extensions/cleanroom/fix_kwargs.rb +116 -0
- data/lib/hybrid_platforms_conductor/core_extensions/symbol/zero.rb +24 -0
- data/lib/hybrid_platforms_conductor/credentials.rb +39 -36
- data/lib/hybrid_platforms_conductor/current_dir_monitor.rb +4 -1
- data/lib/hybrid_platforms_conductor/deployer.rb +275 -224
- data/lib/hybrid_platforms_conductor/executable.rb +20 -15
- data/lib/hybrid_platforms_conductor/hpc_plugins/cmdb/config.rb +10 -7
- data/lib/hybrid_platforms_conductor/hpc_plugins/cmdb/host_ip.rb +1 -1
- data/lib/hybrid_platforms_conductor/hpc_plugins/cmdb/host_keys.rb +2 -2
- data/lib/hybrid_platforms_conductor/hpc_plugins/cmdb/platform_handlers.rb +4 -4
- data/lib/hybrid_platforms_conductor/hpc_plugins/connector/local.rb +2 -0
- data/lib/hybrid_platforms_conductor/hpc_plugins/connector/ssh.rb +45 -49
- data/lib/hybrid_platforms_conductor/hpc_plugins/log/my_log_plugin.rb.sample +100 -0
- data/lib/hybrid_platforms_conductor/hpc_plugins/log/remote_fs.rb +180 -0
- data/lib/hybrid_platforms_conductor/hpc_plugins/platform_handler/serverless_chef.rb +68 -66
- data/lib/hybrid_platforms_conductor/hpc_plugins/platform_handler/serverless_chef/dsl_parser.rb +13 -0
- data/lib/hybrid_platforms_conductor/hpc_plugins/platform_handler/serverless_chef/recipes_tree_builder.rb +39 -38
- data/lib/hybrid_platforms_conductor/hpc_plugins/platform_handler/yaml_inventory.rb +5 -4
- data/lib/hybrid_platforms_conductor/hpc_plugins/provisioner/docker.rb +43 -45
- data/lib/hybrid_platforms_conductor/hpc_plugins/provisioner/podman.rb +18 -20
- data/lib/hybrid_platforms_conductor/hpc_plugins/provisioner/proxmox.rb +118 -117
- data/lib/hybrid_platforms_conductor/hpc_plugins/provisioner/proxmox/proxmox_waiter.rb +39 -43
- data/lib/hybrid_platforms_conductor/hpc_plugins/provisioner/proxmox/reserve_proxmox_container +9 -13
- data/lib/hybrid_platforms_conductor/hpc_plugins/report/confluence.rb +2 -2
- data/lib/hybrid_platforms_conductor/hpc_plugins/report/mediawiki.rb +28 -21
- data/lib/hybrid_platforms_conductor/hpc_plugins/report/stdout.rb +26 -22
- data/lib/hybrid_platforms_conductor/hpc_plugins/secrets_reader/cli.rb +77 -0
- data/lib/hybrid_platforms_conductor/hpc_plugins/secrets_reader/my_secrets_reader_plugin.rb.sample +46 -0
- data/lib/hybrid_platforms_conductor/hpc_plugins/secrets_reader/thycotic.rb +90 -0
- data/lib/hybrid_platforms_conductor/hpc_plugins/test/bitbucket_conf.rb +3 -3
- data/lib/hybrid_platforms_conductor/hpc_plugins/test/check_deploy_and_idempotence.rb +4 -2
- data/lib/hybrid_platforms_conductor/hpc_plugins/test/connection.rb +3 -1
- data/lib/hybrid_platforms_conductor/hpc_plugins/test/deploy_freshness.rb +7 -21
- data/lib/hybrid_platforms_conductor/hpc_plugins/test/deploy_removes_root_access.rb +21 -19
- data/lib/hybrid_platforms_conductor/hpc_plugins/test/divergence.rb +2 -2
- data/lib/hybrid_platforms_conductor/hpc_plugins/test/executables.rb +2 -2
- data/lib/hybrid_platforms_conductor/hpc_plugins/test/file_system.rb +21 -22
- data/lib/hybrid_platforms_conductor/hpc_plugins/test/file_system_hdfs.rb +19 -21
- data/lib/hybrid_platforms_conductor/hpc_plugins/test/github_ci.rb +2 -3
- data/lib/hybrid_platforms_conductor/hpc_plugins/test/hostname.rb +3 -1
- data/lib/hybrid_platforms_conductor/hpc_plugins/test/idempotence.rb +2 -2
- data/lib/hybrid_platforms_conductor/hpc_plugins/test/ip.rb +4 -2
- data/lib/hybrid_platforms_conductor/hpc_plugins/test/jenkins_ci_conf.rb +21 -22
- data/lib/hybrid_platforms_conductor/hpc_plugins/test/jenkins_ci_masters_ok.rb +10 -12
- data/lib/hybrid_platforms_conductor/hpc_plugins/test/linear_strategy.rb +9 -9
- data/lib/hybrid_platforms_conductor/hpc_plugins/test/local_users.rb +5 -3
- data/lib/hybrid_platforms_conductor/hpc_plugins/test/mounts.rb +5 -3
- data/lib/hybrid_platforms_conductor/hpc_plugins/test/orphan_files.rb +13 -10
- data/lib/hybrid_platforms_conductor/hpc_plugins/test/ports.rb +5 -3
- data/lib/hybrid_platforms_conductor/hpc_plugins/test/private_ips.rb +5 -5
- data/lib/hybrid_platforms_conductor/hpc_plugins/test/public_ips.rb +5 -5
- data/lib/hybrid_platforms_conductor/hpc_plugins/test/spectre.rb +7 -7
- data/lib/hybrid_platforms_conductor/hpc_plugins/test/veids.rb +3 -3
- data/lib/hybrid_platforms_conductor/hpc_plugins/test/vulnerabilities.rb +27 -25
- data/lib/hybrid_platforms_conductor/hpc_plugins/test_report/confluence.rb +2 -2
- data/lib/hybrid_platforms_conductor/hpc_plugins/test_report/stdout.rb +8 -6
- data/lib/hybrid_platforms_conductor/io_router.rb +14 -13
- data/lib/hybrid_platforms_conductor/json_dumper.rb +2 -2
- data/lib/hybrid_platforms_conductor/log.rb +31 -0
- data/lib/hybrid_platforms_conductor/logger_helpers.rb +19 -16
- data/lib/hybrid_platforms_conductor/nodes_handler.rb +89 -71
- data/lib/hybrid_platforms_conductor/parallel_threads.rb +7 -11
- data/lib/hybrid_platforms_conductor/platform_handler.rb +7 -7
- data/lib/hybrid_platforms_conductor/platforms_handler.rb +5 -3
- data/lib/hybrid_platforms_conductor/plugin.rb +2 -2
- data/lib/hybrid_platforms_conductor/plugins.rb +14 -8
- data/lib/hybrid_platforms_conductor/provisioner.rb +4 -4
- data/lib/hybrid_platforms_conductor/report.rb +2 -2
- data/lib/hybrid_platforms_conductor/reports_handler.rb +3 -2
- data/lib/hybrid_platforms_conductor/secrets_reader.rb +31 -0
- data/lib/hybrid_platforms_conductor/services_handler.rb +32 -29
- data/lib/hybrid_platforms_conductor/test_only_remote_node.rb +18 -0
- data/lib/hybrid_platforms_conductor/test_report.rb +15 -18
- data/lib/hybrid_platforms_conductor/tests_runner.rb +116 -118
- data/lib/hybrid_platforms_conductor/thycotic.rb +28 -19
- data/lib/hybrid_platforms_conductor/topographer.rb +200 -190
- data/lib/hybrid_platforms_conductor/topographer/plugins/graphviz.rb +8 -8
- data/lib/hybrid_platforms_conductor/topographer/plugins/json.rb +4 -4
- data/lib/hybrid_platforms_conductor/version.rb +1 -1
- data/spec/hybrid_platforms_conductor_test.rb +33 -12
- data/spec/hybrid_platforms_conductor_test/api/actions_executor/actions/bash_spec.rb +18 -11
- data/spec/hybrid_platforms_conductor_test/api/actions_executor/actions/interactive_spec.rb +2 -2
- data/spec/hybrid_platforms_conductor_test/api/actions_executor/actions/remote_bash_spec.rb +32 -21
- data/spec/hybrid_platforms_conductor_test/api/actions_executor/actions/ruby_spec.rb +75 -49
- data/spec/hybrid_platforms_conductor_test/api/actions_executor/actions/scp_spec.rb +27 -15
- data/spec/hybrid_platforms_conductor_test/api/actions_executor/actions_spec.rb +90 -59
- data/spec/hybrid_platforms_conductor_test/api/actions_executor/connection_spec.rb +46 -44
- data/spec/hybrid_platforms_conductor_test/api/actions_executor/connectors/local/connectable_nodes_spec.rb +12 -8
- data/spec/hybrid_platforms_conductor_test/api/actions_executor/connectors/local/remote_actions_spec.rb +4 -7
- data/spec/hybrid_platforms_conductor_test/api/actions_executor/connectors/ssh/cli_options_spec.rb +21 -22
- data/spec/hybrid_platforms_conductor_test/api/actions_executor/connectors/ssh/config_dsl_spec.rb +23 -24
- data/spec/hybrid_platforms_conductor_test/api/actions_executor/connectors/ssh/connectable_nodes_spec.rb +10 -6
- data/spec/hybrid_platforms_conductor_test/api/actions_executor/connectors/ssh/connections_spec.rb +106 -75
- data/spec/hybrid_platforms_conductor_test/api/actions_executor/connectors/ssh/global_helpers_spec.rb +145 -126
- data/spec/hybrid_platforms_conductor_test/api/actions_executor/connectors/ssh/node_helpers_spec.rb +3 -3
- data/spec/hybrid_platforms_conductor_test/api/actions_executor/connectors/ssh/remote_actions_spec.rb +29 -25
- data/spec/hybrid_platforms_conductor_test/api/actions_executor/logging_spec.rb +167 -142
- data/spec/hybrid_platforms_conductor_test/api/actions_executor/parallel_spec.rb +272 -244
- data/spec/hybrid_platforms_conductor_test/api/actions_executor/timeout_spec.rb +16 -16
- data/spec/hybrid_platforms_conductor_test/api/cmd_runner_spec.rb +36 -36
- data/spec/hybrid_platforms_conductor_test/api/config_spec.rb +24 -22
- data/spec/hybrid_platforms_conductor_test/api/deployer/check_spec.rb +4 -2
- data/spec/hybrid_platforms_conductor_test/api/deployer/config_dsl_spec.rb +43 -5
- data/spec/hybrid_platforms_conductor_test/api/deployer/deploy_spec.rb +199 -216
- data/spec/hybrid_platforms_conductor_test/api/deployer/log_plugins/remote_fs_spec.rb +223 -0
- data/spec/hybrid_platforms_conductor_test/api/deployer/parse_deploy_output_spec.rb +55 -59
- data/spec/hybrid_platforms_conductor_test/api/deployer/provisioner_spec.rb +36 -62
- data/spec/hybrid_platforms_conductor_test/api/deployer/provisioners/podman_spec.rb +17 -17
- data/spec/hybrid_platforms_conductor_test/api/deployer/provisioners/proxmox/config_dsl_spec.rb +4 -4
- data/spec/hybrid_platforms_conductor_test/api/deployer/provisioners/proxmox/create_spec.rb +44 -51
- data/spec/hybrid_platforms_conductor_test/api/deployer/provisioners/proxmox/destroy_spec.rb +3 -3
- data/spec/hybrid_platforms_conductor_test/api/deployer/provisioners/proxmox/ip_spec.rb +12 -16
- data/spec/hybrid_platforms_conductor_test/api/deployer/provisioners/proxmox/reserve_proxmox_container/destroy_vm_spec.rb +31 -19
- data/spec/hybrid_platforms_conductor_test/api/deployer/provisioners/proxmox/reserve_proxmox_container/expired_containers_spec.rb +324 -266
- data/spec/hybrid_platforms_conductor_test/api/deployer/provisioners/proxmox/reserve_proxmox_container/ips_assignment_spec.rb +89 -61
- data/spec/hybrid_platforms_conductor_test/api/deployer/provisioners/proxmox/reserve_proxmox_container/other_lxc_containers_resources_spec.rb +117 -93
- data/spec/hybrid_platforms_conductor_test/api/deployer/provisioners/proxmox/reserve_proxmox_container/pve_node_resources_spec.rb +71 -54
- data/spec/hybrid_platforms_conductor_test/api/deployer/provisioners/proxmox/reserve_proxmox_container/retries_spec.rb +10 -8
- data/spec/hybrid_platforms_conductor_test/api/deployer/provisioners/proxmox/reserve_proxmox_container/vm_ids_assignment_spec.rb +80 -60
- data/spec/hybrid_platforms_conductor_test/api/deployer/provisioners/proxmox/start_spec.rb +1 -1
- data/spec/hybrid_platforms_conductor_test/api/deployer/provisioners/proxmox/state_spec.rb +1 -1
- data/spec/hybrid_platforms_conductor_test/api/deployer/provisioners/proxmox/stop_spec.rb +1 -1
- data/spec/hybrid_platforms_conductor_test/api/deployer/secrets_reader_plugins/cli_spec.rb +64 -0
- data/spec/hybrid_platforms_conductor_test/api/deployer/secrets_reader_plugins/thycotic_spec.rb +268 -0
- data/spec/hybrid_platforms_conductor_test/api/nodes_handler/cmdbs/config_spec.rb +8 -10
- data/spec/hybrid_platforms_conductor_test/api/nodes_handler/cmdbs/host_ip_spec.rb +33 -24
- data/spec/hybrid_platforms_conductor_test/api/nodes_handler/cmdbs/host_keys_spec.rb +64 -51
- data/spec/hybrid_platforms_conductor_test/api/nodes_handler/cmdbs/platform_handlers_spec.rb +3 -3
- data/spec/hybrid_platforms_conductor_test/api/nodes_handler/cmdbs_plugins_api_spec.rb +50 -51
- data/spec/hybrid_platforms_conductor_test/api/nodes_handler/common_spec.rb +91 -81
- data/spec/hybrid_platforms_conductor_test/api/nodes_handler/config_dsl_spec.rb +14 -16
- data/spec/hybrid_platforms_conductor_test/api/nodes_handler/git_diff_impacts_spec.rb +51 -75
- data/spec/hybrid_platforms_conductor_test/api/nodes_handler/nodes_selectors_spec.rb +35 -26
- data/spec/hybrid_platforms_conductor_test/api/nodes_handler/platform_handlers_plugins_api_spec.rb +24 -16
- data/spec/hybrid_platforms_conductor_test/api/nodes_handler/several_platforms_spec.rb +29 -19
- data/spec/hybrid_platforms_conductor_test/api/platform_handler_spec.rb +4 -4
- data/spec/hybrid_platforms_conductor_test/api/platform_handlers/serverless_chef/config_dsl_spec.rb +2 -2
- data/spec/hybrid_platforms_conductor_test/api/platform_handlers/serverless_chef/deploy_output_parsing_spec.rb +6 -6
- data/spec/hybrid_platforms_conductor_test/api/platform_handlers/serverless_chef/diff_impacts_spec.rb +57 -99
- data/spec/hybrid_platforms_conductor_test/api/platform_handlers/serverless_chef/inventory_spec.rb +4 -4
- data/spec/hybrid_platforms_conductor_test/api/platform_handlers/serverless_chef/packaging_spec.rb +32 -35
- data/spec/hybrid_platforms_conductor_test/api/platform_handlers/serverless_chef/services_deployment_spec.rb +10 -10
- data/spec/hybrid_platforms_conductor_test/api/platforms_handler_spec.rb +38 -27
- data/spec/hybrid_platforms_conductor_test/api/plugins_spec.rb +46 -52
- data/spec/hybrid_platforms_conductor_test/api/reports_handler_spec.rb +2 -2
- data/spec/hybrid_platforms_conductor_test/api/services_handler/actions_to_deploy_spec.rb +90 -58
- data/spec/hybrid_platforms_conductor_test/api/services_handler/deploy_allowed_spec.rb +38 -34
- data/spec/hybrid_platforms_conductor_test/api/services_handler/log_info_spec.rb +11 -9
- data/spec/hybrid_platforms_conductor_test/api/services_handler/package_spec.rb +193 -171
- data/spec/hybrid_platforms_conductor_test/api/services_handler/parse_deploy_output_spec.rb +66 -54
- data/spec/hybrid_platforms_conductor_test/api/services_handler/prepare_for_deploy_spec.rb +147 -133
- data/spec/hybrid_platforms_conductor_test/api/tests_runner/common_spec.rb +69 -49
- data/spec/hybrid_platforms_conductor_test/api/tests_runner/global_spec.rb +5 -4
- data/spec/hybrid_platforms_conductor_test/api/tests_runner/node_check_spec.rb +8 -5
- data/spec/hybrid_platforms_conductor_test/api/tests_runner/node_spec.rb +8 -5
- data/spec/hybrid_platforms_conductor_test/api/tests_runner/node_ssh_spec.rb +30 -27
- data/spec/hybrid_platforms_conductor_test/api/tests_runner/platform_spec.rb +12 -9
- data/spec/hybrid_platforms_conductor_test/api/tests_runner/reports_spec.rb +48 -47
- data/spec/hybrid_platforms_conductor_test/api/tests_runner/test_plugins/bitbucket_conf_spec.rb +5 -5
- data/spec/hybrid_platforms_conductor_test/api/tests_runner/test_plugins/github_ci_spec.rb +5 -5
- data/spec/hybrid_platforms_conductor_test/api/tests_runner/test_reports_plugins/confluence_spec.rb +5 -5
- data/spec/hybrid_platforms_conductor_test/cmdb_plugins/test_cmdb.rb +9 -9
- data/spec/hybrid_platforms_conductor_test/cmdb_plugins/{test_cmdb2.rb → test_cmdb_2.rb} +6 -6
- data/spec/hybrid_platforms_conductor_test/cmdb_plugins/test_cmdb_others.rb +3 -3
- data/spec/hybrid_platforms_conductor_test/cmdb_plugins/{test_cmdb_others2.rb → test_cmdb_others_2.rb} +2 -2
- data/spec/hybrid_platforms_conductor_test/docs_spec.rb +1 -1
- data/spec/hybrid_platforms_conductor_test/executables/{check-node_spec.rb → check_node_spec.rb} +4 -6
- data/spec/hybrid_platforms_conductor_test/executables/deploy_spec.rb +4 -6
- data/spec/hybrid_platforms_conductor_test/executables/get_impacted_nodes_spec.rb +76 -77
- data/spec/hybrid_platforms_conductor_test/executables/last_deploys_spec.rb +159 -113
- data/spec/hybrid_platforms_conductor_test/executables/nodes_to_deploy_spec.rb +299 -160
- data/spec/hybrid_platforms_conductor_test/executables/options/actions_executor_spec.rb +4 -6
- data/spec/hybrid_platforms_conductor_test/executables/options/cmd_runner_spec.rb +3 -5
- data/spec/hybrid_platforms_conductor_test/executables/options/common_spec.rb +8 -8
- data/spec/hybrid_platforms_conductor_test/executables/options/deployer_spec.rb +12 -196
- data/spec/hybrid_platforms_conductor_test/executables/options/nodes_handler_spec.rb +9 -10
- data/spec/hybrid_platforms_conductor_test/executables/options/nodes_selectors_spec.rb +9 -10
- data/spec/hybrid_platforms_conductor_test/executables/options/reports_handler_spec.rb +1 -1
- data/spec/hybrid_platforms_conductor_test/executables/options/tests_runner_spec.rb +22 -22
- data/spec/hybrid_platforms_conductor_test/executables/report_spec.rb +22 -16
- data/spec/hybrid_platforms_conductor_test/executables/run_spec.rb +32 -32
- data/spec/hybrid_platforms_conductor_test/executables/ssh_config_spec.rb +7 -9
- data/spec/hybrid_platforms_conductor_test/executables/test_spec.rb +3 -5
- data/spec/hybrid_platforms_conductor_test/helpers/actions_executor_helpers.rb +2 -2
- data/spec/hybrid_platforms_conductor_test/helpers/cmd_runner_helpers.rb +4 -3
- data/spec/hybrid_platforms_conductor_test/helpers/cmdb_helpers.rb +2 -2
- data/spec/hybrid_platforms_conductor_test/helpers/config_helpers.rb +1 -1
- data/spec/hybrid_platforms_conductor_test/helpers/connector_ssh_helpers.rb +12 -13
- data/spec/hybrid_platforms_conductor_test/helpers/deployer_helpers.rb +245 -56
- data/spec/hybrid_platforms_conductor_test/helpers/executables_helpers.rb +11 -11
- data/spec/hybrid_platforms_conductor_test/helpers/nodes_handler_helpers.rb +1 -1
- data/spec/hybrid_platforms_conductor_test/helpers/platforms_handler_helpers.rb +39 -28
- data/spec/hybrid_platforms_conductor_test/helpers/plugins_helpers.rb +1 -1
- data/spec/hybrid_platforms_conductor_test/helpers/provisioner_proxmox_helpers.rb +86 -111
- data/spec/hybrid_platforms_conductor_test/helpers/reports_handler_helpers.rb +1 -1
- data/spec/hybrid_platforms_conductor_test/helpers/serverless_chef_helpers.rb +3 -3
- data/spec/hybrid_platforms_conductor_test/helpers/services_handler_helpers.rb +1 -1
- data/spec/hybrid_platforms_conductor_test/helpers/tests_runner_helpers.rb +1 -1
- 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
- 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
- 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
- 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
- data/spec/hybrid_platforms_conductor_test/platform_handler_plugins/test.rb +1 -1
- data/spec/hybrid_platforms_conductor_test/platform_handler_plugins/{test2.rb → test_2.rb} +0 -0
- data/spec/hybrid_platforms_conductor_test/rubocop_spec.rb +31 -0
- data/spec/hybrid_platforms_conductor_test/serverless_chef_repositories/1_node/nodes/node.json +3 -3
- data/spec/hybrid_platforms_conductor_test/serverless_chef_repositories/data_bags/nodes/node.json +3 -3
- data/spec/hybrid_platforms_conductor_test/serverless_chef_repositories/recipes/cookbooks/test_cookbook_2/libraries/default.rb +1 -0
- data/spec/hybrid_platforms_conductor_test/serverless_chef_repositories/several_cookbooks/other_cookbooks/test_cookbook_2/libraries/default.rb +1 -0
- data/spec/hybrid_platforms_conductor_test/shared_examples/deployer.rb +952 -0
- data/spec/hybrid_platforms_conductor_test/test_connector.rb +3 -3
- data/spec/hybrid_platforms_conductor_test/test_log_no_read_plugin.rb +84 -0
- data/spec/hybrid_platforms_conductor_test/test_log_plugin.rb +105 -0
- data/spec/hybrid_platforms_conductor_test/test_plugins/global.rb +1 -0
- data/spec/hybrid_platforms_conductor_test/test_plugins/node.rb +1 -0
- data/spec/hybrid_platforms_conductor_test/test_plugins/node_check.rb +1 -0
- data/spec/hybrid_platforms_conductor_test/test_plugins/platform.rb +1 -0
- data/spec/hybrid_platforms_conductor_test/test_plugins/several_checks.rb +2 -2
- data/spec/hybrid_platforms_conductor_test/test_secrets_reader_plugin.rb +45 -0
- data/spec/hybrid_platforms_conductor_test/tests_report_plugin.rb +5 -6
- data/spec/spec_helper.rb +17 -18
- data/tools/check_md +16 -20
- data/tools/generate_mermaid +1 -1
- metadata +195 -144
- data/spec/hybrid_platforms_conductor_test/helpers/deployer_test_helpers.rb +0 -916
data/spec/hybrid_platforms_conductor_test/api/actions_executor/connectors/ssh/global_helpers_spec.rb
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
describe HybridPlatformsConductor::ActionsExecutor do
|
|
2
2
|
|
|
3
|
-
context 'checking connector plugin ssh' do
|
|
3
|
+
context 'when checking connector plugin ssh' do
|
|
4
4
|
|
|
5
|
-
context 'checking additional helpers' do
|
|
5
|
+
context 'when checking additional helpers' do
|
|
6
6
|
|
|
7
7
|
# Return the connector to be tested
|
|
8
8
|
#
|
|
@@ -35,44 +35,47 @@ describe HybridPlatformsConductor::ActionsExecutor do
|
|
|
35
35
|
begin_marker = node.nil? ? /^Host \*$/ : /^# #{Regexp.escape(node)} - .+$/
|
|
36
36
|
start_idx = ssh_config_lines.index { |line| line =~ begin_marker }
|
|
37
37
|
return nil if start_idx.nil?
|
|
38
|
+
|
|
38
39
|
end_markers = [
|
|
39
40
|
/^\# \w+ - .+$/,
|
|
40
41
|
/^\#+$/
|
|
41
42
|
]
|
|
42
|
-
end_idx = ssh_config_lines[start_idx + 1
|
|
43
|
+
end_idx = ssh_config_lines[start_idx + 1..].index { |line| end_markers.any? { |end_marker| line =~ end_marker } }
|
|
43
44
|
end_idx = end_idx.nil? ? -1 : start_idx + end_idx
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
45
|
+
"#{
|
|
46
|
+
ssh_config_lines[start_idx..end_idx].select do |line|
|
|
47
|
+
stripped_line = line.strip
|
|
48
|
+
!stripped_line.empty? && stripped_line[0] != '#'
|
|
49
|
+
end.join("\n")
|
|
50
|
+
}\n"
|
|
48
51
|
end
|
|
49
52
|
|
|
50
53
|
it 'generates a global configuration with user from hpc_ssh_user environment variable' do
|
|
51
|
-
with_test_platform do
|
|
54
|
+
with_test_platform({}) do
|
|
52
55
|
ENV['hpc_ssh_user'] = 'test_user'
|
|
53
|
-
expect(ssh_config_for(nil)).to eq <<~
|
|
56
|
+
expect(ssh_config_for(nil)).to eq <<~EO_SSH_CONFIG
|
|
54
57
|
Host *
|
|
55
58
|
User test_user
|
|
56
59
|
ControlPath #{Dir.tmpdir}/hpc_ssh/hpc_ssh_mux_%h_%p_%r
|
|
57
60
|
PubkeyAcceptedKeyTypes +ssh-dss
|
|
58
|
-
|
|
61
|
+
EO_SSH_CONFIG
|
|
59
62
|
end
|
|
60
63
|
end
|
|
61
64
|
|
|
62
65
|
it 'generates a global configuration with user from USER environment variable' do
|
|
63
|
-
with_test_platform do
|
|
66
|
+
with_test_platform({}) do
|
|
64
67
|
ENV['USER'] = 'test_user'
|
|
65
|
-
expect(ssh_config_for(nil)).to eq <<~
|
|
68
|
+
expect(ssh_config_for(nil)).to eq <<~EO_SSH_CONFIG
|
|
66
69
|
Host *
|
|
67
70
|
User test_user
|
|
68
71
|
ControlPath #{Dir.tmpdir}/hpc_ssh/hpc_ssh_mux_%h_%p_%r
|
|
69
72
|
PubkeyAcceptedKeyTypes +ssh-dss
|
|
70
|
-
|
|
73
|
+
EO_SSH_CONFIG
|
|
71
74
|
end
|
|
72
75
|
end
|
|
73
76
|
|
|
74
77
|
it 'generates a global configuration with user taken from whoami when no env variable is set' do
|
|
75
|
-
with_test_platform do
|
|
78
|
+
with_test_platform({}) do
|
|
76
79
|
original_user = ENV['USER']
|
|
77
80
|
begin
|
|
78
81
|
ENV.delete 'USER'
|
|
@@ -83,12 +86,12 @@ describe HybridPlatformsConductor::ActionsExecutor do
|
|
|
83
86
|
['whoami', proc { [0, 'test_whoami_user', ''] }]
|
|
84
87
|
]
|
|
85
88
|
) do
|
|
86
|
-
expect(ssh_config_for(nil)).to eq <<~
|
|
89
|
+
expect(ssh_config_for(nil)).to eq <<~EO_SSH_CONFIG
|
|
87
90
|
Host *
|
|
88
91
|
User test_whoami_user
|
|
89
92
|
ControlPath #{Dir.tmpdir}/hpc_ssh/hpc_ssh_mux_%h_%p_%r
|
|
90
93
|
PubkeyAcceptedKeyTypes +ssh-dss
|
|
91
|
-
|
|
94
|
+
EO_SSH_CONFIG
|
|
92
95
|
end
|
|
93
96
|
ensure
|
|
94
97
|
ENV['USER'] = original_user
|
|
@@ -97,309 +100,325 @@ describe HybridPlatformsConductor::ActionsExecutor do
|
|
|
97
100
|
end
|
|
98
101
|
|
|
99
102
|
it 'generates a global configuration with user from setting' do
|
|
100
|
-
with_test_platform do
|
|
103
|
+
with_test_platform({}) do
|
|
101
104
|
test_connector.ssh_user = 'test_user'
|
|
102
|
-
expect(ssh_config_for(nil)).to eq <<~
|
|
105
|
+
expect(ssh_config_for(nil)).to eq <<~EO_SSH_CONFIG
|
|
103
106
|
Host *
|
|
104
107
|
User test_user
|
|
105
108
|
ControlPath #{Dir.tmpdir}/hpc_ssh/hpc_ssh_mux_%h_%p_%r
|
|
106
109
|
PubkeyAcceptedKeyTypes +ssh-dss
|
|
107
|
-
|
|
110
|
+
EO_SSH_CONFIG
|
|
108
111
|
end
|
|
109
112
|
end
|
|
110
113
|
|
|
111
114
|
it 'generates a global configuration with known hosts file' do
|
|
112
|
-
with_test_platform do
|
|
115
|
+
with_test_platform({}) do
|
|
113
116
|
test_connector.ssh_user = 'test_user'
|
|
114
|
-
expect(ssh_config_for(nil, known_hosts_file: '/path/to/known_hosts')).to eq <<~
|
|
117
|
+
expect(ssh_config_for(nil, known_hosts_file: '/path/to/known_hosts')).to eq <<~EO_SSH_CONFIG
|
|
115
118
|
Host *
|
|
116
119
|
User test_user
|
|
117
120
|
ControlPath #{Dir.tmpdir}/hpc_ssh/hpc_ssh_mux_%h_%p_%r
|
|
118
121
|
PubkeyAcceptedKeyTypes +ssh-dss
|
|
119
122
|
UserKnownHostsFile /path/to/known_hosts
|
|
120
|
-
|
|
123
|
+
EO_SSH_CONFIG
|
|
121
124
|
end
|
|
122
125
|
end
|
|
123
126
|
|
|
124
127
|
it 'generates a global configuration without strict host key checking' do
|
|
125
|
-
with_test_platform do
|
|
128
|
+
with_test_platform({}) do
|
|
126
129
|
test_connector.ssh_user = 'test_user'
|
|
127
130
|
test_connector.ssh_strict_host_key_checking = false
|
|
128
|
-
expect(ssh_config_for(nil)).to eq <<~
|
|
131
|
+
expect(ssh_config_for(nil)).to eq <<~EO_SSH_CONFIG
|
|
129
132
|
Host *
|
|
130
133
|
User test_user
|
|
131
134
|
ControlPath #{Dir.tmpdir}/hpc_ssh/hpc_ssh_mux_%h_%p_%r
|
|
132
135
|
PubkeyAcceptedKeyTypes +ssh-dss
|
|
133
136
|
StrictHostKeyChecking no
|
|
134
|
-
|
|
137
|
+
EO_SSH_CONFIG
|
|
135
138
|
end
|
|
136
139
|
end
|
|
137
140
|
|
|
138
141
|
it 'includes the gateway definition from environment' do
|
|
139
|
-
with_test_platform({},
|
|
140
|
-
ENV['hpc_ssh_gateways_conf'] = '
|
|
141
|
-
expect(test_connector.ssh_config).to match
|
|
142
|
+
with_test_platform({}, additional_config: 'gateway :gateway_1, \'Host my_gateway\'') do
|
|
143
|
+
ENV['hpc_ssh_gateways_conf'] = 'gateway_1'
|
|
144
|
+
expect(test_connector.ssh_config).to match(/^Host my_gateway$/)
|
|
142
145
|
end
|
|
143
146
|
end
|
|
144
147
|
|
|
145
148
|
it 'includes the gateway definition from setting' do
|
|
146
|
-
with_test_platform({},
|
|
147
|
-
test_connector.ssh_gateways_conf = :
|
|
148
|
-
expect(test_connector.ssh_config).to match
|
|
149
|
+
with_test_platform({}, additional_config: 'gateway :gateway_1, \'Host my_gateway\'') do
|
|
150
|
+
test_connector.ssh_gateways_conf = :gateway_1
|
|
151
|
+
expect(test_connector.ssh_config).to match(/^Host my_gateway$/)
|
|
149
152
|
end
|
|
150
153
|
end
|
|
151
154
|
|
|
152
155
|
it 'includes the gateway definition with a different ssh executable' do
|
|
153
|
-
with_test_platform({},
|
|
154
|
-
test_connector.ssh_gateways_conf = :
|
|
155
|
-
expect(test_connector.ssh_config(ssh_exec: 'new_ssh')).to match
|
|
156
|
+
with_test_platform({}, additional_config: 'gateway :gateway_1, \'Host my_gateway_<%= @ssh_exec %>\'') do
|
|
157
|
+
test_connector.ssh_gateways_conf = :gateway_1
|
|
158
|
+
expect(test_connector.ssh_config(ssh_exec: 'new_ssh')).to match(/^Host my_gateway_new_ssh$/)
|
|
156
159
|
end
|
|
157
160
|
end
|
|
158
161
|
|
|
159
162
|
it 'does not include the gateway definition if it is not selected' do
|
|
160
|
-
with_test_platform({},
|
|
161
|
-
test_connector.ssh_gateways_conf = :
|
|
162
|
-
expect(test_connector.ssh_config).not_to match
|
|
163
|
+
with_test_platform({}, additional_config: 'gateway :gateway_2, \'Host my_gateway\'') do
|
|
164
|
+
test_connector.ssh_gateways_conf = :gateway_1
|
|
165
|
+
expect(test_connector.ssh_config).not_to match(/^Host my_gateway$/)
|
|
163
166
|
end
|
|
164
167
|
end
|
|
165
168
|
|
|
166
169
|
it 'generates a simple config for a node with host_ip' do
|
|
167
|
-
with_test_platform(nodes: { 'node' => { meta: { host_ip: '192.168.42.42' } } }) do
|
|
168
|
-
expect(ssh_config_for('node')).to eq <<~
|
|
170
|
+
with_test_platform({ nodes: { 'node' => { meta: { host_ip: '192.168.42.42' } } } }) do
|
|
171
|
+
expect(ssh_config_for('node')).to eq <<~EO_SSH_CONFIG
|
|
169
172
|
Host hpc.node
|
|
170
173
|
Hostname 192.168.42.42
|
|
171
|
-
|
|
174
|
+
EO_SSH_CONFIG
|
|
172
175
|
end
|
|
173
176
|
end
|
|
174
177
|
|
|
175
178
|
it 'generates a simple config for several nodes' do
|
|
176
|
-
with_test_platform(
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
179
|
+
with_test_platform(
|
|
180
|
+
{
|
|
181
|
+
nodes: {
|
|
182
|
+
'node1' => { meta: { host_ip: '192.168.42.1' } },
|
|
183
|
+
'node2' => { meta: { host_ip: '192.168.42.2' } },
|
|
184
|
+
'node3' => { meta: { host_ip: '192.168.42.3' } }
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
) do
|
|
188
|
+
expect(ssh_config_for('node1')).to eq <<~EO_SSH_CONFIG
|
|
182
189
|
Host hpc.node1
|
|
183
190
|
Hostname 192.168.42.1
|
|
184
|
-
|
|
185
|
-
expect(ssh_config_for('node2')).to eq <<~
|
|
191
|
+
EO_SSH_CONFIG
|
|
192
|
+
expect(ssh_config_for('node2')).to eq <<~EO_SSH_CONFIG
|
|
186
193
|
Host hpc.node2
|
|
187
194
|
Hostname 192.168.42.2
|
|
188
|
-
|
|
189
|
-
expect(ssh_config_for('node3')).to eq <<~
|
|
195
|
+
EO_SSH_CONFIG
|
|
196
|
+
expect(ssh_config_for('node3')).to eq <<~EO_SSH_CONFIG
|
|
190
197
|
Host hpc.node3
|
|
191
198
|
Hostname 192.168.42.3
|
|
192
|
-
|
|
199
|
+
EO_SSH_CONFIG
|
|
193
200
|
end
|
|
194
201
|
end
|
|
195
202
|
|
|
196
203
|
it 'generates a simple config for several nodes even when some of them can\'t be connected' do
|
|
197
|
-
with_test_platform(
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
204
|
+
with_test_platform(
|
|
205
|
+
{
|
|
206
|
+
nodes: {
|
|
207
|
+
'node1' => { meta: { host_ip: '192.168.42.1' } },
|
|
208
|
+
'node2' => { meta: {} },
|
|
209
|
+
'node3' => { meta: { host_ip: '192.168.42.3' } }
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
) do
|
|
213
|
+
expect(ssh_config_for('node1')).to eq <<~EO_SSH_CONFIG
|
|
203
214
|
Host hpc.node1
|
|
204
215
|
Hostname 192.168.42.1
|
|
205
|
-
|
|
216
|
+
EO_SSH_CONFIG
|
|
206
217
|
expect(ssh_config_for('node2')).to eq "\n"
|
|
207
|
-
expect(ssh_config_for('node3')).to eq <<~
|
|
218
|
+
expect(ssh_config_for('node3')).to eq <<~EO_SSH_CONFIG
|
|
208
219
|
Host hpc.node3
|
|
209
220
|
Hostname 192.168.42.3
|
|
210
|
-
|
|
221
|
+
EO_SSH_CONFIG
|
|
211
222
|
end
|
|
212
223
|
end
|
|
213
224
|
|
|
214
225
|
it 'selects nodes when generating the config' do
|
|
215
|
-
with_test_platform(
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
226
|
+
with_test_platform(
|
|
227
|
+
{
|
|
228
|
+
nodes: {
|
|
229
|
+
'node1' => { meta: { host_ip: '192.168.42.1' } },
|
|
230
|
+
'node2' => { meta: { host_ip: '192.168.42.2' } },
|
|
231
|
+
'node3' => { meta: { host_ip: '192.168.42.3' } }
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
) do
|
|
235
|
+
expect(ssh_config_for('node1', nodes: %w[node1 node3])).to eq <<~EO_SSH_CONFIG
|
|
221
236
|
Host hpc.node1
|
|
222
237
|
Hostname 192.168.42.1
|
|
223
|
-
|
|
238
|
+
EO_SSH_CONFIG
|
|
224
239
|
expect(ssh_config_for('node2', nodes: %w[node1 node3])).to eq nil
|
|
225
240
|
end
|
|
226
241
|
end
|
|
227
242
|
|
|
228
243
|
it 'generates an alias if the node has a hostname' do
|
|
229
|
-
with_test_platform(nodes: { 'node' => { meta: { host_ip: '192.168.42.42', hostname: 'my_hostname.my_domain' } } }) do
|
|
230
|
-
expect(ssh_config_for('node')).to eq <<~
|
|
244
|
+
with_test_platform({ nodes: { 'node' => { meta: { host_ip: '192.168.42.42', hostname: 'my_hostname.my_domain' } } } }) do
|
|
245
|
+
expect(ssh_config_for('node')).to eq <<~EO_SSH_CONFIG
|
|
231
246
|
Host hpc.node my_hostname.my_domain
|
|
232
247
|
Hostname 192.168.42.42
|
|
233
|
-
|
|
248
|
+
EO_SSH_CONFIG
|
|
234
249
|
end
|
|
235
250
|
end
|
|
236
251
|
|
|
237
252
|
it 'generates aliases if the node has private ips' do
|
|
238
|
-
with_test_platform(nodes: { 'node' => { meta: { host_ip: '192.168.42.42', private_ips: ['192.168.42.1', '192.168.42.2'] } } }) do
|
|
239
|
-
expect(ssh_config_for('node')).to eq <<~
|
|
253
|
+
with_test_platform({ nodes: { 'node' => { meta: { host_ip: '192.168.42.42', private_ips: ['192.168.42.1', '192.168.42.2'] } } } }) do
|
|
254
|
+
expect(ssh_config_for('node')).to eq <<~EO_SSH_CONFIG
|
|
240
255
|
Host hpc.node hpc.192.168.42.1 hpc.192.168.42.2
|
|
241
256
|
Hostname 192.168.42.42
|
|
242
|
-
|
|
257
|
+
EO_SSH_CONFIG
|
|
243
258
|
end
|
|
244
259
|
end
|
|
245
260
|
|
|
246
261
|
it 'generates a simple config for a node with hostname' do
|
|
247
|
-
with_test_platform(nodes: { 'node' => { meta: { hostname: 'my_hostname.my_domain' } } }) do
|
|
248
|
-
expect(ssh_config_for('node')).to eq <<~
|
|
262
|
+
with_test_platform({ nodes: { 'node' => { meta: { hostname: 'my_hostname.my_domain' } } } }) do
|
|
263
|
+
expect(ssh_config_for('node')).to eq <<~EO_SSH_CONFIG
|
|
249
264
|
Host hpc.node my_hostname.my_domain
|
|
250
265
|
Hostname my_hostname.my_domain
|
|
251
|
-
|
|
266
|
+
EO_SSH_CONFIG
|
|
252
267
|
end
|
|
253
268
|
end
|
|
254
269
|
|
|
255
270
|
it 'generates a simple config for a node with private_ips' do
|
|
256
|
-
with_test_platform(nodes: { 'node' => { meta: { private_ips: ['192.168.42.1', '192.168.42.2'] } } }) do
|
|
257
|
-
expect(ssh_config_for('node')).to eq <<~
|
|
271
|
+
with_test_platform({ nodes: { 'node' => { meta: { private_ips: ['192.168.42.1', '192.168.42.2'] } } } }) do
|
|
272
|
+
expect(ssh_config_for('node')).to eq <<~EO_SSH_CONFIG
|
|
258
273
|
Host hpc.node hpc.192.168.42.1 hpc.192.168.42.2
|
|
259
274
|
Hostname 192.168.42.1
|
|
260
|
-
|
|
275
|
+
EO_SSH_CONFIG
|
|
261
276
|
end
|
|
262
277
|
end
|
|
263
278
|
|
|
264
279
|
it 'uses node forced gateway information' do
|
|
265
|
-
with_test_platform(nodes: { 'node' => { meta: { host_ip: '192.168.42.42', gateway: 'test_gateway', gateway_user: 'test_gateway_user' } } }) do
|
|
266
|
-
expect(ssh_config_for('node')).to eq <<~
|
|
280
|
+
with_test_platform({ nodes: { 'node' => { meta: { host_ip: '192.168.42.42', gateway: 'test_gateway', gateway_user: 'test_gateway_user' } } } }) do
|
|
281
|
+
expect(ssh_config_for('node')).to eq <<~EO_SSH_CONFIG
|
|
267
282
|
Host hpc.node
|
|
268
283
|
Hostname 192.168.42.42
|
|
269
284
|
ProxyCommand ssh -q -W %h:%p test_gateway_user@test_gateway
|
|
270
|
-
|
|
285
|
+
EO_SSH_CONFIG
|
|
271
286
|
end
|
|
272
287
|
end
|
|
273
288
|
|
|
274
289
|
it 'uses node default gateway information and user from environment' do
|
|
275
|
-
with_test_platform(nodes: { 'node' => { meta: { host_ip: '192.168.42.42', gateway: 'test_gateway' } } }) do
|
|
290
|
+
with_test_platform({ nodes: { 'node' => { meta: { host_ip: '192.168.42.42', gateway: 'test_gateway' } } } }) do
|
|
276
291
|
ENV['hpc_ssh_gateway_user'] = 'test_gateway_user'
|
|
277
|
-
expect(ssh_config_for('node')).to eq <<~
|
|
292
|
+
expect(ssh_config_for('node')).to eq <<~EO_SSH_CONFIG
|
|
278
293
|
Host hpc.node
|
|
279
294
|
Hostname 192.168.42.42
|
|
280
295
|
ProxyCommand ssh -q -W %h:%p test_gateway_user@test_gateway
|
|
281
|
-
|
|
296
|
+
EO_SSH_CONFIG
|
|
282
297
|
end
|
|
283
298
|
end
|
|
284
299
|
|
|
285
300
|
it 'uses node default gateway information and user from setting' do
|
|
286
|
-
with_test_platform(nodes: { 'node' => { meta: { host_ip: '192.168.42.42', gateway: 'test_gateway' } } }) do
|
|
301
|
+
with_test_platform({ nodes: { 'node' => { meta: { host_ip: '192.168.42.42', gateway: 'test_gateway' } } } }) do
|
|
287
302
|
test_connector.ssh_gateway_user = 'test_gateway_user'
|
|
288
|
-
expect(ssh_config_for('node')).to eq <<~
|
|
303
|
+
expect(ssh_config_for('node')).to eq <<~EO_SSH_CONFIG
|
|
289
304
|
Host hpc.node
|
|
290
305
|
Hostname 192.168.42.42
|
|
291
306
|
ProxyCommand ssh -q -W %h:%p test_gateway_user@test_gateway
|
|
292
|
-
|
|
307
|
+
EO_SSH_CONFIG
|
|
293
308
|
end
|
|
294
309
|
end
|
|
295
310
|
|
|
296
311
|
it 'uses node forced gateway information with a different ssh executable' do
|
|
297
|
-
with_test_platform(nodes: { 'node' => { meta: { host_ip: '192.168.42.42', gateway: 'test_gateway', gateway_user: 'test_gateway_user' } } }) do
|
|
298
|
-
expect(ssh_config_for('node', ssh_exec: 'new_ssh')).to eq <<~
|
|
312
|
+
with_test_platform({ nodes: { 'node' => { meta: { host_ip: '192.168.42.42', gateway: 'test_gateway', gateway_user: 'test_gateway_user' } } } }) do
|
|
313
|
+
expect(ssh_config_for('node', ssh_exec: 'new_ssh')).to eq <<~EO_SSH_CONFIG
|
|
299
314
|
Host hpc.node
|
|
300
315
|
Hostname 192.168.42.42
|
|
301
316
|
ProxyCommand new_ssh -q -W %h:%p test_gateway_user@test_gateway
|
|
302
|
-
|
|
317
|
+
EO_SSH_CONFIG
|
|
303
318
|
end
|
|
304
319
|
end
|
|
305
320
|
|
|
306
321
|
it 'uses node default gateway information with a different ssh executable' do
|
|
307
|
-
with_test_platform(nodes: { 'node' => { meta: { host_ip: '192.168.42.42', gateway: 'test_gateway' } } }) do
|
|
322
|
+
with_test_platform({ nodes: { 'node' => { meta: { host_ip: '192.168.42.42', gateway: 'test_gateway' } } } }) do
|
|
308
323
|
test_connector.ssh_gateway_user = 'test_gateway_user'
|
|
309
|
-
expect(ssh_config_for('node', ssh_exec: 'new_ssh')).to eq <<~
|
|
324
|
+
expect(ssh_config_for('node', ssh_exec: 'new_ssh')).to eq <<~EO_SSH_CONFIG
|
|
310
325
|
Host hpc.node
|
|
311
326
|
Hostname 192.168.42.42
|
|
312
327
|
ProxyCommand new_ssh -q -W %h:%p test_gateway_user@test_gateway
|
|
313
|
-
|
|
328
|
+
EO_SSH_CONFIG
|
|
314
329
|
end
|
|
315
330
|
end
|
|
316
331
|
|
|
317
332
|
it 'uses node transformed SSH connection' do
|
|
318
333
|
with_test_platform(
|
|
319
334
|
{ nodes: {
|
|
320
|
-
'node1' => { meta: { host_ip: '192.168.42.1', gateway: '
|
|
321
|
-
'node2' => { meta: { host_ip: '192.168.42.2', gateway: '
|
|
335
|
+
'node1' => { meta: { host_ip: '192.168.42.1', gateway: 'test_gateway_1', gateway_user: 'test_gateway_1_user' } },
|
|
336
|
+
'node2' => { meta: { host_ip: '192.168.42.2', gateway: 'test_gateway_2', gateway_user: 'test_gateway_2_user' } },
|
|
322
337
|
'node3' => { meta: { host_ip: '192.168.42.3', gateway: 'test_gateway3', gateway_user: 'test_gateway3_user' } }
|
|
323
338
|
} },
|
|
324
|
-
|
|
325
|
-
'
|
|
339
|
+
additional_config: <<~'EO_CONFIG'
|
|
326
340
|
for_nodes(%w[node1 node3]) do
|
|
327
341
|
transform_ssh_connection do |node, connection, connection_user, gateway, gateway_user|
|
|
328
342
|
["#{connection}_#{node}_13", "#{connection_user}_#{node}_13", "#{gateway}_#{node}_13", "#{gateway_user}_#{node}_13"]
|
|
329
343
|
end
|
|
330
344
|
end
|
|
331
|
-
for_nodes(
|
|
345
|
+
for_nodes('node1') do
|
|
332
346
|
transform_ssh_connection do |node, connection, connection_user, gateway, gateway_user|
|
|
333
347
|
["#{connection}_#{node}_1", "#{connection_user}_#{node}_1", "#{gateway}_#{node}_1", "#{gateway_user}_#{node}_1"]
|
|
334
348
|
end
|
|
335
349
|
end
|
|
336
|
-
|
|
350
|
+
EO_CONFIG
|
|
351
|
+
) do
|
|
337
352
|
test_connector.ssh_user = 'test_user'
|
|
338
|
-
expect(ssh_config_for('node1')).to eq <<~
|
|
353
|
+
expect(ssh_config_for('node1')).to eq <<~EO_SSH_CONFIG
|
|
339
354
|
Host hpc.node1
|
|
340
355
|
Hostname 192.168.42.1_node1_13_node1_1
|
|
341
356
|
User "test_user_node1_13_node1_1"
|
|
342
|
-
ProxyCommand ssh -q -W %h:%p
|
|
343
|
-
|
|
344
|
-
expect(ssh_config_for('node2')).to eq <<~
|
|
357
|
+
ProxyCommand ssh -q -W %h:%p test_gateway_1_user_node1_13_node1_1@test_gateway_1_node1_13_node1_1
|
|
358
|
+
EO_SSH_CONFIG
|
|
359
|
+
expect(ssh_config_for('node2')).to eq <<~EO_SSH_CONFIG
|
|
345
360
|
Host hpc.node2
|
|
346
361
|
Hostname 192.168.42.2
|
|
347
|
-
ProxyCommand ssh -q -W %h:%p
|
|
348
|
-
|
|
349
|
-
expect(ssh_config_for('node3')).to eq <<~
|
|
362
|
+
ProxyCommand ssh -q -W %h:%p test_gateway_2_user@test_gateway_2
|
|
363
|
+
EO_SSH_CONFIG
|
|
364
|
+
expect(ssh_config_for('node3')).to eq <<~EO_SSH_CONFIG
|
|
350
365
|
Host hpc.node3
|
|
351
366
|
Hostname 192.168.42.3_node3_13
|
|
352
367
|
User "test_user_node3_13"
|
|
353
368
|
ProxyCommand ssh -q -W %h:%p test_gateway3_user_node3_13@test_gateway3_node3_13
|
|
354
|
-
|
|
369
|
+
EO_SSH_CONFIG
|
|
355
370
|
end
|
|
356
371
|
end
|
|
357
372
|
|
|
358
373
|
it 'generates a config compatible for passwords authentication' do
|
|
359
|
-
with_test_platform(nodes: { 'node' => { meta: { host_ip: '192.168.42.42' } } }) do
|
|
374
|
+
with_test_platform({ nodes: { 'node' => { meta: { host_ip: '192.168.42.42' } } } }) do
|
|
360
375
|
test_connector.passwords['node'] = 'PaSsWoRd'
|
|
361
|
-
expect(ssh_config_for('node')).to eq <<~
|
|
376
|
+
expect(ssh_config_for('node')).to eq <<~EO_SSH_CONFIG
|
|
362
377
|
Host hpc.node
|
|
363
378
|
Hostname 192.168.42.42
|
|
364
379
|
PreferredAuthentications password
|
|
365
380
|
PubkeyAuthentication no
|
|
366
|
-
|
|
381
|
+
EO_SSH_CONFIG
|
|
367
382
|
end
|
|
368
383
|
end
|
|
369
384
|
|
|
370
385
|
it 'generates a config compatible for passwords authentication only for marked nodes' do
|
|
371
|
-
with_test_platform(
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
386
|
+
with_test_platform(
|
|
387
|
+
{
|
|
388
|
+
nodes: {
|
|
389
|
+
'node1' => { meta: { host_ip: '192.168.42.1' } },
|
|
390
|
+
'node2' => { meta: { host_ip: '192.168.42.2' } },
|
|
391
|
+
'node3' => { meta: { host_ip: '192.168.42.3' } },
|
|
392
|
+
'node4' => { meta: { host_ip: '192.168.42.4' } }
|
|
393
|
+
}
|
|
394
|
+
}
|
|
395
|
+
) do
|
|
377
396
|
test_connector.passwords['node1'] = 'PaSsWoRd1'
|
|
378
397
|
test_connector.passwords['node3'] = 'PaSsWoRd3'
|
|
379
|
-
expect(ssh_config_for('node1')).to eq <<~
|
|
398
|
+
expect(ssh_config_for('node1')).to eq <<~EO_SSH_CONFIG
|
|
380
399
|
Host hpc.node1
|
|
381
400
|
Hostname 192.168.42.1
|
|
382
401
|
PreferredAuthentications password
|
|
383
402
|
PubkeyAuthentication no
|
|
384
|
-
|
|
385
|
-
expect(ssh_config_for('node2')).to eq <<~
|
|
403
|
+
EO_SSH_CONFIG
|
|
404
|
+
expect(ssh_config_for('node2')).to eq <<~EO_SSH_CONFIG
|
|
386
405
|
Host hpc.node2
|
|
387
406
|
Hostname 192.168.42.2
|
|
388
|
-
|
|
389
|
-
expect(ssh_config_for('node3')).to eq <<~
|
|
407
|
+
EO_SSH_CONFIG
|
|
408
|
+
expect(ssh_config_for('node3')).to eq <<~EO_SSH_CONFIG
|
|
390
409
|
Host hpc.node3
|
|
391
410
|
Hostname 192.168.42.3
|
|
392
411
|
PreferredAuthentications password
|
|
393
412
|
PubkeyAuthentication no
|
|
394
|
-
|
|
395
|
-
expect(ssh_config_for('node4')).to eq <<~
|
|
413
|
+
EO_SSH_CONFIG
|
|
414
|
+
expect(ssh_config_for('node4')).to eq <<~EO_SSH_CONFIG
|
|
396
415
|
Host hpc.node4
|
|
397
416
|
Hostname 192.168.42.4
|
|
398
|
-
|
|
417
|
+
EO_SSH_CONFIG
|
|
399
418
|
end
|
|
400
419
|
end
|
|
401
420
|
|
|
402
|
-
|
|
421
|
+
end
|
|
403
422
|
|
|
404
423
|
end
|
|
405
424
|
|