Davolink worker
authorDobrica Pavlinusic <dpavlin@rot13.org>
Sat, 12 Mar 2011 14:49:24 +0000 (15:49 +0100)
committerDobrica Pavlinusic <dpavlin@rot13.org>
Sat, 12 Mar 2011 14:49:24 +0000 (15:49 +0100)
lib/APKPM/Davolink.pm [new file with mode: 0644]

diff --git a/lib/APKPM/Davolink.pm b/lib/APKPM/Davolink.pm
new file mode 100644 (file)
index 0000000..34faaad
--- /dev/null
@@ -0,0 +1,51 @@
+package APKPM::Davolink;
+
+use base qw(Gearman::Driver::Worker);
+use Moose;
+use Time::HiRes;
+use JSON::XS;
+use Data::Dump qw(dump);
+
+with 'APKPM::Config';
+
+use lib '/opt/managment_tools/lib';
+use H1::Davolink;
+
+sub prefix { 'Davolink_' }
+
+sub info : Job : MinProcesses(1) : MaxProcesses(5) : Decode : Encode {
+       my ( $self, $job, $workload ) = @_;
+       warn "# workload = ", dump $workload;
+       my $cpeip = shift @$workload;
+       my $cpeconnect=H1::Davolink->new($cpeip,$self->config('iadusername'),$self->config('iadpasswd'));
+       $cpeconnect->connect();
+       my $ret = { ip => $cpeip };
+       foreach my $param ( @$workload ) {
+               if ( $param =~ m/uptime/i ) {
+                       $ret->{UPTIME} = $cpeconnect->custom("cat /proc/uptime");
+               } elsif ( $param =~ m/adsl/i ) {
+                       $ret->{ADSL} = { $cpeconnect->adsl_info };
+               } elsif ( $param =~ m/wan/i ) {
+                       $ret->{WAN} = [ $cpeconnect->wan_info ];
+               } elsif ( $param =~ m/route/i ) {
+                       $ret->{ROUTES} = [ $cpeconnect->route_info ];
+               } else {
+                       die "unknown param $param";
+               }
+       };
+       return $ret;
+}
+
+sub decode {
+       my ( $self, $result ) = @_;
+       warn "# decode ", dump($result);
+       return [ split(/\s+/,$result) ];
+}
+
+sub encode {
+       my ( $self, $result ) = @_;
+       warn "# encode ",dump $result;
+       return JSON::XS::encode_json($result);
+}
+
+1;