Author: arkurth
Date: Fri Aug 12 18:16:32 2016
New Revision: 1756199

URL: http://svn.apache.org/viewvc?rev=1756199&view=rev
Log:
VCL-961
Updated Linux.pm::get_network_bridge_info to check if brctl command exists. 
Fixed bug where it returned 0 if the command was not installed and the caller 
was expecting a hash reference.

Modified:
    vcl/trunk/managementnode/lib/VCL/Module/OS/Linux.pm

Modified: vcl/trunk/managementnode/lib/VCL/Module/OS/Linux.pm
URL: 
http://svn.apache.org/viewvc/vcl/trunk/managementnode/lib/VCL/Module/OS/Linux.pm?rev=1756199&r1=1756198&r2=1756199&view=diff
==============================================================================
--- vcl/trunk/managementnode/lib/VCL/Module/OS/Linux.pm (original)
+++ vcl/trunk/managementnode/lib/VCL/Module/OS/Linux.pm Fri Aug 12 18:16:32 2016
@@ -3483,6 +3483,11 @@ sub get_network_bridge_info {
                return;
        }
        
+       # This only gets cached if the brctl command does not exist
+       if (defined($self->{network_bridge_info})) {
+               return $self->{network_bridge_info};
+       }
+       
        my $computer_name = $self->data->get_computer_short_name();
        
        # It's possible that a bridge will have multiple interfaces:
@@ -3494,7 +3499,6 @@ sub get_network_bridge_info {
        # It's possible to have no interfaces listed:
        # bridge name     bridge id               STP enabled     interfaces
        # xbr1            8000.000000000000       no
-
        
        my $command = "brctl show";
        my ($exit_status, $output) = $self->execute($command);
@@ -3502,9 +3506,15 @@ sub get_network_bridge_info {
                notify($ERRORS{'WARNING'}, 0, "failed to execute command on 
$computer_name: $command");
                return;
        }
+       elsif ($exit_status == 127 || grep(/command not found/i, @$output)) {
+               notify($ERRORS{'DEBUG'}, 0, "network bridge configuration does 
not exist on $computer_name, brctl is not installed");
+               # Cache an empty hash reference so this command isn't 
needlessly run multiple times
+               $self->{network_bridge_info} = {};
+               return $self->{network_bridge_info};
+       }
        elsif ($exit_status ne '0') {
                notify($ERRORS{'WARNING'}, 0, "failed to retrieve network 
bridge configuration from $computer_name, exit status: $exit_status, 
command:\n$command\noutput:\n" . join("\n", @$output));
-               return 0;
+               return;
        }
        
        my $network_bridge_info = {};


Reply via email to