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/node_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 on prepared nodes' do
|
|
5
|
+
context 'when checking additional helpers on prepared nodes' do
|
|
6
6
|
|
|
7
7
|
it 'provides an SSH executable wrapping the node\'s SSH config' do
|
|
8
8
|
with_test_platform_for_remote_testing do
|
|
@@ -21,7 +21,7 @@ describe HybridPlatformsConductor::ActionsExecutor do
|
|
|
21
21
|
with_test_platform_for_remote_testing(password: 'PaSsWoRd') do
|
|
22
22
|
expect(`#{test_connector.ssh_exec} -V 2>&1`).to eq `ssh -V 2>&1`
|
|
23
23
|
expect(`#{test_connector.ssh_exec} -G hpc.node`.split("\n").find { |line| line =~ /^hostname .+$/ }).to eq 'hostname 192.168.42.42'
|
|
24
|
-
expect(File.read(test_connector.ssh_exec)).to match
|
|
24
|
+
expect(File.read(test_connector.ssh_exec)).to match(/^sshpass -pPaSsWoRd ssh .+$/)
|
|
25
25
|
end
|
|
26
26
|
end
|
|
27
27
|
|
data/spec/hybrid_platforms_conductor_test/api/actions_executor/connectors/ssh/remote_actions_spec.rb
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
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 remote actions' do
|
|
5
|
+
context 'when checking remote actions' do
|
|
6
6
|
|
|
7
7
|
it 'executes bash commands remotely' do
|
|
8
8
|
with_test_platform_for_remote_testing(
|
|
9
|
-
expected_cmds: [[
|
|
9
|
+
expected_cmds: [[%r{.+/ssh hpc\.node /bin/bash <<'HPC_EOF'\nbash_cmd.bash\nHPC_EOF}, proc { [0, 'Bash commands executed on node', ''] }]],
|
|
10
10
|
expected_stdout: 'Bash commands executed on node'
|
|
11
11
|
) do
|
|
12
12
|
test_connector.remote_bash('bash_cmd.bash')
|
|
@@ -17,8 +17,8 @@ describe HybridPlatformsConductor::ActionsExecutor do
|
|
|
17
17
|
with_test_platform_for_remote_testing(
|
|
18
18
|
expected_cmds: [
|
|
19
19
|
[
|
|
20
|
-
|
|
21
|
-
proc do |
|
|
20
|
+
%r{.+/ssh hpc\.node /bin/bash <<'HPC_EOF'\nbash_cmd.bash\nHPC_EOF},
|
|
21
|
+
proc do |_cmd, log_to_file: nil, log_to_stdout: true, log_stdout_to_io: nil, log_stderr_to_io: nil, expected_code: 0, timeout: nil, no_exception: false|
|
|
22
22
|
expect(timeout).to eq 5
|
|
23
23
|
[0, '', '']
|
|
24
24
|
end
|
|
@@ -33,7 +33,7 @@ describe HybridPlatformsConductor::ActionsExecutor do
|
|
|
33
33
|
it 'executes interactive commands remotely' do
|
|
34
34
|
with_test_platform_for_remote_testing do
|
|
35
35
|
expect(test_connector).to receive(:system) do |cmd|
|
|
36
|
-
expect(cmd).to match
|
|
36
|
+
expect(cmd).to match(%r{^.+/ssh hpc\.node$})
|
|
37
37
|
end
|
|
38
38
|
test_connector.remote_interactive
|
|
39
39
|
end
|
|
@@ -43,7 +43,7 @@ describe HybridPlatformsConductor::ActionsExecutor do
|
|
|
43
43
|
with_test_platform_for_remote_testing(
|
|
44
44
|
expected_cmds: [
|
|
45
45
|
[
|
|
46
|
-
|
|
46
|
+
%r{cd /path/to && tar\s+--create\s+--gzip\s+--file -\s+src.file \| /.+/ssh\s+hpc\.node\s+"tar\s+--extract\s+--gunzip\s+--file -\s+--directory /remote_path/to/dst.dir\s+--owner root\s+"},
|
|
47
47
|
proc { [0, '', ''] }
|
|
48
48
|
]
|
|
49
49
|
]
|
|
@@ -56,8 +56,8 @@ describe HybridPlatformsConductor::ActionsExecutor do
|
|
|
56
56
|
with_test_platform_for_remote_testing(
|
|
57
57
|
expected_cmds: [
|
|
58
58
|
[
|
|
59
|
-
|
|
60
|
-
proc do |
|
|
59
|
+
%r{cd /path/to && tar\s+--create\s+--gzip\s+--file -\s+src.file \| /.+/ssh\s+hpc\.node\s+"tar\s+--extract\s+--gunzip\s+--file -\s+--directory /remote_path/to/dst.dir\s+--owner root\s+"},
|
|
60
|
+
proc do |_cmd, log_to_file: nil, log_to_stdout: true, log_stdout_to_io: nil, log_stderr_to_io: nil, expected_code: 0, timeout: nil, no_exception: false|
|
|
61
61
|
expect(timeout).to eq 5
|
|
62
62
|
[0, '', '']
|
|
63
63
|
end
|
|
@@ -74,9 +74,9 @@ describe HybridPlatformsConductor::ActionsExecutor do
|
|
|
74
74
|
with_test_platform_for_remote_testing(
|
|
75
75
|
expected_cmds: [
|
|
76
76
|
[
|
|
77
|
-
|
|
77
|
+
%r{.+/hpc_temp_cmds_.+\.sh$},
|
|
78
78
|
proc do |received_cmd|
|
|
79
|
-
expect(File.read(received_cmd)).to match
|
|
79
|
+
expect(File.read(received_cmd)).to match(%r{.+/ssh hpc\.node /bin/bash <<'HPC_EOF'\n#{Regexp.escape(cmd)}\nHPC_EOF})
|
|
80
80
|
[0, 'Bash commands executed on node', '']
|
|
81
81
|
end
|
|
82
82
|
]
|
|
@@ -92,7 +92,7 @@ describe HybridPlatformsConductor::ActionsExecutor do
|
|
|
92
92
|
with_test_platform_for_remote_testing(
|
|
93
93
|
expected_cmds: [
|
|
94
94
|
[
|
|
95
|
-
|
|
95
|
+
%r{cd /path/to && tar\s+--create\s+--gzip\s+--file -\s+src.file \| /.+/ssh\s+hpc\.node\s+"sudo -u root tar\s+--extract\s+--gunzip\s+--file -\s+--directory /remote_path/to/dst.dir\s+--owner root\s+"},
|
|
96
96
|
proc { [0, '', ''] }
|
|
97
97
|
]
|
|
98
98
|
]
|
|
@@ -105,11 +105,13 @@ describe HybridPlatformsConductor::ActionsExecutor do
|
|
|
105
105
|
with_test_platform_for_remote_testing(
|
|
106
106
|
expected_cmds: [
|
|
107
107
|
[
|
|
108
|
-
|
|
108
|
+
%r{cd /path/to && tar\s+--create\s+--gzip\s+--file -\s+src.file \| /.+/ssh\s+hpc\.node\s+"other_sudo --user root tar\s+--extract\s+--gunzip\s+--file -\s+--directory /remote_path/to/dst.dir\s+--owner root\s+"},
|
|
109
109
|
proc { [0, '', ''] }
|
|
110
110
|
]
|
|
111
111
|
],
|
|
112
|
-
additional_config: '
|
|
112
|
+
additional_config: <<~'EO_CONFIG'
|
|
113
|
+
sudo_for { |user| "other_sudo --user #{user}" }
|
|
114
|
+
EO_CONFIG
|
|
113
115
|
) do
|
|
114
116
|
test_connector.remote_copy('/path/to/src.file', '/remote_path/to/dst.dir', sudo: true)
|
|
115
117
|
end
|
|
@@ -119,7 +121,7 @@ describe HybridPlatformsConductor::ActionsExecutor do
|
|
|
119
121
|
with_test_platform_for_remote_testing(
|
|
120
122
|
expected_cmds: [
|
|
121
123
|
[
|
|
122
|
-
|
|
124
|
+
%r{cd /path/to && tar\s+--create\s+--gzip\s+--file -\s+--owner remote_user\s+src.file \| /.+/ssh\s+hpc\.node\s+"tar\s+--extract\s+--gunzip\s+--file -\s+--directory /remote_path/to/dst.dir\s+--owner root\s+"},
|
|
123
125
|
proc { [0, '', ''] }
|
|
124
126
|
]
|
|
125
127
|
]
|
|
@@ -132,7 +134,7 @@ describe HybridPlatformsConductor::ActionsExecutor do
|
|
|
132
134
|
with_test_platform_for_remote_testing(
|
|
133
135
|
expected_cmds: [
|
|
134
136
|
[
|
|
135
|
-
|
|
137
|
+
%r{cd /path/to && tar\s+--create\s+--gzip\s+--file -\s+--group remote_group\s+src.file \| /.+/ssh\s+hpc\.node\s+"tar\s+--extract\s+--gunzip\s+--file -\s+--directory /remote_path/to/dst.dir\s+--owner root\s+"},
|
|
136
138
|
proc { [0, '', ''] }
|
|
137
139
|
]
|
|
138
140
|
]
|
|
@@ -143,7 +145,7 @@ describe HybridPlatformsConductor::ActionsExecutor do
|
|
|
143
145
|
|
|
144
146
|
it 'executes bash commands remotely without Session Exec capabilities' do
|
|
145
147
|
with_test_platform_for_remote_testing(
|
|
146
|
-
expected_cmds: [[
|
|
148
|
+
expected_cmds: [[%r{^\{ cat \| .+/ssh hpc\.node -T; \} <<'HPC_EOF'\nbash_cmd.bash\nHPC_EOF$}, proc { [0, 'Bash commands executed on node', ''] }]],
|
|
147
149
|
expected_stdout: 'Bash commands executed on node',
|
|
148
150
|
session_exec: false
|
|
149
151
|
) do
|
|
@@ -155,7 +157,7 @@ describe HybridPlatformsConductor::ActionsExecutor do
|
|
|
155
157
|
with_test_platform_for_remote_testing(
|
|
156
158
|
expected_cmds: [
|
|
157
159
|
[
|
|
158
|
-
|
|
160
|
+
%r{^scp -S .+/ssh /path/to/src.file hpc\.node:/remote_path/to/dst.dir$},
|
|
159
161
|
proc { [0, '', ''] }
|
|
160
162
|
]
|
|
161
163
|
],
|
|
@@ -168,12 +170,12 @@ describe HybridPlatformsConductor::ActionsExecutor do
|
|
|
168
170
|
it 'copies files remotely without Session Exec capabilities and with sudo' do
|
|
169
171
|
with_test_platform_for_remote_testing(
|
|
170
172
|
expected_cmds: [
|
|
171
|
-
[
|
|
173
|
+
[%r{^\{ cat \| .+/ssh hpc\.node -T; \} <<'HPC_EOF'\nmkdir -p hpc_tmp_scp\nHPC_EOF$}, proc { [0, '', ''] }],
|
|
172
174
|
[
|
|
173
|
-
|
|
175
|
+
%r{^scp -S .+/ssh /path/to/src.file hpc\.node:\./hpc_tmp_scp$},
|
|
174
176
|
proc { [0, '', ''] }
|
|
175
177
|
],
|
|
176
|
-
[
|
|
178
|
+
[%r{^\{ cat \| .+/ssh hpc\.node -T; \} <<'HPC_EOF'\nsudo -u root mv \./hpc_tmp_scp/src\.file /remote_path/to/dst\.dir\nHPC_EOF$}, proc { [0, '', ''] }]
|
|
177
179
|
],
|
|
178
180
|
session_exec: false
|
|
179
181
|
) do
|
|
@@ -184,14 +186,16 @@ describe HybridPlatformsConductor::ActionsExecutor do
|
|
|
184
186
|
it 'copies files remotely without Session Exec capabilities and with a different sudo' do
|
|
185
187
|
with_test_platform_for_remote_testing(
|
|
186
188
|
expected_cmds: [
|
|
187
|
-
[
|
|
189
|
+
[%r{^\{ cat \| .+/ssh hpc\.node -T; \} <<'HPC_EOF'\nmkdir -p hpc_tmp_scp\nHPC_EOF$}, proc { [0, '', ''] }],
|
|
188
190
|
[
|
|
189
|
-
|
|
191
|
+
%r{^scp -S .+/ssh /path/to/src.file hpc\.node:\./hpc_tmp_scp$},
|
|
190
192
|
proc { [0, '', ''] }
|
|
191
193
|
],
|
|
192
|
-
[
|
|
194
|
+
[%r{^\{ cat \| .+/ssh hpc\.node -T; \} <<'HPC_EOF'\nother_sudo --user root mv \./hpc_tmp_scp/src\.file /remote_path/to/dst\.dir\nHPC_EOF$}, proc { [0, '', ''] }]
|
|
193
195
|
],
|
|
194
|
-
additional_config: '
|
|
196
|
+
additional_config: <<~'EO_CONFIG',
|
|
197
|
+
sudo_for { |user| "other_sudo --user #{user}" }
|
|
198
|
+
EO_CONFIG
|
|
195
199
|
session_exec: false
|
|
196
200
|
) do
|
|
197
201
|
test_connector.remote_copy('/path/to/src.file', '/remote_path/to/dst.dir', sudo: true)
|
|
@@ -1,28 +1,32 @@
|
|
|
1
1
|
describe HybridPlatformsConductor::ActionsExecutor do
|
|
2
2
|
|
|
3
|
-
context 'checking logging facilities' do
|
|
3
|
+
context 'when checking logging facilities' do
|
|
4
4
|
|
|
5
5
|
# Instantiate a test platform, with the test action registered in Actions Executor.
|
|
6
6
|
#
|
|
7
7
|
# Parameters::
|
|
8
|
-
# * Proc: Code called with the environment ready
|
|
8
|
+
# * *block* (Proc): Code called with the environment ready
|
|
9
9
|
# * Parameters::
|
|
10
10
|
# * *repository* (String): Path to the repository
|
|
11
|
-
def with_test_platform_for_logging
|
|
12
|
-
with_test_platform_for_executor(nodes: { 'node1' => {}, 'node2' => {}, 'node3' => {} })
|
|
13
|
-
yield repository
|
|
14
|
-
end
|
|
11
|
+
def with_test_platform_for_logging(&block)
|
|
12
|
+
with_test_platform_for_executor(nodes: { 'node1' => {}, 'node2' => {}, 'node3' => {} }, &block)
|
|
15
13
|
end
|
|
16
14
|
|
|
17
15
|
it 'captures stdout and stderr from action correctly' do
|
|
18
16
|
with_test_platform_for_logging do
|
|
19
17
|
expect(
|
|
20
|
-
test_actions_executor.execute_actions(
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
18
|
+
test_actions_executor.execute_actions(
|
|
19
|
+
{
|
|
20
|
+
'node1' => {
|
|
21
|
+
test_action: {
|
|
22
|
+
code: proc do |stdout, stderr|
|
|
23
|
+
stdout << 'action_stdout'
|
|
24
|
+
stderr << 'action_stderr'
|
|
25
|
+
end
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
)
|
|
26
30
|
).to eq('node1' => [0, 'action_stdout', 'action_stderr'])
|
|
27
31
|
end
|
|
28
32
|
end
|
|
@@ -30,13 +34,19 @@ describe HybridPlatformsConductor::ActionsExecutor do
|
|
|
30
34
|
it 'captures stdout and stderr from action correctly even when the action is failing' do
|
|
31
35
|
with_test_platform_for_logging do
|
|
32
36
|
expect(
|
|
33
|
-
test_actions_executor.execute_actions(
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
37
|
+
test_actions_executor.execute_actions(
|
|
38
|
+
{
|
|
39
|
+
'node1' => {
|
|
40
|
+
test_action: {
|
|
41
|
+
code: proc do |stdout, stderr|
|
|
42
|
+
stdout << "action_stdout\n"
|
|
43
|
+
stderr << "action_stderr\n"
|
|
44
|
+
raise 'Failing action'
|
|
45
|
+
end
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
)
|
|
40
50
|
).to eq('node1' => [:failed_action, "action_stdout\n", "action_stderr\nFailing action\n"])
|
|
41
51
|
end
|
|
42
52
|
end
|
|
@@ -65,7 +75,7 @@ describe HybridPlatformsConductor::ActionsExecutor do
|
|
|
65
75
|
it 'captures stdout and stderr from action correctly when using run_cmd' do
|
|
66
76
|
with_test_platform_for_logging do
|
|
67
77
|
expect(
|
|
68
|
-
test_actions_executor.execute_actions('node1' => { test_action: { run_cmd: 'echo action_stdout && >&2 echo action_stderr' } })
|
|
78
|
+
test_actions_executor.execute_actions({ 'node1' => { test_action: { run_cmd: 'echo action_stdout && >&2 echo action_stderr' } } })
|
|
69
79
|
).to eq('node1' => [0, "action_stdout\n", "action_stderr\n"])
|
|
70
80
|
end
|
|
71
81
|
end
|
|
@@ -73,35 +83,41 @@ describe HybridPlatformsConductor::ActionsExecutor do
|
|
|
73
83
|
it 'captures stdout and stderr from action correctly when using run_cmd but with a failing command' do
|
|
74
84
|
with_test_platform_for_logging do
|
|
75
85
|
expect(
|
|
76
|
-
test_actions_executor.execute_actions('node1' => { test_action: { run_cmd: 'echo action_stdout && >&2 echo action_stderr && exit 1' } })
|
|
77
|
-
).to eq(
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
86
|
+
test_actions_executor.execute_actions({ 'node1' => { test_action: { run_cmd: 'echo action_stdout && >&2 echo action_stderr && exit 1' } } })
|
|
87
|
+
).to eq(
|
|
88
|
+
'node1' => [
|
|
89
|
+
:failed_command,
|
|
90
|
+
"action_stdout\n",
|
|
91
|
+
"action_stderr\nCommand 'echo action_stdout && >&2 echo action_stderr && exit 1' returned error code 1 (expected 0).\n"
|
|
92
|
+
]
|
|
93
|
+
)
|
|
82
94
|
end
|
|
83
95
|
end
|
|
84
96
|
|
|
85
97
|
it 'captures stdout and stderr sequentially from several actions' do
|
|
86
98
|
with_test_platform_for_logging do
|
|
87
99
|
expect(
|
|
88
|
-
test_actions_executor.execute_actions(
|
|
89
|
-
{
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
100
|
+
test_actions_executor.execute_actions(
|
|
101
|
+
{
|
|
102
|
+
'node1' => [
|
|
103
|
+
{ test_action: {
|
|
104
|
+
code: proc do |stdout, stderr|
|
|
105
|
+
stdout << 'action1_stdout '
|
|
106
|
+
stderr << 'action1_stderr '
|
|
107
|
+
end
|
|
108
|
+
} },
|
|
109
|
+
{ test_action: {
|
|
110
|
+
run_cmd: 'echo action2_stdout && >&2 echo action2_stderr'
|
|
111
|
+
} },
|
|
112
|
+
{ test_action: {
|
|
113
|
+
code: proc do |stdout, stderr|
|
|
114
|
+
stdout << 'action3_stdout'
|
|
115
|
+
stderr << 'action3_stderr'
|
|
116
|
+
end
|
|
117
|
+
} }
|
|
118
|
+
]
|
|
119
|
+
}
|
|
120
|
+
)
|
|
105
121
|
).to eq('node1' => [0, "action1_stdout action2_stdout\naction3_stdout", "action1_stderr action2_stderr\naction3_stderr"])
|
|
106
122
|
end
|
|
107
123
|
end
|
|
@@ -110,24 +126,26 @@ describe HybridPlatformsConductor::ActionsExecutor do
|
|
|
110
126
|
with_test_platform_for_logging do
|
|
111
127
|
expect(
|
|
112
128
|
test_actions_executor.execute_actions(
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
stdout
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
stdout
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
stdout
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
129
|
+
{
|
|
130
|
+
'node1' => { test_action: {
|
|
131
|
+
code: proc do |stdout, stderr|
|
|
132
|
+
stdout << 'action1_stdout'
|
|
133
|
+
stderr << 'action1_stderr'
|
|
134
|
+
end
|
|
135
|
+
} },
|
|
136
|
+
'node2' => { test_action: {
|
|
137
|
+
code: proc do |stdout, stderr|
|
|
138
|
+
stdout << 'action2_stdout'
|
|
139
|
+
stderr << 'action2_stderr'
|
|
140
|
+
end
|
|
141
|
+
} },
|
|
142
|
+
'node3' => { test_action: {
|
|
143
|
+
code: proc do |stdout, stderr|
|
|
144
|
+
stdout << 'action3_stdout'
|
|
145
|
+
stderr << 'action3_stderr'
|
|
146
|
+
end
|
|
147
|
+
} }
|
|
148
|
+
}
|
|
131
149
|
)
|
|
132
150
|
).to eq(
|
|
133
151
|
'node1' => [0, 'action1_stdout', 'action1_stderr'],
|
|
@@ -141,40 +159,42 @@ describe HybridPlatformsConductor::ActionsExecutor do
|
|
|
141
159
|
with_test_platform_for_logging do
|
|
142
160
|
expect(
|
|
143
161
|
test_actions_executor.execute_actions(
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
stdout << 'action1_stdout '
|
|
147
|
-
stderr << 'action1_stderr '
|
|
148
|
-
end
|
|
149
|
-
} },
|
|
150
|
-
%w[node1 node2] => [
|
|
151
|
-
{ test_action: {
|
|
152
|
-
code: proc do |stdout, stderr|
|
|
153
|
-
stdout << 'action2_stdout '
|
|
154
|
-
stderr << 'action2_stderr '
|
|
155
|
-
end
|
|
156
|
-
} },
|
|
157
|
-
{ test_action: {
|
|
158
|
-
code: proc do |stdout, stderr|
|
|
159
|
-
stdout << 'action3_stdout '
|
|
160
|
-
stderr << 'action3_stderr '
|
|
161
|
-
end
|
|
162
|
-
} }
|
|
163
|
-
],
|
|
164
|
-
%w[node2 node3] => [
|
|
165
|
-
{ test_action: {
|
|
162
|
+
{
|
|
163
|
+
'node1' => { test_action: {
|
|
166
164
|
code: proc do |stdout, stderr|
|
|
167
|
-
stdout << '
|
|
168
|
-
stderr << '
|
|
165
|
+
stdout << 'action1_stdout '
|
|
166
|
+
stderr << 'action1_stderr '
|
|
169
167
|
end
|
|
170
168
|
} },
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
169
|
+
%w[node1 node2] => [
|
|
170
|
+
{ test_action: {
|
|
171
|
+
code: proc do |stdout, stderr|
|
|
172
|
+
stdout << 'action2_stdout '
|
|
173
|
+
stderr << 'action2_stderr '
|
|
174
|
+
end
|
|
175
|
+
} },
|
|
176
|
+
{ test_action: {
|
|
177
|
+
code: proc do |stdout, stderr|
|
|
178
|
+
stdout << 'action3_stdout '
|
|
179
|
+
stderr << 'action3_stderr '
|
|
180
|
+
end
|
|
181
|
+
} }
|
|
182
|
+
],
|
|
183
|
+
%w[node2 node3] => [
|
|
184
|
+
{ test_action: {
|
|
185
|
+
code: proc do |stdout, stderr|
|
|
186
|
+
stdout << 'action4_stdout '
|
|
187
|
+
stderr << 'action4_stderr '
|
|
188
|
+
end
|
|
189
|
+
} },
|
|
190
|
+
{ test_action: {
|
|
191
|
+
code: proc do |stdout, stderr|
|
|
192
|
+
stdout << 'action5_stdout '
|
|
193
|
+
stderr << 'action5_stderr '
|
|
194
|
+
end
|
|
195
|
+
} }
|
|
196
|
+
]
|
|
197
|
+
}
|
|
178
198
|
)
|
|
179
199
|
).to eq(
|
|
180
200
|
'node1' => [0, 'action1_stdout action2_stdout action3_stdout ', 'action1_stderr action2_stderr action3_stderr '],
|
|
@@ -187,56 +207,61 @@ describe HybridPlatformsConductor::ActionsExecutor do
|
|
|
187
207
|
it 'executes several actions on several nodes and returns the corresponding stdout and stderr correctly in files' do
|
|
188
208
|
with_repository('logs') do |logs_repository|
|
|
189
209
|
with_test_platform_for_logging do
|
|
190
|
-
expect(
|
|
191
|
-
|
|
192
|
-
{
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
210
|
+
expect(
|
|
211
|
+
test_actions_executor.execute_actions(
|
|
212
|
+
{
|
|
213
|
+
'node1' => [
|
|
214
|
+
{ test_action: { code: proc do |stdout, stderr|
|
|
215
|
+
stdout << 'node1_action1_stdout '
|
|
216
|
+
stderr << 'node1_action1_stderr '
|
|
217
|
+
sleep 1
|
|
218
|
+
end } },
|
|
219
|
+
{ test_action: { code: proc do |stdout, stderr|
|
|
220
|
+
stdout << 'node1_action2_stdout '
|
|
221
|
+
stderr << 'node1_action2_stderr '
|
|
222
|
+
sleep 1
|
|
223
|
+
end } },
|
|
224
|
+
{ test_action: { code: proc do |stdout, stderr|
|
|
225
|
+
stdout << 'node1_action3_stdout'
|
|
226
|
+
stderr << 'node1_action3_stderr'
|
|
227
|
+
end } }
|
|
228
|
+
],
|
|
229
|
+
'node2' => [
|
|
230
|
+
{ test_action: { code: proc do |stdout, stderr|
|
|
231
|
+
stdout << 'node2_action1_stdout '
|
|
232
|
+
stderr << 'node2_action1_stderr '
|
|
233
|
+
sleep 1
|
|
234
|
+
end } },
|
|
235
|
+
{ test_action: { code: proc do |stdout, stderr|
|
|
236
|
+
stdout << 'node2_action2_stdout '
|
|
237
|
+
stderr << 'node2_action2_stderr '
|
|
238
|
+
sleep 1
|
|
239
|
+
end } },
|
|
240
|
+
{ test_action: { code: proc do |stdout, stderr|
|
|
241
|
+
stdout << 'node2_action3_stdout'
|
|
242
|
+
stderr << 'node2_action3_stderr'
|
|
243
|
+
end } }
|
|
244
|
+
],
|
|
245
|
+
'node3' => [
|
|
246
|
+
{ test_action: { code: proc do |stdout, stderr|
|
|
247
|
+
stdout << 'node3_action1_stdout '
|
|
248
|
+
stderr << 'node3_action1_stderr '
|
|
249
|
+
sleep 1
|
|
250
|
+
end } },
|
|
251
|
+
{ test_action: { code: proc do |stdout, stderr|
|
|
252
|
+
stdout << 'node3_action2_stdout '
|
|
253
|
+
stderr << 'node3_action2_stderr '
|
|
254
|
+
sleep 1
|
|
255
|
+
end } },
|
|
256
|
+
{ test_action: { code: proc do |stdout, stderr|
|
|
257
|
+
stdout << 'node3_action3_stdout'
|
|
258
|
+
stderr << 'node3_action3_stderr'
|
|
259
|
+
end } }
|
|
260
|
+
]
|
|
261
|
+
},
|
|
262
|
+
log_to_dir: logs_repository
|
|
263
|
+
)
|
|
264
|
+
).to eq(
|
|
240
265
|
'node1' => [0, 'node1_action1_stdout node1_action2_stdout node1_action3_stdout', 'node1_action1_stderr node1_action2_stderr node1_action3_stderr'],
|
|
241
266
|
'node2' => [0, 'node2_action1_stdout node2_action2_stdout node2_action3_stdout', 'node2_action1_stderr node2_action2_stderr node2_action3_stderr'],
|
|
242
267
|
'node3' => [0, 'node3_action1_stdout node3_action2_stdout node3_action3_stdout', 'node3_action1_stderr node3_action2_stderr node3_action3_stderr']
|