class Fission::Metadata
Attributes
Public: Gets/Sets the content (Hash).
Public Class Methods
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
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
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
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
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