1
0
mirror of https://github.com/OpenNebula/one.git synced 2025-03-21 14:50:08 +03:00

B #1586: volatile attrs deleted, networks do not duplicate (#1587)

This commit is contained in:
Sergio Semedi Barranco 2017-12-15 17:03:28 +01:00 committed by Tino Vázquez
parent 277da84abd
commit e7de63e36f
2 changed files with 3189 additions and 2 deletions

View File

@ -331,6 +331,14 @@ def find_network_by_name(vnpool, name)
return element
end
def find_network_by_bridge(vnpool, name)
element = vnpool.select do |e|
e["BRIDGE"] == name
end.first rescue nil
return element
end
def find_network_ar(vnet, mac)
mac_int = mac.delete(":").to_i(16)
vnet.retrieve_xmlelements("AR_POOL/AR").each do |ar|
@ -630,6 +638,7 @@ def vm_unmanaged_discover(devices, xml_doc, template_xml,
end
end
# If VirtualEthernetCard
if !device.class.ancestors.index(RbVmomi::VIM::VirtualEthernetCard).nil?
@ -655,11 +664,12 @@ def vm_unmanaged_discover(devices, xml_doc, template_xml,
network_type = "Port Group"
end
network_name = "#{network_bridge} [#{vm_name}(#{vm_id})]"
network_name = "#{network_bridge} [#{vcenter_name}]"
# Create network if doesn't exist
if vm_wild
network = find_network_by_name(vnpool, network_name)
#network = find_network_by_name(vnpool, network_name)
network = find_network_by_bridge(vnpool, network_bridge)
else
network = find_network(vnpool, network_ref, ccr_ref, template_ref, vcenter_uuid)
end
@ -667,6 +677,7 @@ def vm_unmanaged_discover(devices, xml_doc, template_xml,
mac_address = device.macAddress rescue nil
ar_id = nil
# network not found
if !network
one_net = ""
one_net << "NAME=\"#{network_name}\"\n"
@ -705,7 +716,9 @@ def vm_unmanaged_discover(devices, xml_doc, template_xml,
raise "\n ERROR! Could not get network info for vnet #{network_name}. Reason #{rc.message}" if OpenNebula.is_error?(rc)
network = one_vn
STDOUT.puts "--- Network #{one_vn["NAME"]} with ID #{one_vn["ID"]} has been created"
# network found:
else
STDOUT.puts "--- Network #{network["NAME"]} with ID #{network["ID"]} already exists"
ar_id = find_network_ar(network, mac_address)
@ -1985,6 +1998,17 @@ def prepare_vnet_xml_templates(vnet_ids, one_client)
raise rc.message if OpenNebula.is_error?(rc)
xml_doc = Nokogiri::XML(one_vnet.to_xml, nil, "UTF-8"){|c| c.default_xml.noblanks}
xml_doc.root.xpath("TEMPLATE/VCENTER_TYPE").remove
xml_doc.root.xpath("AR_POOL/AR/USED_LEASES").remove
xml_doc.search('.//MAC_END').remove
xml_doc.search('.//LEASES').remove
xml_doc.search('.//IP_END').remove
xml_doc.search('.//IP6_ULA').remove
xml_doc.search('.//IP6_ULA_END').remove
xml_doc.search('.//IP6_GLOBAL').remove
xml_doc.search('.//IP6_GLOBAL_END').remove
File.open("#{TEMP_DIR}/one_migrate_vnet_#{vnet_id}","w"){|f| f.puts(xml_doc.root.to_s.gsub(/>\s*/, ">").gsub(/\s*</, "<"))}
STDOUT.puts
STDOUT.puts "New XML file #{TEMP_DIR}/one_migrate_vnet_#{vnet_id} for vnet \e[96m#{one_vnet["NAME"]}\e[39m \e[92mwas created and attributes were removed\e[39m\n"

3163
vcenter_one54_pre.rb Normal file

File diff suppressed because it is too large Load Diff