hybrid_platforms_conductor 33.0.1 → 33.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -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