class Pennyworth::VM

Represents a virtual machine that can be started, stopped, and interacted with.

Attributes

ip[RW]
runner[RW]

Public Class Methods

new(runner) click to toggle source
# File lib/pennyworth/vm.rb, line 28
def initialize(runner)
  @runner = runner
end

Public Instance Methods

cleanup_directory(dir) click to toggle source
# File lib/pennyworth/vm.rb, line 77
def cleanup_directory(dir)
  runner.cleanup_directory(dir)
end
extract_file(source, destination) click to toggle source
# File lib/pennyworth/vm.rb, line 69
def extract_file(source, destination)
  command_runner.extract_file(source, destination)
end
inject_directory(source, destination, opts = {}) click to toggle source
# File lib/pennyworth/vm.rb, line 73
def inject_directory(source, destination, opts = {})
  command_runner.inject_directory(source, destination, opts)
end
inject_file(source, destination, opts = {}) click to toggle source
# File lib/pennyworth/vm.rb, line 65
def inject_file(source, destination, opts = {})
  command_runner.inject_file(source, destination, opts)
end
run_command(*args) click to toggle source
# File lib/pennyworth/vm.rb, line 40
def run_command(*args)
  opts = args.last.is_a?(Hash) ? args.pop : {}

  opts.merge!(
    stdout: :capture,
    stderr: :capture
  )

  result = CommandResult.new
  result.cmd = args.join(" ")
  begin
    stdout, stderr = command_runner.run(*args, opts)
    result.exit_code = 0
    result.stdout = stdout
    result.stderr = stderr
  rescue Cheetah::ExecutionFailed => e
    result.error = e
    result.exit_code = e.status.exitstatus
    result.stdout = e.stdout
    result.stderr = e.stderr
  end

  result
end
start() click to toggle source
# File lib/pennyworth/vm.rb, line 32
def start
  @ip = @runner.start
end
stop() click to toggle source
# File lib/pennyworth/vm.rb, line 36
def stop
  @runner.stop
end

Private Instance Methods

command_runner() click to toggle source
# File lib/pennyworth/vm.rb, line 83
def command_runner
  @runner.command_runner
end