username, ip are required for ADSL storage
authorDobrica Pavlinusic <dpavlin@rot13.org>
Sun, 13 Mar 2011 13:49:51 +0000 (14:49 +0100)
committerDobrica Pavlinusic <dpavlin@rot13.org>
Sun, 13 Mar 2011 13:49:51 +0000 (14:49 +0100)
lib/APKPM/Davolink.pm
lib/APKPM/Store.pm
t/Store.t

index b6c62de..0413679 100644 (file)
@@ -18,9 +18,10 @@ sub info : Job : MinProcesses(1) : MaxProcesses(5) : Decode(d_array) : Encode(e_
        my ( $self, $job, $workload ) = @_;
        warn "# workload = ", dump $workload;
        my $cpeip = shift @$workload;
+       my $username = shift @$workload;
        my $cpeconnect=H1::Davolink->new($cpeip,$self->config('iadusername'),$self->config('iadpasswd'));
        $cpeconnect->connect();
-       my $ret = { ip => $cpeip };
+       my $ret = { ip => $cpeip, username => $username };
        foreach my $param ( @$workload ) {
                if ( $param =~ m/uptime/i ) {
                        $ret->{UPTIME} = $cpeconnect->custom("cat /proc/uptime");
index e8eeabd..3dd8ad6 100644 (file)
@@ -18,18 +18,25 @@ sub process_name {
 
 sub ADSL : Job : MinProcesses(1) : MaxProcesses(5) : Decode(d_json) {
        my ( $self, $job, $workload ) = @_;
-       warn "# ADSL ",dump($workload);
+
        my $dbh = DBI->connect_cached('DBI:Pg:dbname=apkpm','','', {
                RaiseError => 1,
                AutoCommit => 1,
        });
 
-       my @c = keys %$workload;
+       my $h = $workload->{ADSL} || die "no ADSL in ",dump $workload;
+       foreach my $c ( qw(ip username) ) {
+               $h->{$c} = $workload->{$c} || die "no $c in ",dump $workload;
+       }
+
+       warn "# ADSL ", dump $h;
+
+       my @c = keys %$h;
 
        my $sql = 'INSERT INTO adsl (' . join(',',@c) . ') values (' . join(',', map { '?' } 0 .. $#c) . ')';
        warn $sql;
        my $sth = $dbh->prepare($sql);
-       $sth->execute( map { $workload->{$_} } @c );
+       $sth->execute( map { $h->{$_} } @c );
 }
 
 1;
index c06642e..7d1382e 100755 (executable)
--- a/t/Store.t
+++ b/t/Store.t
@@ -14,16 +14,18 @@ ok my $o = APKPM::Store->new, 'new';
 ok my $r = $o->ADSL('job',{
 ip => '127.0.0.1',
 username => 'nobody',
-ATTNRX => "36.5",
-ATTNTX => "17.8",
-MAXRX  => 13500,
-MAXTX  => 880,
-PWRRX  => "0.0",
-PWRTX  => "12.6",
-RX     => 8500,
-SNRRX  => "11.4",
-SNRTX  => "16.0",
-TX     => 798,
+ADSL => {
+       ATTNRX => "36.5",
+       ATTNTX => "17.8",
+       MAXRX  => 13500,
+       MAXTX  => 880,
+       PWRRX  => "0.0",
+       PWRTX  => "12.6",
+       RX     => 8500,
+       SNRRX  => "11.4",
+       SNRTX  => "16.0",
+       TX     => 798,
+}
 }), 'ADSL';
 
 diag dump($r);