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
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
describe HybridPlatformsConductor::ActionsExecutor do
|
|
2
2
|
|
|
3
|
-
context 'checking actions\' plugin scp' do
|
|
3
|
+
context 'when checking actions\' plugin scp' do
|
|
4
4
|
|
|
5
5
|
it 'executes remote SCP' do
|
|
6
6
|
with_test_platform_for_action_plugins do
|
|
7
|
-
test_actions_executor.execute_actions('node' => { scp: { 'from' => 'to' } })
|
|
7
|
+
test_actions_executor.execute_actions({ 'node' => { scp: { 'from' => 'to' } } })
|
|
8
8
|
expect(test_actions_executor.connector(:test_connector).calls).to eq [
|
|
9
9
|
[:connectable_nodes_from, ['node']],
|
|
10
10
|
[:with_connection_to, ['node'], { no_exception: true }],
|
|
@@ -32,10 +32,14 @@ describe HybridPlatformsConductor::ActionsExecutor do
|
|
|
32
32
|
|
|
33
33
|
it 'executes remote SCP on several files' do
|
|
34
34
|
with_test_platform_for_action_plugins do
|
|
35
|
-
test_actions_executor.execute_actions(
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
35
|
+
test_actions_executor.execute_actions(
|
|
36
|
+
{
|
|
37
|
+
'node' => { scp: {
|
|
38
|
+
'from1' => 'to1',
|
|
39
|
+
'from2' => 'to2'
|
|
40
|
+
} }
|
|
41
|
+
}
|
|
42
|
+
)
|
|
39
43
|
expect(test_actions_executor.connector(:test_connector).calls).to eq [
|
|
40
44
|
[:connectable_nodes_from, ['node']],
|
|
41
45
|
[:with_connection_to, ['node'], { no_exception: true }],
|
|
@@ -47,10 +51,14 @@ describe HybridPlatformsConductor::ActionsExecutor do
|
|
|
47
51
|
|
|
48
52
|
it 'executes remote SCP with sudo' do
|
|
49
53
|
with_test_platform_for_action_plugins do
|
|
50
|
-
test_actions_executor.execute_actions(
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
+
test_actions_executor.execute_actions(
|
|
55
|
+
{
|
|
56
|
+
'node' => { scp: {
|
|
57
|
+
'from' => 'to',
|
|
58
|
+
sudo: true
|
|
59
|
+
} }
|
|
60
|
+
}
|
|
61
|
+
)
|
|
54
62
|
expect(test_actions_executor.connector(:test_connector).calls).to eq [
|
|
55
63
|
[:connectable_nodes_from, ['node']],
|
|
56
64
|
[:with_connection_to, ['node'], { no_exception: true }],
|
|
@@ -61,11 +69,15 @@ describe HybridPlatformsConductor::ActionsExecutor do
|
|
|
61
69
|
|
|
62
70
|
it 'executes remote SCP with different owner and group' do
|
|
63
71
|
with_test_platform_for_action_plugins do
|
|
64
|
-
test_actions_executor.execute_actions(
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
72
|
+
test_actions_executor.execute_actions(
|
|
73
|
+
{
|
|
74
|
+
'node' => { scp: {
|
|
75
|
+
'from' => 'to',
|
|
76
|
+
owner: 'new_owner',
|
|
77
|
+
group: 'new_group'
|
|
78
|
+
} }
|
|
79
|
+
}
|
|
80
|
+
)
|
|
69
81
|
expect(test_actions_executor.connector(:test_connector).calls).to eq [
|
|
70
82
|
[:connectable_nodes_from, ['node']],
|
|
71
83
|
[:with_connection_to, ['node'], { no_exception: true }],
|
|
@@ -1,35 +1,33 @@
|
|
|
1
1
|
describe HybridPlatformsConductor::ActionsExecutor do
|
|
2
2
|
|
|
3
|
-
context 'checking actions handling' do
|
|
3
|
+
context 'when checking actions handling' 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_actions
|
|
12
|
-
with_test_platform_for_executor(nodes: { 'node1' => {}, 'node2' => {}, 'node3' => {} })
|
|
13
|
-
yield repository
|
|
14
|
-
end
|
|
11
|
+
def with_test_platform_for_actions(&block)
|
|
12
|
+
with_test_platform_for_executor(nodes: { 'node1' => {}, 'node2' => {}, 'node3' => {} }, &block)
|
|
15
13
|
end
|
|
16
14
|
|
|
17
15
|
it 'executes a simple action on 1 node' do
|
|
18
16
|
with_test_platform_for_actions do
|
|
19
|
-
test_actions_executor.execute_actions('node1' => { test_action: 'Action executed' })
|
|
17
|
+
test_actions_executor.execute_actions({ 'node1' => { test_action: 'Action executed' } })
|
|
20
18
|
expect(action_executions).to eq [{ node: 'node1', message: 'Action executed' }]
|
|
21
19
|
end
|
|
22
20
|
end
|
|
23
21
|
|
|
24
22
|
it 'fails to execute an unknown action' do
|
|
25
23
|
with_test_platform_for_actions do
|
|
26
|
-
expect { test_actions_executor.execute_actions('node1' => { unknown_action: 'Action executed' }) }.to raise_error(/Unknown action type unknown_action/)
|
|
24
|
+
expect { test_actions_executor.execute_actions({ 'node1' => { unknown_action: 'Action executed' } }) }.to raise_error(/Unknown action type unknown_action/)
|
|
27
25
|
end
|
|
28
26
|
end
|
|
29
27
|
|
|
30
28
|
it 'executes a simple action on several nodes' do
|
|
31
29
|
with_test_platform_for_actions do
|
|
32
|
-
test_actions_executor.execute_actions(%w[node1 node2 node3] => { test_action: 'Action executed' })
|
|
30
|
+
test_actions_executor.execute_actions({ %w[node1 node2 node3] => { test_action: 'Action executed' } })
|
|
33
31
|
expect(action_executions).to eq [
|
|
34
32
|
{ node: 'node1', message: 'Action executed' },
|
|
35
33
|
{ node: 'node2', message: 'Action executed' },
|
|
@@ -40,11 +38,15 @@ describe HybridPlatformsConductor::ActionsExecutor do
|
|
|
40
38
|
|
|
41
39
|
it 'executes several actions on 1 node' do
|
|
42
40
|
with_test_platform_for_actions do
|
|
43
|
-
test_actions_executor.execute_actions(
|
|
44
|
-
{
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
41
|
+
test_actions_executor.execute_actions(
|
|
42
|
+
{
|
|
43
|
+
'node1' => [
|
|
44
|
+
{ test_action: 'Action 1 executed' },
|
|
45
|
+
{ test_action: 'Action 2 executed' },
|
|
46
|
+
{ test_action: 'Action 3 executed' }
|
|
47
|
+
]
|
|
48
|
+
}
|
|
49
|
+
)
|
|
48
50
|
expect(action_executions).to eq [
|
|
49
51
|
{ node: 'node1', message: 'Action 1 executed' },
|
|
50
52
|
{ node: 'node1', message: 'Action 2 executed' },
|
|
@@ -56,9 +58,11 @@ describe HybridPlatformsConductor::ActionsExecutor do
|
|
|
56
58
|
it 'executes different actions on several nodes' do
|
|
57
59
|
with_test_platform_for_actions do
|
|
58
60
|
test_actions_executor.execute_actions(
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
61
|
+
{
|
|
62
|
+
'node1' => { test_action: 'Action 1 executed' },
|
|
63
|
+
'node2' => { test_action: 'Action 2 executed' },
|
|
64
|
+
'node3' => { test_action: 'Action 3 executed' }
|
|
65
|
+
}
|
|
62
66
|
)
|
|
63
67
|
expect(action_executions).to eq [
|
|
64
68
|
{ node: 'node1', message: 'Action 1 executed' },
|
|
@@ -71,29 +75,36 @@ describe HybridPlatformsConductor::ActionsExecutor do
|
|
|
71
75
|
it 'executes several actions of different types' do
|
|
72
76
|
with_test_platform_for_actions do
|
|
73
77
|
actions_executed = []
|
|
74
|
-
expect(
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
78
|
+
expect(
|
|
79
|
+
test_actions_executor.execute_actions(
|
|
80
|
+
{
|
|
81
|
+
'node1' => [
|
|
82
|
+
{ ruby: proc do |stdout, stderr|
|
|
83
|
+
stdout << 'action1_stdout '
|
|
84
|
+
stderr << 'action1_stderr '
|
|
85
|
+
actions_executed << 'action1'
|
|
86
|
+
end },
|
|
87
|
+
{ bash: 'echo action2_stdout' },
|
|
88
|
+
{ ruby: proc do |stdout, stderr|
|
|
89
|
+
stdout << 'action3_stdout'
|
|
90
|
+
stderr << 'action3_stderr'
|
|
91
|
+
actions_executed << 'action3'
|
|
92
|
+
end }
|
|
93
|
+
]
|
|
94
|
+
}
|
|
95
|
+
)
|
|
96
|
+
).to eq('node1' => [0, "action1_stdout action2_stdout\naction3_stdout", 'action1_stderr action3_stderr'])
|
|
87
97
|
expect(actions_executed).to eq %w[action1 action3]
|
|
88
98
|
end
|
|
89
99
|
end
|
|
90
100
|
|
|
91
101
|
it 'executes several actions on 1 node specified using different selectors' do
|
|
92
102
|
with_test_platform_for_actions do
|
|
93
|
-
actions_executed = []
|
|
94
103
|
test_actions_executor.execute_actions(
|
|
95
|
-
|
|
96
|
-
|
|
104
|
+
{
|
|
105
|
+
'node1' => { test_action: 'Action 1 executed' },
|
|
106
|
+
'/node1/' => { test_action: 'Action 2 executed' }
|
|
107
|
+
}
|
|
97
108
|
)
|
|
98
109
|
expect(action_executions).to eq [
|
|
99
110
|
{ node: 'node1', message: 'Action 1 executed' },
|
|
@@ -104,7 +115,7 @@ describe HybridPlatformsConductor::ActionsExecutor do
|
|
|
104
115
|
|
|
105
116
|
it 'fails to execute an action on an unknown node' do
|
|
106
117
|
with_test_platform_for_actions do
|
|
107
|
-
expect { test_actions_executor.execute_actions('unknown_node' => { test_action: 'Action executed' }) }.to raise_error(RuntimeError, 'Unknown nodes: unknown_node')
|
|
118
|
+
expect { test_actions_executor.execute_actions({ 'unknown_node' => { test_action: 'Action executed' } }) }.to raise_error(RuntimeError, 'Unknown nodes: unknown_node')
|
|
108
119
|
expect(action_executions).to eq []
|
|
109
120
|
end
|
|
110
121
|
end
|
|
@@ -125,11 +136,15 @@ describe HybridPlatformsConductor::ActionsExecutor do
|
|
|
125
136
|
|
|
126
137
|
it 'returns errors without failing for actions having command issues' do
|
|
127
138
|
with_test_platform_for_actions do
|
|
128
|
-
expect(
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
139
|
+
expect(
|
|
140
|
+
test_actions_executor.execute_actions(
|
|
141
|
+
{
|
|
142
|
+
'node1' => { test_action: { code: proc { |stdout| stdout << 'Action 1' } } },
|
|
143
|
+
'node2' => { test_action: { code: proc { raise HybridPlatformsConductor::CmdRunner::UnexpectedExitCodeError, 'Command returned 1' } } },
|
|
144
|
+
'node3' => { test_action: { code: proc { |stdout| stdout << 'Action 3' } } }
|
|
145
|
+
}
|
|
146
|
+
)
|
|
147
|
+
).to eq(
|
|
133
148
|
'node1' => [0, 'Action 1', ''],
|
|
134
149
|
'node2' => [:failed_command, '', "Command returned 1\n"],
|
|
135
150
|
'node3' => [0, 'Action 3', '']
|
|
@@ -139,11 +154,15 @@ describe HybridPlatformsConductor::ActionsExecutor do
|
|
|
139
154
|
|
|
140
155
|
it 'returns errors without failing for actions having timeout issues' do
|
|
141
156
|
with_test_platform_for_actions do
|
|
142
|
-
expect(
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
157
|
+
expect(
|
|
158
|
+
test_actions_executor.execute_actions(
|
|
159
|
+
{
|
|
160
|
+
'node1' => { test_action: { code: proc { |stdout| stdout << 'Action 1' } } },
|
|
161
|
+
'node2' => { test_action: { code: proc { raise HybridPlatformsConductor::CmdRunner::TimeoutError } } },
|
|
162
|
+
'node3' => { test_action: { code: proc { |stdout| stdout << 'Action 3' } } }
|
|
163
|
+
}
|
|
164
|
+
)
|
|
165
|
+
).to eq(
|
|
147
166
|
'node1' => [0, 'Action 1', ''],
|
|
148
167
|
'node2' => [:timeout, '', ''],
|
|
149
168
|
'node3' => [0, 'Action 3', '']
|
|
@@ -153,11 +172,15 @@ describe HybridPlatformsConductor::ActionsExecutor do
|
|
|
153
172
|
|
|
154
173
|
it 'returns errors without failing for actions having connection issues' do
|
|
155
174
|
with_test_platform_for_actions do
|
|
156
|
-
expect(
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
175
|
+
expect(
|
|
176
|
+
test_actions_executor.execute_actions(
|
|
177
|
+
{
|
|
178
|
+
'node1' => { test_action: { code: proc { |stdout| stdout << 'Action 1' } } },
|
|
179
|
+
'node2' => { test_action: { code: proc { raise HybridPlatformsConductor::ActionsExecutor::ConnectionError, 'Can\'t connect' } } },
|
|
180
|
+
'node3' => { test_action: { code: proc { |stdout| stdout << 'Action 3' } } }
|
|
181
|
+
}
|
|
182
|
+
)
|
|
183
|
+
).to eq(
|
|
161
184
|
'node1' => [0, 'Action 1', ''],
|
|
162
185
|
'node2' => [:connection_error, '', "Can't connect\n"],
|
|
163
186
|
'node3' => [0, 'Action 3', '']
|
|
@@ -167,11 +190,15 @@ describe HybridPlatformsConductor::ActionsExecutor do
|
|
|
167
190
|
|
|
168
191
|
it 'returns errors without failing for actions having unhandled exceptions' do
|
|
169
192
|
with_test_platform_for_actions do
|
|
170
|
-
expect(
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
193
|
+
expect(
|
|
194
|
+
test_actions_executor.execute_actions(
|
|
195
|
+
{
|
|
196
|
+
'node1' => { test_action: { code: proc { |stdout| stdout << 'Action 1' } } },
|
|
197
|
+
'node2' => { test_action: { code: proc { raise 'Strange error' } } },
|
|
198
|
+
'node3' => { test_action: { code: proc { |stdout| stdout << 'Action 3' } } }
|
|
199
|
+
}
|
|
200
|
+
)
|
|
201
|
+
).to eq(
|
|
175
202
|
'node1' => [0, 'Action 1', ''],
|
|
176
203
|
'node2' => [:failed_action, '', "Strange error\n"],
|
|
177
204
|
'node3' => [0, 'Action 3', '']
|
|
@@ -182,11 +209,15 @@ describe HybridPlatformsConductor::ActionsExecutor do
|
|
|
182
209
|
it 'returns errors without failing for actions on nodes having no connectors' do
|
|
183
210
|
with_test_platform_for_actions do
|
|
184
211
|
test_actions_executor.connector(:test_connector).accept_nodes = %w[node1 node3]
|
|
185
|
-
expect(
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
212
|
+
expect(
|
|
213
|
+
test_actions_executor.execute_actions(
|
|
214
|
+
{
|
|
215
|
+
'node1' => { test_action: { need_connector: true, code: proc { |stdout| stdout << 'Action 1' } } },
|
|
216
|
+
'node2' => { test_action: { need_connector: true, code: proc { |stdout| stdout << 'Action 2' } } },
|
|
217
|
+
'node3' => { test_action: { need_connector: true, code: proc { |stdout| stdout << 'Action 3' } } }
|
|
218
|
+
}
|
|
219
|
+
)
|
|
220
|
+
).to eq(
|
|
190
221
|
'node1' => [0, 'Action 1', ''],
|
|
191
222
|
'node2' => [:no_connector, '', 'Unable to get a connector to node2'],
|
|
192
223
|
'node3' => [0, 'Action 3', '']
|
|
@@ -1,39 +1,39 @@
|
|
|
1
1
|
describe HybridPlatformsConductor::ActionsExecutor do
|
|
2
2
|
|
|
3
|
-
context 'checking connections handling' do
|
|
3
|
+
context 'when checking connections handling' do
|
|
4
4
|
|
|
5
5
|
# Get a test platform to test connection, using the test_connector
|
|
6
6
|
#
|
|
7
7
|
# Parameters::
|
|
8
|
-
# * Proc: Code called with platform setup
|
|
8
|
+
# * *block* (Proc): Code called with platform setup
|
|
9
9
|
# * Parameters::
|
|
10
10
|
# * *repository* (String): Repository where the platform has been setup
|
|
11
|
-
def with_test_platform_for_connections
|
|
12
|
-
with_test_platform_for_executor(
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
11
|
+
def with_test_platform_for_connections(&block)
|
|
12
|
+
with_test_platform_for_executor(
|
|
13
|
+
nodes: {
|
|
14
|
+
'node1' => {},
|
|
15
|
+
'node2' => {},
|
|
16
|
+
'node3' => {},
|
|
17
|
+
'node4' => {}
|
|
18
|
+
}, &block
|
|
19
|
+
)
|
|
20
20
|
end
|
|
21
21
|
|
|
22
22
|
it 'connects on a node before executing actions needing connection' do
|
|
23
23
|
with_test_platform_for_connections do
|
|
24
24
|
test_actions_executor.connector(:test_connector).accept_nodes = ['node1']
|
|
25
|
-
test_actions_executor.execute_actions('node1' => { test_action: { need_connector: true } })
|
|
25
|
+
test_actions_executor.execute_actions({ 'node1' => { test_action: { need_connector: true } } })
|
|
26
26
|
expect(action_executions).to eq [{ node: 'node1', message: 'Action executed' }]
|
|
27
27
|
expect(test_actions_executor.connector(:test_connector).calls).to eq [
|
|
28
|
-
|
|
29
|
-
|
|
28
|
+
[:connectable_nodes_from, ['node1']],
|
|
29
|
+
[:with_connection_to, ['node1'], { no_exception: true }]
|
|
30
30
|
]
|
|
31
31
|
end
|
|
32
32
|
end
|
|
33
33
|
|
|
34
34
|
it 'returns an error when no connector can connect to the needed node' do
|
|
35
35
|
with_test_platform_for_connections do
|
|
36
|
-
expect(test_actions_executor.execute_actions('node1' => { test_action: { need_connector: true } })).to eq(
|
|
36
|
+
expect(test_actions_executor.execute_actions({ 'node1' => { test_action: { need_connector: true } } })).to eq(
|
|
37
37
|
'node1' => [:no_connector, '', 'Unable to get a connector to node1']
|
|
38
38
|
)
|
|
39
39
|
end
|
|
@@ -42,7 +42,7 @@ describe HybridPlatformsConductor::ActionsExecutor do
|
|
|
42
42
|
it 'connects on several nodes before executing actions needing connection' do
|
|
43
43
|
with_test_platform_for_connections do
|
|
44
44
|
test_actions_executor.connector(:test_connector).accept_nodes = %w[node1 node2 node3 node4]
|
|
45
|
-
test_actions_executor.execute_actions(%w[node1 node2 node3 node4] => { test_action: { need_connector: true } })
|
|
45
|
+
test_actions_executor.execute_actions({ %w[node1 node2 node3 node4] => { test_action: { need_connector: true } } })
|
|
46
46
|
expect(action_executions).to eq [
|
|
47
47
|
{ node: 'node1', message: 'Action executed' },
|
|
48
48
|
{ node: 'node2', message: 'Action executed' },
|
|
@@ -50,8 +50,8 @@ describe HybridPlatformsConductor::ActionsExecutor do
|
|
|
50
50
|
{ node: 'node4', message: 'Action executed' }
|
|
51
51
|
]
|
|
52
52
|
expect(test_actions_executor.connector(:test_connector).calls).to eq [
|
|
53
|
-
|
|
54
|
-
|
|
53
|
+
[:connectable_nodes_from, %w[node1 node2 node3 node4]],
|
|
54
|
+
[:with_connection_to, %w[node1 node2 node3 node4], { no_exception: true }]
|
|
55
55
|
]
|
|
56
56
|
end
|
|
57
57
|
end
|
|
@@ -60,15 +60,15 @@ describe HybridPlatformsConductor::ActionsExecutor do
|
|
|
60
60
|
with_test_platform_for_connections do
|
|
61
61
|
test_actions_executor.connector(:test_connector).accept_nodes = %w[node1 node2 node3 node4]
|
|
62
62
|
test_actions_executor.connector(:test_connector).connected_nodes = %w[node1 node2 node4]
|
|
63
|
-
test_actions_executor.execute_actions(%w[node1 node2 node3 node4] => { test_action: { need_connector: true } })
|
|
63
|
+
test_actions_executor.execute_actions({ %w[node1 node2 node3 node4] => { test_action: { need_connector: true } } })
|
|
64
64
|
expect(action_executions).to eq [
|
|
65
65
|
{ node: 'node1', message: 'Action executed' },
|
|
66
66
|
{ node: 'node2', message: 'Action executed' },
|
|
67
67
|
{ node: 'node4', message: 'Action executed' }
|
|
68
68
|
]
|
|
69
69
|
expect(test_actions_executor.connector(:test_connector).calls).to eq [
|
|
70
|
-
|
|
71
|
-
|
|
70
|
+
[:connectable_nodes_from, %w[node1 node2 node3 node4]],
|
|
71
|
+
[:with_connection_to, %w[node1 node2 node3 node4], { no_exception: true }]
|
|
72
72
|
]
|
|
73
73
|
end
|
|
74
74
|
end
|
|
@@ -77,8 +77,10 @@ describe HybridPlatformsConductor::ActionsExecutor do
|
|
|
77
77
|
with_test_platform_for_connections do
|
|
78
78
|
test_actions_executor.connector(:test_connector).accept_nodes = %w[node1 node2 node3 node4]
|
|
79
79
|
test_actions_executor.execute_actions(
|
|
80
|
-
|
|
81
|
-
|
|
80
|
+
{
|
|
81
|
+
%w[node1 node3] => { test_action: { need_connector: true } },
|
|
82
|
+
%w[node2 node4] => { test_action: { need_connector: false } }
|
|
83
|
+
}
|
|
82
84
|
)
|
|
83
85
|
expect(action_executions).to eq [
|
|
84
86
|
{ node: 'node1', message: 'Action executed' },
|
|
@@ -87,8 +89,8 @@ describe HybridPlatformsConductor::ActionsExecutor do
|
|
|
87
89
|
{ node: 'node4', message: 'Action executed' }
|
|
88
90
|
]
|
|
89
91
|
expect(test_actions_executor.connector(:test_connector).calls).to eq [
|
|
90
|
-
|
|
91
|
-
|
|
92
|
+
[:connectable_nodes_from, %w[node1 node3]],
|
|
93
|
+
[:with_connection_to, %w[node1 node3], { no_exception: true }]
|
|
92
94
|
]
|
|
93
95
|
end
|
|
94
96
|
end
|
|
@@ -96,7 +98,7 @@ describe HybridPlatformsConductor::ActionsExecutor do
|
|
|
96
98
|
it 'does not ask for any connection if actions don\'t need remote' do
|
|
97
99
|
with_test_platform_for_connections do
|
|
98
100
|
test_actions_executor.connector(:test_connector).accept_nodes = %w[node1 node2 node3 node4]
|
|
99
|
-
test_actions_executor.execute_actions(%w[node1 node2 node3 node4] => { test_action: { need_connector: false } })
|
|
101
|
+
test_actions_executor.execute_actions({ %w[node1 node2 node3 node4] => { test_action: { need_connector: false } } })
|
|
100
102
|
expect(action_executions).to eq [
|
|
101
103
|
{ node: 'node1', message: 'Action executed' },
|
|
102
104
|
{ node: 'node2', message: 'Action executed' },
|
|
@@ -111,7 +113,7 @@ describe HybridPlatformsConductor::ActionsExecutor do
|
|
|
111
113
|
with_test_platform_for_connections do
|
|
112
114
|
test_actions_executor.connector(:test_connector).accept_nodes = %w[node1 node3]
|
|
113
115
|
test_actions_executor.connector(:test_connector_2).accept_nodes = %w[node2 node4]
|
|
114
|
-
test_actions_executor.execute_actions(%w[node1 node2 node3 node4] => { test_action: { need_connector: true } })
|
|
116
|
+
test_actions_executor.execute_actions({ %w[node1 node2 node3 node4] => { test_action: { need_connector: true } } })
|
|
115
117
|
expect(action_executions).to eq [
|
|
116
118
|
{ node: 'node1', message: 'Action executed' },
|
|
117
119
|
{ node: 'node2', message: 'Action executed' },
|
|
@@ -119,12 +121,12 @@ describe HybridPlatformsConductor::ActionsExecutor do
|
|
|
119
121
|
{ node: 'node4', message: 'Action executed' }
|
|
120
122
|
]
|
|
121
123
|
expect(test_actions_executor.connector(:test_connector).calls).to eq [
|
|
122
|
-
|
|
123
|
-
|
|
124
|
+
[:connectable_nodes_from, %w[node1 node2 node3 node4]],
|
|
125
|
+
[:with_connection_to, %w[node1 node3], { no_exception: true }]
|
|
124
126
|
]
|
|
125
127
|
expect(test_actions_executor.connector(:test_connector_2).calls).to eq [
|
|
126
|
-
|
|
127
|
-
|
|
128
|
+
[:connectable_nodes_from, %w[node2 node4]],
|
|
129
|
+
[:with_connection_to, %w[node2 node4], { no_exception: true }]
|
|
128
130
|
]
|
|
129
131
|
end
|
|
130
132
|
end
|
|
@@ -133,7 +135,7 @@ describe HybridPlatformsConductor::ActionsExecutor do
|
|
|
133
135
|
with_test_platform_for_connections do
|
|
134
136
|
test_actions_executor.connector(:test_connector).accept_nodes = %w[node1 node2 node3]
|
|
135
137
|
test_actions_executor.connector(:test_connector_2).accept_nodes = %w[node2 node4]
|
|
136
|
-
test_actions_executor.execute_actions(%w[node1 node2 node3 node4] => { test_action: { need_connector: true } })
|
|
138
|
+
test_actions_executor.execute_actions({ %w[node1 node2 node3 node4] => { test_action: { need_connector: true } } })
|
|
137
139
|
expect(action_executions).to eq [
|
|
138
140
|
{ node: 'node1', message: 'Action executed' },
|
|
139
141
|
{ node: 'node2', message: 'Action executed' },
|
|
@@ -141,12 +143,12 @@ describe HybridPlatformsConductor::ActionsExecutor do
|
|
|
141
143
|
{ node: 'node4', message: 'Action executed' }
|
|
142
144
|
]
|
|
143
145
|
expect(test_actions_executor.connector(:test_connector).calls).to eq [
|
|
144
|
-
|
|
145
|
-
|
|
146
|
+
[:connectable_nodes_from, %w[node1 node2 node3 node4]],
|
|
147
|
+
[:with_connection_to, %w[node1 node2 node3], { no_exception: true }]
|
|
146
148
|
]
|
|
147
149
|
expect(test_actions_executor.connector(:test_connector_2).calls).to eq [
|
|
148
|
-
|
|
149
|
-
|
|
150
|
+
[:connectable_nodes_from, %w[node4]],
|
|
151
|
+
[:with_connection_to, %w[node4], { no_exception: true }]
|
|
150
152
|
]
|
|
151
153
|
end
|
|
152
154
|
end
|
|
@@ -157,12 +159,12 @@ describe HybridPlatformsConductor::ActionsExecutor do
|
|
|
157
159
|
test_actions_executor.connector(:test_connector_2).accept_nodes = %w[node2 node4]
|
|
158
160
|
test_actions_executor.with_connections_prepared_to(%w[node1 node2 node3 node4]) do |connected_nodes|
|
|
159
161
|
expect(test_actions_executor.connector(:test_connector).calls).to eq [
|
|
160
|
-
|
|
161
|
-
|
|
162
|
+
[:connectable_nodes_from, %w[node1 node2 node3 node4]],
|
|
163
|
+
[:with_connection_to, %w[node1 node3], { no_exception: false }]
|
|
162
164
|
]
|
|
163
165
|
expect(test_actions_executor.connector(:test_connector_2).calls).to eq [
|
|
164
|
-
|
|
165
|
-
|
|
166
|
+
[:connectable_nodes_from, %w[node2 node4]],
|
|
167
|
+
[:with_connection_to, %w[node2 node4], { no_exception: false }]
|
|
166
168
|
]
|
|
167
169
|
expect(connected_nodes).to eq(
|
|
168
170
|
'node1' => test_actions_executor.connector(:test_connector),
|
|
@@ -190,12 +192,12 @@ describe HybridPlatformsConductor::ActionsExecutor do
|
|
|
190
192
|
test_actions_executor.connector(:test_connector_2).accept_nodes = %w[node2]
|
|
191
193
|
test_actions_executor.with_connections_prepared_to(%w[node1 node2 node3 node4], no_exception: true) do |connected_nodes|
|
|
192
194
|
expect(test_actions_executor.connector(:test_connector).calls).to eq [
|
|
193
|
-
|
|
194
|
-
|
|
195
|
+
[:connectable_nodes_from, %w[node1 node2 node3 node4]],
|
|
196
|
+
[:with_connection_to, %w[node1 node3], { no_exception: true }]
|
|
195
197
|
]
|
|
196
198
|
expect(test_actions_executor.connector(:test_connector_2).calls).to eq [
|
|
197
|
-
|
|
198
|
-
|
|
199
|
+
[:connectable_nodes_from, %w[node2 node4]],
|
|
200
|
+
[:with_connection_to, %w[node2], { no_exception: true }]
|
|
199
201
|
]
|
|
200
202
|
expect(connected_nodes).to eq(
|
|
201
203
|
'node1' => test_actions_executor.connector(:test_connector),
|