Class: Train::Transports::Docker::Connection

Inherits:
BaseConnection
  • Object
show all
Defined in:
lib/train/transports/docker.rb

Defined Under Namespace

Classes: OS

Instance Method Summary collapse

Constructor Details

#initialize(conf) ⇒ Connection

Returns a new instance of Connection.



58
59
60
61
62
63
64
65
66
67
# File 'lib/train/transports/docker.rb', line 58

def initialize(conf)
  super(conf)
  @id = options[:host]
  @container = ::Docker::Container.get(@id) ||
               fail("Can't find Docker container #{@id}")
  @files = {}
  @cmd_wrapper = nil
  @cmd_wrapper = CommandWrapper.load(self, @options)
  self
end

Instance Method Details

#closeObject



69
70
71
# File 'lib/train/transports/docker.rb', line 69

def close
  # nothing to do at the moment
end

#file(path) ⇒ Object



77
78
79
# File 'lib/train/transports/docker.rb', line 77

def file(path)
  @files[path] ||= LinuxFile.new(self, path)
end

#osObject



73
74
75
# File 'lib/train/transports/docker.rb', line 73

def os
  @os ||= OS.new(self)
end

#run_command(cmd) ⇒ Object



81
82
83
84
85
86
87
88
89
90
91
92
93
# File 'lib/train/transports/docker.rb', line 81

def run_command(cmd)
  cmd = @cmd_wrapper.run(cmd) unless @cmd_wrapper.nil?
  stdout, stderr, exit_status = @container.exec(
    [
      '/bin/sh', '-c', cmd
    ])
  CommandResult.new(stdout.join, stderr.join, exit_status)
rescue ::Docker::Error::DockerError => _
  raise
rescue => _
  # @TODO: differentiate any other error
  raise
end