From 7b5b06536462e9994ee495fc32293496bc4fe354 Mon Sep 17 00:00:00 2001 From: "Ruben S. Montero" Date: Thu, 8 Oct 2020 19:04:33 +0200 Subject: [PATCH] B #5095: Custom NIC attributes overrides VNET (#282). Do not modify one.conf --- src/image/Image.cc | 3 ++- src/vnm/AddressRange.cc | 3 ++- src/vnm/VirtualNetwork.cc | 21 +++++++++++---------- 3 files changed, 15 insertions(+), 12 deletions(-) diff --git a/src/image/Image.cc b/src/image/Image.cc index c1f57cf426..6cb575286a 100644 --- a/src/image/Image.cc +++ b/src/image/Image.cc @@ -658,9 +658,10 @@ void Image::disk_attribute(VirtualMachineDisk * disk, for (it = inherit_attrs.begin(); it != inherit_attrs.end(); it++) { + string current_val = disk->vector_value(*it); get_template_attribute(*it, inherit_val); - if (!inherit_val.empty()) + if (current_val.empty() && !inherit_val.empty()) { disk->replace(*it, inherit_val); } diff --git a/src/vnm/AddressRange.cc b/src/vnm/AddressRange.cc index 227c787e87..7c49066dbd 100644 --- a/src/vnm/AddressRange.cc +++ b/src/vnm/AddressRange.cc @@ -1266,9 +1266,10 @@ void AddressRange::set_vnet(VectorAttribute *nic, const vector &inherit) for (it = inherit.begin(); it != inherit.end(); it++) { + string current_val = nic->vector_value(*it); string inherit_val = attr->vector_value(*it); - if (!inherit_val.empty()) + if (current_val.empty() && !inherit_val.empty()) { nic->replace((*it).c_str(), inherit_val); } diff --git a/src/vnm/VirtualNetwork.cc b/src/vnm/VirtualNetwork.cc index 70bcea6fbf..82a304bcca 100644 --- a/src/vnm/VirtualNetwork.cc +++ b/src/vnm/VirtualNetwork.cc @@ -850,16 +850,6 @@ int VirtualNetwork::nic_attribute( nic->replace("BRIDGE_TYPE", bridge_type); } - for (it = inherit_attrs.begin(); it != inherit_attrs.end(); it++) - { - PoolObjectSQL::get_template_attribute(*it, inherit_val); - - if (!inherit_val.empty()) - { - nic->replace(*it, inherit_val); - } - } - //-------------------------------------------------------------------------- // Get the lease from the Virtual Network //-------------------------------------------------------------------------- @@ -899,6 +889,17 @@ int VirtualNetwork::nic_attribute( inherit_attrs); } + for (it = inherit_attrs.begin(); it != inherit_attrs.end(); it++) + { + string current_val = nic->vector_value(*it); + PoolObjectSQL::get_template_attribute(*it, inherit_val); + + if (current_val.empty() && !inherit_val.empty()) + { + nic->replace(*it, inherit_val); + } + } + //-------------------------------------------------------------------------- // Copy the security group IDs //--------------------------------------------------------------------------