Davolink worker
[APKPM.git] / lib / APKPM / Davolink.pm
1 package APKPM::Davolink;
2
3 use base qw(Gearman::Driver::Worker);
4 use Moose;
5 use Time::HiRes;
6 use JSON::XS;
7 use Data::Dump qw(dump);
8
9 with 'APKPM::Config';
10
11 use lib '/opt/managment_tools/lib';
12 use H1::Davolink;
13
14 sub prefix { 'Davolink_' }
15
16 sub info : Job : MinProcesses(1) : MaxProcesses(5) : Decode : Encode {
17         my ( $self, $job, $workload ) = @_;
18         warn "# workload = ", dump $workload;
19         my $cpeip = shift @$workload;
20         my $cpeconnect=H1::Davolink->new($cpeip,$self->config('iadusername'),$self->config('iadpasswd'));
21         $cpeconnect->connect();
22         my $ret = { ip => $cpeip };
23         foreach my $param ( @$workload ) {
24                 if ( $param =~ m/uptime/i ) {
25                         $ret->{UPTIME} = $cpeconnect->custom("cat /proc/uptime");
26                 } elsif ( $param =~ m/adsl/i ) {
27                         $ret->{ADSL} = { $cpeconnect->adsl_info };
28                 } elsif ( $param =~ m/wan/i ) {
29                         $ret->{WAN} = [ $cpeconnect->wan_info ];
30                 } elsif ( $param =~ m/route/i ) {
31                         $ret->{ROUTES} = [ $cpeconnect->route_info ];
32                 } else {
33                         die "unknown param $param";
34                 }
35         };
36         return $ret;
37 }
38
39 sub decode {
40         my ( $self, $result ) = @_;
41         warn "# decode ", dump($result);
42         return [ split(/\s+/,$result) ];
43 }
44
45 sub encode {
46         my ( $self, $result ) = @_;
47         warn "# encode ",dump $result;
48         return JSON::XS::encode_json($result);
49 }
50
51 1;