hybrid_platforms_conductor 32.3.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/bin/check-node +24 -0
- data/bin/deploy +12 -0
- data/bin/dump_nodes_json +12 -0
- data/bin/free_ips +23 -0
- data/bin/free_veids +17 -0
- data/bin/get_impacted_nodes +43 -0
- data/bin/last_deploys +56 -0
- data/bin/nodes_to_deploy +104 -0
- data/bin/report +10 -0
- data/bin/run +39 -0
- data/bin/setup +11 -0
- data/bin/ssh_config +14 -0
- data/bin/test +13 -0
- data/bin/topograph +54 -0
- data/lib/hybrid_platforms_conductor/action.rb +82 -0
- data/lib/hybrid_platforms_conductor/actions_executor.rb +307 -0
- data/lib/hybrid_platforms_conductor/bitbucket.rb +123 -0
- data/lib/hybrid_platforms_conductor/cmd_runner.rb +188 -0
- data/lib/hybrid_platforms_conductor/cmdb.rb +34 -0
- data/lib/hybrid_platforms_conductor/common_config_dsl/bitbucket.rb +78 -0
- data/lib/hybrid_platforms_conductor/common_config_dsl/confluence.rb +43 -0
- data/lib/hybrid_platforms_conductor/common_config_dsl/file_system_tests.rb +110 -0
- data/lib/hybrid_platforms_conductor/common_config_dsl/idempotence_tests.rb +38 -0
- data/lib/hybrid_platforms_conductor/config.rb +263 -0
- data/lib/hybrid_platforms_conductor/confluence.rb +119 -0
- data/lib/hybrid_platforms_conductor/connector.rb +84 -0
- data/lib/hybrid_platforms_conductor/credentials.rb +127 -0
- data/lib/hybrid_platforms_conductor/current_dir_monitor.rb +42 -0
- data/lib/hybrid_platforms_conductor/deployer.rb +598 -0
- data/lib/hybrid_platforms_conductor/executable.rb +145 -0
- data/lib/hybrid_platforms_conductor/hpc_plugins/action/bash.rb +44 -0
- data/lib/hybrid_platforms_conductor/hpc_plugins/action/interactive.rb +44 -0
- data/lib/hybrid_platforms_conductor/hpc_plugins/action/my_action.rb.sample +79 -0
- data/lib/hybrid_platforms_conductor/hpc_plugins/action/remote_bash.rb +63 -0
- data/lib/hybrid_platforms_conductor/hpc_plugins/action/ruby.rb +69 -0
- data/lib/hybrid_platforms_conductor/hpc_plugins/action/scp.rb +61 -0
- data/lib/hybrid_platforms_conductor/hpc_plugins/cmdb/config.rb +78 -0
- data/lib/hybrid_platforms_conductor/hpc_plugins/cmdb/host_ip.rb +104 -0
- data/lib/hybrid_platforms_conductor/hpc_plugins/cmdb/host_keys.rb +114 -0
- data/lib/hybrid_platforms_conductor/hpc_plugins/cmdb/my_cmdb.rb.sample +129 -0
- data/lib/hybrid_platforms_conductor/hpc_plugins/cmdb/platform_handlers.rb +66 -0
- data/lib/hybrid_platforms_conductor/hpc_plugins/connector/my_connector.rb.sample +156 -0
- data/lib/hybrid_platforms_conductor/hpc_plugins/connector/ssh.rb +702 -0
- data/lib/hybrid_platforms_conductor/hpc_plugins/platform_handler/platform_handler_plugin.rb.sample +292 -0
- data/lib/hybrid_platforms_conductor/hpc_plugins/provisioner/docker.rb +148 -0
- data/lib/hybrid_platforms_conductor/hpc_plugins/provisioner/my_provisioner.rb.sample +103 -0
- data/lib/hybrid_platforms_conductor/hpc_plugins/provisioner/podman.rb +125 -0
- data/lib/hybrid_platforms_conductor/hpc_plugins/provisioner/proxmox.rb +522 -0
- data/lib/hybrid_platforms_conductor/hpc_plugins/provisioner/proxmox/proxmox_waiter.rb +707 -0
- data/lib/hybrid_platforms_conductor/hpc_plugins/provisioner/proxmox/reserve_proxmox_container +122 -0
- data/lib/hybrid_platforms_conductor/hpc_plugins/report/confluence.rb +69 -0
- data/lib/hybrid_platforms_conductor/hpc_plugins/report/mediawiki.rb +164 -0
- data/lib/hybrid_platforms_conductor/hpc_plugins/report/my_report_plugin.rb.sample +88 -0
- data/lib/hybrid_platforms_conductor/hpc_plugins/report/stdout.rb +61 -0
- data/lib/hybrid_platforms_conductor/hpc_plugins/report/templates/confluence_inventory.html.erb +33 -0
- data/lib/hybrid_platforms_conductor/hpc_plugins/test/bitbucket_conf.rb +137 -0
- data/lib/hybrid_platforms_conductor/hpc_plugins/test/can_be_checked.rb +21 -0
- data/lib/hybrid_platforms_conductor/hpc_plugins/test/check_deploy_and_idempotence.rb +112 -0
- data/lib/hybrid_platforms_conductor/hpc_plugins/test/check_from_scratch.rb +35 -0
- data/lib/hybrid_platforms_conductor/hpc_plugins/test/connection.rb +28 -0
- data/lib/hybrid_platforms_conductor/hpc_plugins/test/deploy_freshness.rb +44 -0
- data/lib/hybrid_platforms_conductor/hpc_plugins/test/deploy_from_scratch.rb +36 -0
- data/lib/hybrid_platforms_conductor/hpc_plugins/test/deploy_removes_root_access.rb +49 -0
- data/lib/hybrid_platforms_conductor/hpc_plugins/test/divergence.rb +25 -0
- data/lib/hybrid_platforms_conductor/hpc_plugins/test/executables.rb +46 -0
- data/lib/hybrid_platforms_conductor/hpc_plugins/test/file_system.rb +45 -0
- data/lib/hybrid_platforms_conductor/hpc_plugins/test/file_system_hdfs.rb +45 -0
- data/lib/hybrid_platforms_conductor/hpc_plugins/test/hostname.rb +25 -0
- data/lib/hybrid_platforms_conductor/hpc_plugins/test/idempotence.rb +77 -0
- data/lib/hybrid_platforms_conductor/hpc_plugins/test/ip.rb +38 -0
- data/lib/hybrid_platforms_conductor/hpc_plugins/test/jenkins_ci_conf.rb +56 -0
- data/lib/hybrid_platforms_conductor/hpc_plugins/test/jenkins_ci_masters_ok.rb +54 -0
- data/lib/hybrid_platforms_conductor/hpc_plugins/test/linear_strategy.rb +47 -0
- data/lib/hybrid_platforms_conductor/hpc_plugins/test/local_users.rb +82 -0
- data/lib/hybrid_platforms_conductor/hpc_plugins/test/mounts.rb +120 -0
- data/lib/hybrid_platforms_conductor/hpc_plugins/test/my_test_plugin.rb.sample +143 -0
- data/lib/hybrid_platforms_conductor/hpc_plugins/test/orphan_files.rb +74 -0
- data/lib/hybrid_platforms_conductor/hpc_plugins/test/ports.rb +85 -0
- data/lib/hybrid_platforms_conductor/hpc_plugins/test/private_ips.rb +38 -0
- data/lib/hybrid_platforms_conductor/hpc_plugins/test/public_ips.rb +38 -0
- data/lib/hybrid_platforms_conductor/hpc_plugins/test/spectre-meltdown-checker.sh +1930 -0
- data/lib/hybrid_platforms_conductor/hpc_plugins/test/spectre.rb +56 -0
- data/lib/hybrid_platforms_conductor/hpc_plugins/test/veids.rb +31 -0
- data/lib/hybrid_platforms_conductor/hpc_plugins/test/vulnerabilities.rb +159 -0
- data/lib/hybrid_platforms_conductor/hpc_plugins/test_report/confluence.rb +122 -0
- data/lib/hybrid_platforms_conductor/hpc_plugins/test_report/my_test_report.rb.sample +48 -0
- data/lib/hybrid_platforms_conductor/hpc_plugins/test_report/stdout.rb +120 -0
- data/lib/hybrid_platforms_conductor/hpc_plugins/test_report/templates/_confluence_errors_status.html.erb +46 -0
- data/lib/hybrid_platforms_conductor/hpc_plugins/test_report/templates/_confluence_gauge.html.erb +49 -0
- data/lib/hybrid_platforms_conductor/hpc_plugins/test_report/templates/confluence.html.erb +242 -0
- data/lib/hybrid_platforms_conductor/io_router.rb +70 -0
- data/lib/hybrid_platforms_conductor/json_dumper.rb +88 -0
- data/lib/hybrid_platforms_conductor/logger_helpers.rb +319 -0
- data/lib/hybrid_platforms_conductor/mutex_dir +76 -0
- data/lib/hybrid_platforms_conductor/nodes_handler.rb +597 -0
- data/lib/hybrid_platforms_conductor/parallel_threads.rb +97 -0
- data/lib/hybrid_platforms_conductor/platform_handler.rb +188 -0
- data/lib/hybrid_platforms_conductor/platforms_handler.rb +118 -0
- data/lib/hybrid_platforms_conductor/plugin.rb +53 -0
- data/lib/hybrid_platforms_conductor/plugins.rb +101 -0
- data/lib/hybrid_platforms_conductor/provisioner.rb +181 -0
- data/lib/hybrid_platforms_conductor/report.rb +31 -0
- data/lib/hybrid_platforms_conductor/reports_handler.rb +84 -0
- data/lib/hybrid_platforms_conductor/services_handler.rb +274 -0
- data/lib/hybrid_platforms_conductor/test.rb +141 -0
- data/lib/hybrid_platforms_conductor/test_by_service.rb +22 -0
- data/lib/hybrid_platforms_conductor/test_report.rb +282 -0
- data/lib/hybrid_platforms_conductor/tests_runner.rb +590 -0
- data/lib/hybrid_platforms_conductor/thycotic.rb +92 -0
- data/lib/hybrid_platforms_conductor/topographer.rb +859 -0
- data/lib/hybrid_platforms_conductor/topographer/plugin.rb +20 -0
- data/lib/hybrid_platforms_conductor/topographer/plugins/graphviz.rb +127 -0
- data/lib/hybrid_platforms_conductor/topographer/plugins/json.rb +72 -0
- data/lib/hybrid_platforms_conductor/topographer/plugins/my_topographer_output_plugin.rb.sample +37 -0
- data/lib/hybrid_platforms_conductor/topographer/plugins/svg.rb +30 -0
- data/lib/hybrid_platforms_conductor/version.rb +5 -0
- data/spec/hybrid_platforms_conductor_test.rb +159 -0
- data/spec/hybrid_platforms_conductor_test/api/actions_executor/actions/bash_spec.rb +43 -0
- data/spec/hybrid_platforms_conductor_test/api/actions_executor/actions/interactive_spec.rb +18 -0
- data/spec/hybrid_platforms_conductor_test/api/actions_executor/actions/remote_bash_spec.rb +102 -0
- data/spec/hybrid_platforms_conductor_test/api/actions_executor/actions/ruby_spec.rb +108 -0
- data/spec/hybrid_platforms_conductor_test/api/actions_executor/actions/scp_spec.rb +79 -0
- data/spec/hybrid_platforms_conductor_test/api/actions_executor/actions_spec.rb +199 -0
- data/spec/hybrid_platforms_conductor_test/api/actions_executor/connection_spec.rb +212 -0
- data/spec/hybrid_platforms_conductor_test/api/actions_executor/connectors/ssh/cli_options_spec.rb +125 -0
- data/spec/hybrid_platforms_conductor_test/api/actions_executor/connectors/ssh/config_dsl_spec.rb +50 -0
- data/spec/hybrid_platforms_conductor_test/api/actions_executor/connectors/ssh/connectable_nodes_spec.rb +28 -0
- data/spec/hybrid_platforms_conductor_test/api/actions_executor/connectors/ssh/connections_spec.rb +448 -0
- data/spec/hybrid_platforms_conductor_test/api/actions_executor/connectors/ssh/global_helpers_spec.rb +313 -0
- data/spec/hybrid_platforms_conductor_test/api/actions_executor/connectors/ssh/node_helpers_spec.rb +32 -0
- data/spec/hybrid_platforms_conductor_test/api/actions_executor/connectors/ssh/remote_actions_spec.rb +134 -0
- data/spec/hybrid_platforms_conductor_test/api/actions_executor/logging_spec.rb +256 -0
- data/spec/hybrid_platforms_conductor_test/api/actions_executor/parallel_spec.rb +338 -0
- data/spec/hybrid_platforms_conductor_test/api/actions_executor/timeout_spec.rb +101 -0
- data/spec/hybrid_platforms_conductor_test/api/cmd_runner_spec.rb +165 -0
- data/spec/hybrid_platforms_conductor_test/api/config_spec.rb +238 -0
- data/spec/hybrid_platforms_conductor_test/api/deployer/check_spec.rb +9 -0
- data/spec/hybrid_platforms_conductor_test/api/deployer/deploy_spec.rb +243 -0
- data/spec/hybrid_platforms_conductor_test/api/deployer/parse_deploy_output_spec.rb +104 -0
- data/spec/hybrid_platforms_conductor_test/api/deployer/provisioner_spec.rb +131 -0
- data/spec/hybrid_platforms_conductor_test/api/deployer/provisioners/docker/Dockerfile +10 -0
- data/spec/hybrid_platforms_conductor_test/api/deployer/provisioners/docker_spec.rb +123 -0
- data/spec/hybrid_platforms_conductor_test/api/deployer/provisioners/podman_spec.rb +211 -0
- data/spec/hybrid_platforms_conductor_test/api/deployer/provisioners/proxmox/config_dsl_spec.rb +126 -0
- data/spec/hybrid_platforms_conductor_test/api/deployer/provisioners/proxmox/create_spec.rb +290 -0
- data/spec/hybrid_platforms_conductor_test/api/deployer/provisioners/proxmox/destroy_spec.rb +43 -0
- data/spec/hybrid_platforms_conductor_test/api/deployer/provisioners/proxmox/ip_spec.rb +60 -0
- data/spec/hybrid_platforms_conductor_test/api/deployer/provisioners/proxmox/proxmox.json +3 -0
- data/spec/hybrid_platforms_conductor_test/api/deployer/provisioners/proxmox/reserve_proxmox_container/destroy_vm_spec.rb +82 -0
- data/spec/hybrid_platforms_conductor_test/api/deployer/provisioners/proxmox/reserve_proxmox_container/expired_containers_spec.rb +786 -0
- data/spec/hybrid_platforms_conductor_test/api/deployer/provisioners/proxmox/reserve_proxmox_container/ips_assignment_spec.rb +112 -0
- data/spec/hybrid_platforms_conductor_test/api/deployer/provisioners/proxmox/reserve_proxmox_container/other_lxc_containers_resources_spec.rb +190 -0
- data/spec/hybrid_platforms_conductor_test/api/deployer/provisioners/proxmox/reserve_proxmox_container/pve_node_resources_spec.rb +200 -0
- data/spec/hybrid_platforms_conductor_test/api/deployer/provisioners/proxmox/reserve_proxmox_container/retries_spec.rb +35 -0
- data/spec/hybrid_platforms_conductor_test/api/deployer/provisioners/proxmox/reserve_proxmox_container/vm_ids_assignment_spec.rb +67 -0
- data/spec/hybrid_platforms_conductor_test/api/deployer/provisioners/proxmox/start_spec.rb +79 -0
- data/spec/hybrid_platforms_conductor_test/api/deployer/provisioners/proxmox/state_spec.rb +28 -0
- data/spec/hybrid_platforms_conductor_test/api/deployer/provisioners/proxmox/stop_spec.rb +41 -0
- data/spec/hybrid_platforms_conductor_test/api/nodes_handler/cmdbs/config_spec.rb +33 -0
- data/spec/hybrid_platforms_conductor_test/api/nodes_handler/cmdbs/host_ip_spec.rb +64 -0
- data/spec/hybrid_platforms_conductor_test/api/nodes_handler/cmdbs/host_keys_spec.rb +133 -0
- data/spec/hybrid_platforms_conductor_test/api/nodes_handler/cmdbs/platform_handlers_spec.rb +19 -0
- data/spec/hybrid_platforms_conductor_test/api/nodes_handler/cmdbs_plugins_api_spec.rb +446 -0
- data/spec/hybrid_platforms_conductor_test/api/nodes_handler/common_spec.rb +127 -0
- data/spec/hybrid_platforms_conductor_test/api/nodes_handler/git_diff_impacts_spec.rb +318 -0
- data/spec/hybrid_platforms_conductor_test/api/nodes_handler/nodes_selectors_spec.rb +132 -0
- data/spec/hybrid_platforms_conductor_test/api/nodes_handler/platform_handlers_plugins_api_spec.rb +60 -0
- data/spec/hybrid_platforms_conductor_test/api/nodes_handler/several_platforms_spec.rb +58 -0
- data/spec/hybrid_platforms_conductor_test/api/platform_handler_spec.rb +97 -0
- data/spec/hybrid_platforms_conductor_test/api/platforms_handler_spec.rb +104 -0
- data/spec/hybrid_platforms_conductor_test/api/plugins_spec.rb +243 -0
- data/spec/hybrid_platforms_conductor_test/api/reports_handler_spec.rb +44 -0
- data/spec/hybrid_platforms_conductor_test/api/services_handler/actions_to_deploy_spec.rb +121 -0
- data/spec/hybrid_platforms_conductor_test/api/services_handler/deploy_allowed_spec.rb +142 -0
- data/spec/hybrid_platforms_conductor_test/api/services_handler/log_info_spec.rb +101 -0
- data/spec/hybrid_platforms_conductor_test/api/services_handler/package_spec.rb +388 -0
- data/spec/hybrid_platforms_conductor_test/api/services_handler/parse_deploy_output_spec.rb +274 -0
- data/spec/hybrid_platforms_conductor_test/api/services_handler/prepare_for_deploy_spec.rb +264 -0
- data/spec/hybrid_platforms_conductor_test/api/tests_runner/common_spec.rb +194 -0
- data/spec/hybrid_platforms_conductor_test/api/tests_runner/global_spec.rb +37 -0
- data/spec/hybrid_platforms_conductor_test/api/tests_runner/node_check_spec.rb +194 -0
- data/spec/hybrid_platforms_conductor_test/api/tests_runner/node_spec.rb +137 -0
- data/spec/hybrid_platforms_conductor_test/api/tests_runner/node_ssh_spec.rb +257 -0
- data/spec/hybrid_platforms_conductor_test/api/tests_runner/platform_spec.rb +110 -0
- data/spec/hybrid_platforms_conductor_test/api/tests_runner/reports_spec.rb +367 -0
- data/spec/hybrid_platforms_conductor_test/api/tests_runner/test_plugins/bitbucket_conf_spec.rb +111 -0
- data/spec/hybrid_platforms_conductor_test/api/tests_runner/test_reports_plugins/confluence_spec.rb +29 -0
- data/spec/hybrid_platforms_conductor_test/cmdb_plugins/test_cmdb.rb +166 -0
- data/spec/hybrid_platforms_conductor_test/cmdb_plugins/test_cmdb2.rb +93 -0
- data/spec/hybrid_platforms_conductor_test/cmdb_plugins/test_cmdb_others.rb +60 -0
- data/spec/hybrid_platforms_conductor_test/cmdb_plugins/test_cmdb_others2.rb +58 -0
- data/spec/hybrid_platforms_conductor_test/executables/check-node_spec.rb +35 -0
- data/spec/hybrid_platforms_conductor_test/executables/deploy_spec.rb +35 -0
- data/spec/hybrid_platforms_conductor_test/executables/get_impacted_nodes_spec.rb +158 -0
- data/spec/hybrid_platforms_conductor_test/executables/last_deploys_spec.rb +173 -0
- data/spec/hybrid_platforms_conductor_test/executables/nodes_to_deploy_spec.rb +283 -0
- data/spec/hybrid_platforms_conductor_test/executables/options/actions_executor_spec.rb +28 -0
- data/spec/hybrid_platforms_conductor_test/executables/options/cmd_runner_spec.rb +28 -0
- data/spec/hybrid_platforms_conductor_test/executables/options/common_spec.rb +67 -0
- data/spec/hybrid_platforms_conductor_test/executables/options/deployer_spec.rb +251 -0
- data/spec/hybrid_platforms_conductor_test/executables/options/nodes_handler_spec.rb +111 -0
- data/spec/hybrid_platforms_conductor_test/executables/options/nodes_selectors_spec.rb +71 -0
- data/spec/hybrid_platforms_conductor_test/executables/options/reports_handler_spec.rb +54 -0
- data/spec/hybrid_platforms_conductor_test/executables/options/tests_runner_spec.rb +139 -0
- data/spec/hybrid_platforms_conductor_test/executables/report_spec.rb +60 -0
- data/spec/hybrid_platforms_conductor_test/executables/run_spec.rb +173 -0
- data/spec/hybrid_platforms_conductor_test/executables/ssh_config_spec.rb +35 -0
- data/spec/hybrid_platforms_conductor_test/executables/test_spec.rb +41 -0
- data/spec/hybrid_platforms_conductor_test/helpers/actions_executor_helpers.rb +98 -0
- data/spec/hybrid_platforms_conductor_test/helpers/cmd_runner_helpers.rb +92 -0
- data/spec/hybrid_platforms_conductor_test/helpers/cmdb_helpers.rb +37 -0
- data/spec/hybrid_platforms_conductor_test/helpers/config_helpers.rb +20 -0
- data/spec/hybrid_platforms_conductor_test/helpers/connector_ssh_helpers.rb +130 -0
- data/spec/hybrid_platforms_conductor_test/helpers/deployer_helpers.rb +149 -0
- data/spec/hybrid_platforms_conductor_test/helpers/deployer_test_helpers.rb +812 -0
- data/spec/hybrid_platforms_conductor_test/helpers/executables_helpers.rb +96 -0
- data/spec/hybrid_platforms_conductor_test/helpers/nodes_handler_helpers.rb +20 -0
- data/spec/hybrid_platforms_conductor_test/helpers/platform_handler_helpers.rb +35 -0
- data/spec/hybrid_platforms_conductor_test/helpers/platforms_handler_helpers.rb +127 -0
- data/spec/hybrid_platforms_conductor_test/helpers/plugins_helpers.rb +48 -0
- data/spec/hybrid_platforms_conductor_test/helpers/provisioner_proxmox_helpers.rb +789 -0
- data/spec/hybrid_platforms_conductor_test/helpers/reports_handler_helpers.rb +29 -0
- data/spec/hybrid_platforms_conductor_test/helpers/services_handler_helpers.rb +20 -0
- data/spec/hybrid_platforms_conductor_test/helpers/tests_runner_helpers.rb +38 -0
- data/spec/hybrid_platforms_conductor_test/mocked_lib/my_test_gem/hpc_plugins/test_plugin_type/test_plugin_id1.rb +22 -0
- data/spec/hybrid_platforms_conductor_test/mocked_lib/my_test_gem/hpc_plugins/test_plugin_type/test_plugin_id2.rb +22 -0
- data/spec/hybrid_platforms_conductor_test/mocked_lib/my_test_gem2/sub_dir/hpc_plugins/test_plugin_type/test_plugin_id3.rb +26 -0
- data/spec/hybrid_platforms_conductor_test/mocked_lib/my_test_gem2/sub_dir/hpc_plugins/test_plugin_type2/test_plugin_id4.rb +26 -0
- data/spec/hybrid_platforms_conductor_test/platform_handler_plugins/test.rb +225 -0
- data/spec/hybrid_platforms_conductor_test/platform_handler_plugins/test2.rb +11 -0
- data/spec/hybrid_platforms_conductor_test/report_plugin.rb +35 -0
- data/spec/hybrid_platforms_conductor_test/test_action.rb +66 -0
- data/spec/hybrid_platforms_conductor_test/test_connector.rb +151 -0
- data/spec/hybrid_platforms_conductor_test/test_plugins/global.rb +30 -0
- data/spec/hybrid_platforms_conductor_test/test_plugins/node.rb +53 -0
- data/spec/hybrid_platforms_conductor_test/test_plugins/node_check.rb +47 -0
- data/spec/hybrid_platforms_conductor_test/test_plugins/node_ssh.rb +42 -0
- data/spec/hybrid_platforms_conductor_test/test_plugins/platform.rb +50 -0
- data/spec/hybrid_platforms_conductor_test/test_plugins/several_checks.rb +50 -0
- data/spec/hybrid_platforms_conductor_test/test_provisioner.rb +95 -0
- data/spec/hybrid_platforms_conductor_test/tests_report_plugin.rb +49 -0
- data/spec/spec_helper.rb +111 -0
- metadata +566 -0
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
module HybridPlatformsConductorTest
|
|
2
|
+
|
|
3
|
+
# Dummy action plugin that can be used to test interactions between Actions Executor and actions
|
|
4
|
+
class TestAction < HybridPlatformsConductor::Action
|
|
5
|
+
|
|
6
|
+
class << self
|
|
7
|
+
|
|
8
|
+
# List of executions info
|
|
9
|
+
# Array< Hash<Symbol,Object> >
|
|
10
|
+
# * *node* (String): Node on which the action has been executed
|
|
11
|
+
# * *message* (String): Message executed
|
|
12
|
+
attr_accessor :executions
|
|
13
|
+
|
|
14
|
+
# Reset variables, so that they don't interfere between tests
|
|
15
|
+
def reset
|
|
16
|
+
@executions = []
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
# Setup the action
|
|
22
|
+
#
|
|
23
|
+
# Parameters::
|
|
24
|
+
# * *input* (Hash<Symbol, Object>): The action input, as a set of properties:
|
|
25
|
+
# * *message* (String): The message to log in the executions. This is the default property that can be used in place of the Hash. [default = 'Action executed']
|
|
26
|
+
# * *run_cmd* (String or nil): A command to run with run_cmd, or nil if none [default = nil]
|
|
27
|
+
# * *need_connector* (Boolean): Does this action need a remote connection to the node? [default = false]
|
|
28
|
+
# * *code* (Proc or nil): Code to be called during action's execution, or nil if none [default = nil]
|
|
29
|
+
# * Parameters::
|
|
30
|
+
# * *stdout_io* (IO): stdout IO to be used for stdout logging
|
|
31
|
+
# * *stderr_io* (IO): stdout IO to be used for stderr logging
|
|
32
|
+
# * *action* (TestAction): The test action
|
|
33
|
+
def setup(input)
|
|
34
|
+
# Normalize input
|
|
35
|
+
input = { message: input } if input.is_a?(String)
|
|
36
|
+
# Set defaults
|
|
37
|
+
@input = {
|
|
38
|
+
message: 'Action executed',
|
|
39
|
+
need_connector: false
|
|
40
|
+
}.merge(input)
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
# Do we need a connector to execute this action on a node?
|
|
44
|
+
#
|
|
45
|
+
# Result::
|
|
46
|
+
# * Boolean: Do we need a connector to execute this action on a node?
|
|
47
|
+
def need_connector?
|
|
48
|
+
@input[:need_connector]
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
# Execute the action
|
|
52
|
+
def execute
|
|
53
|
+
run_cmd(@input[:run_cmd]) if @input.key?(:run_cmd)
|
|
54
|
+
@input[:code].call(@stdout_io, @stderr_io, self) if @input.key?(:code)
|
|
55
|
+
TestAction.executions << {
|
|
56
|
+
node: @node,
|
|
57
|
+
message: @input[:message]
|
|
58
|
+
}
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
# Integer: Timeout that the action should respect
|
|
62
|
+
attr_reader :timeout
|
|
63
|
+
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
end
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
module HybridPlatformsConductorTest
|
|
2
|
+
|
|
3
|
+
# Test connector
|
|
4
|
+
class TestConnector < HybridPlatformsConductor::Connector
|
|
5
|
+
|
|
6
|
+
# Array<Object<: Access calls made to the test connector
|
|
7
|
+
attr_reader :calls
|
|
8
|
+
|
|
9
|
+
# Array<String>: List of nodes accepted by this connector
|
|
10
|
+
attr_accessor :accept_nodes
|
|
11
|
+
|
|
12
|
+
# Array<String> or nil: List of nodes that will be connected, or nil for all
|
|
13
|
+
attr_accessor :connected_nodes
|
|
14
|
+
|
|
15
|
+
# Proc: Code executed when remote_bash is called
|
|
16
|
+
# Parameters::
|
|
17
|
+
# * *stdout* (IO): stdout to return
|
|
18
|
+
# * *stderr* (IO): stderr to return
|
|
19
|
+
# * *connector* (TestConnector): The current connector
|
|
20
|
+
attr_accessor :remote_bash_code
|
|
21
|
+
|
|
22
|
+
# Proc: Code executed when remote_copy is called
|
|
23
|
+
# Parameters::
|
|
24
|
+
# * *stdout* (IO): stdout to return
|
|
25
|
+
# * *stderr* (IO): stderr to return
|
|
26
|
+
# * *connector* (TestConnector): The current connector
|
|
27
|
+
attr_accessor :remote_copy_code
|
|
28
|
+
|
|
29
|
+
# Initialize the connector.
|
|
30
|
+
# This can be used to initialize global variables that are used for this connector
|
|
31
|
+
# [API] - This method is optional
|
|
32
|
+
# [API] - @cmd_runner can be used
|
|
33
|
+
# [API] - @nodes_handler can be used
|
|
34
|
+
def init
|
|
35
|
+
@calls = []
|
|
36
|
+
@accept_nodes = []
|
|
37
|
+
@connected_nodes = nil
|
|
38
|
+
@remote_bash_code = nil
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
# Complete an option parser with options meant to control this connector
|
|
42
|
+
# [API] - This method is optional
|
|
43
|
+
# [API] - @cmd_runner can be used
|
|
44
|
+
# [API] - @nodes_handler can be used
|
|
45
|
+
#
|
|
46
|
+
# Parameters::
|
|
47
|
+
# * *options_parser* (OptionParser): The option parser to complete
|
|
48
|
+
def options_parse(options_parser)
|
|
49
|
+
@calls << [:options_parse]
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
# Validate that parsed parameters are valid
|
|
53
|
+
# [API] - This method is optional
|
|
54
|
+
# [API] - @cmd_runner can be used
|
|
55
|
+
# [API] - @nodes_handler can be used
|
|
56
|
+
def validate_params
|
|
57
|
+
@calls << [:validate_params]
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
# Select nodes where this connector can connect.
|
|
61
|
+
# [API] - This method is mandatory
|
|
62
|
+
# [API] - @cmd_runner can be used
|
|
63
|
+
# [API] - @nodes_handler can be used
|
|
64
|
+
#
|
|
65
|
+
# Parameters::
|
|
66
|
+
# * *nodes* (Array<String>): List of candidate nodes
|
|
67
|
+
# Result::
|
|
68
|
+
# * Array<String>: List of nodes we can connect to from the candidates
|
|
69
|
+
def connectable_nodes_from(nodes)
|
|
70
|
+
@calls << [:connectable_nodes_from, nodes]
|
|
71
|
+
nodes & @accept_nodes
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
# Prepare connections to a given set of nodes.
|
|
75
|
+
# Useful to prefetch metadata or open bulk connections.
|
|
76
|
+
# [API] - This method is optional
|
|
77
|
+
# [API] - @cmd_runner can be used
|
|
78
|
+
# [API] - @nodes_handler can be used
|
|
79
|
+
#
|
|
80
|
+
# Parameters::
|
|
81
|
+
# * *nodes* (Array<String>): Nodes to prepare the connection to
|
|
82
|
+
# * *no_exception* (Boolean): Should we still continue if some nodes have connection errors? [default: false]
|
|
83
|
+
# * Proc: Code called with the connections prepared.
|
|
84
|
+
# * Parameters::
|
|
85
|
+
# * *connected_nodes* (Array<String>): The list of connected nodes (should be equal to nodes unless no_exception == true and some nodes failed to connect)
|
|
86
|
+
def with_connection_to(nodes, no_exception: false)
|
|
87
|
+
@calls << [:with_connection_to, nodes, { no_exception: no_exception }]
|
|
88
|
+
yield @connected_nodes.nil? ? nodes : @connected_nodes
|
|
89
|
+
end
|
|
90
|
+
|
|
91
|
+
# Run bash commands on a given node.
|
|
92
|
+
# [API] - This method is mandatory
|
|
93
|
+
# [API] - If defined, then with_connection_to has been called before this method.
|
|
94
|
+
# [API] - @cmd_runner can be used
|
|
95
|
+
# [API] - @nodes_handler can be used
|
|
96
|
+
# [API] - @node can be used to access the node on which we execute the remote bash
|
|
97
|
+
# [API] - @timeout can be used to know when the action should fail
|
|
98
|
+
# [API] - @stdout_io can be used to send stdout output
|
|
99
|
+
# [API] - @stderr_io can be used to send stderr output
|
|
100
|
+
#
|
|
101
|
+
# Parameters::
|
|
102
|
+
# * *bash_cmds* (String): Bash commands to execute
|
|
103
|
+
def remote_bash(bash_cmds)
|
|
104
|
+
@calls << [:remote_bash, bash_cmds]
|
|
105
|
+
@remote_bash_code.call(@stdout_io, @stderr_io, self) unless @remote_bash_code.nil?
|
|
106
|
+
end
|
|
107
|
+
|
|
108
|
+
# Execute an interactive shell on the remote node
|
|
109
|
+
# [API] - This method is mandatory
|
|
110
|
+
# [API] - If defined, then with_connection_to has been called before this method.
|
|
111
|
+
# [API] - @cmd_runner can be used
|
|
112
|
+
# [API] - @nodes_handler can be used
|
|
113
|
+
# [API] - @node can be used to access the node on which we execute the remote bash
|
|
114
|
+
# [API] - @timeout can be used to know when the action should fail
|
|
115
|
+
# [API] - @stdout_io can be used to send stdout output
|
|
116
|
+
# [API] - @stderr_io can be used to send stderr output
|
|
117
|
+
def remote_interactive
|
|
118
|
+
@calls << [:remote_interactive]
|
|
119
|
+
end
|
|
120
|
+
|
|
121
|
+
# Copy a file to the remote node in a directory
|
|
122
|
+
# [API] - This method is mandatory
|
|
123
|
+
# [API] - If defined, then with_connection_to has been called before this method.
|
|
124
|
+
# [API] - @cmd_runner can be used
|
|
125
|
+
# [API] - @nodes_handler can be used
|
|
126
|
+
# [API] - @node can be used to access the node on which we execute the remote bash
|
|
127
|
+
# [API] - @timeout can be used to know when the action should fail
|
|
128
|
+
# [API] - @stdout_io can be used to send stdout output
|
|
129
|
+
# [API] - @stderr_io can be used to send stderr output
|
|
130
|
+
#
|
|
131
|
+
# Parameters::
|
|
132
|
+
# * *from* (String): Local file to copy
|
|
133
|
+
# * *to* (String): Remote directory to copy to
|
|
134
|
+
# * *sudo* (Boolean): Do we use sudo to copy? [default: false]
|
|
135
|
+
# * *owner* (String or nil): Owner to be used when copying the files, or nil for current one [default: nil]
|
|
136
|
+
# * *group* (String or nil): Group to be used when copying the files, or nil for current one [default: nil]
|
|
137
|
+
def remote_copy(from, to, sudo: false, owner: nil, group: nil)
|
|
138
|
+
extra_opts = {}
|
|
139
|
+
extra_opts[:sudo] = sudo if sudo
|
|
140
|
+
extra_opts[:owner] = owner if owner
|
|
141
|
+
extra_opts[:group] = group if group
|
|
142
|
+
@calls << [:remote_copy, from, to] + (extra_opts.empty? ? [] : [extra_opts])
|
|
143
|
+
@remote_copy_code.call(@stdout_io, @stderr_io, self) unless @remote_copy_code.nil?
|
|
144
|
+
end
|
|
145
|
+
|
|
146
|
+
# Integer: The current desired timeout
|
|
147
|
+
attr_reader :timeout
|
|
148
|
+
|
|
149
|
+
end
|
|
150
|
+
|
|
151
|
+
end
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
module HybridPlatformsConductorTest
|
|
2
|
+
|
|
3
|
+
module TestPlugins
|
|
4
|
+
|
|
5
|
+
# Test plugin at global level
|
|
6
|
+
class Global < HybridPlatformsConductor::Test
|
|
7
|
+
|
|
8
|
+
class << self
|
|
9
|
+
|
|
10
|
+
# Number of times our test has been run
|
|
11
|
+
# Integer
|
|
12
|
+
attr_accessor :nbr_runs
|
|
13
|
+
|
|
14
|
+
# Do we fail?
|
|
15
|
+
# Boolean
|
|
16
|
+
attr_accessor :fail
|
|
17
|
+
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
# Check my_test_plugin.rb.sample documentation for signature details.
|
|
21
|
+
def test
|
|
22
|
+
raise 'Failing test' if Global.fail
|
|
23
|
+
Global.nbr_runs += 1
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
end
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
module HybridPlatformsConductorTest
|
|
2
|
+
|
|
3
|
+
module TestPlugins
|
|
4
|
+
|
|
5
|
+
# Test plugin at node level
|
|
6
|
+
class Node < HybridPlatformsConductor::Test
|
|
7
|
+
|
|
8
|
+
class << self
|
|
9
|
+
|
|
10
|
+
# Sequences of nodes on which this test has been run
|
|
11
|
+
# Array< [ Symbol, String ] >
|
|
12
|
+
# Array< [ test_name, node ] >
|
|
13
|
+
attr_accessor :runs
|
|
14
|
+
|
|
15
|
+
# List of nodes for which we fail, per test name
|
|
16
|
+
# Hash<Symbol, Array<String> >
|
|
17
|
+
attr_accessor :fail_for
|
|
18
|
+
|
|
19
|
+
# List of platform types that should only be concerned by this test
|
|
20
|
+
# Array<Symbol>
|
|
21
|
+
attr_accessor :only_on_platform_types
|
|
22
|
+
|
|
23
|
+
# List of nodes that should only be concerned by this test
|
|
24
|
+
# Array<Symbol>
|
|
25
|
+
attr_accessor :only_on_nodes
|
|
26
|
+
|
|
27
|
+
# Eventual sleep time per node name, per test name
|
|
28
|
+
# Hash<Symbol, Hash<String, Integer> >
|
|
29
|
+
attr_accessor :sleeps
|
|
30
|
+
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
# Check my_test_plugin.rb.sample documentation for signature details.
|
|
34
|
+
def test_for_node
|
|
35
|
+
raise "Failing test #{@name} for #{@node}" if Node.fail_for.key?(@name) && Node.fail_for[@name].include?(@node)
|
|
36
|
+
sleep_time = Node.sleeps.dig(@name, @node)
|
|
37
|
+
sleep sleep_time unless sleep_time.nil?
|
|
38
|
+
Node.runs << [@name, @node]
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
# Limit the list of platform types for these tests.
|
|
42
|
+
#
|
|
43
|
+
# Result::
|
|
44
|
+
# * Array<Symbol> or nil: List of platform types allowed for this test, or nil for all
|
|
45
|
+
def self.only_on_platforms
|
|
46
|
+
Node.only_on_platform_types
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
end
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
module HybridPlatformsConductorTest
|
|
2
|
+
|
|
3
|
+
module TestPlugins
|
|
4
|
+
|
|
5
|
+
# Test plugin at node level using check-node results
|
|
6
|
+
class NodeCheck < HybridPlatformsConductor::Test
|
|
7
|
+
|
|
8
|
+
class << self
|
|
9
|
+
|
|
10
|
+
# Sequences of nodes on which this test has been run
|
|
11
|
+
# Array< [ Symbol, String, String, String, Integer ] >
|
|
12
|
+
# Array< [ test_name, node, stdout, stderr, exit_status ] >
|
|
13
|
+
attr_accessor :runs
|
|
14
|
+
|
|
15
|
+
# List of nodes for which we fail
|
|
16
|
+
# Array<String>
|
|
17
|
+
attr_accessor :fail_for
|
|
18
|
+
|
|
19
|
+
# List of platform types that should only be concerned by this test
|
|
20
|
+
# Array<Symbol>
|
|
21
|
+
attr_accessor :only_on_platform_types
|
|
22
|
+
|
|
23
|
+
# List of nodes that should only be concerned by this test
|
|
24
|
+
# Array<Symbol>
|
|
25
|
+
attr_accessor :only_on_nodes
|
|
26
|
+
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
# Check my_test_plugin.rb.sample documentation for signature details.
|
|
30
|
+
def test_on_check_node(stdout, stderr, exit_status)
|
|
31
|
+
raise 'Failing test' if NodeCheck.fail_for.include? @node
|
|
32
|
+
NodeCheck.runs << [@name, @node, stdout, stderr, exit_status]
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
# Limit the list of platform types for these tests.
|
|
36
|
+
#
|
|
37
|
+
# Result::
|
|
38
|
+
# * Array<Symbol> or nil: List of platform types allowed for this test, or nil for all
|
|
39
|
+
def self.only_on_platforms
|
|
40
|
+
NodeCheck.only_on_platform_types
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
end
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
module HybridPlatformsConductorTest
|
|
2
|
+
|
|
3
|
+
module TestPlugins
|
|
4
|
+
|
|
5
|
+
# Test plugin at node level using SSH
|
|
6
|
+
class NodeSsh < HybridPlatformsConductor::Test
|
|
7
|
+
|
|
8
|
+
class << self
|
|
9
|
+
|
|
10
|
+
# List of Bash commands and their corresponding testing code, per node name, per test name
|
|
11
|
+
# Hash< Symbol, Hash< String, Hash< String, Proc > > >
|
|
12
|
+
# Hash< test_name, Hash< node, Hash< bash_cmd, test_code > > >
|
|
13
|
+
attr_accessor :node_tests
|
|
14
|
+
|
|
15
|
+
# List of platform types that should only be concerned by this test
|
|
16
|
+
# Array<Symbol>
|
|
17
|
+
attr_accessor :only_on_platform_types
|
|
18
|
+
|
|
19
|
+
# List of nodes that should only be concerned by this test
|
|
20
|
+
# Array<Symbol>
|
|
21
|
+
attr_accessor :only_on_nodes
|
|
22
|
+
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
# Check my_test_plugin.rb.sample documentation for signature details.
|
|
26
|
+
def test_on_node
|
|
27
|
+
NodeSsh.node_tests[@name][@node]
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
# Limit the list of platform types for these tests.
|
|
31
|
+
#
|
|
32
|
+
# Result::
|
|
33
|
+
# * Array<Symbol> or nil: List of platform types allowed for this test, or nil for all
|
|
34
|
+
def self.only_on_platforms
|
|
35
|
+
NodeSsh.only_on_platform_types
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
end
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
module HybridPlatformsConductorTest
|
|
2
|
+
|
|
3
|
+
module TestPlugins
|
|
4
|
+
|
|
5
|
+
# Test plugin at platform level
|
|
6
|
+
class Platform < HybridPlatformsConductor::Test
|
|
7
|
+
|
|
8
|
+
class << self
|
|
9
|
+
|
|
10
|
+
# Sequences of platforms on which this test has been run
|
|
11
|
+
# Array< [ Symbol, String ] >
|
|
12
|
+
# Array< [ test_name, platform ] >
|
|
13
|
+
attr_accessor :runs
|
|
14
|
+
|
|
15
|
+
# List of platforms for which we fail
|
|
16
|
+
# Array<String>
|
|
17
|
+
attr_accessor :fail_for
|
|
18
|
+
|
|
19
|
+
# List of platform types that should only be concerned by this test
|
|
20
|
+
# Array<Symbol>
|
|
21
|
+
attr_accessor :only_on_platform_types
|
|
22
|
+
|
|
23
|
+
# Eventual sleep time per platform name, per test name
|
|
24
|
+
# Hash<Symbol, Hash<String, Integer> >
|
|
25
|
+
attr_accessor :sleeps
|
|
26
|
+
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
# Check my_test_plugin.rb.sample documentation for signature details.
|
|
30
|
+
def test_on_platform
|
|
31
|
+
platform_name = @platform.name
|
|
32
|
+
raise 'Failing test' if Platform.fail_for.include? platform_name
|
|
33
|
+
sleep_time = Platform.sleeps.dig(@name, platform_name)
|
|
34
|
+
sleep sleep_time unless sleep_time.nil?
|
|
35
|
+
Platform.runs << [@name, platform_name]
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
# Limit the list of platform types for these tests.
|
|
39
|
+
#
|
|
40
|
+
# Result::
|
|
41
|
+
# * Array<Symbol> or nil: List of platform types allowed for this test, or nil for all
|
|
42
|
+
def self.only_on_platforms
|
|
43
|
+
Platform.only_on_platform_types
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
end
|