username, ip are required for ADSL storage
[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 Data::Dump qw(dump);
7
8 with 'APKPM::Config';
9 with 'APKPM::Gearman::Client';
10 with 'APKPM::Gearman';
11
12 use lib '/opt/managment_tools/lib';
13 use H1::Davolink;
14
15 sub prefix { 'Davolink_' }
16
17 sub info : Job : MinProcesses(1) : MaxProcesses(5) : Decode(d_array) : Encode(e_json) {
18         my ( $self, $job, $workload ) = @_;
19         warn "# workload = ", dump $workload;
20         my $cpeip = shift @$workload;
21         my $username = shift @$workload;
22         my $cpeconnect=H1::Davolink->new($cpeip,$self->config('iadusername'),$self->config('iadpasswd'));
23         $cpeconnect->connect();
24         my $ret = { ip => $cpeip, username => $username };
25         foreach my $param ( @$workload ) {
26                 if ( $param =~ m/uptime/i ) {
27                         $ret->{UPTIME} = $cpeconnect->custom("cat /proc/uptime");
28                 } elsif ( $param =~ m/adsl/i ) {
29                         $ret->{ADSL} = { $cpeconnect->adsl_info };
30                         $self->do_background_json( 'Store_ADSL', $ret );
31                 } elsif ( $param =~ m/wan/i ) {
32                         $ret->{WAN} = [ $cpeconnect->wan_info ];
33                 } elsif ( $param =~ m/route/i ) {
34                         $ret->{ROUTES} = [ $cpeconnect->route_info ];
35                 } else {
36                         die "unknown param $param";
37                 }
38         };
39         return $ret;
40 }
41
42 1;