Class: Vagrant::Guest::Base

Inherits:
Object
  • Object
show all
Includes:
Util
Defined in:
lib/vagrant/guest/base.rb

Overview

The base class for a "system." A system represents an installed operating system on a given box. There are some portions of Vagrant which are fairly OS-specific (such as mounting shared folders) and while the number is few, this abstraction allows more obscure operating systems to be installed without having to directly modify Vagrant internals.

Subclasses of the system base class are expected to implement all the methods. These methods are described in the comments above their definition.

This is by no means a complete specification. The methods required by systems can and will change at any time. Any changes will be noted on release notes.

Direct Known Subclasses

FreeBSD, Linux, OpenBSD, Solaris

Defined Under Namespace

Classes: BaseError

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(vm) ⇒ Base

Initializes the system. Any subclasses MUST make sure this method is called on the parent. Therefore, if a subclass overrides initialize, then you must call super.



30
31
32
# File 'lib/vagrant/guest/base.rb', line 30

def initialize(vm)
  @vm = vm
end

Instance Attribute Details

#vmObject (readonly)

The VM which this system is tied to.



25
26
27
# File 'lib/vagrant/guest/base.rb', line 25

def vm
  @vm
end

Instance Method Details

#change_host_name(name) ⇒ Object

Called to change the hostname of the virtual machine.

Raises:



94
95
96
# File 'lib/vagrant/guest/base.rb', line 94

def change_host_name(name)
  raise BaseError, :_key => :unsupported_host_name
end

#configure_networks(networks) ⇒ Object

Configures the given list of networks on the virtual machine.

The networks parameter will be an array of hashes where the hashes represent the configuration of a network interface. The structure of the hash will be roughly the following:

{ :type => :static, :ip => "192.168.33.10", :netmask => "255.255.255.0", :interface => 1 }

Raises:



89
90
91
# File 'lib/vagrant/guest/base.rb', line 89

def configure_networks(networks)
  raise BaseError, :_key => :unsupported_configure_networks
end

#distro_dispatchObject

This method is automatically called when the system is available (when Vagrant can successfully SSH into the machine) to give the system a chance to determine the distro and return a distro-specific system.

Warning: If a return value which subclasses from Vagrant::Guest::Base is returned, Vagrant will use it as the new system instance for the class.



41
# File 'lib/vagrant/guest/base.rb', line 41

def distro_dispatch; end

#haltObject

Halt the machine. This method should gracefully shut down the operating system. This method will cause vagrant halt and associated commands to block, meaning that if the machine doesn't halt in a reasonable amount of time, this method should just return.

If when this method returns, the machine's state isn't "powered_off," Vagrant will proceed to forcefully shut the machine down.

Raises:



50
51
52
# File 'lib/vagrant/guest/base.rb', line 50

def halt
  raise BaseError, :_key => :unsupported_halt
end

#mount_nfs(ip, folders) ⇒ Object

Mounts a shared folder via NFS. This assumes that the exports via the host are already done.

Raises:



72
73
74
# File 'lib/vagrant/guest/base.rb', line 72

def mount_nfs(ip, folders)
  raise BaseError, :_key => :unsupported_nfs
end

#mount_shared_folder(name, guestpath, options) ⇒ Object

Mounts a shared folder.

This method should create, mount, and properly set permissions on the shared folder. This method should also properly adhere to any configuration values such as shared_folder_uid on config.vm.

Parameters:

  • name (String)

    The name of the shared folder.

  • guestpath (String)

    The path on the machine which the user wants the folder mounted.

  • options (Hash)

    Additional options for the shared folder which can be honored.

Raises:



66
67
68
# File 'lib/vagrant/guest/base.rb', line 66

def mount_shared_folder(name, guestpath, options)
  raise BaseError, :_key => :unsupported_shared_folder
end