From 74e0bc3bf992da1cc3cc02cee055d29c8795568e Mon Sep 17 00:00:00 2001 From: Dobrica Pavlinusic Date: Wed, 23 Mar 2011 23:12:21 +0100 Subject: [PATCH] extract datetime_now --- lib/APKPM/Gearman.pm | 7 +++++++ lib/APKPM/Poll.pm | 26 ++++++++++++-------------- 2 files changed, 19 insertions(+), 14 deletions(-) diff --git a/lib/APKPM/Gearman.pm b/lib/APKPM/Gearman.pm index 725da10..8a6ef80 100644 --- a/lib/APKPM/Gearman.pm +++ b/lib/APKPM/Gearman.pm @@ -5,6 +5,9 @@ use Moose::Role; use Data::Dump qw(dump); use JSON::XS; +use DateTime; +use DateTime::Format::Pg; + sub e_json { my ( $self, $result ) = @_; warn "# e_json ", dump $result; @@ -24,4 +27,8 @@ sub d_array { } +sub datetime_now { + return DateTime::Format::Pg->format_datetime( DateTime->now ); +} + 1; diff --git a/lib/APKPM/Poll.pm b/lib/APKPM/Poll.pm index d9fb4fd..5b1470b 100644 --- a/lib/APKPM/Poll.pm +++ b/lib/APKPM/Poll.pm @@ -5,8 +5,6 @@ use Moose; 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'; @@ -16,7 +14,12 @@ sub prefix { 'poll_' } 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=*))" ); @@ -25,9 +28,6 @@ sub by_prefix : Job : Encode(e_json) { $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) { @@ -40,24 +40,22 @@ sub by_prefix : Job : Encode(e_json) { 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) { -- 2.20.1