use Time::HiRes qw(time);
use Data::Dump qw(dump);
use Redis;
-use DateTime;
-use DateTime::Format::Pg;
with 'APKPM::Gearman::Client';
with 'APKPM::Gearman';
sub by_prefix : Job : Encode(e_json) {
my ( $self, $job, $workload ) = @_;
- my $start = DateTime->now();
+ my $redis = Redis->new;
+ $redis->del( $_ ) foreach $redis->keys('poll.*');
+
+ my $start = $self->datetime_now;
+
+ $redis->set( 'poll.start' => $start );
my $entries = $self->do( 'LDAP_search' => "(&(cn=$workload*)(dhcpStatements=*))" );
$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) {
warn "# wait";
$taskset->wait;
- my $finish = DateTime->now();
+ my $finish = $self->datetime_now;
+ $redis->set( 'poll.finish' => $finish );
+
+ my $poll = { _table => 'poll' }; # Store_insert_table arg
- my $poll;
foreach my $k ( $redis->keys('poll.*') ) {
my $n = $k;
$n =~ s/^poll\.//;
$n =~ s/\./_/g;
- $poll->{$n} = $redis->scard($k);
+ $poll->{$n} = eval { $redis->scard($k) } || $redis->get($k);
}
- $poll->{start} = DateTime::Format::Pg->format_datetime($start);
- $poll->{finish} = DateTime::Format::Pg->format_datetime($finish);
-
- $poll->{_table} = 'poll';
warn dump $poll;
$self->do_background_json('Store_insert_table', $poll);
- return { ldap => $ip_username, results => $results, duration => $finish - $start, poll => $poll };
+ return { ldap => $ip_username, results => $results, poll => $poll };
}
sub ip_username : Job : Decode(d_array) : Encode(e_json) {