Changeset 597725efd598530c15325048a650fff04043b9d1

Show
Ignore:
Timestamp:
06/23/08 15:32:49 (6 years ago)
Author:
Mark Harrison <mark@omniti.com>
git-committer:
Mark Harrison <mark@omniti.com> 1214235169 +0000
git-parent:

[c0f18d22d89cc68deed8c10492ed895376fca699]

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

Changed the update script to use the xml resmon module to check if resmon
reloaded ok.

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

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • update/update.pl

    r4592868 r597725e  
    3232use strict; 
    3333use File::Find; 
     34use IO::Socket; 
    3435 
    3536my $resmondir='/opt/resmon'; 
    36 my $debug = 1
     37my $debug = 0
    3738 
    3839# Check for subversion 
     
    104105    # Load resmon config file and find what port we need to connect to to 
    105106    # check if everything went OK 
    106     my $statusfile = 0; 
     107    my $port = 0; 
     108    my $state, my $modstatus, my $configstatus, my $message, my $revision; 
     109 
    107110    if (!open(CONF, "<$resmondir/resmon.conf")) { 
    108111        print STDERR "Unable to open config file"; 
     
    111114 
    112115    while(<CONF>) { 
    113         if (/STATUSFILE\W*(.+);/) { 
    114             $statusfile = $1; 
     116        if (/PORT\W*(.+);/) { 
     117            $port = $1; 
    115118        } 
    116119    } 
    117120    close(CONF); 
    118     if (!$statusfile) { 
    119         print STDERR "Unable to determine the status file"; 
     121    if (!$port) { 
     122        print STDERR "Unable to determine port"; 
    120123        return 0; 
    121124    } 
    122     print "Status file is: $statusfile\n" if $debug; 
     125    print "Port is: $port\n" if $debug; 
    123126 
    124     if (!open(STAT, "<$statusfile")) { 
    125         print STDERR "Unable to open status file\n"; 
     127    my $host = "127.0.0.1"; 
     128    my $handle = IO::Socket::INET->new(Proto     => "tcp", 
     129                                    PeerAddr  => $host, 
     130                                    PeerPort  => $port) 
     131           or die "can't connect to port $port on $host: $!"; 
     132 
     133    print $handle "GET /RESMON/resmon HTTP/1.0\n\n"; 
     134    while(<$handle>) { 
     135        if (/<state>(\w+)<\/state>/) { 
     136            $state=$1; 
     137        } elsif (/<modstatus>(\w+)<\/modstatus>/) { 
     138            $modstatus=$1; 
     139        } elsif (/<configstatus>(\w+)<\/configstatus>/) { 
     140            $configstatus=$1; 
     141        } elsif (/<message>(.+)<\/message>/) { 
     142            $message=$1; 
     143        } elsif (/<revision>r(\d+)<\/revision>/) { 
     144            $revision=$1; 
     145        } 
     146    } 
     147 
     148    print "State: $state\nModules: $modstatus\n" if $debug; 
     149    print "Config: $configstatus\nRevision: $revision\n" if $debug; 
     150    print "Message: $message\n" if $debug; 
     151 
     152    if ("$state" eq "OK") { 
     153        print "Status is OK\n" if $debug; 
     154        return 1; 
     155    } elsif ("$state" eq "BAD") { 
     156        print "Status is BAD\n" if $debug; 
     157        return 0; 
     158    } else { 
     159        print STDERR "Unable to determine resmon status\n"; 
    126160        return 0; 
    127161    } 
    128     while(<STAT>) { 
    129         if (/resmon\(RESMON\) :: ([A-Z]+)/) { 
    130             if ("$1" eq "OK") { 
    131                 print "Status is OK\n" if $debug; 
    132                 return 1; 
    133             } else { 
    134                 print "Status is BAD\n" if $debug; 
    135                 return 0; 
    136             } 
    137         } 
    138     } 
    139     print STDERR "Unable to determine resmon status\n"; 
    140     return 0; 
    141162} 
    142163