'Mojolicious' => 0.9003,
'DBD::Pg' => 0,
'Regexp::Common' => 0,
+ 'Redis' => 0,
},
AUTHOR => 'Dobrica Pavlinusic <dpavlin@rot13.org>',
# ABSTRACT_FROM => 'lib/APKPM.pm',
libdata-dump-perl \
libregexp-common-perl \
postgresql libdbd-pg-perl \
- gnuplot-nox
+ gnuplot-nox \
+ redis-server libredis-perl
return { error => "invalid workload", expected => 'cpe.ip username (uptime|adsl|wan|routes)', workload => $workload } unless $cpeip && $username;
my $cpeconnect=H1::Davolink->new($cpeip,$self->config('iadusername'),$self->config('iadpasswd'));
- $cpeconnect->connect();
+ $cpeconnect->connect() || return { error => "can't connect to $cpeip" };
my $ret = { ip => $cpeip, username => $username };
foreach my $param ( @$workload ) {
if ( $param =~ m/uptime/i ) {
} elsif ( $param =~ m/adsl/i ) {
$ret->{ADSL} = { $cpeconnect->adsl_info };
$self->do_background_json( 'Store_ADSL', $ret );
+ my $redis = Redis->new;
+ $redis->sadd( 'poll.adsl.ok' => $cpeip );
} elsif ( $param =~ m/wan/i ) {
$ret->{WAN} = [ $cpeconnect->wan_info ];
} elsif ( $param =~ m/route/i ) {
die "unknown param $param";
}
};
+
return $ret;
}
use Moose;
use Time::HiRes;
use Data::Dump qw(dump);
+use Redis;
with 'APKPM::Gearman::Client';
with 'APKPM::Gearman';
$ip_username->{ $entry->{cn} } = $1 if $entry->{dhcpStatements} =~ m/fixed-address\s+(\S+)/;
}
+ my $redis = Redis->new;
+ $redis->del( $_ ) foreach $redis->keys('poll.*');
+
my $taskset = $self->gc->new_task_set;
my $results;
while (my ($username,$ip) = each %$ip_username) {
$taskset->add_task('poll_ip_username', "$ip $username", {
on_complete => sub { push @$results, ${$_[0]} }
});
+ $redis->sadd('poll.queued' => $ip);
}
warn "# wait";
return { error => "invalid workload", expected => "ip username" } unless $ip && $username;
my $ping = $self->do('ping', $ip);
+ my $redis = Redis->new;
+
if ( exists $ping->{error} ) {
+warn "XXX error: $ip";
+ $redis->sadd( 'poll.ping.error' => $ip );
return $ping;
+ } else {
+ $redis->sadd( 'poll.ping.ok' => $ip );
}
$ping->{username} = $username;