hybrid_platforms_conductor 33.0.1 → 33.0.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -22,7 +22,7 @@ describe HybridPlatformsConductor::ActionsExecutor do
22
22
  it 'connects on a node before executing actions needing connection' do
23
23
  with_test_platform_for_connections do
24
24
  test_actions_executor.connector(:test_connector).accept_nodes = ['node1']
25
- test_actions_executor.execute_actions('node1' => { test_action: { need_connector: true } })
25
+ test_actions_executor.execute_actions({ 'node1' => { test_action: { need_connector: true } } })
26
26
  expect(action_executions).to eq [{ node: 'node1', message: 'Action executed' }]
27
27
  expect(test_actions_executor.connector(:test_connector).calls).to eq [
28
28
  [:connectable_nodes_from, ['node1']],
@@ -33,7 +33,7 @@ describe HybridPlatformsConductor::ActionsExecutor do
33
33
 
34
34
  it 'returns an error when no connector can connect to the needed node' do
35
35
  with_test_platform_for_connections do
36
- expect(test_actions_executor.execute_actions('node1' => { test_action: { need_connector: true } })).to eq(
36
+ expect(test_actions_executor.execute_actions({ 'node1' => { test_action: { need_connector: true } } })).to eq(
37
37
  'node1' => [:no_connector, '', 'Unable to get a connector to node1']
38
38
  )
39
39
  end
@@ -42,7 +42,7 @@ describe HybridPlatformsConductor::ActionsExecutor do
42
42
  it 'connects on several nodes before executing actions needing connection' do
43
43
  with_test_platform_for_connections do
44
44
  test_actions_executor.connector(:test_connector).accept_nodes = %w[node1 node2 node3 node4]
45
- test_actions_executor.execute_actions(%w[node1 node2 node3 node4] => { test_action: { need_connector: true } })
45
+ test_actions_executor.execute_actions({ %w[node1 node2 node3 node4] => { test_action: { need_connector: true } } })
46
46
  expect(action_executions).to eq [
47
47
  { node: 'node1', message: 'Action executed' },
48
48
  { node: 'node2', message: 'Action executed' },
@@ -60,7 +60,7 @@ describe HybridPlatformsConductor::ActionsExecutor do
60
60
  with_test_platform_for_connections do
61
61
  test_actions_executor.connector(:test_connector).accept_nodes = %w[node1 node2 node3 node4]
62
62
  test_actions_executor.connector(:test_connector).connected_nodes = %w[node1 node2 node4]
63
- test_actions_executor.execute_actions(%w[node1 node2 node3 node4] => { test_action: { need_connector: true } })
63
+ test_actions_executor.execute_actions({ %w[node1 node2 node3 node4] => { test_action: { need_connector: true } } })
64
64
  expect(action_executions).to eq [
65
65
  { node: 'node1', message: 'Action executed' },
66
66
  { node: 'node2', message: 'Action executed' },
@@ -77,8 +77,10 @@ describe HybridPlatformsConductor::ActionsExecutor do
77
77
  with_test_platform_for_connections do
78
78
  test_actions_executor.connector(:test_connector).accept_nodes = %w[node1 node2 node3 node4]
79
79
  test_actions_executor.execute_actions(
80
- %w[node1 node3] => { test_action: { need_connector: true } },
81
- %w[node2 node4] => { test_action: { need_connector: false } }
80
+ {
81
+ %w[node1 node3] => { test_action: { need_connector: true } },
82
+ %w[node2 node4] => { test_action: { need_connector: false } }
83
+ }
82
84
  )
83
85
  expect(action_executions).to eq [
84
86
  { node: 'node1', message: 'Action executed' },
@@ -96,7 +98,7 @@ describe HybridPlatformsConductor::ActionsExecutor do
96
98
  it 'does not ask for any connection if actions don\'t need remote' do
97
99
  with_test_platform_for_connections do
98
100
  test_actions_executor.connector(:test_connector).accept_nodes = %w[node1 node2 node3 node4]
99
- test_actions_executor.execute_actions(%w[node1 node2 node3 node4] => { test_action: { need_connector: false } })
101
+ test_actions_executor.execute_actions({ %w[node1 node2 node3 node4] => { test_action: { need_connector: false } } })
100
102
  expect(action_executions).to eq [
101
103
  { node: 'node1', message: 'Action executed' },
102
104
  { node: 'node2', message: 'Action executed' },
@@ -111,7 +113,7 @@ describe HybridPlatformsConductor::ActionsExecutor do
111
113
  with_test_platform_for_connections do
112
114
  test_actions_executor.connector(:test_connector).accept_nodes = %w[node1 node3]
113
115
  test_actions_executor.connector(:test_connector_2).accept_nodes = %w[node2 node4]
114
- test_actions_executor.execute_actions(%w[node1 node2 node3 node4] => { test_action: { need_connector: true } })
116
+ test_actions_executor.execute_actions({ %w[node1 node2 node3 node4] => { test_action: { need_connector: true } } })
115
117
  expect(action_executions).to eq [
116
118
  { node: 'node1', message: 'Action executed' },
117
119
  { node: 'node2', message: 'Action executed' },
@@ -133,7 +135,7 @@ describe HybridPlatformsConductor::ActionsExecutor do
133
135
  with_test_platform_for_connections do
134
136
  test_actions_executor.connector(:test_connector).accept_nodes = %w[node1 node2 node3]
135
137
  test_actions_executor.connector(:test_connector_2).accept_nodes = %w[node2 node4]
136
- test_actions_executor.execute_actions(%w[node1 node2 node3 node4] => { test_action: { need_connector: true } })
138
+ test_actions_executor.execute_actions({ %w[node1 node2 node3 node4] => { test_action: { need_connector: true } } })
137
139
  expect(action_executions).to eq [
138
140
  { node: 'node1', message: 'Action executed' },
139
141
  { node: 'node2', message: 'Action executed' },
@@ -18,7 +18,7 @@ describe HybridPlatformsConductor::ActionsExecutor do
18
18
  [
19
19
  ['which env', proc { [0, "/usr/bin/env\n", ''] }],
20
20
  ['ssh -V 2>&1', proc { [0, "OpenSSH_7.4p1 Debian-10+deb9u7, OpenSSL 1.0.2u 20 Dec 2019\n", ''] }]
21
- ] + ssh_expected_commands_for('node' => { connection: '192.168.42.42', user: 'test_user' })
21
+ ] + ssh_expected_commands_for({ 'node' => { connection: '192.168.42.42', user: 'test_user' } })
22
22
  ) do
23
23
  test_connector.ssh_user = 'test_user'
24
24
  test_connector.with_connection_to(['node']) do |connected_nodes|
@@ -82,8 +82,10 @@ describe HybridPlatformsConductor::ActionsExecutor do
82
82
  ['which env', proc { [0, "/usr/bin/env\n", ''] }],
83
83
  ['ssh -V 2>&1', proc { [0, "OpenSSH_7.4p1 Debian-10+deb9u7, OpenSSL 1.0.2u 20 Dec 2019\n", ''] }]
84
84
  ] + ssh_expected_commands_for(
85
- 'node1' => { connection: '192.168.42.1', user: 'test_user' },
86
- 'node3' => { connection: '192.168.42.3', user: 'test_user' }
85
+ {
86
+ 'node1' => { connection: '192.168.42.1', user: 'test_user' },
87
+ 'node3' => { connection: '192.168.42.3', user: 'test_user' }
88
+ }
87
89
  ) + ssh_expected_commands_for(
88
90
  {
89
91
  'node2' => { connection: '192.168.42.2', user: 'test_user' }
@@ -115,9 +117,11 @@ describe HybridPlatformsConductor::ActionsExecutor do
115
117
  ['which env', proc { [0, "/usr/bin/env\n", ''] }],
116
118
  ['ssh -V 2>&1', proc { [0, "OpenSSH_7.4p1 Debian-10+deb9u7, OpenSSL 1.0.2u 20 Dec 2019\n", ''] }]
117
119
  ] + ssh_expected_commands_for(
118
- 'node1' => { connection: '192.168.42.1', user: 'test_user' },
119
- 'node2' => { connection: '192.168.42.2', user: 'test_user' },
120
- 'node3' => { connection: '192.168.42.3', user: 'test_user' }
120
+ {
121
+ 'node1' => { connection: '192.168.42.1', user: 'test_user' },
122
+ 'node2' => { connection: '192.168.42.2', user: 'test_user' },
123
+ 'node3' => { connection: '192.168.42.3', user: 'test_user' }
124
+ }
121
125
  )
122
126
  ) do
123
127
  test_connector.ssh_user = 'test_user'
@@ -153,9 +157,11 @@ describe HybridPlatformsConductor::ActionsExecutor do
153
157
  ['which env', proc { [0, "/usr/bin/env\n", ''] }],
154
158
  ['ssh -V 2>&1', proc { [0, "OpenSSH_7.4p1 Debian-10+deb9u7, OpenSSL 1.0.2u 20 Dec 2019\n", ''] }]
155
159
  ] + ssh_expected_commands_for(
156
- 'node1' => { ip: '192.168.42.1', connection: '192.168.42.1_node1_13_node1_1', user: 'test_user_node1_13_node1_1' },
157
- 'node2' => { ip: '192.168.42.2', connection: '192.168.42.2', user: 'test_user' },
158
- 'node3' => { ip: '192.168.42.3', connection: '192.168.42.3_node3_13', user: 'test_user_node3_13' }
160
+ {
161
+ 'node1' => { ip: '192.168.42.1', connection: '192.168.42.1_node1_13_node1_1', user: 'test_user_node1_13_node1_1' },
162
+ 'node2' => { ip: '192.168.42.2', connection: '192.168.42.2', user: 'test_user' },
163
+ 'node3' => { ip: '192.168.42.3', connection: '192.168.42.3_node3_13', user: 'test_user_node3_13' }
164
+ }
159
165
  )
160
166
  ) do
161
167
  test_connector.ssh_user = 'test_user'
@@ -217,8 +223,10 @@ describe HybridPlatformsConductor::ActionsExecutor do
217
223
  ['which env', proc { [0, "/usr/bin/env\n", ''] }],
218
224
  ['ssh -V 2>&1', proc { [0, "OpenSSH_7.4p1 Debian-10+deb9u7, OpenSSL 1.0.2u 20 Dec 2019\n", ''] }]
219
225
  ] + ssh_expected_commands_for(
220
- 'node1' => { connection: '192.168.42.1', user: 'test_user' },
221
- 'node3' => { connection: '192.168.42.3', user: 'test_user' }
226
+ {
227
+ 'node1' => { connection: '192.168.42.1', user: 'test_user' },
228
+ 'node3' => { connection: '192.168.42.3', user: 'test_user' }
229
+ }
222
230
  ) + ssh_expected_commands_for(
223
231
  {
224
232
  'node2' => { connection: '192.168.42.2', user: 'test_user', control_master_create_error: 'Can\'t connect to 192.168.42.2' }
@@ -241,7 +249,7 @@ describe HybridPlatformsConductor::ActionsExecutor do
241
249
  ['which env', proc { [0, "/usr/bin/env\n", ''] }],
242
250
  ['ssh -V 2>&1', proc { [0, "OpenSSH_7.4p1 Debian-10+deb9u7, OpenSSL 1.0.2u 20 Dec 2019\n", ''] }]
243
251
  ] +
244
- ssh_expected_commands_for('node' => { connection: '192.168.42.42', user: 'test_user' }) +
252
+ ssh_expected_commands_for({ 'node' => { connection: '192.168.42.42', user: 'test_user' } }) +
245
253
  ssh_expected_commands_for(
246
254
  { 'node' => { connection: '192.168.42.42', user: 'test_user' } },
247
255
  with_strict_host_key_checking: false,
@@ -276,12 +284,16 @@ describe HybridPlatformsConductor::ActionsExecutor do
276
284
  ['ssh -V 2>&1', proc { [0, "OpenSSH_7.4p1 Debian-10+deb9u7, OpenSSL 1.0.2u 20 Dec 2019\n", ''] }]
277
285
  ] +
278
286
  ssh_expected_commands_for(
279
- 'node1' => { connection: '192.168.42.1', user: 'test_user' },
280
- 'node3' => { connection: '192.168.42.3', user: 'test_user' }
287
+ {
288
+ 'node1' => { connection: '192.168.42.1', user: 'test_user' },
289
+ 'node3' => { connection: '192.168.42.3', user: 'test_user' }
290
+ }
281
291
  ) +
282
292
  ssh_expected_commands_for(
283
- 'node2' => { connection: '192.168.42.2', user: 'test_user' },
284
- 'node4' => { connection: '192.168.42.4', user: 'test_user' }
293
+ {
294
+ 'node2' => { connection: '192.168.42.2', user: 'test_user' },
295
+ 'node4' => { connection: '192.168.42.4', user: 'test_user' }
296
+ }
285
297
  ) +
286
298
  ssh_expected_commands_for(
287
299
  {
@@ -443,7 +455,7 @@ describe HybridPlatformsConductor::ActionsExecutor do
443
455
  ['which env', proc { [0, "/usr/bin/env\n", ''] }],
444
456
  ['ssh -V 2>&1', proc { [0, "OpenSSH_7.4p1 Debian-10+deb9u7, OpenSSL 1.0.2u 20 Dec 2019\n", ''] }]
445
457
  ] +
446
- ssh_expected_commands_for('node' => { connection: '192.168.42.42', user: 'test_user' }) +
458
+ ssh_expected_commands_for({ 'node' => { connection: '192.168.42.42', user: 'test_user' } }) +
447
459
  ssh_expected_commands_for(
448
460
  { 'node' => { connection: '192.168.42.42', user: 'test_user' } },
449
461
  with_strict_host_key_checking: false,
@@ -474,7 +486,7 @@ describe HybridPlatformsConductor::ActionsExecutor do
474
486
  ['which env', proc { [0, "/usr/bin/env\n", ''] }],
475
487
  ['ssh -V 2>&1', proc { [0, "OpenSSH_7.4p1 Debian-10+deb9u7, OpenSSL 1.0.2u 20 Dec 2019\n", ''] }]
476
488
  ] +
477
- ssh_expected_commands_for('node' => { connection: '192.168.42.42', user: 'test_user' }) +
489
+ ssh_expected_commands_for({ 'node' => { connection: '192.168.42.42', user: 'test_user' } }) +
478
490
  ssh_expected_commands_for(
479
491
  { 'node' => { connection: '192.168.42.42', user: 'test_user' } },
480
492
  with_strict_host_key_checking: false,
@@ -512,7 +524,7 @@ describe HybridPlatformsConductor::ActionsExecutor do
512
524
  [
513
525
  ['which env', proc { [0, "/usr/bin/env\n", ''] }],
514
526
  ['ssh -V 2>&1', proc { [0, "OpenSSH_7.4p1 Debian-10+deb9u7, OpenSSL 1.0.2u 20 Dec 2019\n", ''] }]
515
- ] + ssh_expected_commands_for('node' => { connection: '192.168.42.42', user: 'test_user' })
527
+ ] + ssh_expected_commands_for({ 'node' => { connection: '192.168.42.42', user: 'test_user' } })
516
528
  ) do
517
529
  test_connector.ssh_user = 'test_user'
518
530
  # Fake a ControlMaster file that is stalled
@@ -529,7 +541,7 @@ describe HybridPlatformsConductor::ActionsExecutor do
529
541
  [
530
542
  ['which env', proc { [0, "/usr/bin/env\n", ''] }],
531
543
  ['ssh -V 2>&1', proc { [0, "OpenSSH_7.4p1 Debian-10+deb9u7, OpenSSL 1.0.2u 20 Dec 2019\n", ''] }]
532
- ] + ssh_expected_commands_for('node' => { connection: '192.168.42.42', user: 'test_user' })
544
+ ] + ssh_expected_commands_for({ 'node' => { connection: '192.168.42.42', user: 'test_user' } })
533
545
  ) do
534
546
  test_connector.ssh_user = 'test_user'
535
547
  # Fake a user that was not cleaned correctly
@@ -555,7 +567,7 @@ describe HybridPlatformsConductor::ActionsExecutor do
555
567
  [255, '', "System is booting up. See pam_nologin(8)\nAuthentication failed.\n"]
556
568
  end
557
569
  ]] * 3 +
558
- ssh_expected_commands_for('node' => { connection: '192.168.42.42', user: 'test_user' })
570
+ ssh_expected_commands_for({ 'node' => { connection: '192.168.42.42', user: 'test_user' } })
559
571
  ) do
560
572
  test_connector.ssh_user = 'test_user'
561
573
  # To speed up the test, alter the wait time between retries.
@@ -16,12 +16,14 @@ describe HybridPlatformsConductor::ActionsExecutor do
16
16
  with_test_platform_for_logging do
17
17
  expect(
18
18
  test_actions_executor.execute_actions(
19
- 'node1' => {
20
- test_action: {
21
- code: proc do |stdout, stderr|
22
- stdout << 'action_stdout'
23
- stderr << 'action_stderr'
24
- end
19
+ {
20
+ 'node1' => {
21
+ test_action: {
22
+ code: proc do |stdout, stderr|
23
+ stdout << 'action_stdout'
24
+ stderr << 'action_stderr'
25
+ end
26
+ }
25
27
  }
26
28
  }
27
29
  )
@@ -33,13 +35,15 @@ describe HybridPlatformsConductor::ActionsExecutor do
33
35
  with_test_platform_for_logging do
34
36
  expect(
35
37
  test_actions_executor.execute_actions(
36
- 'node1' => {
37
- test_action: {
38
- code: proc do |stdout, stderr|
39
- stdout << "action_stdout\n"
40
- stderr << "action_stderr\n"
41
- raise 'Failing action'
42
- end
38
+ {
39
+ 'node1' => {
40
+ test_action: {
41
+ code: proc do |stdout, stderr|
42
+ stdout << "action_stdout\n"
43
+ stderr << "action_stderr\n"
44
+ raise 'Failing action'
45
+ end
46
+ }
43
47
  }
44
48
  }
45
49
  )
@@ -71,7 +75,7 @@ describe HybridPlatformsConductor::ActionsExecutor do
71
75
  it 'captures stdout and stderr from action correctly when using run_cmd' do
72
76
  with_test_platform_for_logging do
73
77
  expect(
74
- test_actions_executor.execute_actions('node1' => { test_action: { run_cmd: 'echo action_stdout && >&2 echo action_stderr' } })
78
+ test_actions_executor.execute_actions({ 'node1' => { test_action: { run_cmd: 'echo action_stdout && >&2 echo action_stderr' } } })
75
79
  ).to eq('node1' => [0, "action_stdout\n", "action_stderr\n"])
76
80
  end
77
81
  end
@@ -79,7 +83,7 @@ describe HybridPlatformsConductor::ActionsExecutor do
79
83
  it 'captures stdout and stderr from action correctly when using run_cmd but with a failing command' do
80
84
  with_test_platform_for_logging do
81
85
  expect(
82
- test_actions_executor.execute_actions('node1' => { test_action: { run_cmd: 'echo action_stdout && >&2 echo action_stderr && exit 1' } })
86
+ test_actions_executor.execute_actions({ 'node1' => { test_action: { run_cmd: 'echo action_stdout && >&2 echo action_stderr && exit 1' } } })
83
87
  ).to eq(
84
88
  'node1' => [
85
89
  :failed_command,
@@ -94,23 +98,25 @@ describe HybridPlatformsConductor::ActionsExecutor do
94
98
  with_test_platform_for_logging do
95
99
  expect(
96
100
  test_actions_executor.execute_actions(
97
- 'node1' => [
98
- { test_action: {
99
- code: proc do |stdout, stderr|
100
- stdout << 'action1_stdout '
101
- stderr << 'action1_stderr '
102
- end
103
- } },
104
- { test_action: {
105
- run_cmd: 'echo action2_stdout && >&2 echo action2_stderr'
106
- } },
107
- { test_action: {
108
- code: proc do |stdout, stderr|
109
- stdout << 'action3_stdout'
110
- stderr << 'action3_stderr'
111
- end
112
- } }
113
- ]
101
+ {
102
+ 'node1' => [
103
+ { test_action: {
104
+ code: proc do |stdout, stderr|
105
+ stdout << 'action1_stdout '
106
+ stderr << 'action1_stderr '
107
+ end
108
+ } },
109
+ { test_action: {
110
+ run_cmd: 'echo action2_stdout && >&2 echo action2_stderr'
111
+ } },
112
+ { test_action: {
113
+ code: proc do |stdout, stderr|
114
+ stdout << 'action3_stdout'
115
+ stderr << 'action3_stderr'
116
+ end
117
+ } }
118
+ ]
119
+ }
114
120
  )
115
121
  ).to eq('node1' => [0, "action1_stdout action2_stdout\naction3_stdout", "action1_stderr action2_stderr\naction3_stderr"])
116
122
  end
@@ -120,24 +126,26 @@ describe HybridPlatformsConductor::ActionsExecutor do
120
126
  with_test_platform_for_logging do
121
127
  expect(
122
128
  test_actions_executor.execute_actions(
123
- 'node1' => { test_action: {
124
- code: proc do |stdout, stderr|
125
- stdout << 'action1_stdout'
126
- stderr << 'action1_stderr'
127
- end
128
- } },
129
- 'node2' => { test_action: {
130
- code: proc do |stdout, stderr|
131
- stdout << 'action2_stdout'
132
- stderr << 'action2_stderr'
133
- end
134
- } },
135
- 'node3' => { test_action: {
136
- code: proc do |stdout, stderr|
137
- stdout << 'action3_stdout'
138
- stderr << 'action3_stderr'
139
- end
140
- } }
129
+ {
130
+ 'node1' => { test_action: {
131
+ code: proc do |stdout, stderr|
132
+ stdout << 'action1_stdout'
133
+ stderr << 'action1_stderr'
134
+ end
135
+ } },
136
+ 'node2' => { test_action: {
137
+ code: proc do |stdout, stderr|
138
+ stdout << 'action2_stdout'
139
+ stderr << 'action2_stderr'
140
+ end
141
+ } },
142
+ 'node3' => { test_action: {
143
+ code: proc do |stdout, stderr|
144
+ stdout << 'action3_stdout'
145
+ stderr << 'action3_stderr'
146
+ end
147
+ } }
148
+ }
141
149
  )
142
150
  ).to eq(
143
151
  'node1' => [0, 'action1_stdout', 'action1_stderr'],
@@ -151,40 +159,42 @@ describe HybridPlatformsConductor::ActionsExecutor do
151
159
  with_test_platform_for_logging do
152
160
  expect(
153
161
  test_actions_executor.execute_actions(
154
- 'node1' => { test_action: {
155
- code: proc do |stdout, stderr|
156
- stdout << 'action1_stdout '
157
- stderr << 'action1_stderr '
158
- end
159
- } },
160
- %w[node1 node2] => [
161
- { test_action: {
162
+ {
163
+ 'node1' => { test_action: {
162
164
  code: proc do |stdout, stderr|
163
- stdout << 'action2_stdout '
164
- stderr << 'action2_stderr '
165
- end
166
- } },
167
- { test_action: {
168
- code: proc do |stdout, stderr|
169
- stdout << 'action3_stdout '
170
- stderr << 'action3_stderr '
171
- end
172
- } }
173
- ],
174
- %w[node2 node3] => [
175
- { test_action: {
176
- code: proc do |stdout, stderr|
177
- stdout << 'action4_stdout '
178
- stderr << 'action4_stderr '
165
+ stdout << 'action1_stdout '
166
+ stderr << 'action1_stderr '
179
167
  end
180
168
  } },
181
- { test_action: {
182
- code: proc do |stdout, stderr|
183
- stdout << 'action5_stdout '
184
- stderr << 'action5_stderr '
185
- end
186
- } }
187
- ]
169
+ %w[node1 node2] => [
170
+ { test_action: {
171
+ code: proc do |stdout, stderr|
172
+ stdout << 'action2_stdout '
173
+ stderr << 'action2_stderr '
174
+ end
175
+ } },
176
+ { test_action: {
177
+ code: proc do |stdout, stderr|
178
+ stdout << 'action3_stdout '
179
+ stderr << 'action3_stderr '
180
+ end
181
+ } }
182
+ ],
183
+ %w[node2 node3] => [
184
+ { test_action: {
185
+ code: proc do |stdout, stderr|
186
+ stdout << 'action4_stdout '
187
+ stderr << 'action4_stderr '
188
+ end
189
+ } },
190
+ { test_action: {
191
+ code: proc do |stdout, stderr|
192
+ stdout << 'action5_stdout '
193
+ stderr << 'action5_stderr '
194
+ end
195
+ } }
196
+ ]
197
+ }
188
198
  )
189
199
  ).to eq(
190
200
  'node1' => [0, 'action1_stdout action2_stdout action3_stdout ', 'action1_stderr action2_stderr action3_stderr '],
@@ -13,10 +13,12 @@ describe HybridPlatformsConductor::ActionsExecutor do
13
13
  it 'executes an action without timeout' do
14
14
  with_test_platform_for_timeouts_tests do
15
15
  expect(test_actions_executor.execute_actions(
16
- 'node' => { test_action: { code: proc do |stdout, _stderr, action|
17
- expect(action.timeout).to eq nil
18
- stdout << 'Hello'
19
- end } }
16
+ {
17
+ 'node' => { test_action: { code: proc do |stdout, _stderr, action|
18
+ expect(action.timeout).to eq nil
19
+ stdout << 'Hello'
20
+ end } }
21
+ }
20
22
  )['node']).to eq [0, 'Hello', '']
21
23
  end
22
24
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hybrid_platforms_conductor
3
3
  version: !ruby/object:Gem::Version
4
- version: 33.0.1
4
+ version: 33.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Muriel Salvan
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-06-16 00:00:00.000000000 Z
11
+ date: 2021-06-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: range_operators
@@ -323,181 +323,181 @@ description: Provides a complete toolset to help DevOps maintain, deploy, monito
323
323
  email:
324
324
  - muriel@x-aeon.com
325
325
  executables:
326
- - topograph
327
- - test
326
+ - free_ips
327
+ - setup
328
328
  - check-node
329
- - get_impacted_nodes
330
- - ssh_config
329
+ - deploy
331
330
  - dump_nodes_json
331
+ - topograph
332
332
  - run
333
- - setup
334
333
  - report
334
+ - free_veids
335
+ - get_impacted_nodes
336
+ - ssh_config
335
337
  - last_deploys
336
338
  - nodes_to_deploy
337
- - free_ips
338
- - free_veids
339
- - deploy
339
+ - test
340
340
  extensions: []
341
341
  extra_rdoc_files:
342
- - README.md
343
342
  - CHANGELOG.md
344
343
  - LICENSE.md
345
- - docs/tutorial/05_extend_with_plugins.md
346
- - docs/tutorial/04_test.md
347
- - docs/tutorial/03_scale.md
348
- - docs/tutorial/01_installation.md
349
- - docs/tutorial/02_first_node.md
350
- - docs/tutorial.md
344
+ - README.md
351
345
  - docs/install.md
352
- - docs/plugins_create.md
353
- - docs/executables.md
354
- - docs/api.md
355
- - docs/plugins.md
356
- - docs/gen/mermaid/README.md-0.png
357
- - docs/gen/mermaid/docs/executables/check-node.md-0.png
358
- - docs/gen/mermaid/docs/executables/ssh_config.md-0.png
359
- - docs/gen/mermaid/docs/executables/last_deploys.md-0.png
360
- - docs/gen/mermaid/docs/executables/run.md-0.png
361
- - docs/gen/mermaid/docs/executables/get_impacted_nodes.md-0.png
362
- - docs/gen/mermaid/docs/executables/test.md-0.png
363
- - docs/gen/mermaid/docs/executables/free_ips.md-0.png
364
- - docs/gen/mermaid/docs/executables/free_veids.md-0.png
365
- - docs/gen/mermaid/docs/executables/nodes_to_deploy.md-0.png
366
- - docs/gen/mermaid/docs/executables/report.md-0.png
367
- - docs/gen/mermaid/docs/executables/deploy.md-0.png
368
- - docs/gen/mermaid/docs/executables/setup.md-0.png
369
- - docs/executables/test.md
370
- - docs/executables/free_ips.md
371
- - docs/executables/run.md
372
- - docs/executables/get_impacted_nodes.md
373
- - docs/executables/last_deploys.md
374
- - docs/executables/nodes_to_deploy.md
375
- - docs/executables/setup.md
376
- - docs/executables/deploy.md
377
- - docs/executables/report.md
378
- - docs/executables/check-node.md
379
- - docs/executables/free_veids.md
380
- - docs/executables/ssh_config.md
381
- - docs/executables/topograph.md
382
- - docs/executables/dump_nodes_json.md
383
- - docs/plugins/platform_handler/serverless_chef.md
384
- - docs/plugins/platform_handler/yaml_inventory.md
346
+ - docs/plugins/cmdb/platform_handlers.md
347
+ - docs/plugins/cmdb/config.md
348
+ - docs/plugins/cmdb/host_ip.md
349
+ - docs/plugins/cmdb/host_keys.md
385
350
  - docs/plugins/log/remote_fs.md
386
- - docs/plugins/provisioner/proxmox.md
387
- - docs/plugins/provisioner/podman.md
388
351
  - docs/plugins/provisioner/docker.md
389
- - docs/plugins/test/spectre.md
390
- - docs/plugins/test/bitbucket_conf.md
391
- - docs/plugins/test/github_ci.md
392
- - docs/plugins/test/vulnerabilities.md
393
- - docs/plugins/test/deploy_removes_root_access.md
394
- - docs/plugins/test/private_ips.md
395
- - docs/plugins/test/ip.md
352
+ - docs/plugins/provisioner/podman.md
353
+ - docs/plugins/provisioner/proxmox.md
354
+ - docs/plugins/action/bash.md
355
+ - docs/plugins/action/scp.md
356
+ - docs/plugins/action/remote_bash.md
357
+ - docs/plugins/action/interactive.md
358
+ - docs/plugins/action/ruby.md
359
+ - docs/plugins/connector/ssh.md
360
+ - docs/plugins/connector/local.md
361
+ - docs/plugins/report/confluence.md
362
+ - docs/plugins/report/mediawiki.md
363
+ - docs/plugins/report/stdout.md
364
+ - docs/plugins/secrets_reader/thycotic.md
365
+ - docs/plugins/secrets_reader/cli.md
366
+ - docs/plugins/test/file_system_hdfs.md
367
+ - docs/plugins/test/mounts.md
368
+ - docs/plugins/test/idempotence.md
396
369
  - docs/plugins/test/orphan_files.md
370
+ - docs/plugins/test/github_ci.md
397
371
  - docs/plugins/test/veids.md
398
- - docs/plugins/test/executables.md
399
- - docs/plugins/test/ports.md
372
+ - docs/plugins/test/check_deploy_and_idempotence.md
400
373
  - docs/plugins/test/hostname.md
401
- - docs/plugins/test/divergence.md
402
- - docs/plugins/test/deploy_freshness.md
374
+ - docs/plugins/test/bitbucket_conf.md
403
375
  - docs/plugins/test/deploy_from_scratch.md
404
- - docs/plugins/test/can_be_checked.md
376
+ - docs/plugins/test/divergence.md
405
377
  - docs/plugins/test/check_from_scratch.md
406
- - docs/plugins/test/public_ips.md
407
- - docs/plugins/test/linear_strategy.md
408
- - docs/plugins/test/connection.md
409
- - docs/plugins/test/check_deploy_and_idempotence.md
378
+ - docs/plugins/test/deploy_removes_root_access.md
410
379
  - docs/plugins/test/file_system.md
411
- - docs/plugins/test/mounts.md
412
- - docs/plugins/test/local_users.md
380
+ - docs/plugins/test/spectre.md
381
+ - docs/plugins/test/vulnerabilities.md
382
+ - docs/plugins/test/ports.md
383
+ - docs/plugins/test/linear_strategy.md
413
384
  - docs/plugins/test/jenkins_ci_conf.md
385
+ - docs/plugins/test/can_be_checked.md
386
+ - docs/plugins/test/public_ips.md
387
+ - docs/plugins/test/connection.md
414
388
  - docs/plugins/test/jenkins_ci_masters_ok.md
415
- - docs/plugins/test/file_system_hdfs.md
416
- - docs/plugins/test/idempotence.md
417
- - docs/plugins/report/mediawiki.md
418
- - docs/plugins/report/stdout.md
419
- - docs/plugins/report/confluence.md
420
- - docs/plugins/test_report/stdout.md
389
+ - docs/plugins/test/deploy_freshness.md
390
+ - docs/plugins/test/executables.md
391
+ - docs/plugins/test/private_ips.md
392
+ - docs/plugins/test/ip.md
393
+ - docs/plugins/test/local_users.md
394
+ - docs/plugins/platform_handler/serverless_chef.md
395
+ - docs/plugins/platform_handler/yaml_inventory.md
421
396
  - docs/plugins/test_report/confluence.md
422
- - docs/plugins/connector/local.md
423
- - docs/plugins/connector/ssh.md
424
- - docs/plugins/action/interactive.md
425
- - docs/plugins/action/scp.md
426
- - docs/plugins/action/remote_bash.md
427
- - docs/plugins/action/ruby.md
428
- - docs/plugins/action/bash.md
429
- - docs/plugins/secrets_reader/cli.md
430
- - docs/plugins/secrets_reader/thycotic.md
431
- - docs/plugins/cmdb/host_ip.md
432
- - docs/plugins/cmdb/config.md
433
- - docs/plugins/cmdb/platform_handlers.md
434
- - docs/plugins/cmdb/host_keys.md
397
+ - docs/plugins/test_report/stdout.md
435
398
  - docs/config_dsl.md
436
- - examples/tutorial/05_extend_with_plugins/dev-servers-conf-repo/install-python.bash
437
- - examples/tutorial/05_extend_with_plugins/dev-servers-conf-repo/hosts.json
438
- - examples/tutorial/05_extend_with_plugins/dev-servers-conf-repo/install-gcc.bash
439
- - examples/tutorial/05_extend_with_plugins/my_hpc_plugins/lib/my_hpc_plugins/hpc_plugins/platform_handler/json_bash.rb
440
- - examples/tutorial/05_extend_with_plugins/my_hpc_plugins/lib/my_hpc_plugins/hpc_plugins/test/root_space.rb
441
- - examples/tutorial/05_extend_with_plugins/my_hpc_plugins/lib/my_hpc_plugins/hpc_plugins/report/web_report.rb
442
- - examples/tutorial/05_extend_with_plugins/my_hpc_plugins/my_hpc_plugins.gemspec
399
+ - docs/executables/free_veids.md
400
+ - docs/executables/last_deploys.md
401
+ - docs/executables/nodes_to_deploy.md
402
+ - docs/executables/topograph.md
403
+ - docs/executables/report.md
404
+ - docs/executables/get_impacted_nodes.md
405
+ - docs/executables/run.md
406
+ - docs/executables/deploy.md
407
+ - docs/executables/dump_nodes_json.md
408
+ - docs/executables/ssh_config.md
409
+ - docs/executables/test.md
410
+ - docs/executables/setup.md
411
+ - docs/executables/free_ips.md
412
+ - docs/executables/check-node.md
413
+ - docs/plugins_create.md
414
+ - docs/tutorial/01_installation.md
415
+ - docs/tutorial/04_test.md
416
+ - docs/tutorial/03_scale.md
417
+ - docs/tutorial/02_first_node.md
418
+ - docs/tutorial/05_extend_with_plugins.md
419
+ - docs/tutorial.md
420
+ - docs/api.md
421
+ - docs/executables.md
422
+ - docs/gen/mermaid/README.md-0.png
423
+ - docs/gen/mermaid/docs/executables/test.md-0.png
424
+ - docs/gen/mermaid/docs/executables/last_deploys.md-0.png
425
+ - docs/gen/mermaid/docs/executables/free_ips.md-0.png
426
+ - docs/gen/mermaid/docs/executables/deploy.md-0.png
427
+ - docs/gen/mermaid/docs/executables/check-node.md-0.png
428
+ - docs/gen/mermaid/docs/executables/get_impacted_nodes.md-0.png
429
+ - docs/gen/mermaid/docs/executables/setup.md-0.png
430
+ - docs/gen/mermaid/docs/executables/report.md-0.png
431
+ - docs/gen/mermaid/docs/executables/free_veids.md-0.png
432
+ - docs/gen/mermaid/docs/executables/ssh_config.md-0.png
433
+ - docs/gen/mermaid/docs/executables/nodes_to_deploy.md-0.png
434
+ - docs/gen/mermaid/docs/executables/run.md-0.png
435
+ - docs/plugins.md
436
+ - examples/tutorial/04_test/my-service-conf-repo/service_web-hello.rb
437
+ - examples/tutorial/04_test/my-service-conf-repo/service_my-service.rb
438
+ - examples/tutorial/04_test/my-service-conf-repo/my-service.conf.erb
439
+ - examples/tutorial/04_test/my-service-conf-repo/inventory.yaml
440
+ - examples/tutorial/04_test/my-platforms/hpc_config.rb
441
+ - examples/tutorial/04_test/my-platforms/Gemfile
442
+ - examples/tutorial/04_test/my-platforms/images/debian_10/Dockerfile
443
+ - examples/tutorial/04_test/my-platforms/my_commands.bash
444
+ - examples/tutorial/04_test/web_docker_image/hello_world.txt
445
+ - examples/tutorial/04_test/web_docker_image/test.bash
446
+ - examples/tutorial/04_test/web_docker_image/hpc_root.key.pub
447
+ - examples/tutorial/04_test/web_docker_image/Dockerfile
448
+ - examples/tutorial/04_test/web_docker_image/hpc_root.key
449
+ - examples/tutorial/04_test/web_docker_image/start.sh
450
+ - examples/tutorial/04_test/web_docker_image/main.go
451
+ - examples/tutorial/04_test/node/my-service.conf
452
+ - examples/tutorial/03_scale/my-service-conf-repo/service_web-hello.rb
453
+ - examples/tutorial/03_scale/my-service-conf-repo/service_my-service.rb
454
+ - examples/tutorial/03_scale/my-service-conf-repo/my-service.conf.erb
455
+ - examples/tutorial/03_scale/my-service-conf-repo/inventory.yaml
456
+ - examples/tutorial/03_scale/my-platforms/hpc_config.rb
457
+ - examples/tutorial/03_scale/my-platforms/Gemfile
458
+ - examples/tutorial/03_scale/my-platforms/my_commands.bash
459
+ - examples/tutorial/03_scale/web_docker_image/hello_world.txt
460
+ - examples/tutorial/03_scale/web_docker_image/test.bash
461
+ - examples/tutorial/03_scale/web_docker_image/hpc_root.key.pub
462
+ - examples/tutorial/03_scale/web_docker_image/Dockerfile
463
+ - examples/tutorial/03_scale/web_docker_image/hpc_root.key
464
+ - examples/tutorial/03_scale/web_docker_image/start.sh
465
+ - examples/tutorial/03_scale/web_docker_image/main.go
466
+ - examples/tutorial/03_scale/node/my-service.conf
443
467
  - examples/tutorial/05_extend_with_plugins/my-service-conf-repo/service_web-hello.rb
444
- - examples/tutorial/05_extend_with_plugins/my-service-conf-repo/my-service.conf.erb
445
468
  - examples/tutorial/05_extend_with_plugins/my-service-conf-repo/service_my-service.rb
469
+ - examples/tutorial/05_extend_with_plugins/my-service-conf-repo/my-service.conf.erb
446
470
  - examples/tutorial/05_extend_with_plugins/my-service-conf-repo/inventory.yaml
447
471
  - examples/tutorial/05_extend_with_plugins/my-platforms/hpc_config.rb
448
472
  - examples/tutorial/05_extend_with_plugins/my-platforms/Gemfile
449
- - examples/tutorial/05_extend_with_plugins/my-platforms/my_commands.bash
450
473
  - examples/tutorial/05_extend_with_plugins/my-platforms/images/debian_10/Dockerfile
474
+ - examples/tutorial/05_extend_with_plugins/my-platforms/my_commands.bash
451
475
  - examples/tutorial/05_extend_with_plugins/dev_docker_image/hpc_root.key.pub
452
476
  - examples/tutorial/05_extend_with_plugins/dev_docker_image/Dockerfile
453
477
  - examples/tutorial/05_extend_with_plugins/dev_docker_image/hpc_root.key
454
- - examples/tutorial/05_extend_with_plugins/node/my-service.conf
478
+ - examples/tutorial/05_extend_with_plugins/web_docker_image/hello_world.txt
479
+ - examples/tutorial/05_extend_with_plugins/web_docker_image/test.bash
455
480
  - examples/tutorial/05_extend_with_plugins/web_docker_image/hpc_root.key.pub
456
- - examples/tutorial/05_extend_with_plugins/web_docker_image/main.go
457
- - examples/tutorial/05_extend_with_plugins/web_docker_image/start.sh
458
481
  - examples/tutorial/05_extend_with_plugins/web_docker_image/Dockerfile
459
482
  - examples/tutorial/05_extend_with_plugins/web_docker_image/hpc_root.key
460
- - examples/tutorial/05_extend_with_plugins/web_docker_image/test.bash
461
- - examples/tutorial/05_extend_with_plugins/web_docker_image/hello_world.txt
462
- - examples/tutorial/02_first_node/my-service-conf-repo/my-service.conf.erb
483
+ - examples/tutorial/05_extend_with_plugins/web_docker_image/start.sh
484
+ - examples/tutorial/05_extend_with_plugins/web_docker_image/main.go
485
+ - examples/tutorial/05_extend_with_plugins/dev-servers-conf-repo/hosts.json
486
+ - examples/tutorial/05_extend_with_plugins/dev-servers-conf-repo/install-gcc.bash
487
+ - examples/tutorial/05_extend_with_plugins/dev-servers-conf-repo/install-python.bash
488
+ - examples/tutorial/05_extend_with_plugins/my_hpc_plugins/lib/my_hpc_plugins/hpc_plugins/report/web_report.rb
489
+ - examples/tutorial/05_extend_with_plugins/my_hpc_plugins/lib/my_hpc_plugins/hpc_plugins/test/root_space.rb
490
+ - examples/tutorial/05_extend_with_plugins/my_hpc_plugins/lib/my_hpc_plugins/hpc_plugins/platform_handler/json_bash.rb
491
+ - examples/tutorial/05_extend_with_plugins/my_hpc_plugins/my_hpc_plugins.gemspec
492
+ - examples/tutorial/05_extend_with_plugins/node/my-service.conf
463
493
  - examples/tutorial/02_first_node/my-service-conf-repo/service_my-service.rb
494
+ - examples/tutorial/02_first_node/my-service-conf-repo/my-service.conf.erb
464
495
  - examples/tutorial/02_first_node/my-service-conf-repo/inventory.yaml
465
496
  - examples/tutorial/02_first_node/my-platforms/hpc_config.rb
466
497
  - examples/tutorial/02_first_node/my-platforms/Gemfile
467
498
  - examples/tutorial/02_first_node/node/my-service.conf
468
499
  - examples/tutorial/01_installation/my-platforms/hpc_config.rb
469
500
  - examples/tutorial/01_installation/my-platforms/Gemfile
470
- - examples/tutorial/04_test/my-service-conf-repo/service_web-hello.rb
471
- - examples/tutorial/04_test/my-service-conf-repo/my-service.conf.erb
472
- - examples/tutorial/04_test/my-service-conf-repo/service_my-service.rb
473
- - examples/tutorial/04_test/my-service-conf-repo/inventory.yaml
474
- - examples/tutorial/04_test/my-platforms/hpc_config.rb
475
- - examples/tutorial/04_test/my-platforms/Gemfile
476
- - examples/tutorial/04_test/my-platforms/my_commands.bash
477
- - examples/tutorial/04_test/my-platforms/images/debian_10/Dockerfile
478
- - examples/tutorial/04_test/node/my-service.conf
479
- - examples/tutorial/04_test/web_docker_image/hpc_root.key.pub
480
- - examples/tutorial/04_test/web_docker_image/main.go
481
- - examples/tutorial/04_test/web_docker_image/start.sh
482
- - examples/tutorial/04_test/web_docker_image/Dockerfile
483
- - examples/tutorial/04_test/web_docker_image/hpc_root.key
484
- - examples/tutorial/04_test/web_docker_image/test.bash
485
- - examples/tutorial/04_test/web_docker_image/hello_world.txt
486
- - examples/tutorial/03_scale/my-service-conf-repo/service_web-hello.rb
487
- - examples/tutorial/03_scale/my-service-conf-repo/my-service.conf.erb
488
- - examples/tutorial/03_scale/my-service-conf-repo/service_my-service.rb
489
- - examples/tutorial/03_scale/my-service-conf-repo/inventory.yaml
490
- - examples/tutorial/03_scale/my-platforms/hpc_config.rb
491
- - examples/tutorial/03_scale/my-platforms/Gemfile
492
- - examples/tutorial/03_scale/my-platforms/my_commands.bash
493
- - examples/tutorial/03_scale/node/my-service.conf
494
- - examples/tutorial/03_scale/web_docker_image/hpc_root.key.pub
495
- - examples/tutorial/03_scale/web_docker_image/main.go
496
- - examples/tutorial/03_scale/web_docker_image/start.sh
497
- - examples/tutorial/03_scale/web_docker_image/Dockerfile
498
- - examples/tutorial/03_scale/web_docker_image/hpc_root.key
499
- - examples/tutorial/03_scale/web_docker_image/test.bash
500
- - examples/tutorial/03_scale/web_docker_image/hello_world.txt
501
501
  - examples/localhost/hpc_config.rb
502
502
  - examples/localhost/Gemfile
503
503
  - examples/localhost/inventory.yaml
@@ -695,6 +695,7 @@ files:
695
695
  - lib/hybrid_platforms_conductor/config.rb
696
696
  - lib/hybrid_platforms_conductor/confluence.rb
697
697
  - lib/hybrid_platforms_conductor/connector.rb
698
+ - lib/hybrid_platforms_conductor/core_extensions/cleanroom/fix_kwargs.rb
698
699
  - lib/hybrid_platforms_conductor/core_extensions/symbol/zero.rb
699
700
  - lib/hybrid_platforms_conductor/credentials.rb
700
701
  - lib/hybrid_platforms_conductor/current_dir_monitor.rb