hybrid_platforms_conductor 33.9.2 → 33.9.4
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 +15 -0
- data/bin/last_deploys +3 -4
- 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/free_veids.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/setup.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/lib/hybrid_platforms_conductor/actions_executor.rb +2 -2
- data/lib/hybrid_platforms_conductor/common_config_dsl/file_system_tests.rb +2 -2
- data/lib/hybrid_platforms_conductor/config.rb +1 -0
- data/lib/hybrid_platforms_conductor/deployer.rb +12 -12
- data/lib/hybrid_platforms_conductor/executable.rb +1 -1
- data/lib/hybrid_platforms_conductor/hpc_plugins/cmdb/host_ip.rb +21 -7
- data/lib/hybrid_platforms_conductor/hpc_plugins/cmdb/platform_handlers.rb +2 -2
- data/lib/hybrid_platforms_conductor/hpc_plugins/connector/ssh.rb +1 -1
- data/lib/hybrid_platforms_conductor/hpc_plugins/platform_handler/serverless_chef.rb +1 -2
- data/lib/hybrid_platforms_conductor/hpc_plugins/provisioner/proxmox/proxmox_waiter.rb +6 -6
- data/lib/hybrid_platforms_conductor/hpc_plugins/provisioner/proxmox.rb +2 -2
- data/lib/hybrid_platforms_conductor/hpc_plugins/report/mediawiki.rb +1 -1
- data/lib/hybrid_platforms_conductor/hpc_plugins/secrets_reader/keepass.rb +6 -6
- data/lib/hybrid_platforms_conductor/hpc_plugins/test/file_system.rb +2 -2
- data/lib/hybrid_platforms_conductor/hpc_plugins/test/file_system_hdfs.rb +2 -2
- data/lib/hybrid_platforms_conductor/hpc_plugins/test/ip.rb +1 -1
- data/lib/hybrid_platforms_conductor/hpc_plugins/test/linear_strategy.rb +1 -1
- data/lib/hybrid_platforms_conductor/hpc_plugins/test/private_ips.rb +1 -2
- data/lib/hybrid_platforms_conductor/hpc_plugins/test/public_ips.rb +1 -2
- data/lib/hybrid_platforms_conductor/hpc_plugins/test/veids.rb +1 -2
- data/lib/hybrid_platforms_conductor/hpc_plugins/test/vulnerabilities.rb +2 -2
- data/lib/hybrid_platforms_conductor/plugins.rb +4 -3
- data/lib/hybrid_platforms_conductor/tests_runner.rb +2 -2
- data/lib/hybrid_platforms_conductor/topographer.rb +5 -6
- data/lib/hybrid_platforms_conductor/version.rb +1 -1
- data/spec/hybrid_platforms_conductor_test/api/actions_executor/actions/bash_spec.rb +1 -1
- data/spec/hybrid_platforms_conductor_test/api/actions_executor/actions/ruby_spec.rb +8 -8
- data/spec/hybrid_platforms_conductor_test/api/actions_executor/connectors/ssh/cli_options_spec.rb +3 -3
- data/spec/hybrid_platforms_conductor_test/api/actions_executor/connectors/ssh/connections_spec.rb +8 -8
- data/spec/hybrid_platforms_conductor_test/api/actions_executor/connectors/ssh/global_helpers_spec.rb +1 -1
- data/spec/hybrid_platforms_conductor_test/api/actions_executor/helpers_spec.rb +4 -4
- data/spec/hybrid_platforms_conductor_test/api/actions_executor/timeout_spec.rb +1 -1
- data/spec/hybrid_platforms_conductor_test/api/cmd_runner_spec.rb +4 -4
- data/spec/hybrid_platforms_conductor_test/api/deployer/log_plugins/remote_fs_spec.rb +12 -12
- data/spec/hybrid_platforms_conductor_test/api/deployer/provisioner_spec.rb +8 -8
- data/spec/hybrid_platforms_conductor_test/api/deployer/provisioners/docker_spec.rb +1 -1
- data/spec/hybrid_platforms_conductor_test/api/deployer/provisioners/proxmox/reserve_proxmox_container/expired_containers_spec.rb +27 -27
- data/spec/hybrid_platforms_conductor_test/api/deployer/provisioners/proxmox/reserve_proxmox_container/retries_spec.rb +1 -1
- data/spec/hybrid_platforms_conductor_test/api/nodes_handler/cmdbs/host_ip_spec.rb +25 -0
- data/spec/hybrid_platforms_conductor_test/api/nodes_handler/cmdbs_plugins_api_spec.rb +5 -5
- data/spec/hybrid_platforms_conductor_test/api/platform_handlers/serverless_chef/inventory_spec.rb +1 -1
- data/spec/hybrid_platforms_conductor_test/api/platform_handlers/serverless_chef/packaging_spec.rb +9 -9
- data/spec/hybrid_platforms_conductor_test/api/platform_handlers/serverless_chef/services_deployment_spec.rb +1 -1
- data/spec/hybrid_platforms_conductor_test/api/platforms_handler_spec.rb +1 -1
- data/spec/hybrid_platforms_conductor_test/api/plugins_spec.rb +30 -2
- data/spec/hybrid_platforms_conductor_test/api/services_handler/deploy_allowed_spec.rb +7 -7
- data/spec/hybrid_platforms_conductor_test/api/services_handler/package_spec.rb +18 -18
- data/spec/hybrid_platforms_conductor_test/api/services_handler/prepare_for_deploy_spec.rb +30 -30
- data/spec/hybrid_platforms_conductor_test/api/tests_runner/common_spec.rb +5 -5
- data/spec/hybrid_platforms_conductor_test/api/tests_runner/node_check_spec.rb +6 -6
- data/spec/hybrid_platforms_conductor_test/api/tests_runner/node_ssh_spec.rb +6 -6
- data/spec/hybrid_platforms_conductor_test/api/tests_runner/reports_spec.rb +4 -4
- data/spec/hybrid_platforms_conductor_test/cmdb_plugins/test_cmdb.rb +8 -8
- data/spec/hybrid_platforms_conductor_test/cmdb_plugins/test_cmdb_2.rb +5 -5
- data/spec/hybrid_platforms_conductor_test/cmdb_plugins/test_cmdb_others.rb +3 -3
- data/spec/hybrid_platforms_conductor_test/cmdb_plugins/test_cmdb_others_2.rb +3 -3
- data/spec/hybrid_platforms_conductor_test/docs_spec.rb +1 -1
- data/spec/hybrid_platforms_conductor_test/executables/check_node_spec.rb +1 -1
- data/spec/hybrid_platforms_conductor_test/executables/deploy_spec.rb +1 -1
- data/spec/hybrid_platforms_conductor_test/executables/options/cmd_runner_spec.rb +1 -1
- data/spec/hybrid_platforms_conductor_test/executables/options/deployer_spec.rb +2 -2
- data/spec/hybrid_platforms_conductor_test/executables/options/nodes_handler_spec.rb +1 -0
- data/spec/hybrid_platforms_conductor_test/executables/options/tests_runner_spec.rb +1 -1
- data/spec/hybrid_platforms_conductor_test/executables/report_spec.rb +1 -0
- data/spec/hybrid_platforms_conductor_test/executables/run_spec.rb +2 -2
- data/spec/hybrid_platforms_conductor_test/helpers/actions_executor_helpers.rb +1 -1
- data/spec/hybrid_platforms_conductor_test/helpers/cmdb_helpers.rb +2 -2
- data/spec/hybrid_platforms_conductor_test/helpers/connector_ssh_helpers.rb +1 -1
- data/spec/hybrid_platforms_conductor_test/helpers/deployer_helpers.rb +7 -7
- data/spec/hybrid_platforms_conductor_test/helpers/platforms_handler_helpers.rb +3 -3
- data/spec/hybrid_platforms_conductor_test/helpers/provisioner_proxmox_helpers.rb +11 -12
- data/spec/hybrid_platforms_conductor_test/helpers/serverless_chef_helpers.rb +2 -2
- data/spec/hybrid_platforms_conductor_test/mocked_lib/my_test_gem_with_lib/sub1/lib/sub2/hpc_plugins/test_plugin_type_3/test_plugin_id_5.rb +34 -0
- data/spec/hybrid_platforms_conductor_test/shared_examples/deployer.rb +1 -1
- data/spec/hybrid_platforms_conductor_test/test_connector.rb +1 -1
- data/spec/hybrid_platforms_conductor_test.rb +1 -0
- metadata +152 -136
|
@@ -140,7 +140,7 @@ describe HybridPlatformsConductor::TestsRunner do
|
|
|
140
140
|
register_test_plugins(test_tests_runner, several_tests: HybridPlatformsConductorTest::TestPlugins::SeveralChecks)
|
|
141
141
|
# Mock the Actions Executor and Deployer expected calls
|
|
142
142
|
expect(test_deployer).to receive(:deploy_on).with(%w[node11 node12 node21 node22]).once do
|
|
143
|
-
expect(test_deployer.use_why_run).to
|
|
143
|
+
expect(test_deployer.use_why_run).to be true
|
|
144
144
|
{
|
|
145
145
|
'node11' => [0, 'node11 check ok', 'node11 stderr'],
|
|
146
146
|
'node12' => [0, 'node12 check ok', 'node12 stderr'],
|
|
@@ -153,7 +153,7 @@ describe HybridPlatformsConductor::TestsRunner do
|
|
|
153
153
|
expect(actions.size).to eq node_suffixes.size
|
|
154
154
|
node_suffixes.each do |node_suffix|
|
|
155
155
|
node = "node#{node_suffix}"
|
|
156
|
-
expect(actions.key?(node)).to
|
|
156
|
+
expect(actions.key?(node)).to be true
|
|
157
157
|
expect(actions[node].size).to eq 1
|
|
158
158
|
expect(actions[node][:remote_bash]).to eq [
|
|
159
159
|
'echo \'===== TEST COMMAND EXECUTION ===== Separator generated by Hybrid Platforms Conductor test framework =====\'',
|
|
@@ -162,7 +162,7 @@ describe HybridPlatformsConductor::TestsRunner do
|
|
|
162
162
|
'echo "$?"'
|
|
163
163
|
]
|
|
164
164
|
end
|
|
165
|
-
node_suffixes.
|
|
165
|
+
node_suffixes.to_h do |node_suffix|
|
|
166
166
|
[
|
|
167
167
|
"node#{node_suffix}",
|
|
168
168
|
[
|
|
@@ -178,7 +178,7 @@ describe HybridPlatformsConductor::TestsRunner do
|
|
|
178
178
|
EO_STDERR
|
|
179
179
|
]
|
|
180
180
|
]
|
|
181
|
-
end
|
|
181
|
+
end
|
|
182
182
|
end])
|
|
183
183
|
# Run everything
|
|
184
184
|
test_tests_runner.tests = [:several_tests]
|
|
@@ -207,7 +207,7 @@ describe HybridPlatformsConductor::TestsRunner do
|
|
|
207
207
|
with_test_platform({ tests: { specific_platform_handler_test: SpecificPlatformHandlerTest } }) do
|
|
208
208
|
test_tests_runner.tests = [:specific_platform_handler_test]
|
|
209
209
|
expect(test_tests_runner.run_tests([])).to eq 0
|
|
210
|
-
expect(SpecificPlatformHandlerTest.run).to
|
|
210
|
+
expect(SpecificPlatformHandlerTest.run).to be true
|
|
211
211
|
end
|
|
212
212
|
end
|
|
213
213
|
|
|
@@ -26,7 +26,7 @@ describe HybridPlatformsConductor::TestsRunner do
|
|
|
26
26
|
with_test_platform_for_node_check_tests do
|
|
27
27
|
test_tests_runner.tests = [:node_check_test]
|
|
28
28
|
expect(test_deployer).to receive(:deploy_on).with(%w[node11 node12 node21 node22]).once do
|
|
29
|
-
expect(test_deployer.use_why_run).to
|
|
29
|
+
expect(test_deployer.use_why_run).to be true
|
|
30
30
|
{
|
|
31
31
|
'node11' => [0, 'node11 check ok', 'node11 stderr'],
|
|
32
32
|
'node12' => [0, 'node12 check ok', 'node12 stderr'],
|
|
@@ -48,7 +48,7 @@ describe HybridPlatformsConductor::TestsRunner do
|
|
|
48
48
|
with_test_platform_for_node_check_tests do
|
|
49
49
|
test_tests_runner.tests = [:node_check_test]
|
|
50
50
|
expect(test_deployer).to receive(:deploy_on).with(%w[node12 node22]).once do
|
|
51
|
-
expect(test_deployer.use_why_run).to
|
|
51
|
+
expect(test_deployer.use_why_run).to be true
|
|
52
52
|
{
|
|
53
53
|
'node12' => [0, 'node12 check ok', 'node12 stderr'],
|
|
54
54
|
'node22' => [0, 'node22 check ok', 'node22 stderr']
|
|
@@ -66,7 +66,7 @@ describe HybridPlatformsConductor::TestsRunner do
|
|
|
66
66
|
with_test_platform_for_node_check_tests do
|
|
67
67
|
test_tests_runner.tests = %i[node_check_test node_check_test_2]
|
|
68
68
|
expect(test_deployer).to receive(:deploy_on).with(%w[node11 node12 node21 node22]).once do
|
|
69
|
-
expect(test_deployer.use_why_run).to
|
|
69
|
+
expect(test_deployer.use_why_run).to be true
|
|
70
70
|
{
|
|
71
71
|
'node11' => [0, 'node11 check ok', 'node11 stderr'],
|
|
72
72
|
'node12' => [0, 'node12 check ok', 'node12 stderr'],
|
|
@@ -92,7 +92,7 @@ describe HybridPlatformsConductor::TestsRunner do
|
|
|
92
92
|
with_test_platform_for_node_check_tests do
|
|
93
93
|
test_tests_runner.tests = [:node_check_test]
|
|
94
94
|
expect(test_deployer).to receive(:deploy_on).with(%w[node11 node12 node21 node22]).once do
|
|
95
|
-
expect(test_deployer.use_why_run).to
|
|
95
|
+
expect(test_deployer.use_why_run).to be true
|
|
96
96
|
{
|
|
97
97
|
'node11' => [0, 'node11 check ok', 'node11 stderr'],
|
|
98
98
|
'node12' => [1, 'node12 check ok', 'node12 stderr'],
|
|
@@ -114,7 +114,7 @@ describe HybridPlatformsConductor::TestsRunner do
|
|
|
114
114
|
with_test_platform_for_node_check_tests do
|
|
115
115
|
test_tests_runner.tests = [:node_check_test]
|
|
116
116
|
expect(test_deployer).to receive(:deploy_on).with(%w[node11 node12 node21 node22]).once do
|
|
117
|
-
expect(test_deployer.use_why_run).to
|
|
117
|
+
expect(test_deployer.use_why_run).to be true
|
|
118
118
|
{
|
|
119
119
|
'node11' => [0, 'node11 check ok', 'node11 stderr'],
|
|
120
120
|
'node12' => [1, 'node12 check ok', 'node12 stderr'],
|
|
@@ -178,7 +178,7 @@ describe HybridPlatformsConductor::TestsRunner do
|
|
|
178
178
|
HybridPlatformsConductorTest::TestPlugins::NodeCheck.only_on_nodes = %w[node12 node22]
|
|
179
179
|
test_tests_runner.tests = [:node_check_test]
|
|
180
180
|
expect(test_deployer).to receive(:deploy_on).with(%w[node12 node22]).once do
|
|
181
|
-
expect(test_deployer.use_why_run).to
|
|
181
|
+
expect(test_deployer.use_why_run).to be true
|
|
182
182
|
{
|
|
183
183
|
'node12' => [0, 'node12 check ok', 'node12 stderr'],
|
|
184
184
|
'node22' => [0, 'node22 check ok', 'node22 stderr']
|
|
@@ -34,7 +34,7 @@ describe HybridPlatformsConductor::TestsRunner do
|
|
|
34
34
|
expect(actions.size).to eq node_suffixes.size
|
|
35
35
|
node_suffixes.each do |node_suffix|
|
|
36
36
|
node = "node#{node_suffix}"
|
|
37
|
-
expect(actions.key?(node)).to
|
|
37
|
+
expect(actions.key?(node)).to be true
|
|
38
38
|
expect(actions[node].size).to eq 1
|
|
39
39
|
expect(actions[node][:remote_bash]).to eq [
|
|
40
40
|
'echo \'===== TEST COMMAND EXECUTION ===== Separator generated by Hybrid Platforms Conductor test framework =====\'',
|
|
@@ -43,7 +43,7 @@ describe HybridPlatformsConductor::TestsRunner do
|
|
|
43
43
|
'echo "$?"'
|
|
44
44
|
]
|
|
45
45
|
end
|
|
46
|
-
node_suffixes.
|
|
46
|
+
node_suffixes.to_h do |node_suffix|
|
|
47
47
|
[
|
|
48
48
|
"node#{node_suffix}",
|
|
49
49
|
[
|
|
@@ -59,7 +59,7 @@ describe HybridPlatformsConductor::TestsRunner do
|
|
|
59
59
|
EO_STDERR
|
|
60
60
|
]
|
|
61
61
|
]
|
|
62
|
-
end
|
|
62
|
+
end
|
|
63
63
|
end
|
|
64
64
|
|
|
65
65
|
it 'executes SSH node tests once per node with the correct command' do
|
|
@@ -120,7 +120,7 @@ describe HybridPlatformsConductor::TestsRunner do
|
|
|
120
120
|
expect(actions.size).to eq node_suffixes.size
|
|
121
121
|
node_suffixes.each do |node_suffix|
|
|
122
122
|
node = "node#{node_suffix}"
|
|
123
|
-
expect(actions.key?(node)).to
|
|
123
|
+
expect(actions.key?(node)).to be true
|
|
124
124
|
expect(actions[node].size).to eq 1
|
|
125
125
|
expect(actions[node][:remote_bash]).to eq [
|
|
126
126
|
'echo \'===== TEST COMMAND EXECUTION ===== Separator generated by Hybrid Platforms Conductor test framework =====\'',
|
|
@@ -133,7 +133,7 @@ describe HybridPlatformsConductor::TestsRunner do
|
|
|
133
133
|
'echo "$?"'
|
|
134
134
|
]
|
|
135
135
|
end
|
|
136
|
-
node_suffixes.
|
|
136
|
+
node_suffixes.to_h do |node_suffix|
|
|
137
137
|
[
|
|
138
138
|
"node#{node_suffix}",
|
|
139
139
|
[
|
|
@@ -154,7 +154,7 @@ describe HybridPlatformsConductor::TestsRunner do
|
|
|
154
154
|
EO_STDERR
|
|
155
155
|
]
|
|
156
156
|
]
|
|
157
|
-
end
|
|
157
|
+
end
|
|
158
158
|
end])
|
|
159
159
|
test_tests_runner.tests = %i[node_ssh_test node_ssh_test_2]
|
|
160
160
|
ssh_executions = []
|
|
@@ -208,7 +208,7 @@ describe HybridPlatformsConductor::TestsRunner do
|
|
|
208
208
|
with_test_platforms_for_reports_test do
|
|
209
209
|
# Mock the Actions Executor and Deployer expected calls
|
|
210
210
|
expect(test_deployer).to receive(:deploy_on).with(%w[node11 node12 node21 node22]).once do
|
|
211
|
-
expect(test_deployer.use_why_run).to
|
|
211
|
+
expect(test_deployer.use_why_run).to be true
|
|
212
212
|
{
|
|
213
213
|
'node11' => [0, 'node11 check ok', 'node11 stderr'],
|
|
214
214
|
'node12' => [0, 'node12 check ok', 'node12 stderr'],
|
|
@@ -221,7 +221,7 @@ describe HybridPlatformsConductor::TestsRunner do
|
|
|
221
221
|
expect(actions.size).to eq node_suffixes.size
|
|
222
222
|
node_suffixes.each do |node_suffix|
|
|
223
223
|
node = "node#{node_suffix}"
|
|
224
|
-
expect(actions.key?(node)).to
|
|
224
|
+
expect(actions.key?(node)).to be true
|
|
225
225
|
expect(actions[node].size).to eq 1
|
|
226
226
|
expect(actions[node][:remote_bash]).to eq [
|
|
227
227
|
'echo \'===== TEST COMMAND EXECUTION ===== Separator generated by Hybrid Platforms Conductor test framework =====\'',
|
|
@@ -230,7 +230,7 @@ describe HybridPlatformsConductor::TestsRunner do
|
|
|
230
230
|
'echo "$?"'
|
|
231
231
|
]
|
|
232
232
|
end
|
|
233
|
-
node_suffixes.
|
|
233
|
+
node_suffixes.to_h do |node_suffix|
|
|
234
234
|
[
|
|
235
235
|
"node#{node_suffix}",
|
|
236
236
|
[
|
|
@@ -246,7 +246,7 @@ describe HybridPlatformsConductor::TestsRunner do
|
|
|
246
246
|
EO_STDERR
|
|
247
247
|
]
|
|
248
248
|
]
|
|
249
|
-
end
|
|
249
|
+
end
|
|
250
250
|
end])
|
|
251
251
|
# Run everything
|
|
252
252
|
test_tests_runner.tests = [:several_tests]
|
|
@@ -40,7 +40,7 @@ module HybridPlatformsConductorTest
|
|
|
40
40
|
# Nodes for which the property can't be fetched can be ommitted.
|
|
41
41
|
def get_upcase(nodes, metadata)
|
|
42
42
|
record_call(:get_upcase, nodes, metadata)
|
|
43
|
-
nodes.
|
|
43
|
+
nodes.to_h { |node| [node, node.upcase] }
|
|
44
44
|
end
|
|
45
45
|
|
|
46
46
|
# Get a specific property for a given set of nodes.
|
|
@@ -55,7 +55,7 @@ module HybridPlatformsConductorTest
|
|
|
55
55
|
# Nodes for which the property can't be fetched can be ommitted.
|
|
56
56
|
def get_double(nodes, metadata)
|
|
57
57
|
record_call(:get_double, nodes, metadata)
|
|
58
|
-
nodes.
|
|
58
|
+
nodes.to_h { |node| [node, node * 2] }
|
|
59
59
|
end
|
|
60
60
|
|
|
61
61
|
# Get a specific property for a given set of nodes.
|
|
@@ -70,7 +70,7 @@ module HybridPlatformsConductorTest
|
|
|
70
70
|
# Nodes for which the property can't be fetched can be ommitted.
|
|
71
71
|
def get_reversed_double(nodes, metadata)
|
|
72
72
|
record_call(:get_reversed_double, nodes, metadata)
|
|
73
|
-
nodes.
|
|
73
|
+
nodes.to_h { |node| [node, metadata[node][:double].reverse] }
|
|
74
74
|
end
|
|
75
75
|
|
|
76
76
|
# Get a specific property for a given set of nodes.
|
|
@@ -85,7 +85,7 @@ module HybridPlatformsConductorTest
|
|
|
85
85
|
# Nodes for which the property can't be fetched can be ommitted.
|
|
86
86
|
def get_reversed_downcase(nodes, metadata)
|
|
87
87
|
record_call(:get_reversed_downcase, nodes, metadata)
|
|
88
|
-
nodes.
|
|
88
|
+
nodes.to_h { |node| [node, metadata[node][:downcase] ? metadata[node][:downcase].reverse : 'UNKNOWN'] }
|
|
89
89
|
end
|
|
90
90
|
|
|
91
91
|
# Get a specific property for a given set of nodes.
|
|
@@ -115,7 +115,7 @@ module HybridPlatformsConductorTest
|
|
|
115
115
|
# Nodes for which the property can't be fetched can be ommitted.
|
|
116
116
|
def get_same_comment(nodes, metadata)
|
|
117
117
|
record_call(:get_same_comment, nodes, metadata)
|
|
118
|
-
nodes.
|
|
118
|
+
nodes.to_h { |node| [node, "Comment for #{node}"] }
|
|
119
119
|
end
|
|
120
120
|
|
|
121
121
|
# Get a specific property for a given set of nodes.
|
|
@@ -130,7 +130,7 @@ module HybridPlatformsConductorTest
|
|
|
130
130
|
# Nodes for which the property can't be fetched can be ommitted.
|
|
131
131
|
def get_different_comment(nodes, metadata)
|
|
132
132
|
record_call(:get_different_comment, nodes, metadata)
|
|
133
|
-
nodes.
|
|
133
|
+
nodes.to_h { |node| [node, 'Comment from test_cmdb'] }
|
|
134
134
|
end
|
|
135
135
|
|
|
136
136
|
# Get a specific property for a given set of nodes.
|
|
@@ -145,7 +145,7 @@ module HybridPlatformsConductorTest
|
|
|
145
145
|
# Nodes for which the property can't be fetched can be ommitted.
|
|
146
146
|
def get_different_comment_2(nodes, metadata)
|
|
147
147
|
record_call(:get_different_comment_2, nodes, metadata)
|
|
148
|
-
nodes.
|
|
148
|
+
nodes.to_h { |node| [node, 'Comment2 from test_cmdb'] }
|
|
149
149
|
end
|
|
150
150
|
|
|
151
151
|
# Register a call to be checked by the tests later
|
|
@@ -156,7 +156,7 @@ module HybridPlatformsConductorTest
|
|
|
156
156
|
def record_call(method, *args)
|
|
157
157
|
@calls = [] unless defined?(@calls)
|
|
158
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))
|
|
159
|
+
@calls << ([method] + Marshal.load(Marshal.dump(args)))
|
|
160
160
|
end
|
|
161
161
|
|
|
162
162
|
end
|
|
@@ -27,7 +27,7 @@ module HybridPlatformsConductorTest
|
|
|
27
27
|
def get_nothing(nodes, metadata)
|
|
28
28
|
record_call(:get_nothing, nodes, metadata)
|
|
29
29
|
# Here we return something to test that if the first one fails we have the second CMDB
|
|
30
|
-
nodes.
|
|
30
|
+
nodes.to_h { |node| [node, "#{node} has nothing"] }
|
|
31
31
|
end
|
|
32
32
|
|
|
33
33
|
# Get a specific property for a given set of nodes.
|
|
@@ -42,7 +42,7 @@ module HybridPlatformsConductorTest
|
|
|
42
42
|
# Nodes for which the property can't be fetched can be ommitted.
|
|
43
43
|
def get_same_comment(nodes, metadata)
|
|
44
44
|
record_call(:get_same_comment, nodes, metadata)
|
|
45
|
-
nodes.
|
|
45
|
+
nodes.to_h { |node| [node, "Comment for #{node}"] }
|
|
46
46
|
end
|
|
47
47
|
|
|
48
48
|
# Get a specific property for a given set of nodes.
|
|
@@ -57,7 +57,7 @@ module HybridPlatformsConductorTest
|
|
|
57
57
|
# Nodes for which the property can't be fetched can be ommitted.
|
|
58
58
|
def get_different_comment(nodes, metadata)
|
|
59
59
|
record_call(:get_different_comment, nodes, metadata)
|
|
60
|
-
nodes.
|
|
60
|
+
nodes.to_h { |node| [node, 'Comment from test_cmdb_2'] }
|
|
61
61
|
end
|
|
62
62
|
|
|
63
63
|
# Get a specific property for a given set of nodes.
|
|
@@ -72,7 +72,7 @@ module HybridPlatformsConductorTest
|
|
|
72
72
|
# Nodes for which the property can't be fetched can be ommitted.
|
|
73
73
|
def get_different_comment_2(nodes, metadata)
|
|
74
74
|
record_call(:get_different_comment_2, nodes, metadata)
|
|
75
|
-
nodes.
|
|
75
|
+
nodes.to_h { |node| [node, 'Comment2 from test_cmdb_2'] }
|
|
76
76
|
end
|
|
77
77
|
|
|
78
78
|
# Register a call to be checked by the tests later
|
|
@@ -83,7 +83,7 @@ module HybridPlatformsConductorTest
|
|
|
83
83
|
def record_call(method, *args)
|
|
84
84
|
@calls = [] unless defined?(@calls)
|
|
85
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))
|
|
86
|
+
@calls << ([method] + Marshal.load(Marshal.dump(args)))
|
|
87
87
|
end
|
|
88
88
|
|
|
89
89
|
end
|
|
@@ -30,7 +30,7 @@ module HybridPlatformsConductorTest
|
|
|
30
30
|
# Nodes for which the property can't be fetched can be ommitted.
|
|
31
31
|
def get_others(nodes, metadata)
|
|
32
32
|
record_call(:get_others, nodes, metadata)
|
|
33
|
-
nodes.
|
|
33
|
+
nodes.to_h do |node|
|
|
34
34
|
[
|
|
35
35
|
node,
|
|
36
36
|
{
|
|
@@ -39,7 +39,7 @@ module HybridPlatformsConductorTest
|
|
|
39
39
|
nothing: "#{node} has another nothing"
|
|
40
40
|
}
|
|
41
41
|
]
|
|
42
|
-
end
|
|
42
|
+
end
|
|
43
43
|
end
|
|
44
44
|
|
|
45
45
|
# Register a call to be checked by the tests later
|
|
@@ -50,7 +50,7 @@ module HybridPlatformsConductorTest
|
|
|
50
50
|
def record_call(method, *args)
|
|
51
51
|
@calls = [] unless defined?(@calls)
|
|
52
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))
|
|
53
|
+
@calls << ([method] + Marshal.load(Marshal.dump(args)))
|
|
54
54
|
end
|
|
55
55
|
|
|
56
56
|
end
|
|
@@ -30,14 +30,14 @@ module HybridPlatformsConductorTest
|
|
|
30
30
|
# Nodes for which the property can't be fetched can be ommitted.
|
|
31
31
|
def get_others(nodes, metadata)
|
|
32
32
|
record_call(:get_others, nodes, metadata)
|
|
33
|
-
nodes.
|
|
33
|
+
nodes.to_h do |node|
|
|
34
34
|
[
|
|
35
35
|
node,
|
|
36
36
|
{
|
|
37
37
|
downcase: "__#{node}__"
|
|
38
38
|
}
|
|
39
39
|
]
|
|
40
|
-
end
|
|
40
|
+
end
|
|
41
41
|
end
|
|
42
42
|
|
|
43
43
|
# Register a call to be checked by the tests later
|
|
@@ -48,7 +48,7 @@ module HybridPlatformsConductorTest
|
|
|
48
48
|
def record_call(method, *args)
|
|
49
49
|
@calls = [] unless defined?(@calls)
|
|
50
50
|
# Create a shallow copy of the args, just to make sure they won't get changed by later code
|
|
51
|
-
@calls << [method] + Marshal.load(Marshal.dump(args))
|
|
51
|
+
@calls << ([method] + Marshal.load(Marshal.dump(args)))
|
|
52
52
|
end
|
|
53
53
|
|
|
54
54
|
end
|
|
@@ -3,7 +3,7 @@ describe 'Documentation' do
|
|
|
3
3
|
it 'makes sure all Markdown links are valid' do
|
|
4
4
|
check_stdout = `bundle exec tools/check_md README.md #{Dir.glob('docs/**/*.md').join(' ')}`.split("\n")
|
|
5
5
|
summary_idx = check_stdout.index { |line| line =~ /^\d+ errors:$/ }
|
|
6
|
-
expect(summary_idx).not_to
|
|
6
|
+
expect(summary_idx).not_to be_nil, "Could not parse check output: #{check_stdout.join("\n")}"
|
|
7
7
|
expect(check_stdout[summary_idx]).to eq('0 errors:'), "Invalid links found: #{check_stdout[summary_idx..].join("\n")}"
|
|
8
8
|
end
|
|
9
9
|
|
|
@@ -13,7 +13,7 @@ describe 'check-node executable' do
|
|
|
13
13
|
it 'checks a given node' do
|
|
14
14
|
with_test_platform_for_check_node do
|
|
15
15
|
expect(test_deployer).to receive(:deploy_on).with('node') do
|
|
16
|
-
expect(test_deployer.use_why_run).to
|
|
16
|
+
expect(test_deployer.use_why_run).to be true
|
|
17
17
|
test_deployer.stdout_device << "Check ok\n"
|
|
18
18
|
{ 'node' => [0, "Check ok\n", ''] }
|
|
19
19
|
end
|
|
@@ -13,7 +13,7 @@ describe 'deploy executable' do
|
|
|
13
13
|
it 'deploys a given node' do
|
|
14
14
|
with_test_platform_for_deploy do
|
|
15
15
|
expect(test_deployer).to receive(:deploy_on).with(['node']) do
|
|
16
|
-
expect(test_deployer.use_why_run).to
|
|
16
|
+
expect(test_deployer.use_why_run).to be false
|
|
17
17
|
test_deployer.stdout_device << "Deploy ok\n"
|
|
18
18
|
{ 'node' => [0, "Deploy ok\n", ''] }
|
|
19
19
|
end
|
|
@@ -13,7 +13,7 @@ describe 'executables\' Cmd Runner options' do
|
|
|
13
13
|
it 'displays commands instead of running them' do
|
|
14
14
|
with_test_platform_for_cmd_runner_options do
|
|
15
15
|
expect_actions_executor_runs([proc do
|
|
16
|
-
expect(test_cmd_runner.dry_run).to
|
|
16
|
+
expect(test_cmd_runner.dry_run).to be true
|
|
17
17
|
{}
|
|
18
18
|
end])
|
|
19
19
|
exit_code, stdout, stderr = run 'run', '--node', 'node', '--command', 'echo Hello', '--show-commands'
|
|
@@ -13,7 +13,7 @@ describe 'executables\' Deployer options' do
|
|
|
13
13
|
it 'uses parallel mode' do
|
|
14
14
|
with_test_platform_for_deployer_options do
|
|
15
15
|
expect(test_deployer).to receive(:deploy_on).with(['node']) do
|
|
16
|
-
expect(test_deployer.concurrent_execution).to
|
|
16
|
+
expect(test_deployer.concurrent_execution).to be true
|
|
17
17
|
{}
|
|
18
18
|
end
|
|
19
19
|
exit_code, _stdout, stderr = run 'deploy', '--node', 'node', '--parallel'
|
|
@@ -25,7 +25,7 @@ describe 'executables\' Deployer options' do
|
|
|
25
25
|
it 'uses why-run' do
|
|
26
26
|
with_test_platform_for_deployer_options do
|
|
27
27
|
expect(test_deployer).to receive(:deploy_on).with(['node']) do
|
|
28
|
-
expect(test_deployer.use_why_run).to
|
|
28
|
+
expect(test_deployer.use_why_run).to be true
|
|
29
29
|
{}
|
|
30
30
|
end
|
|
31
31
|
exit_code, _stdout, stderr = run 'deploy', '--node', 'node', '--why-run'
|
|
@@ -63,6 +63,7 @@ describe 'executables\' Nodes Handler options' do
|
|
|
63
63
|
it 'displays info about nodes' do
|
|
64
64
|
with_test_platform_for_nodes_handler_options do
|
|
65
65
|
with_cmd_runner_mocked [
|
|
66
|
+
['command -v getent', proc { [0, '', ''] }],
|
|
66
67
|
['getent hosts my_host15.my_domain', proc { [0, '192.168.42.15 my_host16.my_domain', ''] }],
|
|
67
68
|
['getent hosts my_host16.my_domain', proc { [0, '192.168.42.16 my_host16.my_domain', ''] }]
|
|
68
69
|
] do
|
|
@@ -61,7 +61,7 @@ describe 'executables\' Tests Runner options' do
|
|
|
61
61
|
it 'uses current run_logs instead of executing new check-nodes' do
|
|
62
62
|
with_test_platform({}) do
|
|
63
63
|
expect(test_tests_runner).to receive(:run_tests).with([]) do
|
|
64
|
-
expect(test_tests_runner.skip_run).to
|
|
64
|
+
expect(test_tests_runner.skip_run).to be true
|
|
65
65
|
0
|
|
66
66
|
end
|
|
67
67
|
exit_code, stdout, stderr = run 'test', '--test', 'my_test', '--skip-run'
|
|
@@ -47,6 +47,7 @@ describe 'report executable' do
|
|
|
47
47
|
}
|
|
48
48
|
) do
|
|
49
49
|
with_cmd_runner_mocked [
|
|
50
|
+
['command -v getent', proc { [0, '', ''] }],
|
|
50
51
|
['getent hosts node.domain.com', proc { [0, '192.168.0.1 node.domain.com', ''] }]
|
|
51
52
|
] do
|
|
52
53
|
exit_code, stdout, stderr = run 'report', '--node', 'node'
|
|
@@ -73,7 +73,7 @@ describe 'run executable' do
|
|
|
73
73
|
it 'executes a single command on several nodes' do
|
|
74
74
|
with_test_platform_for_run do
|
|
75
75
|
expect_actions_executor_runs([proc do |actions, timeout: nil, concurrent: false, log_to_dir: 'run_logs', log_to_stdout: true|
|
|
76
|
-
expect(concurrent).to
|
|
76
|
+
expect(concurrent).to be false
|
|
77
77
|
expect(actions).to eq(%w[node1 node2] => [{ remote_bash: ['echo Hello'] }])
|
|
78
78
|
test_actions_executor.stdout_device << "Hello\nHello\n"
|
|
79
79
|
{ 'node1' => [0, "Hello\nHello\n", ''] }
|
|
@@ -133,7 +133,7 @@ describe 'run executable' do
|
|
|
133
133
|
it 'executes in parallel' do
|
|
134
134
|
with_test_platform_for_run do
|
|
135
135
|
expect_actions_executor_runs([proc do |actions, timeout: nil, concurrent: false, log_to_dir: 'run_logs', log_to_stdout: true|
|
|
136
|
-
expect(concurrent).to
|
|
136
|
+
expect(concurrent).to be true
|
|
137
137
|
expect(actions).to eq(%w[node1 node2] => [{ remote_bash: ['echo Hello'] }])
|
|
138
138
|
test_actions_executor.stdout_device << "Hello\nHello\n"
|
|
139
139
|
{ 'node1' => [0, "Hello\nHello\n", ''] }
|
|
@@ -58,7 +58,7 @@ module HybridPlatformsConductorTest
|
|
|
58
58
|
def with_connections_mocked_on(expected_nodes)
|
|
59
59
|
expect(test_actions_executor).to receive(:with_connections_prepared_to) do |nodes, no_exception: false, &client_code|
|
|
60
60
|
expect(nodes.sort).to eq expected_nodes.sort
|
|
61
|
-
client_code.call
|
|
61
|
+
client_code.call(nodes.to_h { |node| [node, test_actions_executor.connector(:test_connector)] })
|
|
62
62
|
end
|
|
63
63
|
yield
|
|
64
64
|
end
|
|
@@ -21,12 +21,12 @@ module HybridPlatformsConductorTest
|
|
|
21
21
|
def register_test_cmdb(cmdb_names = [:test_cmdb])
|
|
22
22
|
register_plugins(
|
|
23
23
|
:cmdb,
|
|
24
|
-
cmdb_names.
|
|
24
|
+
cmdb_names.to_h do |plugin_id|
|
|
25
25
|
[
|
|
26
26
|
plugin_id,
|
|
27
27
|
HybridPlatformsConductorTest::CmdbPlugins.const_get(plugin_id.to_s.split('_').collect(&:capitalize).join.to_sym)
|
|
28
28
|
]
|
|
29
|
-
end
|
|
29
|
+
end
|
|
30
30
|
)
|
|
31
31
|
end
|
|
32
32
|
|
|
@@ -105,7 +105,7 @@ module HybridPlatformsConductorTest
|
|
|
105
105
|
{ optional: with_control_master_destroy_optional }
|
|
106
106
|
]
|
|
107
107
|
end
|
|
108
|
-
ssh_commands_once + ssh_commands_per_connection * node_connection_info[:times]
|
|
108
|
+
ssh_commands_once + (ssh_commands_per_connection * node_connection_info[:times])
|
|
109
109
|
end.flatten(1)
|
|
110
110
|
end
|
|
111
111
|
|
|
@@ -40,10 +40,10 @@ module HybridPlatformsConductorTest
|
|
|
40
40
|
# * Hash<String, [Integer or Symbol, String, String] >: Expected result of those expected actions
|
|
41
41
|
def expect_actions_to_deploy_on(actions, nodes, check: false, sudo: 'sudo -u root', expected_actions: [], mocked_result: nil)
|
|
42
42
|
nodes = [nodes] if nodes.is_a?(String)
|
|
43
|
-
mocked_result = nodes.
|
|
43
|
+
mocked_result = nodes.to_h { |node| [node, [0, "#{check ? 'Check' : 'Deploy'} successful", '']] } if mocked_result.nil?
|
|
44
44
|
expect(actions.size).to eq nodes.size
|
|
45
45
|
nodes.each do |node|
|
|
46
|
-
expect(actions.key?(node)).to
|
|
46
|
+
expect(actions.key?(node)).to be true
|
|
47
47
|
expect(actions[node].size).to eq(2 + expected_actions.size)
|
|
48
48
|
expect_action_to_lock_node(actions[node][0], node, sudo: sudo)
|
|
49
49
|
expect(actions[node][1..-2]).to eq expected_actions
|
|
@@ -62,10 +62,10 @@ module HybridPlatformsConductorTest
|
|
|
62
62
|
nodes = [nodes] if nodes.is_a?(String)
|
|
63
63
|
expect(actions.size).to eq nodes.size
|
|
64
64
|
nodes.each do |node|
|
|
65
|
-
expect(actions.key?(node)).to
|
|
65
|
+
expect(actions.key?(node)).to be true
|
|
66
66
|
expect_action_to_unlock_node(actions[node], node, sudo: sudo)
|
|
67
67
|
end
|
|
68
|
-
nodes.
|
|
68
|
+
nodes.to_h { |node| [node, [0, 'Release mutex successful', '']] }
|
|
69
69
|
end
|
|
70
70
|
|
|
71
71
|
# Expect a given set of actions to upload log files on a list of nodes (using the test_log log plugin)
|
|
@@ -77,10 +77,10 @@ module HybridPlatformsConductorTest
|
|
|
77
77
|
nodes = [nodes] if nodes.is_a?(String)
|
|
78
78
|
expect(actions.size).to eq nodes.size
|
|
79
79
|
nodes.each do |node|
|
|
80
|
-
expect(actions.key?(node)).to
|
|
80
|
+
expect(actions.key?(node)).to be true
|
|
81
81
|
expect(actions[node]).to eq [{ bash: "echo Save test logs to #{node}" }]
|
|
82
82
|
end
|
|
83
|
-
nodes.
|
|
83
|
+
nodes.to_h { |node| [node, [0, 'Logs uploaded', '']] }
|
|
84
84
|
end
|
|
85
85
|
|
|
86
86
|
# Get a test Deployer
|
|
@@ -325,7 +325,7 @@ module HybridPlatformsConductorTest
|
|
|
325
325
|
expect_actions_executor_runs(statuses.map do |status|
|
|
326
326
|
status = { 'node' => status } if status.is_a?(Array)
|
|
327
327
|
expected_actions_for_deploy_on(
|
|
328
|
-
services: status.keys.
|
|
328
|
+
services: status.keys.to_h { |node| [node, %w[service]] },
|
|
329
329
|
mocked_deploy_result: status
|
|
330
330
|
)
|
|
331
331
|
end.flatten)
|
|
@@ -14,7 +14,7 @@ module HybridPlatformsConductorTest
|
|
|
14
14
|
# * Parameters::
|
|
15
15
|
# * *repositories* (Hash<String,String>): Path to the repositories, per repository name
|
|
16
16
|
def with_repositories(names = [], as_git: false)
|
|
17
|
-
repositories = names.
|
|
17
|
+
repositories = names.to_h { |name| [name, "#{Dir.tmpdir}/hpc_test/#{name}"] }
|
|
18
18
|
repositories.each_value do |dir|
|
|
19
19
|
FileUtils.rm_rf dir
|
|
20
20
|
FileUtils.mkdir_p dir
|
|
@@ -91,12 +91,12 @@ module HybridPlatformsConductorTest
|
|
|
91
91
|
"#{platform_type}_platform path: '#{dir}'#{platforms_info[platform].key?(:name) ? ", name: '#{platforms_info[platform][:name]}'" : ''}"
|
|
92
92
|
end.join("\n") + "\n#{additional_config}"
|
|
93
93
|
) do
|
|
94
|
-
register_platform_handlers(platform_types.
|
|
94
|
+
register_platform_handlers(platform_types.to_h do |platform_type|
|
|
95
95
|
[
|
|
96
96
|
platform_type,
|
|
97
97
|
HybridPlatformsConductorTest::PlatformHandlerPlugins.const_get(platform_type.to_s.split('_').collect(&:capitalize).join.to_sym)
|
|
98
98
|
]
|
|
99
|
-
end
|
|
99
|
+
end)
|
|
100
100
|
self.test_platforms_info = platforms_info
|
|
101
101
|
yield repositories
|
|
102
102
|
end
|