The conditional assignment caused falsy values to be converted to
undef when comparing them. This led to the behavior that configuration
values that are interpreted by perl as falsy would get wrongly
compared and always show up as pending changes.

As an example the 'bgp-multipath-as-path-relax' or 'ebgp' keys of the
bgp controller configuration are booleans and get stored as 0 in the
controller configuration when they're turned off. They always showed
up as a pending change, because of the behavior described above.

Signed-off-by: Stefan Hanreich <s.hanre...@proxmox.com>
---
 src/PVE/Network/SDN.pm | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/src/PVE/Network/SDN.pm b/src/PVE/Network/SDN.pm
index c7dccfa..4ac9720 100644
--- a/src/PVE/Network/SDN.pm
+++ b/src/PVE/Network/SDN.pm
@@ -115,8 +115,8 @@ sub pending_config {
        my $config_object = $config_objects->{$id};
 
        foreach my $key (sort keys %{$config_object}) {
-           my $config_value = PVE::Network::SDN::encode_value(undef, $key, 
$config_object->{$key}) if $config_object->{$key};
-           my $running_value = PVE::Network::SDN::encode_value(undef, $key, 
$running_object->{$key}) if $running_object->{$key};
+           my $config_value = PVE::Network::SDN::encode_value(undef, $key, 
$config_object->{$key});
+           my $running_value = PVE::Network::SDN::encode_value(undef, $key, 
$running_object->{$key});
            if($key eq 'type' || $key eq 'vnet') {
                $pending->{$id}->{$key} = $config_value;
            } else {
-- 
2.39.5


_______________________________________________
pve-devel mailing list
pve-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel

Reply via email to