Class: Bolt::Transport::SSH::Connection::RemoteTempdir

Inherits:
Object
  • Object
show all
Defined in:
lib/bolt/transport/ssh/connection.rb

Instance Method Summary collapse

Constructor Details

#initialize(node, path) ⇒ RemoteTempdir

Returns a new instance of RemoteTempdir.



14
15
16
17
18
19
# File 'lib/bolt/transport/ssh/connection.rb', line 14

def initialize(node, path)
  @node = node
  @owner = node.user
  @path = path
  @logger = node.logger
end

Instance Method Details

#chown(owner) ⇒ Object



25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
# File 'lib/bolt/transport/ssh/connection.rb', line 25

def chown(owner)
  return if owner.nil? || owner == @owner

  result = @node.execute(['id', '-g', owner])
  if result.exit_code != 0
    message = "Could not identify group of user #{owner}: #{result.stderr.string}"
    raise Bolt::Node::FileError.new(message, 'ID_ERROR')
  end
  group = result.stdout.string.chomp

  # Chown can only be run by root.
  result = @node.execute(['chown', '-R', "#{owner}:#{group}", @path], sudoable: true, run_as: 'root')
  if result.exit_code != 0
    message = "Could not change owner of '#{@path}' to #{owner}: #{result.stderr.string}"
    raise Bolt::Node::FileError.new(message, 'CHOWN_ERROR')
  end

  # File ownership successfully changed, record the new owner.
  @owner = owner
end

#deleteObject



46
47
48
49
50
51
# File 'lib/bolt/transport/ssh/connection.rb', line 46

def delete
  result = @node.execute(['rm', '-rf', @path], sudoable: true, run_as: @owner)
  if result.exit_code != 0
    @logger.warn("Failed to clean up tempdir '#{@path}': #{result.stderr.string}")
  end
end

#to_sObject



21
22
23
# File 'lib/bolt/transport/ssh/connection.rb', line 21

def to_s
  @path
end