class Train::Transports::Docker::Connection
Public Class Methods
new(conf)
click to toggle source
Calls superclass method
# File lib/train/docker.rb, line 70 def initialize(conf) super(conf) @id = options[:host] @container = ::Docker::Container.get(@id) || fail("Can't find Docker container #{@id}") @cmd_wrapper = nil @cmd_wrapper = CommandWrapper.load(self, @options) self end
Public Instance Methods
uri()
click to toggle source
# File lib/train/docker.rb, line 80 def uri if @container.nil? "docker://#{@id}" else "docker://#{@container.id}" end end
Private Instance Methods
file_via_connection(path)
click to toggle source
# File lib/train/docker.rb, line 90 def file_via_connection(path) if os.aix? Train::File::Remote::Aix.new(self, path) elsif os.solaris? Train::File::Remote::Unix.new(self, path) elsif os.windows? Train::File::Remote::Windows.new(self, path) else Train::File::Remote::Linux.new(self, path) end end
platform_specific_cmd(cmd)
click to toggle source
# File lib/train/docker.rb, line 102 def platform_specific_cmd(cmd) return cmd if @container.info.nil? if @container.info['Platform'] == 'windows' return ['cmd.exe', '/c', cmd] else return ['/bin/sh', '-c', cmd] end end
run_command_via_connection(cmd, &_data_handler)
click to toggle source
# File lib/train/docker.rb, line 111 def run_command_via_connection(cmd, &_data_handler) cmd = @cmd_wrapper.run(cmd) unless @cmd_wrapper.nil? stdout, stderr, exit_status = @container.exec(platform_specific_cmd(cmd)) CommandResult.new(stdout.join, stderr.join, exit_status) rescue ::Docker::Error::DockerError => _ raise rescue => _ # @TODO: differentiate any other error raise end