use do_high for CRM_search
[APKPM.git] / lib / APKPM / DSLAM.pm
1 package APKPM::DSLAM;
2
3 use base qw(Gearman::Driver::Worker);
4 use Moose;
5 use Time::HiRes;
6 use Data::Dump qw(dump);
7
8 with 'APKPM::Config';
9 with 'APKPM::Gearman';
10 with 'APKPM::Gearman::Client';
11
12 use H1::ZTEDSLAM;
13 use H1::ZTEMSAN;
14
15 sub prefix { 'DSLAM_' }
16
17 sub process_name {
18         my ( $self, $orig, $job_name ) = @_;
19         warn "# process_name $orig $job_name\n";
20         return "$orig ($job_name)";
21 }
22
23 sub begin {
24         my ( $self, $job, $workload ) = @_;
25         warn "# begin ", dump( $workload );
26 }
27
28 sub search : Job : Encode(e_json_encode) {
29         my ( $self, $job, $workload ) = @_;
30         warn "# search ",dump($workload);
31
32         my ($field,$value);
33
34         if ( $workload =~ m/[:=]/ ) {
35                 ($field,$value) = split(/[:=]/,$workload,2)
36         } else {
37                 return { error => 'invalid workload', expected => 'OPT_82:%' };
38         }
39
40         my $crm_results = $self->do_high('CRM_search' => $workload);
41
42         my $crm = $crm_results->[0];
43         warn "ERROR: more than one result from CRM, using first ", dump($crm_results)
44                 if $#$crm_results > 0;
45
46         warn "# crm ",dump $crm;
47
48         my $hash = $self->do_high( $crm->{TIP_UREDJAJA} . '_' . $crm->{IP_UREDAJA}, $self->e_json( $crm ) );
49
50         warn "# hash ",dump $hash;
51
52         return $hash;
53 }
54
55 1;