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
data/spec/hybrid_platforms_conductor_test/api/tests_runner/test_plugins/bitbucket_conf_spec.rb
ADDED
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
describe HybridPlatformsConductor::TestsRunner do
|
|
2
|
+
|
|
3
|
+
context 'checking test plugins' do
|
|
4
|
+
|
|
5
|
+
context 'checking bitbucket_conf' do
|
|
6
|
+
|
|
7
|
+
it 'iterates over defined Bitbucket repos' do
|
|
8
|
+
with_repository do |repository|
|
|
9
|
+
platforms = <<~EOS
|
|
10
|
+
bitbucket_repos(
|
|
11
|
+
url: 'https://my_bb1.my_domain.com',
|
|
12
|
+
project: 'PR1',
|
|
13
|
+
repos: [
|
|
14
|
+
'repo1',
|
|
15
|
+
'repo2'
|
|
16
|
+
]
|
|
17
|
+
)
|
|
18
|
+
bitbucket_repos(
|
|
19
|
+
url: 'https://my_bb2.my_domain.com',
|
|
20
|
+
project: 'PR2',
|
|
21
|
+
repos: [
|
|
22
|
+
'repo3',
|
|
23
|
+
'repo4'
|
|
24
|
+
],
|
|
25
|
+
jenkins_ci_url: 'https://my_jenkins.com',
|
|
26
|
+
checks: {
|
|
27
|
+
branch_permissions: [
|
|
28
|
+
{
|
|
29
|
+
type: 'fast-forward-only',
|
|
30
|
+
branch: 'master',
|
|
31
|
+
exempted_users: ['toto']
|
|
32
|
+
}
|
|
33
|
+
]
|
|
34
|
+
}
|
|
35
|
+
)
|
|
36
|
+
EOS
|
|
37
|
+
with_platforms platforms do
|
|
38
|
+
repos = []
|
|
39
|
+
test_config.for_each_bitbucket_repo do |bitbucket, repo_info|
|
|
40
|
+
repos << {
|
|
41
|
+
bitbucket_url: bitbucket.bitbucket_url,
|
|
42
|
+
repo_info: repo_info
|
|
43
|
+
}
|
|
44
|
+
end
|
|
45
|
+
expect(repos).to eq [
|
|
46
|
+
{
|
|
47
|
+
bitbucket_url: 'https://my_bb1.my_domain.com',
|
|
48
|
+
repo_info: {
|
|
49
|
+
name: 'repo1',
|
|
50
|
+
project: 'PR1',
|
|
51
|
+
url: 'https://my_bb1.my_domain.com/scm/pr1/repo1.git',
|
|
52
|
+
jenkins_ci_url: nil,
|
|
53
|
+
checks: {}
|
|
54
|
+
}
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
bitbucket_url: 'https://my_bb1.my_domain.com',
|
|
58
|
+
repo_info: {
|
|
59
|
+
name: 'repo2',
|
|
60
|
+
project: 'PR1',
|
|
61
|
+
url: 'https://my_bb1.my_domain.com/scm/pr1/repo2.git',
|
|
62
|
+
jenkins_ci_url: nil,
|
|
63
|
+
checks: {}
|
|
64
|
+
}
|
|
65
|
+
},
|
|
66
|
+
{
|
|
67
|
+
bitbucket_url: 'https://my_bb2.my_domain.com',
|
|
68
|
+
repo_info: {
|
|
69
|
+
name: 'repo3',
|
|
70
|
+
project: 'PR2',
|
|
71
|
+
url: 'https://my_bb2.my_domain.com/scm/pr2/repo3.git',
|
|
72
|
+
jenkins_ci_url: 'https://my_jenkins.com/job/repo3',
|
|
73
|
+
checks: {
|
|
74
|
+
branch_permissions: [
|
|
75
|
+
{
|
|
76
|
+
type: 'fast-forward-only',
|
|
77
|
+
branch: 'master',
|
|
78
|
+
exempted_users: ['toto']
|
|
79
|
+
}
|
|
80
|
+
]
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
},
|
|
84
|
+
{
|
|
85
|
+
bitbucket_url: 'https://my_bb2.my_domain.com',
|
|
86
|
+
repo_info: {
|
|
87
|
+
name: 'repo4',
|
|
88
|
+
project: 'PR2',
|
|
89
|
+
url: 'https://my_bb2.my_domain.com/scm/pr2/repo4.git',
|
|
90
|
+
jenkins_ci_url: 'https://my_jenkins.com/job/repo4',
|
|
91
|
+
checks: {
|
|
92
|
+
branch_permissions: [
|
|
93
|
+
{
|
|
94
|
+
type: 'fast-forward-only',
|
|
95
|
+
branch: 'master',
|
|
96
|
+
exempted_users: ['toto']
|
|
97
|
+
}
|
|
98
|
+
]
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
]
|
|
103
|
+
end
|
|
104
|
+
end
|
|
105
|
+
end
|
|
106
|
+
|
|
107
|
+
end
|
|
108
|
+
|
|
109
|
+
end
|
|
110
|
+
|
|
111
|
+
end
|
data/spec/hybrid_platforms_conductor_test/api/tests_runner/test_reports_plugins/confluence_spec.rb
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
describe HybridPlatformsConductor::TestsRunner do
|
|
2
|
+
|
|
3
|
+
context 'checking test reports plugins' do
|
|
4
|
+
|
|
5
|
+
context 'checking confluence' do
|
|
6
|
+
|
|
7
|
+
it 'returns Confluence info' do
|
|
8
|
+
with_repository do |repository|
|
|
9
|
+
platforms = <<~EOS
|
|
10
|
+
confluence(
|
|
11
|
+
url: 'https://my_confluence.my_domain.com',
|
|
12
|
+
inventory_report_page_id: '123456'
|
|
13
|
+
)
|
|
14
|
+
EOS
|
|
15
|
+
with_platforms platforms do
|
|
16
|
+
expect(test_config.confluence_info).to eq(
|
|
17
|
+
url: 'https://my_confluence.my_domain.com',
|
|
18
|
+
inventory_report_page_id: '123456',
|
|
19
|
+
tests_report_page_id: nil
|
|
20
|
+
)
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
end
|
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
module HybridPlatformsConductorTest
|
|
2
|
+
|
|
3
|
+
module CmdbPlugins
|
|
4
|
+
|
|
5
|
+
# CMDB plugin that can be piloted by test cases to test how NodesHandler is using such plugins
|
|
6
|
+
class TestCmdb < HybridPlatformsConductor::Cmdb
|
|
7
|
+
|
|
8
|
+
# Return the calls made to this plugin
|
|
9
|
+
# Array< [String, Object, Object...] >
|
|
10
|
+
# Array< [method_name, arg1, arg2... ] >
|
|
11
|
+
attr_accessor :calls
|
|
12
|
+
|
|
13
|
+
# Return possible dependencies between properties.
|
|
14
|
+
# A property can need another property to be set before.
|
|
15
|
+
# For example an IP would need first to have the hostname to be known in order to be looked up.
|
|
16
|
+
# [API] - This method is optional
|
|
17
|
+
#
|
|
18
|
+
# Result::
|
|
19
|
+
# * Hash<Symbol, Symbol or Array<Symbol> >: The list of necessary properties (or single one) that should be set, per property name (:others can also be used here)
|
|
20
|
+
def property_dependencies
|
|
21
|
+
{
|
|
22
|
+
reversed_double: :double,
|
|
23
|
+
reversed_downcase: :downcase
|
|
24
|
+
}
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
# get_* methods are automatically detected as possible metadata properties this plugin can fill.
|
|
28
|
+
# The property name filled by such method is given by the method's name: get_my_property will fill the :my_property metadata.
|
|
29
|
+
# The method get_others is used specifically to return properties whose name is unknown before fetching them.
|
|
30
|
+
|
|
31
|
+
# Get a specific property for a given set of nodes.
|
|
32
|
+
# [API] - @nodes_handler can be used.
|
|
33
|
+
# [API] - @cmd_runner can be used.
|
|
34
|
+
#
|
|
35
|
+
# Parameters::
|
|
36
|
+
# * *nodes* (Array<String>): The nodes to lookup the property for.
|
|
37
|
+
# * *metadata* (Hash<String, Hash<Symbol,Object> >): Existing metadata for each node. Dependent properties should be present here.
|
|
38
|
+
# Result::
|
|
39
|
+
# * Hash<String, Object>: The corresponding property, per required node.
|
|
40
|
+
# Nodes for which the property can't be fetched can be ommitted.
|
|
41
|
+
def get_upcase(nodes, metadata)
|
|
42
|
+
record_call(:get_upcase, nodes, metadata)
|
|
43
|
+
Hash[nodes.map { |node| [node, node.upcase] }]
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
# Get a specific property for a given set of nodes.
|
|
47
|
+
# [API] - @nodes_handler can be used.
|
|
48
|
+
# [API] - @cmd_runner can be used.
|
|
49
|
+
#
|
|
50
|
+
# Parameters::
|
|
51
|
+
# * *nodes* (Array<String>): The nodes to lookup the property for.
|
|
52
|
+
# * *metadata* (Hash<String, Hash<Symbol,Object> >): Existing metadata for each node. Dependent properties should be present here.
|
|
53
|
+
# Result::
|
|
54
|
+
# * Hash<String, Object>: The corresponding property, per required node.
|
|
55
|
+
# Nodes for which the property can't be fetched can be ommitted.
|
|
56
|
+
def get_double(nodes, metadata)
|
|
57
|
+
record_call(:get_double, nodes, metadata)
|
|
58
|
+
Hash[nodes.map { |node| [node, node * 2] }]
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
# Get a specific property for a given set of nodes.
|
|
62
|
+
# [API] - @nodes_handler can be used.
|
|
63
|
+
# [API] - @cmd_runner can be used.
|
|
64
|
+
#
|
|
65
|
+
# Parameters::
|
|
66
|
+
# * *nodes* (Array<String>): The nodes to lookup the property for.
|
|
67
|
+
# * *metadata* (Hash<String, Hash<Symbol,Object> >): Existing metadata for each node. Dependent properties should be present here.
|
|
68
|
+
# Result::
|
|
69
|
+
# * Hash<String, Object>: The corresponding property, per required node.
|
|
70
|
+
# Nodes for which the property can't be fetched can be ommitted.
|
|
71
|
+
def get_reversed_double(nodes, metadata)
|
|
72
|
+
record_call(:get_reversed_double, nodes, metadata)
|
|
73
|
+
Hash[nodes.map { |node| [node, metadata[node][:double].reverse] }]
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
# Get a specific property for a given set of nodes.
|
|
77
|
+
# [API] - @nodes_handler can be used.
|
|
78
|
+
# [API] - @cmd_runner can be used.
|
|
79
|
+
#
|
|
80
|
+
# Parameters::
|
|
81
|
+
# * *nodes* (Array<String>): The nodes to lookup the property for.
|
|
82
|
+
# * *metadata* (Hash<String, Hash<Symbol,Object> >): Existing metadata for each node. Dependent properties should be present here.
|
|
83
|
+
# Result::
|
|
84
|
+
# * Hash<String, Object>: The corresponding property, per required node.
|
|
85
|
+
# Nodes for which the property can't be fetched can be ommitted.
|
|
86
|
+
def get_reversed_downcase(nodes, metadata)
|
|
87
|
+
record_call(:get_reversed_downcase, nodes, metadata)
|
|
88
|
+
Hash[nodes.map { |node| [node, metadata[node][:downcase] ? metadata[node][:downcase].reverse : 'UNKNOWN'] }]
|
|
89
|
+
end
|
|
90
|
+
|
|
91
|
+
# Get a specific property for a given set of nodes.
|
|
92
|
+
# [API] - @nodes_handler can be used.
|
|
93
|
+
# [API] - @cmd_runner can be used.
|
|
94
|
+
#
|
|
95
|
+
# Parameters::
|
|
96
|
+
# * *nodes* (Array<String>): The nodes to lookup the property for.
|
|
97
|
+
# * *metadata* (Hash<String, Hash<Symbol,Object> >): Existing metadata for each node. Dependent properties should be present here.
|
|
98
|
+
# Result::
|
|
99
|
+
# * Hash<String, Object>: The corresponding property, per required node.
|
|
100
|
+
# Nodes for which the property can't be fetched can be ommitted.
|
|
101
|
+
def get_nothing(nodes, metadata)
|
|
102
|
+
record_call(:get_nothing, nodes, metadata)
|
|
103
|
+
{}
|
|
104
|
+
end
|
|
105
|
+
|
|
106
|
+
# Get a specific property for a given set of nodes.
|
|
107
|
+
# [API] - @nodes_handler can be used.
|
|
108
|
+
# [API] - @cmd_runner can be used.
|
|
109
|
+
#
|
|
110
|
+
# Parameters::
|
|
111
|
+
# * *nodes* (Array<String>): The nodes to lookup the property for.
|
|
112
|
+
# * *metadata* (Hash<String, Hash<Symbol,Object> >): Existing metadata for each node. Dependent properties should be present here.
|
|
113
|
+
# Result::
|
|
114
|
+
# * Hash<String, Object>: The corresponding property, per required node.
|
|
115
|
+
# Nodes for which the property can't be fetched can be ommitted.
|
|
116
|
+
def get_same_comment(nodes, metadata)
|
|
117
|
+
record_call(:get_same_comment, nodes, metadata)
|
|
118
|
+
Hash[nodes.map { |node| [node, "Comment for #{node}"] }]
|
|
119
|
+
end
|
|
120
|
+
|
|
121
|
+
# Get a specific property for a given set of nodes.
|
|
122
|
+
# [API] - @nodes_handler can be used.
|
|
123
|
+
# [API] - @cmd_runner can be used.
|
|
124
|
+
#
|
|
125
|
+
# Parameters::
|
|
126
|
+
# * *nodes* (Array<String>): The nodes to lookup the property for.
|
|
127
|
+
# * *metadata* (Hash<String, Hash<Symbol,Object> >): Existing metadata for each node. Dependent properties should be present here.
|
|
128
|
+
# Result::
|
|
129
|
+
# * Hash<String, Object>: The corresponding property, per required node.
|
|
130
|
+
# Nodes for which the property can't be fetched can be ommitted.
|
|
131
|
+
def get_different_comment(nodes, metadata)
|
|
132
|
+
record_call(:get_different_comment, nodes, metadata)
|
|
133
|
+
Hash[nodes.map { |node| [node, 'Comment from test_cmdb'] }]
|
|
134
|
+
end
|
|
135
|
+
|
|
136
|
+
# Get a specific property for a given set of nodes.
|
|
137
|
+
# [API] - @nodes_handler can be used.
|
|
138
|
+
# [API] - @cmd_runner can be used.
|
|
139
|
+
#
|
|
140
|
+
# Parameters::
|
|
141
|
+
# * *nodes* (Array<String>): The nodes to lookup the property for.
|
|
142
|
+
# * *metadata* (Hash<String, Hash<Symbol,Object> >): Existing metadata for each node. Dependent properties should be present here.
|
|
143
|
+
# Result::
|
|
144
|
+
# * Hash<String, Object>: The corresponding property, per required node.
|
|
145
|
+
# Nodes for which the property can't be fetched can be ommitted.
|
|
146
|
+
def get_different_comment2(nodes, metadata)
|
|
147
|
+
record_call(:get_different_comment2, nodes, metadata)
|
|
148
|
+
Hash[nodes.map { |node| [node, 'Comment2 from test_cmdb'] }]
|
|
149
|
+
end
|
|
150
|
+
|
|
151
|
+
# Register a call to be checked by the tests later
|
|
152
|
+
#
|
|
153
|
+
# Parameters::
|
|
154
|
+
# * *method* (Symbol): Method being called
|
|
155
|
+
# * *args* (Array<Object>): Arguments given to the call
|
|
156
|
+
def record_call(method, *args)
|
|
157
|
+
@calls = [] unless defined?(@calls)
|
|
158
|
+
# Create a shallow copy of the args, just to make sure they won't get changed by later code
|
|
159
|
+
@calls << [method] + Marshal.load(Marshal.dump(args))
|
|
160
|
+
end
|
|
161
|
+
|
|
162
|
+
end
|
|
163
|
+
|
|
164
|
+
end
|
|
165
|
+
|
|
166
|
+
end
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
module HybridPlatformsConductorTest
|
|
2
|
+
|
|
3
|
+
module CmdbPlugins
|
|
4
|
+
|
|
5
|
+
# CMDB plugin that can be piloted by test cases to test how NodesHandler is using such plugins
|
|
6
|
+
class TestCmdb2 < HybridPlatformsConductor::Cmdb
|
|
7
|
+
|
|
8
|
+
# Return the calls made to this plugin
|
|
9
|
+
# Array< [String, Object, Object...] >
|
|
10
|
+
# Array< [method_name, arg1, arg2... ] >
|
|
11
|
+
attr_accessor :calls
|
|
12
|
+
|
|
13
|
+
# get_* methods are automatically detected as possible metadata properties this plugin can fill.
|
|
14
|
+
# The property name filled by such method is given by the method's name: get_my_property will fill the :my_property metadata.
|
|
15
|
+
# The method get_others is used specifically to return properties whose name is unknown before fetching them.
|
|
16
|
+
|
|
17
|
+
# Get a specific property for a given set of nodes.
|
|
18
|
+
# [API] - @nodes_handler can be used.
|
|
19
|
+
# [API] - @cmd_runner can be used.
|
|
20
|
+
#
|
|
21
|
+
# Parameters::
|
|
22
|
+
# * *nodes* (Array<String>): The nodes to lookup the property for.
|
|
23
|
+
# * *metadata* (Hash<String, Hash<Symbol,Object> >): Existing metadata for each node. Dependent properties should be present here.
|
|
24
|
+
# Result::
|
|
25
|
+
# * Hash<String, Object>: The corresponding property, per required node.
|
|
26
|
+
# Nodes for which the property can't be fetched can be ommitted.
|
|
27
|
+
def get_nothing(nodes, metadata)
|
|
28
|
+
record_call(:get_nothing, nodes, metadata)
|
|
29
|
+
# Here we return something to test that if the first one fails we have the second CMDB
|
|
30
|
+
Hash[nodes.map { |node| [node, "#{node} has nothing"] }]
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
# Get a specific property for a given set of nodes.
|
|
34
|
+
# [API] - @nodes_handler can be used.
|
|
35
|
+
# [API] - @cmd_runner can be used.
|
|
36
|
+
#
|
|
37
|
+
# Parameters::
|
|
38
|
+
# * *nodes* (Array<String>): The nodes to lookup the property for.
|
|
39
|
+
# * *metadata* (Hash<String, Hash<Symbol,Object> >): Existing metadata for each node. Dependent properties should be present here.
|
|
40
|
+
# Result::
|
|
41
|
+
# * Hash<String, Object>: The corresponding property, per required node.
|
|
42
|
+
# Nodes for which the property can't be fetched can be ommitted.
|
|
43
|
+
def get_same_comment(nodes, metadata)
|
|
44
|
+
record_call(:get_same_comment, nodes, metadata)
|
|
45
|
+
Hash[nodes.map { |node| [node, "Comment for #{node}"] }]
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
# Get a specific property for a given set of nodes.
|
|
49
|
+
# [API] - @nodes_handler can be used.
|
|
50
|
+
# [API] - @cmd_runner can be used.
|
|
51
|
+
#
|
|
52
|
+
# Parameters::
|
|
53
|
+
# * *nodes* (Array<String>): The nodes to lookup the property for.
|
|
54
|
+
# * *metadata* (Hash<String, Hash<Symbol,Object> >): Existing metadata for each node. Dependent properties should be present here.
|
|
55
|
+
# Result::
|
|
56
|
+
# * Hash<String, Object>: The corresponding property, per required node.
|
|
57
|
+
# Nodes for which the property can't be fetched can be ommitted.
|
|
58
|
+
def get_different_comment(nodes, metadata)
|
|
59
|
+
record_call(:get_different_comment, nodes, metadata)
|
|
60
|
+
Hash[nodes.map { |node| [node, 'Comment from test_cmdb2'] }]
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
# Get a specific property for a given set of nodes.
|
|
64
|
+
# [API] - @nodes_handler can be used.
|
|
65
|
+
# [API] - @cmd_runner can be used.
|
|
66
|
+
#
|
|
67
|
+
# Parameters::
|
|
68
|
+
# * *nodes* (Array<String>): The nodes to lookup the property for.
|
|
69
|
+
# * *metadata* (Hash<String, Hash<Symbol,Object> >): Existing metadata for each node. Dependent properties should be present here.
|
|
70
|
+
# Result::
|
|
71
|
+
# * Hash<String, Object>: The corresponding property, per required node.
|
|
72
|
+
# Nodes for which the property can't be fetched can be ommitted.
|
|
73
|
+
def get_different_comment2(nodes, metadata)
|
|
74
|
+
record_call(:get_different_comment2, nodes, metadata)
|
|
75
|
+
Hash[nodes.map { |node| [node, 'Comment2 from test_cmdb2'] }]
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
# Register a call to be checked by the tests later
|
|
79
|
+
#
|
|
80
|
+
# Parameters::
|
|
81
|
+
# * *method* (Symbol): Method being called
|
|
82
|
+
# * *args* (Array<Object>): Arguments given to the call
|
|
83
|
+
def record_call(method, *args)
|
|
84
|
+
@calls = [] unless defined?(@calls)
|
|
85
|
+
# Create a shallow copy of the args, just to make sure they won't get changed by later code
|
|
86
|
+
@calls << [method] + Marshal.load(Marshal.dump(args))
|
|
87
|
+
end
|
|
88
|
+
|
|
89
|
+
end
|
|
90
|
+
|
|
91
|
+
end
|
|
92
|
+
|
|
93
|
+
end
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
module HybridPlatformsConductorTest
|
|
2
|
+
|
|
3
|
+
module CmdbPlugins
|
|
4
|
+
|
|
5
|
+
# CMDB plugin that can be piloted by test cases to test how NodesHandler is using such plugins
|
|
6
|
+
class TestCmdbOthers < HybridPlatformsConductor::Cmdb
|
|
7
|
+
|
|
8
|
+
# Return the calls made to this plugin
|
|
9
|
+
# Array< [String, Object, Object...] >
|
|
10
|
+
# Array< [method_name, arg1, arg2... ] >
|
|
11
|
+
attr_accessor :calls
|
|
12
|
+
|
|
13
|
+
# get_* methods are automatically detected as possible metadata properties this plugin can fill.
|
|
14
|
+
# The property name filled by such method is given by the method's name: get_my_property will fill the :my_property metadata.
|
|
15
|
+
# The method get_others is used specifically to return properties whose name is unknown before fetching them.
|
|
16
|
+
|
|
17
|
+
# Get other properties for a given set of nodes.
|
|
18
|
+
# It's better to not use this method and prefer using methods naming the property being returned.
|
|
19
|
+
# As the nodes_handler can't know in advance which properties will be returned, it will call it every time there is a missing property.
|
|
20
|
+
# If this method always returns the same values, it would be clever to cache it here.
|
|
21
|
+
# [API] - This method is optional.
|
|
22
|
+
# [API] - @nodes_handler can be used.
|
|
23
|
+
# [API] - @cmd_runner can be used.
|
|
24
|
+
#
|
|
25
|
+
# Parameters::
|
|
26
|
+
# * *nodes* (Array<String>): The nodes to lookup the property for.
|
|
27
|
+
# * *metadata* (Hash<String, Hash<Symbol,Object> >): Existing metadata for each node. Dependent properties should be present here.
|
|
28
|
+
# Result::
|
|
29
|
+
# * Hash<String, Hash<Symbol,Object> >: The corresponding properties, per required node.
|
|
30
|
+
# Nodes for which the property can't be fetched can be ommitted.
|
|
31
|
+
def get_others(nodes, metadata)
|
|
32
|
+
record_call(:get_others, nodes, metadata)
|
|
33
|
+
Hash[nodes.map do |node|
|
|
34
|
+
[
|
|
35
|
+
node,
|
|
36
|
+
{
|
|
37
|
+
downcase: "_#{node}_",
|
|
38
|
+
last_3: node[-3..-1],
|
|
39
|
+
nothing: "#{node} has another nothing"
|
|
40
|
+
}
|
|
41
|
+
]
|
|
42
|
+
end]
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
# Register a call to be checked by the tests later
|
|
46
|
+
#
|
|
47
|
+
# Parameters::
|
|
48
|
+
# * *method* (Symbol): Method being called
|
|
49
|
+
# * *args* (Array<Object>): Arguments given to the call
|
|
50
|
+
def record_call(method, *args)
|
|
51
|
+
@calls = [] unless defined?(@calls)
|
|
52
|
+
# Create a shallow copy of the args, just to make sure they won't get changed by later code
|
|
53
|
+
@calls << [method] + Marshal.load(Marshal.dump(args))
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
end
|