Module: HashiCorp::VagrantVMwareDesktop::Cap::Disk

Defined in:
lib/vagrant-vmware-desktop/cap/disk.rb

Constant Summary collapse

DEFAULT_DISK_EXT =
"vmdk".freeze
BUS_TYPES =
["sata", "ide", "scsi"].map(&:freeze).freeze
DEFAULT_BUS =
"scsi".freeze
DEFAULT_DVD_BUS =
"ide".freeze
DEFAULT_DVD_DEVICE_TYPE =
"cdrom-image"
DISK_ADAPTER_TYPES =

Adapter types (from vmware-vdiskmanager -h)

["ide", "buslogic", "lsilogic"].map(&:freeze).freeze
DEFAULT_ADAPTER_TYPE =
"lsilogic".freeze
DEFAULT_DISK_TYPE =

Disk types (from vmware-vdiskmanager -h) 0 : single growable virtual disk 1 : growable virtual disk split into multiple files 2 : preallocated virtual disk 3 : preallocated virtual disk split into multiple files 4 : preallocated ESX-type virtual disk 5 : compressed disk optimized for streaming 6 : thin provisioned virtual disk - ESX 3.x and above

0.freeze
PRIMARY_DISK_SLOT =
"scsi0:0".freeze
@@logger =
Log4r::Logger.new("hashicorp::provider::vmware::cap::disk")

Class Method Summary collapse

Class Method Details

.cleanup_disks(machine, defined_disks, disk_meta) ⇒ nil

Parameters:

  • machine (Vagrant::Machine)
  • defined_disks (VagrantPlugins::Kernel_V2::VagrantConfigDisk)
  • disk_meta (Hash)
    • A hash of all the previously defined disks

    from the last configure_disk action

Returns:

  • (nil)


78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
# File 'lib/vagrant-vmware-desktop/cap/disk.rb', line 78

def self.cleanup_disks(machine, defined_disks, disk_meta)
  return if disk_meta.values.flatten.empty?

  ["disk", "dvd"].each do |k|
    if !disk_meta[k].is_a?(Array)
      raise TypeError, "Expected `Array` but received `#{disk_meta[k].class}`"
    end
  end

  # TODO: floppy
  disk_meta["disk"].each do |d|
    # If disk is defined or the primary disk, don't remove
    if d["primary"]
      @@logger.warn("Vagrant will not clean up the primary disk! Primary disk no longer tracked in Vagrantfile")
      next
    end
    next if defined_disks.any? { |dsk| dsk.name == d["Name"]}
    machine.provider.driver.remove_disk(File.basename(d["Path"]))
  end

  disk_meta["dvd"].each do |d|
    # If disk is defined, don't remove
    next if defined_disks.any? { |dsk| dsk.name == d["Name"]}
    machine.provider.driver.remove_disk_from_vmx(d["Path"], ["deviceType"])
  end
  nil
end

.configure_disks(machine, defined_disks) ⇒ Hash

Returns configured_disks - A hash of all the current configured disks.

Parameters:

  • machine (Vagrant::Machine)
  • defined_disks (VagrantPlugins::Kernel_V2::VagrantConfigDisk)

Returns:

  • (Hash)

    configured_disks - A hash of all the current configured disks



44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
# File 'lib/vagrant-vmware-desktop/cap/disk.rb', line 44

def self.configure_disks(machine, defined_disks)
  return {} if defined_disks.empty?

  attached_disks = machine.provider.driver.get_disks(BUS_TYPES)
  configured_disks = {disk: [], floppy: [], dvd: []}

  defined_disks.each do |disk|
    case disk.type
    when :disk
      disk_data = setup_disk(machine, disk, attached_disks)
      if !disk_data.empty?
        configured_disks[:disk] << disk_data
      end
    when :floppy
      # TODO: Write me
      machine.ui.info(I18n.t("hashicorp.vagrant_vmware_desktop.cap.disks.floppy_not_supported", name: disk.name))
    when :dvd
      disk_data = setup_dvd(machine, disk, attached_disks)
      if !disk_data.empty?
        configured_disks[:dvd] << disk_data
      end
    else
      @@logger.info("Invalid disk type #{disk.type}, carrying on.")
    end
  end

  configured_disks
end

.default_disk_exts(machine) ⇒ Object



37
38
39
# File 'lib/vagrant-vmware-desktop/cap/disk.rb', line 37

def self.default_disk_exts(machine)
  [DEFAULT_DISK_EXT].freeze
end

.set_default_disk_ext(machine) ⇒ Object



33
34
35
# File 'lib/vagrant-vmware-desktop/cap/disk.rb', line 33

def self.set_default_disk_ext(machine)
  DEFAULT_DISK_EXT
end