class Fission::Metadata

Attributes

content[RW]

Public: Gets/Sets the content (Hash).

Public Class Methods

delete_vm_info(vm_path) click to toggle source

Public: Deletes the Fusion metadata related to a VM. The VM should not be running when this method is called. It's highly recommended to call this method without the Fusion GUI application running. If the Fusion GUI is running this method should succeed, but it's been observed that Fusion will recreate the metadata which is deleted. This leads to 'missing' VMs in the Fusion GUI.

vm_path - The absolute path to the directory of a VM.

Examples

Fission::Metadata.delete_vm_info '/vms/foo.vmwarevm'

Returns nothing.

# File lib/fission/metadata.rb, line 23
def self.delete_vm_info(vm_path)
  metadata = new
  metadata.load
  metadata.delete_vm_restart_document(vm_path)
  metadata.delete_vm_favorite_entry(vm_path)
  metadata.save
end

Public Instance Methods

delete_vm_favorite_entry(vm_path) click to toggle source

Public: Deletes the VM information from the 'favorites list' metadata. The 'favorites list' dictates which VMs are displayed in the Fusion VM libarary.

vm_path - The absolute path to the directory of a VM.

Examples

metadata.delete_favorite_entry '/vms/foo.vmwarevm'

Returns nothing.

# File lib/fission/metadata.rb, line 87
def delete_vm_favorite_entry(vm_path)
  if @content.has_key?('VMFavoritesListDefaults2')
    @content['VMFavoritesListDefaults2'].delete_if { |vm| vm['path'] == vm_path }
  end
  if @content.has_key?('fusionInitialSessions')
    @content['fusionInitialSessions'].delete_if {|vm| vm['documentPath'] == vm_path}
  end
end
delete_vm_restart_document(vm_path) click to toggle source

Public: Deletes the VM information from the 'restart document path' metadata. The 'restart document path' dictates which GUI consoles to display when Fusion starts.

vm_path - The absolute path to the directory of a VM.

Examples

metadata.delete_vm_restart_document 'vms/foo.vmwarevm'

Returns nothing.

# File lib/fission/metadata.rb, line 70
def delete_vm_restart_document(vm_path)
  if @content.has_key?('PLRestartDocumentPaths')
    @content['PLRestartDocumentPaths'].delete_if { |p| p == vm_path }
  end
end
load() click to toggle source

Public: Reads the configured metadata file and populates the content variable with native ruby types.

Examples

metadata.load

Returns nothing.

# File lib/fission/metadata.rb, line 39
def load
  raw_data = CFPropertyList::List.new :file => Fission.config['plist_file']
  @content = CFPropertyList.native_types raw_data.value
end
save() click to toggle source

Public: Saves a new version of the metadata file with the data in the content variable.

Examples

metadata.save

Returns nothing.

# File lib/fission/metadata.rb, line 52
def save
  new_content = CFPropertyList::List.new
  new_content.value = CFPropertyList.guess @content
  new_content.save Fission.config['plist_file'],
                   CFPropertyList::List::FORMAT_BINARY
end