class Fission::Action::VM::Deleter

Public Class Methods

new(vm) click to toggle source

Internal: Creates a new VMDeleter object. This accepts a VM object.

vm - An instance of VM

Examples:

Fission::Action::VMDeleter.new @my_vm

Returns a new VMDeleter object

# File lib/fission/action/vm/deleter.rb, line 16
def initialize(vm)
  @vm = vm
end

Public Instance Methods

delete() click to toggle source

Public: Deletes a VM. The VM must not be running in order to delete it. As there are a number issues with the Fusion command line tool for deleting VMs, this is a best effort. The VM must not be running when this method is called. This essentially deletes the VM directory and attempts to remove the relevant entries from the Fusion plist file. It's highly recommended to delete VMs without the Fusion GUI running. If the Fusion GUI is running this method should succeed, but it's been observed that Fusion will recreate the plist data which is deleted. This leads to 'missing' VMs in the Fusion GUI.

Examples

@deleter.delete

Returns a Response with the result. If successful, the Response's data attribute will be nil. If there is an error, an unsuccessful Response will be returned.

# File lib/fission/action/vm/deleter.rb, line 37
def delete
  unless @vm.exists?
    return Response.new :code => 1, :message => 'VM does not exist'
  end

  running_response = @vm.running?
  return running_response unless running_response.successful?

  if running_response.data
    message = 'The VM must not be running in order to delete it.'
    return Response.new :code => 1, :message => message
  end

  FileUtils.rm_rf @vm.path
  Metadata.delete_vm_info @vm.path

  Response.new :code => 0
end

Private Instance Methods

vmrun_cmd() click to toggle source

Internal: Helper for getting the configured #vmrun_cmd value.

Examples

@deleter.vmrun_cmd
# => "/foo/bar/vmrun -T fusion"

Returns a String for the configured value of Fission#config.

# File lib/fission/action/vm/deleter.rb, line 66
def vmrun_cmd
  Fission.config['vmrun_cmd']
end