3 use base qw(Gearman::Driver::Worker);
7 use Data::Dump qw(dump);
11 with 'APKPM::Gearman';
12 with 'APKPM::Gearman::Client';
17 my ( $self, $orig, $job_name ) = @_;
18 warn "# process_name $orig $job_name\n";
19 return "$orig ($job_name)";
22 sub search : Job : MinProcesses(1) : MaxProcesses(5) : Encode(e_json) {
23 my ( $self, $job, $workload ) = @_;
24 warn "# search $job ", dump($workload);
26 my $res = { workload => $workload };
28 my $taskset = $self->gc->new_task_set;
29 $taskset->add_task('LDAP_search', $workload, {
30 on_complete => sub { $res->{ldap} = $self->d_json( ${$_[0]} ) }
32 $taskset->add_task('CRM_search', $workload, {
33 on_complete => sub { $res->{crm} = $self->d_json( ${$_[0]} ) }
40 sub poll : Job : MinProcesses(1) : MaxProcesses(1) : Encode(e_json) {
41 my ( $self, $job, $workload ) = @_;
43 $workload ||= 'aa'; # FIXME limit for debugging
45 my $entries = $self->do( 'LDAP_search' => "(&(cn=$workload*)(dhcpStatements=*))" );
48 foreach my $entry ( @$entries ) {
49 $ip_username->{ $entry->{cn} } = $1 if $entry->{dhcpStatements} =~ m/fixed-address\s+(\S+)/;