1 package APKPM::Davolink;
3 use base qw(Gearman::Driver::Worker);
6 use Data::Dump qw(dump);
9 with 'APKPM::Gearman::Client';
10 with 'APKPM::Gearman';
12 use lib '/opt/managment_tools/lib';
15 sub prefix { 'Davolink_' }
17 sub info : Job : MinProcesses(1) : MaxProcesses(20) : 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;
23 return { error => "invalid workload", expected => 'cpe.ip username (uptime|adsl|wan|routes)', workload => $workload } unless $cpeip && $username;
25 my $cpeconnect=H1::Davolink->new($cpeip,$self->config('iadusername'),$self->config('iadpasswd'));
26 $cpeconnect->connect();
27 my $ret = { ip => $cpeip, username => $username };
28 foreach my $param ( @$workload ) {
29 if ( $param =~ m/uptime/i ) {
30 $ret->{UPTIME} = $cpeconnect->custom("cat /proc/uptime");
31 } elsif ( $param =~ m/adsl/i ) {
32 $ret->{ADSL} = { $cpeconnect->adsl_info };
33 $self->do_background_json( 'Store_ADSL', $ret );
34 } elsif ( $param =~ m/wan/i ) {
35 $ret->{WAN} = [ $cpeconnect->wan_info ];
36 } elsif ( $param =~ m/route/i ) {
37 $ret->{ROUTES} = [ $cpeconnect->route_info ];
39 die "unknown param $param";