call Davolink_info for each available ip
authorDobrica Pavlinusic <dpavlin@rot13.org>
Fri, 18 Mar 2011 18:04:11 +0000 (19:04 +0100)
committerDobrica Pavlinusic <dpavlin@rot13.org>
Fri, 18 Mar 2011 18:04:11 +0000 (19:04 +0100)
lib/APKPM/Davolink.pm
lib/APKPM/Gearman/Client.pm
lib/APKPM/Ping.pm
lib/APKPM/Poll.pm
t/Davolink.t

index 04444ba..7729131 100644 (file)
@@ -14,7 +14,7 @@ use H1::Davolink;
 
 sub prefix { 'Davolink_' }
 
-sub info : Job : MinProcesses(1) : MaxProcesses(5) : Decode(d_array) : Encode(e_json) {
+sub info : Job : MinProcesses(1) : MaxProcesses(20) : Decode(d_array) : Encode(e_json) {
        my ( $self, $job, $workload ) = @_;
        warn "# workload = ", dump $workload;
        my $cpeip = shift @$workload;
index 61930d7..c10d5c6 100644 (file)
@@ -20,6 +20,12 @@ has gc => (
        },
 );
 
+sub do_background {
+       my ( $self, $func, $args ) = @_;
+       warn "# do_background ", dump( $func, $args );
+       $self->gc->dispatch_background( $func, $args );
+}
+
 sub do_background_json {
        my ( $self, $func, $args ) = @_;
        warn "# do_background_json ", dump( $func, $args );
index a601d23..4cefdfc 100644 (file)
@@ -19,7 +19,7 @@ sub process_name {
 my $p = Net::Ping->new;
 $p->hires;
 
-sub ping : Job : MinProcesses(1) : MaxProcesses(5) : Encode(e_json) {
+sub ping : Job : MinProcesses(1) : MaxProcesses(50) : Encode(e_json) {
        my ( $self, $job, $workload ) = @_;
        warn "# ping $job $workload\n";
        my ( $ok, $rtt, $ip ) = $p->ping( $workload );
index 5a8ac13..569d32a 100644 (file)
@@ -13,8 +13,6 @@ sub prefix { 'poll_' }
 sub by_prefix : Job : MinProcesses(1) : MaxProcesses(1) : Encode(e_json) {
        my ( $self, $job, $workload ) = @_;
 
-       $workload ||= 'aa'; # FIXME limit for debugging
-
        my $entries = $self->do( 'LDAP_search' => "(&(cn=$workload*)(dhcpStatements=*))" );
 
        my $ip_username;
@@ -36,7 +34,7 @@ sub by_prefix : Job : MinProcesses(1) : MaxProcesses(1) : Encode(e_json) {
        return { ldap => $ip_username, results => $results };
 }
 
-sub ip_username : Job : MinProcesses(1) : MaxProcesses(1) : Decode(d_array) : Encode(e_json) {
+sub ip_username : Job : MinProcesses(1) : MaxProcesses(20) : Decode(d_array) : Encode(e_json) {
        my ( $self, $job, $workload ) = @_;
 
        my ( $ip, $username ) = @$workload;
@@ -51,6 +49,8 @@ sub ip_username : Job : MinProcesses(1) : MaxProcesses(1) : Decode(d_array) : En
        $ping->{username} = $username;
        $self->do_background_json( 'Store_ping', $ping );
 
+       $self->do_background( 'Davolink_info', "$ip $username adsl" );
+
        return $ping;
 }
 
index 20b33a2..6b87adf 100755 (executable)
@@ -11,5 +11,5 @@ use_ok 'APKPM::Davolink';
 
 ok my $o = APKPM::Davolink->new, 'new';
 
-ok my $r = $o->info( 'job', [ '10.16.9.2', 'nobody', 'adsl' ] ), 'info';
+ok my $r = $o->info( 'job', [ $ARGV[0] || '10.16.9.2', $ARGV[1] || 'nobody', 'adsl' ] ), 'info';
 diag dump($r);