Changeset 437d7c16a7d447c192d0f5019c91098c416903d6

Show
Ignore:
Timestamp:
03/21/10 20:23:11 (4 years ago)
Author:
Mark Harrison <mark@omniti.com>
git-committer:
Mark Harrison <mark@omniti.com> 1269202991 +0000
git-parent:

[7cd489f4c8edce7a3eedf9ea140dfae5b1abb605]

git-author:
Mark Harrison <mark@omniti.com> 1269202991 +0000
Message:

Module loading error detection fixes

Add failed modules (or checks) to list of failed modules
Show this in Resmon.pm
Only run use Module::Name once per module instead of once per check.

git-svn-id: https://labs.omniti.com/resmon/branches/resmon2@276 8c0face9-b7db-6ec6-c4b3-d5f7145c7d55

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • lib/Resmon/Config.pm

    rb4a01ee r437d7c1  
    88    my $self = bless { 
    99        configfile => $filename, 
    10         modstatus => ''
     10        modstatus => []
    1111        # Defaults 
    1212        timeout => 10 
     
    2222        if($current) { 
    2323            if(/^\s*([^:\s](?:[^:]*[^:\s])?)\s*:\s*(.+)\s*$/) { 
     24                next if $current eq "BAD_MODULE"; 
    2425                my $kvs = {}; 
    2526                my $check_name = $1; 
     
    2829                    @params; 
    2930                my $object; 
    30                 eval "use $current; 
    31                     \$object = $current->new(\$check_name, \$kvs);"; 
     31                eval "\$object = $current->new(\$check_name, \$kvs);"; 
    3232                if ($@) { 
    33                     print STDERR "Problem loading monitor $current:\n"; 
     33                    print STDERR "Problem with check $current\`$check_name:\n"; 
    3434                    print STDERR "$@\n"; 
    35                     print STDERR "This module will not be available\n"; 
     35                    print STDERR "This check will not be available\n"; 
     36                    push @{$self->{modstatus}}, "$current`$check_name"; 
    3637                    next; 
    3738                } 
    3839                if (!$object->isa("Resmon::Module")) { 
    3940                    print STDERR "Module $current isn't of type "; 
    40                     print STDERR "Resmon::Module. This monitor will not be "; 
    41                     print STDERR "available\n"; 
     41                    print STDERR "Resmon::Module. Check $current`$check_name "; 
     42                    print STDERR "will not be available\n"; 
     43                    push @{$self->{modstatus}}, "$current`$check_name"; 
     44                    next; 
    4245                } 
    4346                push(@{$self->{Module}->{$current}}, $object); 
     
    5053            if(/\s*(\S+)\s*\{/) { 
    5154                $current = $1; 
     55                eval "use $current;"; 
     56                if ($@) { 
     57                    print STDERR "Problem loading monitor $current:\n"; 
     58                    print STDERR "$@\n"; 
     59                    print STDERR "This module will not be available\n"; 
     60                    push @{$self->{modstatus}}, $current; 
     61                    $current = "BAD_MODULE"; 
     62                    next; 
     63                } 
    5264                $self->{Module}->{$current} = []; 
    5365                next; 
  • lib/Resmon/Module/Resmon.pm

    r9b0b523 r437d7c1  
    4444        "hostname" => [$hostname, "s"], 
    4545        "configstatus" => [$configstatus ? "BAD" : "OK", "s"], 
    46         "modstatus" => [$modstatus ? "BAD" : "OK", "s"] 
     46        "modstatus" => [$modstatus ? "BAD" : "OK", "s"], 
     47        "failed_modules" => [join(", ", @$modstatus), "s"] 
    4748    }; 
    4849};