3 use base qw(Gearman::Driver::Worker);
6 use Data::Dump qw(dump);
10 with 'APKPM::Gearman::Client';
17 sub prefix { 'DSLAM_' }
20 my ( $self, $orig, $job_name ) = @_;
21 warn "# process_name $orig $job_name\n";
22 return "$orig ($job_name)";
26 my ( $self, $job, $workload ) = @_;
27 warn "# begin ", dump( $workload );
30 sub search : Job : Encode(e_json_encode) {
31 my ( $self, $job, $workload ) = @_;
32 warn "# search ",dump($workload);
36 if ( $workload =~ m/[:=]/ ) {
37 ($field,$value) = split(/[:=]/,$workload,2)
39 return { error => 'invalid workload', expected => 'OPT_82:%' };
42 my $crm_results = $self->do('CRM_search' => $workload);
44 my $crm = $crm_results->[0];
45 warn "ERROR: more than one result from CRM, using first ", dump($crm_results)
46 if $#$crm_results > 0;
48 warn "# crm ",dump $crm;
50 my $time = $self->datetime_now;
52 my $module = 'H1::' . $crm->{TIP_UREDJAJA};
54 warn "# eval $module";
56 eval { $hash = $module->hash( $crm->{IP_UREDAJA}, $crm->{SHELF_SLOT_PORT} ) };
57 return { error => $@ } if $@;
59 warn "# hash ",dump $hash;
60 local $Data::Dumper::Useqq = 1; # double quote for PostgreSQL
61 my $h = Dumper($hash);
63 $h =~ s/^\$\w+\s*=\s*{\s*//s;
64 $h =~ s/\s*}\s*;\s*$//s;
66 $self->do_background_json( 'Store_insert', {
68 ip => $crm->{IP_MANAGEMENT}, # FIXME IP_UREDAJA ?
69 username => $crm->{USERNAME},