Module: Actions::ForemanPipeline::Mixins::SshExtension

Extended by:
ActiveSupport::Concern
Included in:
JenkinsInstance::AbstractJenkinsInstanceAction
Defined in:
app/lib/actions/foreman_pipeline/mixins/ssh_extension.rb

Instance Method Summary collapse

Instance Method Details

#ssh_exec!(ssh, command) ⇒ Object



8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# File 'app/lib/actions/foreman_pipeline/mixins/ssh_extension.rb', line 8

def ssh_exec!(ssh, command)
  stdout_data = ""
  stderr_data = ""
  exit_code = nil
  exit_signal = nil
  ssh.open_channel do |channel|
    channel.exec(command) do |ch, success|
      unless success
        abort "FAILED: couldn't execute command (ssh.channel.exec)"
      end
      channel.on_data do |ch, data|
        stdout_data += data
      end

      channel.on_extended_data do |ch, type, data|
        stderr_data += data
      end

      channel.on_request("exit-status") do |ch, data|
        exit_code = data.read_long
      end

      channel.on_request("exit-signal") do |ch, data|
        exit_signal = data.read_long
      end
    end
  end
  ssh.loop
  [stdout_data, stderr_data, exit_code, exit_signal]
end