hybrid_platforms_conductor 32.15.0 → 32.16.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +54 -0
- data/lib/hybrid_platforms_conductor/cmd_runner.rb +13 -1
- data/lib/hybrid_platforms_conductor/connector.rb +4 -2
- data/lib/hybrid_platforms_conductor/deployer.rb +1 -1
- data/lib/hybrid_platforms_conductor/hpc_plugins/connector/local.rb +1 -1
- data/lib/hybrid_platforms_conductor/hpc_plugins/connector/ssh.rb +3 -3
- data/lib/hybrid_platforms_conductor/hpc_plugins/platform_handler/serverless_chef.rb +7 -7
- data/lib/hybrid_platforms_conductor/hpc_plugins/provisioner/podman.rb +1 -1
- data/lib/hybrid_platforms_conductor/hpc_plugins/test/check_deploy_and_idempotence.rb +1 -1
- data/lib/hybrid_platforms_conductor/hpc_plugins/test/deploy_removes_root_access.rb +1 -1
- data/lib/hybrid_platforms_conductor/version.rb +1 -1
- data/spec/hybrid_platforms_conductor_test/api/actions_executor/connectors/ssh/connections_spec.rb +3 -3
- data/spec/hybrid_platforms_conductor_test/api/cmd_runner_spec.rb +7 -0
- data/spec/hybrid_platforms_conductor_test/api/deployer/provisioner_spec.rb +4 -4
- data/spec/hybrid_platforms_conductor_test/api/platform_handlers/serverless_chef/packaging_spec.rb +3 -2
- data/spec/hybrid_platforms_conductor_test/helpers/cmd_runner_helpers.rb +1 -1
- data/spec/hybrid_platforms_conductor_test/helpers/connector_ssh_helpers.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0d7b0039bca37d75c4f4893286370ca04ab72861b2c219b8199531dab80464fc
|
4
|
+
data.tar.gz: 4189e8181aad10e14ba60d325572ae85932718ff8d21506ad3374e07272b43f9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 38bc2f04b0f5c165ad61a3f402a9312b9d7bb596e7c828e19090e9f292c0fde28f6b4d00043e28d0bf840d4c842446d4899197fd379c43fa86bc1a461a5d1adc
|
7
|
+
data.tar.gz: c2188e0919f5c943905ff7384ab67c242169cd4182cdc61356b1be2c8bb7cc93a9e4fc88a9426fd2cb7a95b16ba9d477fbf253166ec8aa4a716f42fdd1e3e32b
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,57 @@
|
|
1
|
+
# [v32.16.4](https://github.com/sweet-delights/hybrid-platforms-conductor/compare/v32.16.3...v32.16.4) (2021-06-01 13:25:19)
|
2
|
+
|
3
|
+
### Patches
|
4
|
+
|
5
|
+
* [[Hotfix] Fixed boolean values incorrectly used as strings](https://github.com/sweet-delights/hybrid-platforms-conductor/commit/a107f3e0fe4c1512ce7607a303fdf0753d92ddac)
|
6
|
+
|
7
|
+
# [v32.16.3](https://github.com/sweet-delights/hybrid-platforms-conductor/compare/v32.16.2...v32.16.3) (2021-06-01 11:19:50)
|
8
|
+
|
9
|
+
## Global changes
|
10
|
+
### Patches
|
11
|
+
|
12
|
+
* [[Hotfix(platform_handler_serverless_chef)] Fix Chef packaging missing licenses accept](https://github.com/sweet-delights/hybrid-platforms-conductor/commit/69eafc1b23f77de65ba0dd68e5adb7fafb58157e)
|
13
|
+
|
14
|
+
## Changes for platform_handler_serverless_chef
|
15
|
+
### Patches
|
16
|
+
|
17
|
+
* [[Hotfix(platform_handler_serverless_chef)] Fix Chef packaging missing licenses accept](https://github.com/sweet-delights/hybrid-platforms-conductor/commit/69eafc1b23f77de65ba0dd68e5adb7fafb58157e)
|
18
|
+
|
19
|
+
# [v32.16.2](https://github.com/sweet-delights/hybrid-platforms-conductor/compare/v32.16.1...v32.16.2) (2021-06-01 09:52:22)
|
20
|
+
|
21
|
+
## Global changes
|
22
|
+
### Patches
|
23
|
+
|
24
|
+
* [[Hotfix(platform_handler_serverless_chef)] Fix Chef Workstation bash steps when run by root](https://github.com/sweet-delights/hybrid-platforms-conductor/commit/1d99d1faa9cf66cd607eacc00205e312fd589715)
|
25
|
+
|
26
|
+
## Changes for platform_handler_serverless_chef
|
27
|
+
### Patches
|
28
|
+
|
29
|
+
* [[Hotfix(platform_handler_serverless_chef)] Fix Chef Workstation bash steps when run by root](https://github.com/sweet-delights/hybrid-platforms-conductor/commit/1d99d1faa9cf66cd607eacc00205e312fd589715)
|
30
|
+
|
31
|
+
# [v32.16.1](https://github.com/sweet-delights/hybrid-platforms-conductor/compare/v32.16.0...v32.16.1) (2021-06-01 09:21:47)
|
32
|
+
|
33
|
+
## Global changes
|
34
|
+
### Patches
|
35
|
+
|
36
|
+
* [[Hotfix(platform_handler_serverless_chef)] Fix Chef Workstation installation step](https://github.com/sweet-delights/hybrid-platforms-conductor/commit/58320d5394fec3bca9e1d0ffaf06ade42f1fd160)
|
37
|
+
|
38
|
+
## Changes for platform_handler_serverless_chef
|
39
|
+
### Patches
|
40
|
+
|
41
|
+
* [[Hotfix(platform_handler_serverless_chef)] Fix Chef Workstation installation step](https://github.com/sweet-delights/hybrid-platforms-conductor/commit/58320d5394fec3bca9e1d0ffaf06ade42f1fd160)
|
42
|
+
|
43
|
+
# [v32.16.0](https://github.com/sweet-delights/hybrid-platforms-conductor/compare/v32.15.0...v32.16.0) (2021-05-31 17:55:49)
|
44
|
+
|
45
|
+
## Global changes
|
46
|
+
### Patches
|
47
|
+
|
48
|
+
* [[Feature(cmd_runner)] Add option to force bash usage in run_cmd](https://github.com/sweet-delights/hybrid-platforms-conductor/commit/0711f1f33fc8f282b925726e0631ae78bf1337b5)
|
49
|
+
|
50
|
+
## Changes for cmd_runner
|
51
|
+
### Features
|
52
|
+
|
53
|
+
* [[Feature(cmd_runner)] Add option to force bash usage in run_cmd](https://github.com/sweet-delights/hybrid-platforms-conductor/commit/0711f1f33fc8f282b925726e0631ae78bf1337b5)
|
54
|
+
|
1
55
|
# [v32.15.0](https://github.com/sweet-delights/hybrid-platforms-conductor/compare/v32.14.0...v32.15.0) (2021-05-31 14:43:32)
|
2
56
|
|
3
57
|
## Global changes
|
@@ -1,4 +1,5 @@
|
|
1
1
|
require 'logger'
|
2
|
+
require 'tempfile'
|
2
3
|
require 'tty-command'
|
3
4
|
require 'hybrid_platforms_conductor/logger_helpers'
|
4
5
|
require 'hybrid_platforms_conductor/io_router'
|
@@ -66,6 +67,7 @@ module HybridPlatformsConductor
|
|
66
67
|
# * *timeout*: The command ended in timeout
|
67
68
|
# * *timeout* (Integer or nil): Timeout to apply for the command to be run, or nil for no timeout [default: nil]
|
68
69
|
# * *no_exception* (Boolean): If true, don't throw exception in case of error [default: false]
|
70
|
+
# * *force_bash* (Boolean): If true, then make sure command is invoked with bash instead of sh [default: false]
|
69
71
|
# Result::
|
70
72
|
# * Integer or Symbol: Exit status of the command, or Symbol in case of error. In case of dry-run mode the expected code is returned without executing anything.
|
71
73
|
# * String: Standard output of the command
|
@@ -78,7 +80,8 @@ module HybridPlatformsConductor
|
|
78
80
|
log_stderr_to_io: nil,
|
79
81
|
expected_code: 0,
|
80
82
|
timeout: nil,
|
81
|
-
no_exception: false
|
83
|
+
no_exception: false,
|
84
|
+
force_bash: false
|
82
85
|
)
|
83
86
|
expected_code = [expected_code] unless expected_code.is_a?(Array)
|
84
87
|
if @dry_run
|
@@ -101,6 +104,14 @@ module HybridPlatformsConductor
|
|
101
104
|
nil
|
102
105
|
end
|
103
106
|
start_time = Time.now if log_debug?
|
107
|
+
bash_file = nil
|
108
|
+
if force_bash
|
109
|
+
bash_file = Tempfile.new('hpc_bash')
|
110
|
+
bash_file.write(cmd)
|
111
|
+
bash_file.chmod 0700
|
112
|
+
bash_file.close
|
113
|
+
cmd = "/bin/bash -c #{bash_file.path}"
|
114
|
+
end
|
104
115
|
begin
|
105
116
|
# Make sure we keep a trace of stdout and stderr, even if it was not asked, just to use it in case of exceptions raised
|
106
117
|
cmd_result_stdout = ''
|
@@ -141,6 +152,7 @@ module HybridPlatformsConductor
|
|
141
152
|
cmd_stderr = "#{cmd_result_stderr.empty? ? '' : "#{cmd_result_stderr}\n"}#{$!}\n#{$!.backtrace.join("\n")}"
|
142
153
|
ensure
|
143
154
|
file_output.close unless file_output.nil?
|
155
|
+
bash_file.unlink unless bash_file.nil?
|
144
156
|
end
|
145
157
|
if log_debug?
|
146
158
|
elapsed = Time.now - start_time
|
@@ -65,17 +65,19 @@ module HybridPlatformsConductor
|
|
65
65
|
#
|
66
66
|
# Parameters::
|
67
67
|
# * *cmd* (String): The command to be run
|
68
|
+
# * *force_bash* (Boolean): If true, then make sure command is invoked with bash instead of sh [default: false]
|
68
69
|
# Result::
|
69
70
|
# * Integer: Exit code
|
70
71
|
# * String: Standard output
|
71
72
|
# * String: Error output
|
72
|
-
def run_cmd(cmd)
|
73
|
+
def run_cmd(cmd, force_bash: false)
|
73
74
|
@cmd_runner.run_cmd(
|
74
75
|
cmd,
|
75
76
|
timeout: @timeout,
|
76
77
|
log_to_stdout: false,
|
77
78
|
log_stdout_to_io: @stdout_io,
|
78
|
-
log_stderr_to_io: @stderr_io
|
79
|
+
log_stderr_to_io: @stderr_io,
|
80
|
+
force_bash: force_bash
|
79
81
|
)
|
80
82
|
end
|
81
83
|
|
@@ -319,7 +319,7 @@ module HybridPlatformsConductor
|
|
319
319
|
)
|
320
320
|
instance.with_running_instance(stop_on_exit: true, destroy_on_exit: !reuse_instance, port: 22) do
|
321
321
|
# Test-provisioned nodes have SSH Session Exec capabilities and are not local
|
322
|
-
sub_executable.nodes_handler.override_metadata_of node, :ssh_session_exec,
|
322
|
+
sub_executable.nodes_handler.override_metadata_of node, :ssh_session_exec, true
|
323
323
|
sub_executable.nodes_handler.override_metadata_of node, :local_node, false
|
324
324
|
# Test-provisioned nodes use default sudo
|
325
325
|
sub_executable.config.sudo_procs.replace(sub_executable.config.sudo_procs.map do |sudo_proc_info|
|
@@ -37,7 +37,7 @@ module HybridPlatformsConductor
|
|
37
37
|
# Parameters::
|
38
38
|
# * *bash_cmds* (String): Bash commands to execute
|
39
39
|
def remote_bash(bash_cmds)
|
40
|
-
run_cmd "cd #{workspace_for(@node)} ; #{bash_cmds}"
|
40
|
+
run_cmd "cd #{workspace_for(@node)} ; #{bash_cmds}", force_bash: true
|
41
41
|
end
|
42
42
|
|
43
43
|
# Execute an interactive shell on the remote node
|
@@ -238,7 +238,7 @@ module HybridPlatformsConductor
|
|
238
238
|
# * *bash_cmds* (String): Bash commands to execute
|
239
239
|
def remote_bash(bash_cmds)
|
240
240
|
ssh_cmd =
|
241
|
-
if @nodes_handler.get_ssh_session_exec_of(@node) ==
|
241
|
+
if @nodes_handler.get_ssh_session_exec_of(@node) == false
|
242
242
|
# When ExecSession is disabled we need to use stdin directly
|
243
243
|
"{ cat | #{ssh_exec} #{ssh_url} -T; } <<'HPC_EOF'\n#{bash_cmds}\nHPC_EOF"
|
244
244
|
else
|
@@ -300,7 +300,7 @@ module HybridPlatformsConductor
|
|
300
300
|
# * *owner* (String or nil): Owner to be used when copying the files, or nil for current one [default: nil]
|
301
301
|
# * *group* (String or nil): Group to be used when copying the files, or nil for current one [default: nil]
|
302
302
|
def remote_copy(from, to, sudo: false, owner: nil, group: nil)
|
303
|
-
if @nodes_handler.get_ssh_session_exec_of(@node) ==
|
303
|
+
if @nodes_handler.get_ssh_session_exec_of(@node) == false
|
304
304
|
# We don't have ExecSession, so don't use ssh, but scp instead.
|
305
305
|
if sudo
|
306
306
|
# We need to first copy the file in an accessible directory, and then sudo mv
|
@@ -513,7 +513,7 @@ module HybridPlatformsConductor
|
|
513
513
|
if current_users.empty?
|
514
514
|
log_debug "[ ControlMaster - #{ssh_url} ] - Creating SSH ControlMaster..."
|
515
515
|
exit_status = nil
|
516
|
-
if @nodes_handler.get_ssh_session_exec_of(node) ==
|
516
|
+
if @nodes_handler.get_ssh_session_exec_of(node) == false
|
517
517
|
# Here we have to create a ControlMaster using an interactive session, as the SSH server prohibits ExecSession, and so command executions.
|
518
518
|
# We'll do that using another terminal spawned in the background.
|
519
519
|
if ENV['hpc_interactive'] == 'false'
|
@@ -75,16 +75,16 @@ module HybridPlatformsConductor
|
|
75
75
|
def setup
|
76
76
|
required_version = YAML.load_file("#{@repository_path}/chef_versions.yml")['workstation']
|
77
77
|
Bundler.with_unbundled_env do
|
78
|
-
exit_status, stdout, _stderr = @cmd_runner.run_cmd '/opt/chef-workstation/bin/chef --version', expected_code: [0,
|
78
|
+
exit_status, stdout, _stderr = @cmd_runner.run_cmd '/opt/chef-workstation/bin/chef --version', expected_code: [0, :command_error]
|
79
79
|
existing_version =
|
80
|
-
if exit_status ==
|
80
|
+
if exit_status == :command_error
|
81
81
|
'not installed'
|
82
82
|
else
|
83
83
|
expected_match = stdout.match(/^Chef Workstation version: (.+)\.\d+$/)
|
84
84
|
expected_match.nil? ? 'unreadable' : expected_match[1]
|
85
85
|
end
|
86
86
|
log_debug "Current Chef version: #{existing_version}. Required version: #{required_version}"
|
87
|
-
@cmd_runner.run_cmd "curl -L https://omnitruck.chef.io/install.sh | sudo bash -s -- -P chef-workstation -v #{required_version}" unless existing_version == required_version
|
87
|
+
@cmd_runner.run_cmd "curl -L https://omnitruck.chef.io/install.sh | #{@cmd_runner.root? ? '' : 'sudo '}bash -s -- -P chef-workstation -v #{required_version}" unless existing_version == required_version
|
88
88
|
end
|
89
89
|
end
|
90
90
|
|
@@ -175,11 +175,11 @@ module HybridPlatformsConductor
|
|
175
175
|
end
|
176
176
|
lock_file = "#{File.dirname(policy_file)}/#{File.basename(policy_file, '.rb')}.lock.json"
|
177
177
|
# If the policy lock file does not exist, generate it
|
178
|
-
@cmd_runner.run_cmd "cd #{@repository_path} && /opt/chef-workstation/bin/chef install #{policy_file}" unless File.exist?("#{@repository_path}/#{lock_file}")
|
178
|
+
@cmd_runner.run_cmd "cd #{@repository_path} && /opt/chef-workstation/bin/chef install #{policy_file} --chef-license accept" unless File.exist?("#{@repository_path}/#{lock_file}")
|
179
179
|
extra_cp_data_bags = File.exist?("#{@repository_path}/data_bags") ? " && cp -ar data_bags/ #{package_dir}/" : ''
|
180
180
|
@cmd_runner.run_cmd "cd #{@repository_path} && \
|
181
|
-
sudo rm -rf #{package_dir} && \
|
182
|
-
/opt/chef-workstation/bin/chef export #{policy_file} #{package_dir}#{extra_cp_data_bags}"
|
181
|
+
#{@cmd_runner.root? ? '' : 'sudo '}rm -rf #{package_dir} && \
|
182
|
+
/opt/chef-workstation/bin/chef export #{policy_file} #{package_dir} --chef-license accept#{extra_cp_data_bags}"
|
183
183
|
end
|
184
184
|
unless @cmd_runner.dry_run
|
185
185
|
# Create secrets file
|
@@ -236,7 +236,7 @@ module HybridPlatformsConductor
|
|
236
236
|
client_options << '--why-run' if use_why_run
|
237
237
|
if @nodes_handler.get_use_local_chef_of(node)
|
238
238
|
# Just run the chef-client directly from the packaged repository
|
239
|
-
[{ bash: "cd #{package_dir} && sudo SSL_CERT_DIR=/etc/ssl/certs /opt/chef-workstation/bin/chef-client #{client_options.join(' ')}" }]
|
239
|
+
[{ bash: "cd #{package_dir} && #{@cmd_runner.root? ? '' : 'sudo '}SSL_CERT_DIR=/etc/ssl/certs /opt/chef-workstation/bin/chef-client #{client_options.join(' ')}" }]
|
240
240
|
else
|
241
241
|
# Upload the package and run it from the node
|
242
242
|
package_name = File.basename(package_dir)
|
@@ -112,7 +112,7 @@ module HybridPlatformsConductor
|
|
112
112
|
# Result::
|
113
113
|
# * String: The Podman command
|
114
114
|
def podman_cmd
|
115
|
-
@podman_cmd = @cmd_runner.root? ? '
|
115
|
+
@podman_cmd = "#{@cmd_runner.root? ? '' : 'sudo '}podman" unless defined?(@podman_cmd)
|
116
116
|
@podman_cmd
|
117
117
|
end
|
118
118
|
|
@@ -54,7 +54,7 @@ module HybridPlatformsConductor
|
|
54
54
|
instance.stop
|
55
55
|
instance.with_running_instance(port: 22) do
|
56
56
|
|
57
|
-
unless @nodes_handler.get_root_access_allowed_of(@node)
|
57
|
+
unless @nodes_handler.get_root_access_allowed_of(@node)
|
58
58
|
# ===== Deploy removes root access
|
59
59
|
# Check that we can't connect with root
|
60
60
|
ssh_ok = false
|
@@ -12,7 +12,7 @@ module HybridPlatformsConductor
|
|
12
12
|
|
13
13
|
# Check my_test_plugin.rb.sample documentation for signature details.
|
14
14
|
def test_for_node
|
15
|
-
unless @nodes_handler.get_root_access_allowed_of(@node)
|
15
|
+
unless @nodes_handler.get_root_access_allowed_of(@node)
|
16
16
|
@deployer.with_test_provisioned_instance(@config.tests_provisioner_id, @node, environment: 'deploy_removes_root_access', reuse_instance: log_debug?) do |deployer, instance|
|
17
17
|
# Check that we can connect with root
|
18
18
|
ssh_ok = false
|
data/spec/hybrid_platforms_conductor_test/api/actions_executor/connectors/ssh/connections_spec.rb
CHANGED
@@ -29,7 +29,7 @@ describe HybridPlatformsConductor::ActionsExecutor do
|
|
29
29
|
end
|
30
30
|
|
31
31
|
it 'creates an SSH master to 1 node not having Session Exec capabilities' do
|
32
|
-
with_test_platform(nodes: { 'node' => { meta: { host_ip: '192.168.42.42', ssh_session_exec:
|
32
|
+
with_test_platform(nodes: { 'node' => { meta: { host_ip: '192.168.42.42', ssh_session_exec: false } } }) do
|
33
33
|
with_cmd_runner_mocked(
|
34
34
|
[
|
35
35
|
['which env', proc { [0, "/usr/bin/env\n", ''] }],
|
@@ -45,7 +45,7 @@ describe HybridPlatformsConductor::ActionsExecutor do
|
|
45
45
|
end
|
46
46
|
|
47
47
|
it 'can\'t create an SSH master to 1 node not having Session Exec capabilities when hpc_interactive is false' do
|
48
|
-
with_test_platform(nodes: { 'node' => { meta: { host_ip: '192.168.42.42', ssh_session_exec:
|
48
|
+
with_test_platform(nodes: { 'node' => { meta: { host_ip: '192.168.42.42', ssh_session_exec: false } } }) do
|
49
49
|
ENV['hpc_interactive'] = 'false'
|
50
50
|
with_cmd_runner_mocked(
|
51
51
|
[
|
@@ -69,7 +69,7 @@ describe HybridPlatformsConductor::ActionsExecutor do
|
|
69
69
|
it 'fails without creating exception when creating an SSH master to 1 node not having Session Exec capabilities when hpc_interactive is false and we use no_exception' do
|
70
70
|
with_test_platform(nodes: {
|
71
71
|
'node1' => { meta: { host_ip: '192.168.42.1' } },
|
72
|
-
'node2' => { meta: { host_ip: '192.168.42.2', ssh_session_exec:
|
72
|
+
'node2' => { meta: { host_ip: '192.168.42.2', ssh_session_exec: false } },
|
73
73
|
'node3' => { meta: { host_ip: '192.168.42.3' } }
|
74
74
|
}) do
|
75
75
|
ENV['hpc_interactive'] = 'false'
|
@@ -13,6 +13,13 @@ describe HybridPlatformsConductor::CmdRunner do
|
|
13
13
|
end
|
14
14
|
end
|
15
15
|
|
16
|
+
it 'runs a simple bash command and forces usage of bash' do
|
17
|
+
with_repository do |repository|
|
18
|
+
# Use set -o pipefail that does not work in /bin/sh
|
19
|
+
expect(test_cmd_runner.run_cmd "set -o pipefail ; echo TestStderr 1>&2 ; echo TestStdout", force_bash: true).to eq [0, "TestStdout\n", "TestStderr\n"]
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
16
23
|
it 'runs a simple bash command and logs stdout and stderr to a file' do
|
17
24
|
with_repository do |repository|
|
18
25
|
test_cmd_runner.run_cmd "echo TestStderr 1>&2 ; sleep 1 ; echo TestStdout", log_to_file: "#{repository}/test_file"
|
@@ -54,8 +54,8 @@ describe HybridPlatformsConductor::Deployer do
|
|
54
54
|
with_test_platform(
|
55
55
|
{
|
56
56
|
nodes: {
|
57
|
-
'node1' => { meta: { host_ip: '192.168.42.1', ssh_session_exec:
|
58
|
-
'node2' => { meta: { host_ip: '192.168.42.2', ssh_session_exec:
|
57
|
+
'node1' => { meta: { host_ip: '192.168.42.1', ssh_session_exec: false } },
|
58
|
+
'node2' => { meta: { host_ip: '192.168.42.2', ssh_session_exec: false } }
|
59
59
|
}
|
60
60
|
},
|
61
61
|
false,
|
@@ -75,8 +75,8 @@ describe HybridPlatformsConductor::Deployer do
|
|
75
75
|
block.call
|
76
76
|
end
|
77
77
|
test_deployer.with_test_provisioned_instance(:test_provisioner, 'node1', environment: 'hpc_testing_provisioner') do |sub_test_deployer, test_instance|
|
78
|
-
expect(sub_test_deployer.instance_eval { @nodes_handler.get_ssh_session_exec_of('node1') }).to eq
|
79
|
-
expect(sub_test_deployer.instance_eval { @nodes_handler.get_ssh_session_exec_of('node2') }).to eq
|
78
|
+
expect(sub_test_deployer.instance_eval { @nodes_handler.get_ssh_session_exec_of('node1') }).to eq true
|
79
|
+
expect(sub_test_deployer.instance_eval { @nodes_handler.get_ssh_session_exec_of('node2') }).to eq false
|
80
80
|
ssh_transforms = test_instance.instance_eval { @config.ssh_connection_transforms }
|
81
81
|
expect(ssh_transforms.size).to eq 1
|
82
82
|
expect(ssh_transforms[0][:nodes_selectors_stack]).to eq [%w[node2]]
|
data/spec/hybrid_platforms_conductor_test/api/platform_handlers/serverless_chef/packaging_spec.rb
CHANGED
@@ -26,7 +26,7 @@ describe HybridPlatformsConductor::HpcPlugins::PlatformHandler::ServerlessChef d
|
|
26
26
|
if install
|
27
27
|
[
|
28
28
|
[
|
29
|
-
"cd #{repository} && /opt/chef-workstation/bin/chef install #{policy_file}",
|
29
|
+
"cd #{repository} && /opt/chef-workstation/bin/chef install #{policy_file} --chef-license accept",
|
30
30
|
proc do
|
31
31
|
# Mock the run_list stored in the lock file
|
32
32
|
File.write(
|
@@ -44,8 +44,9 @@ describe HybridPlatformsConductor::HpcPlugins::PlatformHandler::ServerlessChef d
|
|
44
44
|
end +
|
45
45
|
if export
|
46
46
|
[
|
47
|
+
['whoami', proc { [0, 'test_user', ''] }, { optional: true }],
|
47
48
|
[
|
48
|
-
/^cd #{Regexp.escape(repository)} &&\s+sudo rm -rf dist\/#{Regexp.escape(env)}\/#{Regexp.escape(policy)} &&\s+\/opt\/chef-workstation\/bin\/chef export #{Regexp.escape(policy_file)} dist\/#{Regexp.escape(env)}\/#{Regexp.escape(policy)}#{data_bags ? " && cp -ar data_bags/ dist/#{Regexp.escape(env)}/#{Regexp.escape(policy)}/" : ''}$/,
|
49
|
+
/^cd #{Regexp.escape(repository)} &&\s+sudo rm -rf dist\/#{Regexp.escape(env)}\/#{Regexp.escape(policy)} &&\s+\/opt\/chef-workstation\/bin\/chef export #{Regexp.escape(policy_file)} dist\/#{Regexp.escape(env)}\/#{Regexp.escape(policy)} --chef-license accept#{data_bags ? " && cp -ar data_bags/ dist/#{Regexp.escape(env)}/#{Regexp.escape(policy)}/" : ''}$/,
|
49
50
|
proc do
|
50
51
|
FileUtils.mkdir_p "#{repository}/dist/#{env}/#{policy}"
|
51
52
|
FileUtils.cp_r("#{repository}/data_bags", "#{repository}/dist/#{env}/#{policy}/") if data_bags
|
@@ -31,7 +31,7 @@ module HybridPlatformsConductorTest
|
|
31
31
|
end
|
32
32
|
# We need to protect the access to this array as the mocked commands can be called by competing threads
|
33
33
|
remaining_expected_commands_mutex = Mutex.new
|
34
|
-
allow(cmd_runner).to receive(:run_cmd) do |cmd, log_to_file: nil, log_to_stdout: true, log_stdout_to_io: nil, log_stderr_to_io: nil, expected_code: 0, timeout: nil, no_exception: false|
|
34
|
+
allow(cmd_runner).to receive(:run_cmd) do |cmd, log_to_file: nil, log_to_stdout: true, log_stdout_to_io: nil, log_stderr_to_io: nil, expected_code: 0, timeout: nil, no_exception: false, force_bash: false|
|
35
35
|
# Check the remaining expected commands
|
36
36
|
found_command = nil
|
37
37
|
found_command_code = nil
|
@@ -136,7 +136,7 @@ module HybridPlatformsConductorTest
|
|
136
136
|
session_exec: true
|
137
137
|
)
|
138
138
|
with_test_platform(
|
139
|
-
{ nodes: { 'node' => { meta: { host_ip: '192.168.42.42', ssh_session_exec: session_exec
|
139
|
+
{ nodes: { 'node' => { meta: { host_ip: '192.168.42.42', ssh_session_exec: session_exec } } } },
|
140
140
|
false,
|
141
141
|
additional_config
|
142
142
|
) do
|
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: 32.
|
4
|
+
version: 32.16.4
|
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-
|
11
|
+
date: 2021-06-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: range_operators
|