Class: MarhanCli::VirtualBox

Inherits:
Object
  • Object
show all
Defined in:
lib/marhan_cli/apps/virtual_box.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(config) ⇒ VirtualBox

Returns a new instance of VirtualBox.



11
12
13
# File 'lib/marhan_cli/apps/virtual_box.rb', line 11

def initialize(config)
  @guests = config.guests
end

Instance Attribute Details

#guestsObject (readonly)

Returns the value of attribute guests.



9
10
11
# File 'lib/marhan_cli/apps/virtual_box.rb', line 9

def guests
  @guests
end

Instance Method Details

#guest_ssh_command(guest_name) ⇒ Object

Raises:

  • (ArgumentError)


32
33
34
35
36
# File 'lib/marhan_cli/apps/virtual_box.rb', line 32

def guest_ssh_command(guest_name)
  bash = MarhanCli::Bash.new
  raise ArgumentError, "No ssh configuration found for #{guest_name}" unless guests[guest_name].ssh?
  bash.ssh_command(guests[guest_name].ssh)
end

#guest_ssh_server_up?(guest_name) ⇒ Boolean

Returns:

  • (Boolean)


23
24
25
26
# File 'lib/marhan_cli/apps/virtual_box.rb', line 23

def guest_ssh_server_up?(guest_name)
  remote_machine = RemoteMachine.new(@guests[guest_name].ssh.host, @guests[guest_name].ssh.port)
  remote_machine.ssh_server_running?(@guests[guest_name].ssh.user)
end

#guest_start_command(guest_name) ⇒ Object



15
16
17
# File 'lib/marhan_cli/apps/virtual_box.rb', line 15

def guest_start_command(guest_name)
  "VBoxManage startvm '#{vbox_name(guest_name)}'"
end

#guest_stop_command(guest_name) ⇒ Object



19
20
21
# File 'lib/marhan_cli/apps/virtual_box.rb', line 19

def guest_stop_command(guest_name)
  "VBoxManage controlvm '#{vbox_name(guest_name)}' acpipowerbutton"
end

#ssh_connection_configured?(guest_name) ⇒ Boolean

Returns:

  • (Boolean)


28
29
30
# File 'lib/marhan_cli/apps/virtual_box.rb', line 28

def ssh_connection_configured?(guest_name)
  @guests[guest_name].key?(:ssh)
end

#vbox_name(guest_name) ⇒ Object



38
39
40
41
42
43
# File 'lib/marhan_cli/apps/virtual_box.rb', line 38

def vbox_name(guest_name)
  Constraint.not_nil_or_empty! guest_name, "Guest config name have to be set!"
  Constraint.not_nil_or_empty! @guests[guest_name], "No guest with key '#{guest_name}' found in configuration!"
  Constraint.not_nil_or_empty! @guests[guest_name].name, "Guest name is not configured!"
  @guests[guest_name].name
end