Module: XmlConfig
- Defined in:
- lib/metadata/VmConfig/xmlConfig.rb
Instance Method Summary collapse
- #add_item(var, value) ⇒ Object
- #convert(filename) ⇒ Object
- #vdisk(element) ⇒ Object
- #vendor ⇒ Object
- #vm(element) ⇒ Object
- #vmmversion(element) ⇒ Object
- #xml_to_config(xml) ⇒ Object
Instance Method Details
#add_item(var, value) ⇒ Object
68 69 70 |
# File 'lib/metadata/VmConfig/xmlConfig.rb', line 68 def add_item(var, value) @convertText += "#{var} = \"#{value}\"\n" end |
#convert(filename) ⇒ Object
6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
# File 'lib/metadata/VmConfig/xmlConfig.rb', line 6 def convert(filename) @convertText = "" # $log.debug "Processing Windows Configuration file [#{filename}]" xml_data = nil unless File.file?(filename) require 'sys-uname' if Sys::Platform::IMPL == :linux begin # First check to see if the command is available AwesomeSpawn.run!("virsh", :params => ["list"]) begin xml_data = AwesomeSpawn.run!("virsh", :params => ["dumpxml", File.basename(filename, ".*")], :combined_output => true).output rescue => err $log.error "#{err}\n#{err.backtrace.join("\n")}" end rescue end end raise "Cannot open config file: [#{filename}]" if xml_data.blank? end if xml_data.nil? fileSize = File.size(filename) raise "Specified XML file [#{filename}] is not a valid VM configuration file." if fileSize > 104857 xml = MiqXml.loadFile(filename) if xml.encoding == "UTF-16" && xml.root.nil? && Object.const_defined?('Nokogiri') xml_data = File.open(filename) { |f| Nokogiri::XML(f) }.to_xml(:encoding => "UTF-8") xml = MiqXml.load(xml_data) end else xml = MiqXml.load(xml_data) end xml_type = nil xml_type = :xen unless xml.find_first("//vm/thinsyVmm").nil? xml_type = :kvm if xml.root.name == 'domain' && ['kvm', 'qemu'].include?(xml.root.attributes['type']) raise "Specified XML file [#{filename}] is not a valid VM configuration file." if xml_type.nil? xml_to_config(xml) @convertText end |
#vdisk(element) ⇒ Object
63 64 65 66 |
# File 'lib/metadata/VmConfig/xmlConfig.rb', line 63 def vdisk(element) index = element.attributes['index'].to_i add_item("scsi0:#{index}.fileName", element.elements[1].text) end |
#vendor ⇒ Object
72 73 74 |
# File 'lib/metadata/VmConfig/xmlConfig.rb', line 72 def vendor "xen" end |
#vm(element) ⇒ Object
54 55 56 57 |
# File 'lib/metadata/VmConfig/xmlConfig.rb', line 54 def vm(element) add_item("displayName", element.attributes['name']) add_item("memsize", element.attributes['minmem']) end |
#vmmversion(element) ⇒ Object
59 60 61 |
# File 'lib/metadata/VmConfig/xmlConfig.rb', line 59 def vmmversion(element) add_item("config.version", element.text) end |
#xml_to_config(xml) ⇒ Object
50 51 52 |
# File 'lib/metadata/VmConfig/xmlConfig.rb', line 50 def xml_to_config(xml) xml.each_recursive { |e| send(e.name, e) if self.respond_to?(e.name) && !['id', 'type'].include?(e.name.downcase) } end |