App-Netdisco
view release on metacpan or search on metacpan
lib/App/Netdisco/Web/Health.pm view on Meta::CPAN
package App::Netdisco::Web::Health;
use Dancer ':syntax';
use Dancer::Plugin::DBIC;
use Try::Tiny;
if (my $path = setting('health_path')) {
get $path => sub {
content_type 'application/json';
my $db_ok = try {
schema('netdisco')->storage->dbh->ping;
1;
} catch { 0 };
my @backends = try {
schema('netdisco')->resultset('DeviceSkip')
->search({ device => '255.255.255.255' })->hri->all;
} catch { () };
my $num_backends = scalar @backends;
my $tot_workers = 0;
$tot_workers += $_->{deferrals} for @backends;
my $status = $db_ok ? 'ok' : 'degraded';
status( $db_ok ? 200 : 503 );
return to_json {
status => $status,
db => ($db_ok ? 'ok' : 'error'),
backends => $num_backends,
workers => $tot_workers,
};
};
}
true;
( run in 0.583 second using v1.01-cache-2.11-cpan-39bf76dae61 )