class Pennyworth::VagrantCommand

Attributes

vagrant[R]

Public Class Methods

new() click to toggle source
# File lib/pennyworth/vagrant_command.rb, line 22
def initialize
  @vagrant = Pennyworth::Vagrant.new(Pennyworth::Cli.settings.vagrant_dir)
end
parse_status(output) click to toggle source
# File lib/pennyworth/vagrant_command.rb, line 26
def self.parse_status output
  result = []
  parsing_vms = false
  output.each_line do |line|
    line.strip!
    if line.empty?
      break if parsing_vms
      parsing_vms = true
    elsif parsing_vms
      line =~ /^(.*?)\s+(.*)$/
      vm_name = $1
      vm_state = $2
      if vm_state =~ /running/
        vm_name += " (running)"
      end
      result.push vm_name
    end
  end
  result
end
setup_environment(dir) click to toggle source
# File lib/pennyworth/vagrant_command.rb, line 47
def self.setup_environment(dir)
  if !File.exists?(File.join(dir, "Vagrantfile"))
    vagrant = Pennyworth::Vagrant.new(dir)
    FileUtils.mkdir_p(dir)
    vagrant.run("init")
  end
end

Public Instance Methods

add_box(box, box_path) click to toggle source
# File lib/pennyworth/vagrant_command.rb, line 116
def add_box box, box_path
  @vagrant.run "box", "add", box, box_path, "--force"
end
destroy() click to toggle source
# File lib/pennyworth/vagrant_command.rb, line 112
def destroy
  @vagrant.run "destroy"
end
down(vm_name) click to toggle source
# File lib/pennyworth/vagrant_command.rb, line 69
def down(vm_name)
  if vm_name
    log "Stopping VM #{vm_name}..."
    @vagrant.run "halt", vm_name
  else
    log "Stopping test environment..."
    @vagrant.run "halt"
  end
end
env_clean?() click to toggle source
# File lib/pennyworth/vagrant_command.rb, line 79
def env_clean?
  status = @vagrant.run "status", :stdout => :capture

  return status.index("running").nil?
end
list() click to toggle source
# File lib/pennyworth/vagrant_command.rb, line 103
def list
  boxes = @vagrant.run "box", "list", :stdout => :capture
  boxes.split("\n")
end
reset(vm_name) click to toggle source
# File lib/pennyworth/vagrant_command.rb, line 85
def reset(vm_name)
  if vm_name
    log "Resetting VM #{vm_name}..."
    @vagrant.run "destroy", vm_name
  else
    log "Resetting test environment..."
    @vagrant.run "destroy"
  end
end
ssh(vm_name, cmd, stdout = nil) click to toggle source
# File lib/pennyworth/vagrant_command.rb, line 95
def ssh(vm_name, cmd, stdout = nil)
  if vm_name
    @vagrant.run "ssh", vm_name, "-c", cmd, :stdout => stdout
  else
    @vagrant.run "ssh", "-c", cmd, :stdout => stdout
  end
end
status() click to toggle source
# File lib/pennyworth/vagrant_command.rb, line 108
def status
  Pennyworth::VagrantCommand.parse_status( @vagrant.run "status", :stdout => :capture )
end
up(vm_name, destroy) click to toggle source
# File lib/pennyworth/vagrant_command.rb, line 55
def up(vm_name, destroy)
  Pennyworth::Libvirt.ensure_libvirt_env_started

  if vm_name
    log "Starting VM #{vm_name}..."
    @vagrant.run "destroy", vm_name if destroy
    @vagrant.run "up", vm_name
  else
    log "Starting test environment..."
    @vagrant.run "destroy" if destroy
    @vagrant.run "up"
  end
end