smart_proxy_remote_execution_ssh 0.5.0 → 0.5.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: e2f91ec259ca105bcc18a5cecf4342019f4023d44cbff5695998b5e57c25e325
4
- data.tar.gz: 51ccf299324d4adf10c07475dca2749d885c258913c8d9e7593d8b8149e6d18d
3
+ metadata.gz: abf6517f6a98386e246650454c7deb049b7583c7653040eb63bbdf8e3cc27f0a
4
+ data.tar.gz: 12b0aa0d067e45c73ee65286f69d1556f7ae8b1c47624845e1e0a7e96c341e95
5
5
  SHA512:
6
- metadata.gz: 74313e91e51ff5d58fce0bc880131b12984a750110a2d76c88875a6b824eec40a2ba9d7336dfda34df7c11d465ded62c14d4d33ba10cf4bed1b2e0309aff9a2b
7
- data.tar.gz: 92f85e971f10d9e45418e75d0325f3e548e65954160be9f86cb154adde6bc3a512b4e3a5429d162291704b49a50a5570fcdeb4b129f735b8f8f737938a0194d0
6
+ metadata.gz: f873d27dc9b5ba0b9c10d7d227058618d901a48643ba31e491e1530b34356aa88ac8a197e9731d83a2a535ffa7577ba674578af8b90de3d02f7537d6359063d5
7
+ data.tar.gz: d72dfc490d0f71a076885eeabf435a89bca3658ce31a465666725a19e1d0f3c682d51f899922a2b6dbfdbfe8ee8d880fc0b0d0a13ac2536c5ce8f276f64b059b
@@ -164,6 +164,8 @@ module Proxy::RemoteExecution
164
164
  out_read, out_write = IO.pipe
165
165
  err_read, err_write = IO.pipe
166
166
 
167
+ # Force the script runner to initialize its logger
168
+ script_runner.logger
167
169
  pid = spawn(*script_runner.send(:get_args, command), :in => in_read, :out => out_write, :err => err_write)
168
170
  [in_read, out_write, err_write].each(&:close)
169
171
 
@@ -176,7 +178,7 @@ module Proxy::RemoteExecution
176
178
  inner_system_ssh_loop out_buf, err_buf, in_buf, pid
177
179
  end
178
180
 
179
- def inner_system_ssh_loop2(out_buf, err_buf, in_buf, pid)
181
+ def inner_system_ssh_loop(out_buf, err_buf, in_buf, pid)
180
182
  err_buf_raw = ''
181
183
  readers = [buf_socket, out_buf, err_buf]
182
184
  loop do
@@ -185,6 +187,9 @@ module Proxy::RemoteExecution
185
187
  (ready_readers || []).each { |reader| reader.close if reader.fill.zero? }
186
188
 
187
189
  proxy_data(out_buf, in_buf)
190
+ if buf_socket.closed?
191
+ script_runner.close_session
192
+ end
188
193
 
189
194
  if out_buf.closed?
190
195
  code = Process.wait2(pid).last.exitstatus
@@ -202,7 +207,7 @@ module Proxy::RemoteExecution
202
207
  rescue # rubocop:disable Style/RescueStandardError
203
208
  send_error(400, err_buf_raw) unless @started
204
209
  ensure
205
- [out_buff, err_buf, in_buf].each(&:close)
210
+ [out_buf, err_buf, in_buf].each(&:close)
206
211
  end
207
212
 
208
213
  def proxy_data(out_buf, in_buf)
@@ -14,7 +14,7 @@ module Proxy::RemoteExecution::Ssh
14
14
  :kerberos_auth => false,
15
15
  # When set to nil, makes REX use the runner's default interval
16
16
  # :runner_refresh_interval => nil,
17
- :ssh_log_level => :fatal,
17
+ :ssh_log_level => :error,
18
18
  :cleanup_working_dirs => true,
19
19
  # :mqtt_broker => nil,
20
20
  # :mqtt_port => nil,
@@ -40,7 +40,8 @@ module Proxy::RemoteExecution::Ssh::Runners
40
40
  control_script_finish = "#{@control_script_path} init-script-finish"
41
41
  <<-SCRIPT.gsub(/^ +\| /, '')
42
42
  | export CONTROL_SCRIPT="#{@control_script_path}"
43
- | sh -c '#{main_script}; #{control_script_finish}' #{close_fds} &
43
+ | #{"chown #{@user_method.effective_user} '#{@base_dir}'" if @user_method.cli_command_prefix}
44
+ | #{@user_method.cli_command_prefix} sh -c '#{main_script}; #{control_script_finish}' #{close_fds} &
44
45
  | echo $! > '#{@base_dir}/pid'
45
46
  SCRIPT
46
47
  end
@@ -201,8 +201,10 @@ module Proxy::RemoteExecution::Ssh::Runners
201
201
  raise 'Control socket file does not exist' unless File.exist?(local_command_file("socket"))
202
202
  @logger.debug("Sending exit request for session #{@ssh_user}@#{@host}")
203
203
  args = ['/usr/bin/ssh', @host, "-o", "User=#{@ssh_user}", "-o", "ControlPath=#{local_command_file("socket")}", "-O", "exit"].flatten
204
- *, err = session(args, in_stream: false, out_stream: false)
205
- read_output_debug(err)
204
+ pid, *, err = session(args, in_stream: false, out_stream: false)
205
+ result = read_output_debug(err)
206
+ Process.wait(pid)
207
+ result
206
208
  end
207
209
 
208
210
  def close
@@ -1,7 +1,7 @@
1
1
  module Proxy
2
2
  module RemoteExecution
3
3
  module Ssh
4
- VERSION = '0.5.0'
4
+ VERSION = '0.5.3'
5
5
  end
6
6
  end
7
7
  end
@@ -47,7 +47,7 @@ module Proxy::RemoteExecution
47
47
  when :ssh
48
48
  Plugin.logger.warn('Deprecated option async_ssh used together with ssh mode, switching mode to ssh-async.')
49
49
  Plugin.settings.mode = :'ssh-async'
50
- when :'async-ssh'
50
+ when :'ssh-async'
51
51
  # This is a noop
52
52
  else
53
53
  Plugin.logger.warn('Deprecated option async_ssh used together with incompatible mode, ignoring.')
@@ -16,7 +16,7 @@
16
16
  # Defines the verbosity of logging coming from ssh command
17
17
  # one of :debug, :info, :error, :fatal
18
18
  # must be lower than general log level
19
- # :ssh_log_level: fatal
19
+ # :ssh_log_level: error
20
20
 
21
21
  # Remove working directories on job completion
22
22
  # :cleanup_working_dirs: true
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: smart_proxy_remote_execution_ssh
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.0
4
+ version: 0.5.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ivan Nečas
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-11-16 00:00:00.000000000 Z
11
+ date: 2022-04-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -203,7 +203,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
203
203
  - !ruby/object:Gem::Version
204
204
  version: '0'
205
205
  requirements: []
206
- rubygems_version: 3.1.2
206
+ rubygems_version: 3.1.4
207
207
  signing_key:
208
208
  specification_version: 4
209
209
  summary: Ssh remote execution provider for Foreman Smart-Proxy