From 6e0ae88fd755a00e293925d2b599fd7e164e5d36 Mon Sep 17 00:00:00 2001 From: "Carlos J. Herrera" Date: Tue, 14 Sep 2021 09:41:45 -0400 Subject: [PATCH] F #~: reuse imported mac (#1453) --- .../remotes/lib/vcenter_driver/virtual_machine.rb | 12 ++++++++++-- .../remotes/lib/vcenter_driver/vm_template.rb | 3 +++ src/vmm_mad/remotes/vcenter/vcenterrc | 3 +++ 3 files changed, 16 insertions(+), 2 deletions(-) diff --git a/src/vmm_mad/remotes/lib/vcenter_driver/virtual_machine.rb b/src/vmm_mad/remotes/lib/vcenter_driver/virtual_machine.rb index dde043a832..86c8756cd8 100644 --- a/src/vmm_mad/remotes/lib/vcenter_driver/virtual_machine.rb +++ b/src/vmm_mad/remotes/lib/vcenter_driver/virtual_machine.rb @@ -1090,14 +1090,22 @@ end # # @return [Hash ("String" => self.Nic)] Model representation of nics def info_nics + keep_mac_on_imported = false + keep_mac_on_imported = CONFIG[:keep_mac_on_imported] \ + unless CONFIG[:keep_mac_on_imported].nil? + @nics = { :macs => {} } vc_nics = vcenter_nics_list one_nics = one_nics_get one_nics.each do |one_nic| - index = one_nic['NIC_ID'] - mac = one_nic['MAC'] + index = one_nic['NIC_ID'] + if keep_mac_on_imported && one_nic['MAC_IMPORTED'] + mac = one_nic['MAC_IMPORTED'] + else + mac = one_nic['MAC'] + end vc_dev = query_nic(mac, vc_nics) if vc_dev diff --git a/src/vmm_mad/remotes/lib/vcenter_driver/vm_template.rb b/src/vmm_mad/remotes/lib/vcenter_driver/vm_template.rb index 1417c8f08b..5eefcbd7f8 100644 --- a/src/vmm_mad/remotes/lib/vcenter_driver/vm_template.rb +++ b/src/vmm_mad/remotes/lib/vcenter_driver/vm_template.rb @@ -733,6 +733,9 @@ module VCenterDriver nic, true) network_found.info + if nic[:mac] + nic_tmp << "MAC_IMPORTED=\"#{nic[:mac]}\",\n" + end # This is the existing nic info if nic[:mac] && ipv4.empty? && ipv6.empty? nic_tmp << "MAC=\"#{nic[:mac]}\",\n" diff --git a/src/vmm_mad/remotes/vcenter/vcenterrc b/src/vmm_mad/remotes/vcenter/vcenterrc index 9407b11d22..c7b8a680a2 100644 --- a/src/vmm_mad/remotes/vcenter/vcenterrc +++ b/src/vmm_mad/remotes/vcenter/vcenterrc @@ -43,3 +43,6 @@ # Set to true if you need OpenNebula to detach non persistent disks # from VMs on VM terminate but avoid deleting them afterwards :keep_non_persistent_disks: false + +# Set to true if you need OpenNebula avoid change imported MAC +:keep_mac_on_imported: true