Bio-GMOD
view release on metacpan or search on metacpan
GMOD/Admin/Monitor/httpd.pm view on Meta::CPAN
package Bio::GMOD::Admin::Monitor::httpd;
# Monitor and restart httpd as needed
use strict;
use vars qw/@ISA/;
use Bio::GMOD::Admin::Monitor;
use Bio::GMOD::Util::Rearrange;
use LWP::UserAgent;
@ISA = qw/Bio::GMOD::Admin::Monitor/;
# Here, we'll check the status of httpd by actually checking to see
# that the website is up.
sub check_status {
my ($self,@p) = @_;
my ($site) = rearrange([qw/SITE/],@p);
unless ($site) {
my $adaptor = $self->adaptor;
$site = $adaptor->live_url;
}
$self->{testing} = 'httpd';
$self->{tested_at} = $self->fetch_date;
my $ua = LWP::UserAgent->new();
$ua->agent('Bio::GMOD::Admin::Monitor');
my $request = HTTP::Request->new('GET',$site);
my $response = $ua->request($request);
my ($string,$status) = $self->set_status(-timing => 'initial',
-msg => "Testing httpd at $site",
-status => ($response->is_success) ? 'up' : 'down');
return ($string,$status);
}
# NOTE! The "final" status is really just whether or not the command
# succeeded, not whether the service has been restored!
sub restart {
my ($self,@p) = @_;
my ($apachectl) = rearrange([qw/APACHECTL/],@p);
$apachectl ||= '/usr/local/apache/bin/apachectl';
my $result = system($apachectl,'restart');
my ($string,$status);
if ($result != 0) {
($string,$status) = $self->set_status(-timing => 'final',
-msg => "Restarting httpd",
-status => 'failed');
} else {
($string,$status) = $self->set_status(-timing => 'final',
-msg => "Restarting httpd",
-status => 'succeeded');
}
return ($string,$status);
}
1;
=pod
=head1 NAME
Bio::GMOD::Admin::Monitor::httpd - Monitor httpd
=head1 SYNOPSIS
Check that httpd is running at a specific site
use Bio::GMOD::Admin::Monitor::httpd;
my $gmod = Bio::GMOD::Admin::Monitor::httpd->new(-mod=>'WormBase');
my ($result,$status) $gmod->check_status(-site => 'http://www.flybase.org');
print "Testing FlyBase status at " . $gmod->tested_at . ": $result";
=head1 DESCRIPTION
Bio::GMOD::Admin::Monitor::httpd provides methods for monitoring and
restarting httpd as necessary at a MOD.
=head1 PUBLIC METHODS
=over 4
=item $gmod->check_status(-site => SITE)
Check the status of httpd at a specified site. This is done by
fetching the top level URL, assuming that if it can be retrieved that
( run in 0.812 second using v1.01-cache-2.11-cpan-0bb4e1dffa6 )